Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: cuigaosheng <cuigaosheng1@huawei.com>
Cc: Will Deacon <will@kernel.org>,
	catalin.marinas@arm.com, broonie@kernel.org, pcc@google.com,
	keescook@chromium.org, daniel.kiss@arm.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, wangweiyang2@huawei.com,
	gongruiqi1@huawei.com
Subject: Re: [PATCH -next] arm64: add missing header dependencies
Date: Wed, 11 May 2022 09:30:31 +0100	[thread overview]
Message-ID: <Ynt0J5daWq7swGP8@FVFF77S0Q05N> (raw)
In-Reply-To: <3b692d9f-0f76-33b8-0c22-909a24377e33@huawei.com>

On Wed, May 11, 2022 at 09:39:55AM +0800, cuigaosheng wrote:
>     Do you know which commit is causing this error?
> 
> 9cce7a435f89 arm64: CPU support I got the error when building a module with
> processor.h on arm64 and the module calls the KSTK_ESP macro,

I assume that's an out-of-tree module?

Looking at v5.18-rc5, the only users of KSTK_ESP() on arm64 are built in:

| [mark@lakrids:~/src/linux]% git grep KSTK_ESP
| arch/alpha/include/asm/processor.h:#define KSTK_ESP(tsk) \
| arch/arc/include/asm/processor.h:#define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
| arch/arm/include/asm/processor.h:#define KSTK_ESP(tsk)  task_pt_regs(tsk)->ARM_sp
| arch/arm64/include/asm/processor.h:#define KSTK_ESP(tsk)        user_stack_pointer(task_pt_regs(tsk))
| arch/csky/include/asm/processor.h:#define KSTK_ESP(tsk)         (task_pt_regs(tsk)->usp)
| arch/h8300/include/asm/processor.h:#define      KSTK_ESP(tsk)   ((tsk) == current ? rdusp() : (tsk)->thread.usp)
| arch/hexagon/include/asm/processor.h:#define KSTK_ESP(tsk) (pt_psp(task_pt_regs(tsk)))
| arch/ia64/include/asm/processor.h:#define KSTK_ESP(tsk)  ((tsk)->thread.ksp)
| arch/m68k/include/asm/processor.h:#define       KSTK_ESP(tsk)   ((tsk) == current ? rdusp() : (tsk)->thread.usp)
| arch/microblaze/include/asm/processor.h:#  define KSTK_ESP(task)        (task_sp(task))
| arch/mips/include/asm/processor.h:#define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])
| arch/nios2/include/asm/processor.h:#define KSTK_ESP(tsk)        ((tsk)->thread.kregs->sp)
| arch/openrisc/include/asm/processor.h:#define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
| arch/parisc/include/asm/processor.h:#define KSTK_ESP(tsk)       ((tsk)->thread.regs.gr[30])
| arch/powerpc/include/asm/processor.h:#define KSTK_ESP(tsk)  ((tsk)->thread.regs? (tsk)->thread.regs->gpr[1]: 0)
| arch/riscv/include/asm/processor.h:#define KSTK_ESP(tsk)                (task_pt_regs(tsk)->sp)
| arch/s390/include/asm/processor.h:#define KSTK_ESP(tsk) (task_pt_regs(tsk)->gprs[15])
| arch/sh/include/asm/processor_32.h:#define KSTK_ESP(tsk)  (task_pt_regs(tsk)->regs[15])
| arch/sparc/include/asm/processor_32.h:#define KSTK_ESP(tsk)  ((tsk)->thread.kregs->u_regs[UREG_FP])
| arch/sparc/include/asm/processor_64.h:#define KSTK_ESP(tsk)  (task_pt_regs(tsk)->u_regs[UREG_FP])
| arch/um/include/asm/stacktrace.h:       return (unsigned long *)KSTK_ESP(task);
| arch/x86/include/asm/processor.h:#define KSTK_ESP(task)         (task_pt_regs(task)->sp)
| arch/x86/include/asm/processor.h:extern unsigned long KSTK_ESP(struct task_struct *task);
| arch/x86/kernel/process_64.c:unsigned long KSTK_ESP(struct task_struct *task)
| arch/x86/um/asm/processor.h:#define KSTK_ESP(tsk) KSTK_REG(tsk, HOST_SP)
| arch/xtensa/include/asm/processor.h:#define KSTK_ESP(tsk)               (task_pt_regs(tsk)->areg[1])
| fs/proc/array.c:                                esp = KSTK_ESP(task);
| mm/util.c:      return (vma->vm_start <= KSTK_ESP(t) && vma->vm_end >= KSTK_ESP(t));

... or is that module being added in another tree at the moment?

Thanks,
Mark.

> we can also add
> additional header file dependencies(linux/sched/task_stack.h) in the module to
> avoid this error. Maybe perfecting header file dependencies of processor.h is a
> better option? Thanks,
> 
> 在 2022/5/10 18:40, Will Deacon 写道:
> 
>     On Mon, May 09, 2022 at 02:17:51PM +0800, Gaosheng Cui wrote:
> 
>         We get one error when building module with processor.h:
> 
>         ./arch/arm64/include/asm/processor.h:263:36: error: implicit declaration of function ‘task_stack_page’;
>           ((struct pt_regs *)(THREAD_SIZE + task_stack_page(p)) - 1)
>         ./arch/arm64/include/asm/processor.h:266:42: note: in expansion of macro ‘task_pt_regs’
>          #define KSTK_ESP(tsk) user_stack_pointer(task_pt_regs(tsk))
> 
>         task_stack_page is declared in linux/sched/task_stack.h, so this patch
>         add the missing header dependencies.
> 
>         Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
>         ---
>          arch/arm64/include/asm/processor.h | 1 +
>          1 file changed, 1 insertion(+)
> 
>     Do you know which commit is causing this error? I haven't seen any other
>     reports, but it's hard to know which tree should take your patch as it
>     stands.
> 
>     Thanks,
> 
>     Will
> 
> 
>         diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
>         index 73e38d9a540c..1c239841c4d6 100644
>         --- a/arch/arm64/include/asm/processor.h
>         +++ b/arch/arm64/include/asm/processor.h
>         @@ -28,6 +28,7 @@
>          #include <linux/build_bug.h>
>          #include <linux/cache.h>
>          #include <linux/init.h>
>         +#include <linux/sched/task_stack.h>
>          #include <linux/stddef.h>
>          #include <linux/string.h>
>          #include <linux/thread_info.h>
>         --
>         2.25.1
> 
> 
>     .
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-05-11  8:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-09  6:17 [PATCH -next] arm64: add missing header dependencies Gaosheng Cui
2022-05-10 10:40 ` Will Deacon
     [not found]   ` <3b692d9f-0f76-33b8-0c22-909a24377e33@huawei.com>
2022-05-11  8:30     ` Mark Rutland [this message]
2022-05-13  2:57 ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ynt0J5daWq7swGP8@FVFF77S0Q05N \
    --to=mark.rutland@arm.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=cuigaosheng1@huawei.com \
    --cc=daniel.kiss@arm.com \
    --cc=gongruiqi1@huawei.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pcc@google.com \
    --cc=wangweiyang2@huawei.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox