[SLOF] RFC: cp codes

Thomas Huth thuth at redhat.com
Tue Feb 16 05:09:40 AEDT 2016


On 10.02.2016 13:19, Thomas Huth wrote:
> On 10.02.2016 01:33, Alexey Kardashevskiy wrote:
>> On 02/09/2016 11:54 PM, Dinar Valeev wrote:
>>> On Mon, Feb 8, 2016 at 6:50 PM, Thomas Huth <thuth at redhat.com> wrote:
>>>> On 08.02.2016 15:10, Dinar Valeev wrote:
>>>>> Hi,
>>>>>
>>>>> I have long standing issue with SLOF. During start SLOF prints cp
>>>>> codes with backspace:
>>>>> https://github.com/aik/SLOF/blob/master/lib/libbootmsg/bootmsg_lvl.S#L61-L64
>>>>>
>>>>> We start a VM and record log, this is fine. But then when we look at
>>>>> the log through WebUI, because of backspace, Mozilla thinks this is a
>>>>> binary file.
>>>>>
>>>>> At devconf I discussed this with Thomas, and he proposed to use nvram
>>>>> variable here. But it seems QEMU's --prom-env seems to be OpenBIOS
>>>>> specific.
>>>>>
>>>>> Any comments for bring --prom-env support to SLOF? Or are there other
>>>>> options I can use,
>>>>> to change libbootmsg behaviour?
> ...
>>>> So I'd suggest to introduce a new environment variable into
>>>> slof/fs/envvar_defaults.fs and then check the contents of the variable
>>>> during the "cp" Forth function, so that it only prints the backslashes
>>>> if the envvar has the right value.
>>>
>>> Yep. Did it. But it seems a problem is envvar initialized a way after
>>> we start printing cp codes.
> 
> Oh, I see, envvar.fs is included very late in OF.fs. You could try to
> move it to an earlier spot, but I guess that will break the boot due to
> various dependencies between the Forth files, e.g. SLOF likely has to
> parse the flattened device tree from QEMU first to know how to access
> the NVRAM ... :-/
> 
> The only other possibility to pass information to SLOF is currently the
> flattened device tree from QEMU - but that likely also does not work
> here since fdt.fs is also included quite late in OF.fs.

Just a completely different idea, but would the following patch also fix
your issue?

diff --git a/lib/libbootmsg/bootmsg_lvl.S b/lib/libbootmsg/bootmsg_lvl.S
index 2e4c135..14ce4bf 100644
--- a/lib/libbootmsg/bootmsg_lvl.S
+++ b/lib/libbootmsg/bootmsg_lvl.S
@@ -58,10 +58,8 @@ ENTRY(bootmsg_cp)
 	bl      io_putchar      // print character
 	mr	r3, r9
 	bl      io_printhex16   // print checkpoint ID
-	.rept   5
-	li      r3,'\b'
-	bl      io_putchar      // print backspaces
-	.endr
+	li      r3,'\r'
+	bl      io_putchar      // go back
 	mtlr	r11
 	blr

Replacing 5 '\b's with one '\r' should IMHO be ok here since the
checkpoints should always be printed at the beginning of a line...

 Thomas




More information about the SLOF mailing list