Horms wrote:
On Tue, Jul 24, 2007 at 04:57:32PM -0700, Yinghai Lu wrote:IA64 Subject : Regression in serial console on ia64 after 2.6.22 References : http://marc.info/?l=linux-ia64&m=118483645914066&w=2 Last known good : ? Submitter : Horms <horms@xxxxxxxxxxxx> Caused-By : Yinghai Lu <Yinghai.Lu@xxxxxxx> commit 18a8bd949d6adb311ea816125ff65050df1f3f6e Handled-By : ? Status : unknown please test this patch. YHI just posted a similar patch (sorry, I didn't see your post until afterwards). I guess that we both have the same ideas :)[PATCH] ia64: move machvec_init before parse_early_param So ia64_mv is initialized before early console Signed-off-by: Yinghai Lu <yinghai.lu@xxxxxxx> diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c index 13df337..a94feaa 100644 --- a/arch/ia64/kernel/machvec.c +++ b/arch/ia64/kernel/machvec.c @@ -14,12 +14,6 @@ struct ia64_machine_vector ia64_mv; EXPORT_SYMBOL(ia64_mv);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 * __initlookup_machvec (const char *name) @@ -42,6 +36,10 @@ machvec_init (const char *name)if (!name)name = mvec_name ? mvec_name : acpi_get_sysname();I think that mvec_name can be disposed of all together as its only used by the line above and setup_mvec(), which in turn is only used by early_param. I got rid of mvec_name in my incantation of this patch, and it seemed to work quite well.
with cmd_line or NULL, mvec_nanme could get assigned. next machvec_init(NULL) could reuse that
+ + if (!mvec_name) + mvec_name = name; + mv = lookup_machvec(name); if (!mv) panic("generic kernel failed to find machine vector for" diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index cf06fe7..b06d7b7 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c @@ -481,6 +481,9 @@ int __init reserve_elfcorehdr(unsigned long *start, unsigned long *end) void __init setup_arch (char **cmdline_p) { +#ifdef CONFIG_IA64_GENERIC + char *mvstr; +#endif unw_init();ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist);@@ -491,12 +494,15 @@ setup_arch (char **cmdline_p) efi_init(); io_port_init();- parse_early_param();- #ifdef CONFIG_IA64_GENERIC - machvec_init(NULL); + mvstr = strstr(*cmd_line_p, "machvec=") + if (mvstr) + mvstr = strchr(mvstr, '=') + 1; + machvec_init(mvstr); #endifDo you need to copy and truncate mvstr on ' ' in the case that machvec= isn't the last argument on the command line? I did this in my patch, though I didn't test to see if it was uneccessary.
or may need to update lookup_machvec... from strcmp to strstr... just want to the code to be less changes as possible. YH - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |