Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-10-07 Thread Yury Norov
On Tue, Oct 06, 2015 at 12:21:33PM +0300, Andrey Konovalov wrote:
> Hi Yury,
> 
> With this patch set 4.3 kernel fails to build with 
> arch/arm64/configs/defconfig plus CONFIG_AARCH32_EL0=y
> and CONFIG_ARM64_ILP32=y giving the following three errors (the 3d one is 
> warning actually):

[...]

> Thanks,
> Andrey

Hi, Andrey,

Thank you. If you're interested in early testing, you can pull
my working branch here:

https://github.com/norov/linux/tree/ilp

There, build for all combinations of CONFIG_AARCH32_EL0 and
CONFIG_ARM64_ILP32 is fixed.

I can also share my testing tools, if needed.

BR,
Yury.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-10-07 Thread Yury Norov
On Tue, Oct 06, 2015 at 12:21:33PM +0300, Andrey Konovalov wrote:
> Hi Yury,
> 
> With this patch set 4.3 kernel fails to build with 
> arch/arm64/configs/defconfig plus CONFIG_AARCH32_EL0=y
> and CONFIG_ARM64_ILP32=y giving the following three errors (the 3d one is 
> warning actually):

[...]

> Thanks,
> Andrey

Hi, Andrey,

Thank you. If you're interested in early testing, you can pull
my working branch here:

https://github.com/norov/linux/tree/ilp

There, build for all combinations of CONFIG_AARCH32_EL0 and
CONFIG_ARM64_ILP32 is fixed.

I can also share my testing tools, if needed.

BR,
Yury.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-10-06 Thread Andrey Konovalov

Hi Yury,

With this patch set 4.3 kernel fails to build with arch/arm64/configs/defconfig 
plus CONFIG_AARCH32_EL0=y
and CONFIG_ARM64_ILP32=y giving the following three errors (the 3d one is 
warning actually):

-8<-
13:21:16 In file included from ../arch/arm64/kernel/process.c:48:0:
13:21:16 ../arch/arm64/include/asm/compat.h:370:38: error: macro 
"is_compat_task" passed 1 arguments, but takes just 0
13:21:16  static inline int is_compat_task(void)
13:21:16   ^
13:21:16 ../arch/arm64/include/asm/compat.h:371:1: error: expected '=', ',', 
';', 'asm' or '__attribute__' before '{' token
13:21:16  {
13:21:16  ^
13:21:16 ../arch/arm64/include/asm/compat.h:375:19: error: redefinition of 
'is_compat_thread'
13:21:16  static inline int is_compat_thread(struct thread_info *thread)
13:21:16^
13:21:16 ../arch/arm64/include/asm/compat.h:350:19: note: previous definition 
of 'is_compat_thread' was here
13:21:16  static inline int is_compat_thread(struct thread_info *thread)
13:21:16^
13:21:16 ../arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
13:21:16 ../arch/arm64/include/asm/compat.h:377:2: error: implicit declaration of function 'is_a32_compat_thread' 
[-Werror=implicit-function-declaration]

13:21:16   return is_a32_compat_thread(thread) || 
is_ilp32_compat_thread(thread);
13:21:16   ^
13:21:16 cc1: some warnings being treated as errors
-8<-

See more details below.

Thanks,
Andrey

On 09/30/2015 01:14 AM, Yury Norov wrote:

From: Andrew Pinski 

This patch introduces is_a32_compat_task and is_a32_thread so it is
easier
to say this is a a32 specific thread or a generic compat thread/task.

Signed-off-by: Philipp Tomsich 
Signed-off-by: Christoph Muellner 
Signed-off-by: Yury Norov 

diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h
index 7fbed69..3a2976d 100644
--- a/arch/arm64/include/asm/compat.h
+++ b/arch/arm64/include/asm/compat.h
@@ -299,15 +299,25 @@ struct compat_shmid64_ds {
compat_ulong_t __unused5;
  };

-static inline int is_compat_task(void)
+#ifdef CONFIG_AARCH32_EL0
+static inline int is_a32_compat_task(void)
  {
return test_thread_flag(TIF_32BIT);
  }
-
-static inline int is_compat_thread(struct thread_info *thread)
+static inline int is_a32_compat_thread(struct thread_info *thread)
  {
return test_ti_thread_flag(thread, TIF_32BIT);
  }
+#else
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+static inline int is_a32_compat_thread(struct thread_info *thread)
+{
+   return 0;
+}
+#endif

  #else /* !CONFIG_COMPAT */

@@ -316,6 +326,21 @@ static inline int is_compat_thread(struct thread_info 
*thread)


- this misprint is the reason for the last two errors. That is_compat_thread 
above
should be is_a32_compat_thread.


return 0;
  }

