[SLOF] RFC: cp codes

Dinar Valeev k0da at opensuse.org
Wed Feb 24 02:15:55 AEDT 2016


On Mon, Feb 15, 2016 at 7:09 PM, Thomas Huth <thuth at redhat.com> wrote:
> 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...
I gave it a try.. It works flawlessly...

Could you commit it?

Dinar,
>
>  Thomas
>
>


More information about the SLOF mailing list