On Wed, 2008-01-09 at 20:47 -0600, Linas Vepstas wrote: > On 09/01/2008, Michael Ellerman <[EMAIL PROTECTED]> wrote: > > > > > > Only if you can get at rtas, but you can't get at rtas at that point. > > > > AFAICT you don't need to get at RTAS, you just need to look at the > > device tree to see if the property is present, and that is trivial. > > > > You probably just need to add a check in early_init_dt_scan_rtas() which > > sets a flag for the PHYP dump stuff, or add your own scan routine if you > > need. > > I no longer remember the details. I do remember spending a lot of time > trying to figure out how to do this. I know I didn't want to write my own scan > routine; maybe that's what stopped me. As it happens, we also did most > of the development on a broken phyp which simply did not even have > this property, no matter what, and so that may have brain-damaged me.
Sure, the API docs for the kernel are a little lacking ;) > I went for the "most elegant" solution, where "most elegant" is defined > as "fewest lines of code", "least effort", etc. > > Manish may need some hands-on help to extract this token during > early boot. Hopefully, he'll let us know. It would just be something like: --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -901,6 +901,11 @@ int __init early_init_dt_scan_rtas(unsigned long node, rtas.size = *sizep; } +#ifdef CONFIG_PHYP_DUMP + if (of_get_flat_dt_prop(node, "ibm,dump-kernel", NULL)) + phyp_dump_is_active++; +#endif + #ifdef CONFIG_UDBG_RTAS_CONSOLE basep = of_get_flat_dt_prop(node, "put-term-char", NULL); if (basep) Or to do your own scan routine: diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index acc0d24..442134e 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -1022,6 +1022,7 @@ void __init early_init_devtree(void *params) /* Some machines might need RTAS info for debugging, grab it now. */ of_scan_flat_dt(early_init_dt_scan_rtas, NULL); #endif + of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL); /* Retrieve various informations from the /chosen node of the * device-tree, including the platform type, initrd location and diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 52e95c2..af2b6e8 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -883,6 +883,19 @@ void __init rtas_initialize(void) #endif } +int __init early_init_dt_scan_phyp_dump(unsigned long node, + const char *uname, int depth, void *data) +{ +#ifdef CONFIG_PHYP_DUMP + if (depth != 1 || strcmp(uname, "rtas") != 0) + return 0; + + if (of_get_flat_dt_prop(node, "ibm,dump-kernel", NULL)) + phyp_dump_is_active++; +#endif + return 1; +} + int __init early_init_dt_scan_rtas(unsigned long node, const char *uname, int depth, void *data) { cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev