Subject: Re: Regression due to 7ff9554 "printk: convert byte-buffer to variable-length record buffer"

From: Stephen Warren <[email-masked]>
Date: Thu, 10 May 2012 14:20:20 -0600

On 05/10/2012 02:15 PM, Kay Sievers wrote:
> On Thu, May 10, 2012 at 10:13 PM, Stephen Warren <[email-masked]> wrote:
>> On 05/10/2012 02:09 PM, Stephen Warren wrote:
>>> On 05/10/2012 02:06 PM, Kay Sievers wrote:
>>>> On Thu, May 10, 2012 at 9:54 PM, Stephen Warren <[email-masked]> wrote:
>>>>> On 05/09/2012 12:31 PM, Stephen Warren wrote:
>>>>>> For me, next-20120508 prints nothing when booted, and I think also
>>>>>> hangs. To solve this, I reverted:
>>>>>>
>>>>>> 7ff9554 printk: convert byte-buffer to variable-length record buffer
>>>>>>
>>>>>> In order to build, I also had to revert:
>>>>>>
>>>>>> c4e00da driver-core: extend dev_printk() to pass structured data
>>>>>>
>>>>>> Note: I'm running on an ARM system using a serial console, with
>>>>>> earlyprintk enabled.
>>>>>
>>>>> This issue still occurs in next-20120510.
>>>>>
>>>>> I've tracked it down to the assignment of msg->ts_nsec near the end of
>>>>> log_store(). If I comment this out, everything works. The problem is the
>>>>> assignment, not the call to local_clock():
>>>>>
>>>>> fails:
>>>>>        msg->ts_nsec = local_clock();
>>>>> fails:
>>>>>        msg->ts_nsec = 0;//local_clock();
>>>>> works:
>>>>>        //msg->ts_nsec = local_clock();
>>>>
>>>> Weird.
>>>>
>>>> What happens if you change it to:
>>>>   cpu_clock(logbuf_cpu);
>>>> ?
>>>>
>>>> If it works, the timestamps look ok?
>>>
>>> I doubt that would work - after all, assigning 0 fails, but not
>>> performing the assignment at all works. But, I'll go try it...
>>
>> Calling cpu_clock() instead of local_clock() fails in the same way.
> 
> Ok, didn't really see the assign to 0 you tried, sorry. :)
> 
> And 'dmesg' works when you run the box with the line commented out?
> 
> And 'cat /dev/kmsg'?

Yes, both work and produce reasonable output. "cat /dev/kmsg" does hang
at the end of the log until I CTRL-C it - is that expected?