[PATCH v2 1/6] powerpc/code-patching: Implement generic text patching function

Benjamin Gray bgray at linux.ibm.com
Wed Sep 28 11:30:02 AEST 2022


On Tue, 2022-09-27 at 06:40 +0000, Christophe Leroy wrote:
> > +       /* Flush on the EA that may be executed in case of a non-
> > coherent icache */
> > +       icbi(prog_addr);
> 
> prog_addr is a misleading name ? Is that the address at which you 
> program it ? Is that the address the programs runs at ?
> 
> exec_addr was a lot more explicit as it clearly defines the address
> at 
> which the code is executed.

I'm not sure what it could be confused for other than "the address the
program uses" (be it uses for executing, or uses as data). I just
called it that because it's not necessarily executed, so 'exec_addr' is
misleading (to the extent it matters in the first place...).

> > +       if (IS_ENABLED(CONFIG_PPC64) && L1_CACHE_BYTES < 64)
> > +               icbi(prog_addr + size - 1);
> 
> This doesn't exist today.
> 
> I'd rather have:
> 
>         BUILD_BUG_ON(IS_ENABLED(CONFIG_PPC64) && L1_CACHE_BYTES <
> 64);

Sure, I can adjust the style.

> > +static int __always_inline __do_patch_memory(void *dest, unsigned
> > long src, size_t size)
> >   {
> >         int err;
> >         u32 *patch_addr;
> > -       unsigned long text_poke_addr;
> >         pte_t *pte;
> > -       unsigned long pfn = get_patch_pfn(addr);
> > -
> > -       text_poke_addr = (unsigned
> > long)__this_cpu_read(text_poke_area)->addr & PAGE_MASK;
> > -       patch_addr = (u32 *)(text_poke_addr +
> > offset_in_page(addr));
> > +       unsigned long text_poke_addr = (unsigned
> > long)__this_cpu_read(text_poke_area)->addr & PAGE_MASK;
> > +       unsigned long pfn = get_patch_pfn(dest);
> > 
> > +       patch_addr = (u32 *)(text_poke_addr +
> > offset_in_page(dest));
> 
> Can we avoid this churn ?
> Ok, you want to change 'addr' to 'dest', can we leave everything else
> as 
> is ?

'addr' was only renamed because the v1 used a pointer to the data, so
'addr' was ambiguous. I'll restore it to 'addr' for v3.

I'll also restore the formatting.


More information about the Linuxppc-dev mailing list