+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+
  #endif /* CONFIG_COMPAT */
+
+static inline int is_compat_task(void)
+{
+   return is_a32_compat_task();
+}


- the above definition causes the 1st of the errors as in the !CONFIG_COMPAT 
case
include/linux/compat.h has:

-8<-
#define is_compat_task() (0)
-8<-

is_compat_task() should not be defined outside #ifdef CONFIG_COMPAT.


+static inline int is_compat_thread(struct thread_info *thread)
+{
+   return is_a32_compat_thread(thread);
+}
  #endif /* __KERNEL__ */
  #endif /* __ASM_COMPAT_H */



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-10-06 Thread Andrey Konovalov

Hi Yury,

With this patch set 4.3 kernel fails to build with arch/arm64/configs/defconfig 
plus CONFIG_AARCH32_EL0=y
and CONFIG_ARM64_ILP32=y giving the following three errors (the 3d one is 
warning actually):

-8<-
13:21:16 In file included from ../arch/arm64/kernel/process.c:48:0:
13:21:16 ../arch/arm64/include/asm/compat.h:370:38: error: macro 
"is_compat_task" passed 1 arguments, but takes just 0
13:21:16  static inline int is_compat_task(void)
13:21:16   ^
13:21:16 ../arch/arm64/include/asm/compat.h:371:1: error: expected '=', ',', 
';', 'asm' or '__attribute__' before '{' token
13:21:16  {
13:21:16  ^
13:21:16 ../arch/arm64/include/asm/compat.h:375:19: error: redefinition of 
'is_compat_thread'
13:21:16  static inline int is_compat_thread(struct thread_info *thread)
13:21:16^
13:21:16 ../arch/arm64/include/asm/compat.h:350:19: note: previous definition 
of 'is_compat_thread' was here
13:21:16  static inline int is_compat_thread(struct thread_info *thread)
13:21:16^
13:21:16 ../arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
13:21:16 ../arch/arm64/include/asm/compat.h:377:2: error: implicit declaration of function 'is_a32_compat_thread' 
[-Werror=implicit-function-declaration]

13:21:16   return is_a32_compat_thread(thread) || 
is_ilp32_compat_thread(thread);
13:21:16   ^
13:21:16 cc1: some warnings being treated as errors
-8<-

See more details below.

Thanks,
Andrey

On 09/30/2015 01:14 AM, Yury Norov wrote:

From: Andrew Pinski 

This patch introduces is_a32_compat_task and is_a32_thread so it is
easier
to say this is a a32 specific thread or a generic compat thread/task.

Signed-off-by: Philipp Tomsich 
Signed-off-by: Christoph Muellner 
Signed-off-by: Yury Norov 

diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h
index 7fbed69..3a2976d 100644
--- a/arch/arm64/include/asm/compat.h
+++ b/arch/arm64/include/asm/compat.h
@@ -299,15 +299,25 @@ struct compat_shmid64_ds {
compat_ulong_t __unused5;
  };

-static inline int is_compat_task(void)
+#ifdef CONFIG_AARCH32_EL0
+static inline int is_a32_compat_task(void)
  {
return test_thread_flag(TIF_32BIT);
  }
-
-static inline int is_compat_thread(struct thread_info *thread)
+static inline int is_a32_compat_thread(struct thread_info *thread)
  {
return test_ti_thread_flag(thread, TIF_32BIT);
  }
+#else
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+static inline int is_a32_compat_thread(struct thread_info *thread)
+{
+   return 0;
+}
+#endif

  #else /* !CONFIG_COMPAT */

@@ -316,6 +326,21 @@ static inline int is_compat_thread(struct thread_info 
*thread)


- this misprint is the reason for the last two errors. That is_compat_thread 
above
should be is_a32_compat_thread.


return 0;
  }

