Re: [PATCH 11/14] s390: Add support for suppressing warning backtraces

Geert Uytterhoeven <[email protected]>
Newsgroups gmane.linux.kernel.cross-arch,gmane.comp.video.dri.devel,gmane.linux.ports.arm.kernel,gmane.linux.documentation,gmane.linux.kernel,gmane.linux.ports.parisc,gmane.linux.ports.ppc64.devel,gmane.linux.ports.riscv,gmane.linux.ports.sh.devel
Message-ID <CAMuHMdXHKfd8agPGx+MjvC4cjW5F6DEeVec3Moe-=LLkrT3CXQ@mail.gmail.com>
Hi Günter,

On Tue, Mar 12, 2024 at 6:06 PM Guenter Roeck <[email protected]> wrote:
> Add name of functions triggering warning backtraces to the __bug_table
> object section to enable support for suppressing WARNING backtraces.
>
> To limit image size impact, the pointer to the function name is only added
> to the __bug_table section if both CONFIG_KUNIT and CONFIG_DEBUG_BUGVERBOSE
> are enabled. Otherwise, the __func__ assembly parameter is replaced with a
> (dummy) NULL parameter to avoid an image size increase due to unused
> __func__ entries (this is necessary because __func__ is not a define but a
> virtual variable).
>
> Signed-off-by: Guenter Roeck <[email protected]>

Thanks for your patch!

> --- a/arch/s390/include/asm/bug.h
> +++ b/arch/s390/include/asm/bug.h
> @@ -8,19 +8,30 @@
>
>  #ifdef CONFIG_DEBUG_BUGVERBOSE
>
> +#if IS_ENABLED(CONFIG_KUNIT)
> +# define HAVE_BUG_FUNCTION
> +# define __BUG_FUNC_PTR        "       .long   %0-.\n"
> +# define __BUG_FUNC    __func__
> +#else
> +# define __BUG_FUNC_PTR
> +# define __BUG_FUNC    NULL
> +#endif /* IS_ENABLED(CONFIG_KUNIT) */
> +
>  #define __EMIT_BUG(x) do {                                     \
>         asm_inline volatile(                                    \
>                 "0:     mc      0,0\n"                          \
>                 ".section .rodata.str,\"aMS\",@progbits,1\n"    \
>                 "1:     .asciz  \""__FILE__"\"\n"               \
>                 ".previous\n"                                   \
> -               ".section __bug_table,\"awM\",@progbits,%2\n"   \
> +               ".section __bug_table,\"awM\",@progbits,%3\n"   \

This change conflicts with commit 3938490e78f443fb ("s390/bug:
remove entry size from __bug_table section") in linus/master.
I guess it should just be dropped?

>                 "2:     .long   0b-.\n"                         \
>                 "       .long   1b-.\n"                         \
> -               "       .short  %0,%1\n"                        \
> -               "       .org    2b+%2\n"                        \
> +               __BUG_FUNC_PTR                                  \
> +               "       .short  %1,%2\n"                        \
> +               "       .org    2b+%3\n"                        \
>                 ".previous\n"                                   \
> -               : : "i" (__LINE__),                             \
> +               : : "i" (__BUG_FUNC),                           \
> +                   "i" (__LINE__),                             \
>                     "i" (x),                                    \
>                     "i" (sizeof(struct bug_entry)));            \
>  } while (0)

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.