[PATCH] arm64: fix show_regs fallout from KERN_CONT changes

Robin Murphy robin.murphy at arm.com
Fri Oct 21 06:48:55 PDT 2016


On 21/10/16 13:54, Mark Rutland wrote:
> Hi,
> 
> On Fri, Oct 21, 2016 at 12:34:11PM +0100, Robin Murphy wrote:
>>> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
>>> index ddce61b..3f31cf93 100644
>>> --- a/arch/arm64/kernel/process.c
>>> +++ b/arch/arm64/kernel/process.c
>>> @@ -187,10 +187,19 @@ void __show_regs(struct pt_regs *regs)
>>>  	printk("pc : [<%016llx>] lr : [<%016llx>] pstate: %08llx\n",
>>>  	       regs->pc, lr, regs->pstate);
>>>  	printk("sp : %016llx\n", sp);
>>> -	for (i = top_reg; i >= 0; i--) {
>>> +
>>> +	i = top_reg;
>>> +
>>> +	while (i >= 0) {
>>>  		printk("x%-2d: %016llx ", i, regs->regs[i]);
>>> -		if (i % 2 == 0)
>>> -			printk("\n");
>>> +		i--;
>>> +
>>> +		if (i % 2 == 0) {
>>> +			pr_cont("x%-2d: %016llx ", i, regs->regs[i]);
>>> +			i--;
>>> +		}
>>> +
>>> +		pr_cont("\n");
>>>  	}
>>
>> Might it be nicer to simply do this (or thereabouts)?
> 
> I don't think so; top_reg is either 12 (for compat), or 29 (for native),
> so for the compat case, with the existing code the first line should be
> one register (r12), with r1; r0 on the final line.

Heh, the "or thereabouts" was intended to acknowledge the act of
copy-pasting patch context around in an email client without even
looking at the original code (or how it's called) ;)

The main idea was that it looks feasible to avoid pr_cont() and the
yucky floating "\n"s altogether.

>> 	for (i = top_reg; i > 1; i -= 2)
>> 		printk("x%-2d: %016llx x%-2d: %016llx\n", i-1,
>> 			regs->regs[i-1], i, regs->regs[i]);
> 
> ... whereas here the first line would be two (r12 and r11) ... 
> 
>> 	if (i > 0)
>> 		printk("x%-2d: %016llx\n", i-1, regs->regs[i-1]);
> 
> ... and then r0 on its own.
> 
> Perhaps that's fine, but it would differ from the existing behaviour,
> and make native and compat noticeably different.
>
> We could try fixing up the first line prior to the loop, but that still
> requires duplicating the format string thrice, manipulation of i, etc.
> 
> It looks like Will's taken my patch as-is, but if we can clean this up
> further it would certainly be nice.

Sure, getting it un-broken for 4.9 is the important thing. I'll take a
proper look into the refactoring idea next time I get bored.

Robin.

> 
> Thanks,
> Mark.
> 




More information about the linux-arm-kernel mailing list