+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+
  #endif /* CONFIG_COMPAT */
+
+static inline int is_compat_task(void)
+{
+   return is_a32_compat_task();
+}


- the above definition causes the 1st of the errors as in the !CONFIG_COMPAT 
case
include/linux/compat.h has:

-8<-
#define is_compat_task() (0)
-8<-

is_compat_task() should not be defined outside #ifdef CONFIG_COMPAT.


+static inline int is_compat_thread(struct thread_info *thread)
+{
+   return is_a32_compat_thread(thread);
+}
  #endif /* __KERNEL__ */
  #endif /* __ASM_COMPAT_H */



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-09-29 Thread kbuild test robot
Hi Andrew,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please 
ignore]

config: arm64-allnoconfig (attached as .config)
reproduce:
  wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
  chmod +x ~/bin/make.cross
  git checkout fe86f28ac31c45961e8b7bedb02c1836ddc91860
  # save the attached .config to linux build tree
  make.cross ARCH=arm64 

All error/warnings (new ones prefixed by >>):

   In file included from arch/arm64/kernel/process.c:48:0:
>> arch/arm64/include/asm/compat.h:336:38: error: macro "is_compat_task" passed 
>> 1 arguments, but takes just 0
static inline int is_compat_task(void)
 ^
>> arch/arm64/include/asm/compat.h:337:1: error: expected '=', ',', ';', 'asm' 
>> or '__attribute__' before '{' token
{
^
>> arch/arm64/include/asm/compat.h:341:19: error: redefinition of 
>> 'is_compat_thread'
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h:324:19: note: previous definition of 
'is_compat_thread' was here
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
>> arch/arm64/include/asm/compat.h:343:2: error: implicit declaration of 
>> function 'is_a32_compat_thread' [-Werror=implicit-function-declaration]
 return is_a32_compat_thread(thread);
 ^
   cc1: some warnings being treated as errors
--
   In file included from arch/arm64/kernel/ptrace.c:41:0:
>> arch/arm64/include/asm/compat.h:336:38: error: macro "is_compat_task" passed 
>> 1 arguments, but takes just 0
static inline int is_compat_task(void)
 ^
>> arch/arm64/include/asm/compat.h:337:1: error: expected '=', ',', ';', 'asm' 
>> or '__attribute__' before '{' token
{
^
>> arch/arm64/include/asm/compat.h:341:19: error: redefinition of 
>> 'is_compat_thread'
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h:324:19: note: previous definition of 
'is_compat_thread' was here
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
>> arch/arm64/include/asm/compat.h:343:2: error: implicit declaration of 
>> function 'is_a32_compat_thread' [-Werror=implicit-function-declaration]
 return is_a32_compat_thread(thread);
 ^
   arch/arm64/kernel/ptrace.c: At top level:
   arch/arm64/kernel/ptrace.c:1190:56: error: unknown type name 'compat_long_t'
long compat_a32_arch_ptrace(struct task_struct *child, compat_long_t 
request,
   ^
   arch/arm64/kernel/ptrace.c:1191:8: error: unknown type name 'compat_ulong_t'
   compat_ulong_t caddr, compat_ulong_t cdata)
   ^
   arch/arm64/kernel/ptrace.c:1191:30: error: unknown type name 'compat_ulong_t'
   compat_ulong_t caddr, compat_ulong_t cdata)
 ^
   cc1: some warnings being treated as errors
--
   arch/arm64/kernel/signal.c: In function 'setup_restart_syscall':
>> arch/arm64/kernel/signal.c:279:2: error: implicit declaration of function 
>> 'is_a32_compat_task' [-Werror=implicit-function-declaration]
 if (is_a32_compat_task())
 ^
   arch/arm64/kernel/signal.c:280:3: error: implicit declaration of function 
'compat_setup_restart_syscall' [-Werror=implicit-function-declaration]
  compat_setup_restart_syscall(regs);
  ^
   arch/arm64/kernel/signal.c: In function 'handle_signal':
   arch/arm64/kernel/signal.c:300:4: error: implicit declaration of function 
'compat_setup_rt_frame' [-Werror=implicit-function-declaration]
   ret = compat_setup_rt_frame(usig, ksig, oldset, regs);
   ^
   arch/arm64/kernel/signal.c:302:4: error: implicit declaration of function 
'compat_setup_frame' [-Werror=implicit-function-declaration]
   ret = compat_setup_frame(usig, ksig, oldset, regs);
   ^
   cc1: some warnings being treated as errors

vim +/is_compat_task +336 arch/arm64/include/asm/compat.h

   330  {
   331  return 0;
   332  }
   333  
   334  #endif /* CONFIG_COMPAT */
   335  
 > 336  static inline int is_compat_task(void)
 > 337  {
   338  return is_a32_compat_task();
   339  }
   340  
 > 341  static inline int is_compat_thread(struct thread_info *thread)
   342  {
 > 343  return is_a32_compat_thread(thread);
   344  }
   345  #endif /* __KERNEL__ */
   346  #endif /* __ASM_COMPAT_H */

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: Binary data


[PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-09-29 Thread Yury Norov
From: Andrew Pinski 

This patch introduces is_a32_compat_task and is_a32_thread so it is
easier
to say this is a a32 specific thread or a generic compat thread/task.

Signed-off-by: Philipp Tomsich 
Signed-off-by: Christoph Muellner 
Signed-off-by: Yury Norov 

diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h
index 7fbed69..3a2976d 100644
--- a/arch/arm64/include/asm/compat.h
+++ b/arch/arm64/include/asm/compat.h
@@ -299,15 +299,25 @@ struct compat_shmid64_ds {
compat_ulong_t __unused5;
 };
 
-static inline int is_compat_task(void)
+#ifdef CONFIG_AARCH32_EL0
+static inline int is_a32_compat_task(void)
 {
return test_thread_flag(TIF_32BIT);
 }
-
-static inline int is_compat_thread(struct thread_info *thread)
+static inline int is_a32_compat_thread(struct thread_info *thread)
 {
return test_ti_thread_flag(thread, TIF_32BIT);
 }
+#else
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+static inline int is_a32_compat_thread(struct thread_info *thread)
+{
+   return 0;
+}
+#endif
 
 #else /* !CONFIG_COMPAT */
 
@@ -316,6 +326,21 @@ static inline int is_compat_thread(struct thread_info 
*thread)
return 0;
 }
 
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+
 #endif /* CONFIG_COMPAT */
+
+static inline int is_compat_task(void)
+{
+   return is_a32_compat_task();
+}
+
+static inline int is_compat_thread(struct thread_info *thread)
+{
+   return is_a32_compat_thread(thread);
+}
 #endif /* __KERNEL__ */
 #endif /* __ASM_COMPAT_H */
diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
index f40c51b..9ecbaf2 100644
--- a/arch/arm64/include/asm/elf.h
+++ b/arch/arm64/include/asm/elf.h
@@ -149,7 +149,7 @@ extern int arch_setup_additional_pages(struct linux_binprm 
*bprm,
 
 /* 1GB of VA */
 #ifdef CONFIG_COMPAT
-#define STACK_RND_MASK (test_thread_flag(TIF_32BIT) ? \
+#define STACK_RND_MASK (is_compat_task() ? \
0x7ff >> (PAGE_SHIFT - 12) : \
0x3 >> (PAGE_SHIFT - 12))
 #else
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 6b4c3ad..337f8e1 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -58,7 +58,7 @@
 
 #ifdef CONFIG_COMPAT
 #define TASK_SIZE_32   UL(0x1)
-#define TASK_SIZE  (test_thread_flag(TIF_32BIT) ? \
+#define TASK_SIZE  (is_compat_task() ? \
TASK_SIZE_32 : TASK_SIZE_64)
 #define TASK_SIZE_OF(tsk)  (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
TASK_SIZE_32 : TASK_SIZE_64)
diff --git a/arch/arm64/include/asm/processor.h 
b/arch/arm64/include/asm/processor.h
index 98f3235..f1bba0c 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -39,7 +39,7 @@
 #define STACK_TOP_MAX  TASK_SIZE_64
 #ifdef CONFIG_COMPAT
 #define AARCH32_VECTORS_BASE   0x
-#define STACK_TOP  (test_thread_flag(TIF_32BIT) ? \
+#define STACK_TOP  (is_compat_task() ? \
AARCH32_VECTORS_BASE : STACK_TOP_MAX)
 #else
 #define STACK_TOP  STACK_TOP_MAX
diff --git a/arch/arm64/include/asm/thread_info.h 
b/arch/arm64/include/asm/thread_info.h
index dcd06d1..7d03565 100644
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@ -110,7 +110,7 @@ static inline struct thread_info *current_thread_info(void)
 #define TIF_FREEZE 19
 #define TIF_RESTORE_SIGMASK20
 #define TIF_SINGLESTEP 21
-#define TIF_32BIT  22  /* 32bit process */
+#define TIF_32BIT  22  /* AARCH32 process */
 #define TIF_SWITCH_MM  23  /* deferred switch_mm */
 
 #define _TIF_SIGPENDING(1 << TIF_SIGPENDING)
