Re: [PATCH v5] powerpc/irq: inline call_do_irq() and call_do_softirq() on PPC32

From: Christophe Leroy
Date: Thu Dec 12 2019 - 11:34:53 EST




Le 12/12/2019 Ã 13:52, Christoph Hellwig a ÃcritÂ:
On Sat, Dec 07, 2019 at 05:20:04PM +0000, Christophe Leroy wrote:
call_do_irq() and call_do_softirq() are simple enough to be
worth inlining.

Inlining them avoids an mflr/mtlr pair plus a save/reload on stack.
It also allows GCC to keep the saved ksp_limit in an nonvolatile reg.

This is inspired from S390 arch. Several other arches do more or
less the same. The way sparc arch does seems odd thought.

Any reason you only do this for 32-bit and not 64-bit as well?


Yes ... There has been a long discussion on this in v4, see https://patchwork.ozlabs.org/patch/1174288/

The problem is that on PPC64, r2 register is used as TOC pointer and it is apparently not straithforward to make sure the caller and the callee are using the same TOC.

On PPC32 it's more simple, r2 is current task_struct at all time, it never changes.

Christophe