Re: powerpc/85xx: Move ePAPR paravirt initialization earlier
From: Scott Wood <hidden>
Date: 2013-06-25 23:14:16
On Tue, Mar 05, 2013 at 05:52:36PM +0200, Laurentiu TUDOR wrote:
From: Tudor Laurentiu <redacted> The ePAPR para-virtualization needs to happen very early otherwise the bytechannel based console will silently drop some of the early boot messages. Before this patch, this is how the kernel log started: ----------------------------------------------------- > Brought up 2 CPUs > devtmpfs: initialized > NET: Registered protocol family 16 [...] ----------------------------------------------------- After the patch the early messages show up: ----------------------------------------------------- > Using P5020 DS machine description > MMU: Supported page sizes > 4 KB as direct > 4096 KB as direct [...] ----------------------------------------------------- At console init, the kernel tried to flush the log buffer. Since the paravirt was not yet initialized the console write function failed silently, thus losing the buffered messages.
[snip]
quoted hunk ↗ jump to hunk
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 6da881b..ce092ac 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c@@ -66,6 +66,7 @@ #include <asm/code-patching.h> #include <asm/kvm_ppc.h> #include <asm/hugetlb.h> +#include <asm/epapr_hcalls.h> #include "setup.h"@@ -599,6 +600,8 @@ void __init setup_arch(char **cmdline_p) /* Initialize the MMU context management stuff */ mmu_context_init(); + epapr_paravirt_init(); + kvm_linear_init(); /* Interrupt code needs to be 64K-aligned */
Is this early enough? There's udbg activity before this. Maybe it should even go before udbg_early_init... This would require converting the code to use the early device tree functions. -Scott