diff --git a/arch/arm64/kernel/hw_breakpoint.c 
b/arch/arm64/kernel/hw_breakpoint.c
index bba85c8..917f6e1 100644
--- a/arch/arm64/kernel/hw_breakpoint.c
+++ b/arch/arm64/kernel/hw_breakpoint.c
@@ -420,7 +420,7 @@ static int arch_build_bp_info(struct perf_event *bp)
 * Watchpoints can be of length 1, 2, 4 or 8 bytes.
 */
if (info->ctrl.type == ARM_BREAKPOINT_EXECUTE) {
-   if (is_compat_task()) {
+   if (is_a32_compat_task()) {
if (info->ctrl.len != ARM_BREAKPOINT_LEN_2 &&
info->ctrl.len != ARM_BREAKPOINT_LEN_4)
return -EINVAL;
@@ -477,7 +477,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
 * AArch32 tasks expect some simple alignment fixups, so emulate
 * that here.
 */
-   if (is_compat_task()) {
+   if (is_a32_compat_task()) {
if (info->ctrl.len == ARM_BREAKPOINT_LEN_8)
alignment_mask = 0x7;
 

[PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-09-29 Thread Yury Norov
From: Andrew Pinski 

This patch introduces is_a32_compat_task and is_a32_thread so it is
easier
to say this is a a32 specific thread or a generic compat thread/task.

Signed-off-by: Philipp Tomsich 
Signed-off-by: Christoph Muellner 
Signed-off-by: Yury Norov 

diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h
index 7fbed69..3a2976d 100644
--- a/arch/arm64/include/asm/compat.h
+++ b/arch/arm64/include/asm/compat.h
@@ -299,15 +299,25 @@ struct compat_shmid64_ds {
compat_ulong_t __unused5;
 };
 
-static inline int is_compat_task(void)
+#ifdef CONFIG_AARCH32_EL0
+static inline int is_a32_compat_task(void)
 {
return test_thread_flag(TIF_32BIT);
 }
-
-static inline int is_compat_thread(struct thread_info *thread)
+static inline int is_a32_compat_thread(struct thread_info *thread)
 {
return test_ti_thread_flag(thread, TIF_32BIT);
 }
+#else
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+static inline int is_a32_compat_thread(struct thread_info *thread)
+{
+   return 0;
+}
+#endif
 
 #else /* !CONFIG_COMPAT */
 
@@ -316,6 +326,21 @@ static inline int is_compat_thread(struct thread_info 
*thread)
return 0;
 }
 
+static inline int is_a32_compat_task(void)
+{
+   return 0;
+}
+
 #endif /* CONFIG_COMPAT */
+
+static inline int is_compat_task(void)
+{
+   return is_a32_compat_task();
+}
+
+static inline int is_compat_thread(struct thread_info *thread)
+{
+   return is_a32_compat_thread(thread);
+}
 #endif /* __KERNEL__ */
 #endif /* __ASM_COMPAT_H */
diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
index f40c51b..9ecbaf2 100644
--- a/arch/arm64/include/asm/elf.h
+++ b/arch/arm64/include/asm/elf.h
@@ -149,7 +149,7 @@ extern int arch_setup_additional_pages(struct linux_binprm 
*bprm,
 
 /* 1GB of VA */
 #ifdef CONFIG_COMPAT
-#define STACK_RND_MASK (test_thread_flag(TIF_32BIT) ? \
+#define STACK_RND_MASK (is_compat_task() ? \
0x7ff >> (PAGE_SHIFT - 12) : \
0x3 >> (PAGE_SHIFT - 12))
 #else
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 6b4c3ad..337f8e1 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -58,7 +58,7 @@
 
 #ifdef CONFIG_COMPAT
 #define TASK_SIZE_32   UL(0x1)
-#define TASK_SIZE  (test_thread_flag(TIF_32BIT) ? \
+#define TASK_SIZE  (is_compat_task() ? \
TASK_SIZE_32 : TASK_SIZE_64)
 #define TASK_SIZE_OF(tsk)  (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
TASK_SIZE_32 : TASK_SIZE_64)
diff --git a/arch/arm64/include/asm/processor.h 
b/arch/arm64/include/asm/processor.h
index 98f3235..f1bba0c 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -39,7 +39,7 @@
 #define STACK_TOP_MAX  TASK_SIZE_64
 #ifdef CONFIG_COMPAT
 #define AARCH32_VECTORS_BASE   0x
-#define STACK_TOP  (test_thread_flag(TIF_32BIT) ? \
+#define STACK_TOP  (is_compat_task() ? \
AARCH32_VECTORS_BASE : STACK_TOP_MAX)
 #else
 #define STACK_TOP  STACK_TOP_MAX
diff --git a/arch/arm64/include/asm/thread_info.h 
b/arch/arm64/include/asm/thread_info.h
index dcd06d1..7d03565 100644
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@ -110,7 +110,7 @@ static inline struct thread_info *current_thread_info(void)
 #define TIF_FREEZE 19
 #define TIF_RESTORE_SIGMASK20
 #define TIF_SINGLESTEP 21
-#define TIF_32BIT  22  /* 32bit process */
+#define TIF_32BIT  22  /* AARCH32 process */
 #define TIF_SWITCH_MM  23  /* deferred switch_mm */
 
 #define _TIF_SIGPENDING(1 << TIF_SIGPENDING)
diff --git a/arch/arm64/kernel/hw_breakpoint.c 
b/arch/arm64/kernel/hw_breakpoint.c
index bba85c8..917f6e1 100644
--- a/arch/arm64/kernel/hw_breakpoint.c
+++ b/arch/arm64/kernel/hw_breakpoint.c
@@ -420,7 +420,7 @@ static int arch_build_bp_info(struct perf_event *bp)
 * Watchpoints can be of length 1, 2, 4 or 8 bytes.
 */
if (info->ctrl.type == ARM_BREAKPOINT_EXECUTE) {
-   if (is_compat_task()) {
+   if (is_a32_compat_task()) {
if (info->ctrl.len != ARM_BREAKPOINT_LEN_2 &&
info->ctrl.len != ARM_BREAKPOINT_LEN_4)
return -EINVAL;
@@ -477,7 +477,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
 * AArch32 tasks expect some simple alignment fixups, so emulate
 * that here.
 */
-   if (is_compat_task()) {
+   if 

Re: [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

2015-09-29 Thread kbuild test robot
Hi Andrew,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please 
ignore]

config: arm64-allnoconfig (attached as .config)
reproduce:
  wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
  chmod +x ~/bin/make.cross
  git checkout fe86f28ac31c45961e8b7bedb02c1836ddc91860
  # save the attached .config to linux build tree
  make.cross ARCH=arm64 

All error/warnings (new ones prefixed by >>):

   In file included from arch/arm64/kernel/process.c:48:0:
>> arch/arm64/include/asm/compat.h:336:38: error: macro "is_compat_task" passed 
>> 1 arguments, but takes just 0
static inline int is_compat_task(void)
 ^
>> arch/arm64/include/asm/compat.h:337:1: error: expected '=', ',', ';', 'asm' 
>> or '__attribute__' before '{' token
{
^
>> arch/arm64/include/asm/compat.h:341:19: error: redefinition of 
>> 'is_compat_thread'
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h:324:19: note: previous definition of 
'is_compat_thread' was here
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
>> arch/arm64/include/asm/compat.h:343:2: error: implicit declaration of 
>> function 'is_a32_compat_thread' [-Werror=implicit-function-declaration]
 return is_a32_compat_thread(thread);
 ^
   cc1: some warnings being treated as errors
--
   In file included from arch/arm64/kernel/ptrace.c:41:0:
>> arch/arm64/include/asm/compat.h:336:38: error: macro "is_compat_task" passed 
>> 1 arguments, but takes just 0
static inline int is_compat_task(void)
 ^
>> arch/arm64/include/asm/compat.h:337:1: error: expected '=', ',', ';', 'asm' 
>> or '__attribute__' before '{' token
{
^
>> arch/arm64/include/asm/compat.h:341:19: error: redefinition of 
>> 'is_compat_thread'
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h:324:19: note: previous definition of 
'is_compat_thread' was here
static inline int is_compat_thread(struct thread_info *thread)
  ^
   arch/arm64/include/asm/compat.h: In function 'is_compat_thread':
>> arch/arm64/include/asm/compat.h:343:2: error: implicit declaration of 
>> function 'is_a32_compat_thread' [-Werror=implicit-function-declaration]
 return is_a32_compat_thread(thread);
 ^
   arch/arm64/kernel/ptrace.c: At top level:
   arch/arm64/kernel/ptrace.c:1190:56: error: unknown type name 'compat_long_t'
long compat_a32_arch_ptrace(struct task_struct *child, compat_long_t 
request,
   ^
   arch/arm64/kernel/ptrace.c:1191:8: error: unknown type name 'compat_ulong_t'
   compat_ulong_t caddr, compat_ulong_t cdata)
   ^
   arch/arm64/kernel/ptrace.c:1191:30: error: unknown type name 'compat_ulong_t'
   compat_ulong_t caddr, compat_ulong_t cdata)
 ^
   cc1: some warnings being treated as errors
--
   arch/arm64/kernel/signal.c: In function 'setup_restart_syscall':
>> arch/arm64/kernel/signal.c:279:2: error: implicit declaration of function 
>> 'is_a32_compat_task' [-Werror=implicit-function-declaration]
 if (is_a32_compat_task())
 ^
   arch/arm64/kernel/signal.c:280:3: error: implicit declaration of function 
'compat_setup_restart_syscall' [-Werror=implicit-function-declaration]
  compat_setup_restart_syscall(regs);
  ^
   arch/arm64/kernel/signal.c: In function 'handle_signal':
   arch/arm64/kernel/signal.c:300:4: error: implicit declaration of function 
'compat_setup_rt_frame' [-Werror=implicit-function-declaration]
   ret = compat_setup_rt_frame(usig, ksig, oldset, regs);
   ^
   arch/arm64/kernel/signal.c:302:4: error: implicit declaration of function 
'compat_setup_frame' [-Werror=implicit-function-declaration]
   ret = compat_setup_frame(usig, ksig, oldset, regs);
   ^
   cc1: some warnings being treated as errors

vim +/is_compat_task +336 arch/arm64/include/asm/compat.h

   330  {
   331  return 0;
   332  }
   333  
   334  #endif /* CONFIG_COMPAT */
   335  
 > 336  static inline int is_compat_task(void)
 > 337  {
   338  return is_a32_compat_task();
   339  }
   340  
 > 341  static inline int is_compat_thread(struct thread_info *thread)
   342  {
 > 343  return is_a32_compat_thread(thread);
   344  }
   345  #endif /* __KERNEL__ */
   346  #endif /* __ASM_COMPAT_H */

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: Binary data