Skip to content

Commit

Permalink
IA64: Use early_parm to handle mvec_name and nomca
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Horms authored and Tony Luck committed Mar 23, 2006
1 parent 39e18de commit a5b00bb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 28 deletions.
19 changes: 15 additions & 4 deletions arch/ia64/kernel/machvec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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[];
Expand All @@ -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);
}
Expand Down
36 changes: 12 additions & 24 deletions arch/ia64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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();
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit a5b00bb

Please sign in to comment.