Re: small dmesg regression in kernel 4.17.3

From: Andy Shevchenko
Date: Fri Jun 29 2018 - 06:43:24 EST


On Fri, Jun 29, 2018 at 1:13 AM, Schmauss, Erik <erik.schmauss@xxxxxxxxx> wrote:
>> On Tue, Jun 26, 2018 at 8:57 PM, Toralf FÃrster <toralf.foerster@xxxxxx>
>> wrote:
>> > The attached dmesg contains non printable chars 0x01 33 around "ACPI
>> > BIOS Error (bug): Could not resolve" which is a new issue compared to
>> > the dmesg of 4.17.2
>> >
>> > System is a stable hardened Gentoo Linux at a ThinkPad T440s.
>>
>> I bet the below commit makes this.
>>
>> commit 2e78935d1e27d31955ad2dad4abe6c453cf669fd
>> Author: Erik Schmauss <erik.schmauss@xxxxxxxxx>
>> Date: Fri Jun 1 12:06:43 2018 -0700
>>
>> ACPICA: AML parser: attempt to continue loading table after error
>>
>>
> Hi Andy,
>
>> So, it does add leading '\n' which flushes buffers followed by printing the
>> message you see. But, I'm guessing now, kernel adds a default level since it's
>> going to dmesg which you can see as unprintable symbols.
>
> What do you mean by a default level?

I can't find fast the better example, though if you look at printk_get_level()
https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h#L16

it will shed a light on a format. Thus, 0x01 0x33 means start of the
kernel error message (error is a level).

Kernel messaging protocol is defined in
https://elixir.bootlin.com/linux/latest/source/include/linux/kern_levels.h

This is my understanding on what's going on (I might be mistaken).

--
With Best Regards,
Andy Shevchenko