Message ID | 20200226180526.3272848-10-catalin.marinas@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: Memory Tagging Extension user-space support | expand |
Catalin Marinas <catalin.marinas@arm.com> writes: > From: Vincenzo Frascino <vincenzo.frascino@arm.com> > > Add MTE-specific SIGSEGV codes to siginfo.h. > > Note that the for MTE we are reusing the same SPARC ADI codes because > the two functionalities are similar and they cannot coexist on the same > system. Any chance you can move the v2 notes up into the description or otherwise fix it. The description talks about reusing the ADI codes which is no longer happening. Otherwise the patch looks good. Acked-by: "Eric W. Biederman" <ebiederm@xmission.com> > > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Eric W. Biederman <ebiederm@xmission.com> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > [catalin.marinas@arm.com: renamed precise/imprecise to sync/async] > [catalin.marinas@arm.com: dropped #ifdef __aarch64__, renumbered] > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > --- > > Notes: > v2: > - Dropped the #ifdef __aarch64__. > - Renumbered the SEGV_MTE* values to avoid clash with ADI. > > include/uapi/asm-generic/siginfo.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/asm-generic/siginfo.h b/include/uapi/asm-generic/siginfo.h > index cb3d6c267181..7aacf9389010 100644 > --- a/include/uapi/asm-generic/siginfo.h > +++ b/include/uapi/asm-generic/siginfo.h > @@ -229,7 +229,9 @@ typedef struct siginfo { > #define SEGV_ACCADI 5 /* ADI not enabled for mapped object */ > #define SEGV_ADIDERR 6 /* Disrupting MCD error */ > #define SEGV_ADIPERR 7 /* Precise MCD exception */ > -#define NSIGSEGV 7 > +#define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ > +#define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ > +#define NSIGSEGV 9 > > /* > * SIGBUS si_codes
On Wed, Feb 26, 2020 at 01:05:52PM -0600, Eric W. Biederman wrote: > Catalin Marinas <catalin.marinas@arm.com> writes: > > > From: Vincenzo Frascino <vincenzo.frascino@arm.com> > > > > Add MTE-specific SIGSEGV codes to siginfo.h. > > > > Note that the for MTE we are reusing the same SPARC ADI codes because > > the two functionalities are similar and they cannot coexist on the same > > system. > > Any chance you can move the v2 notes up into the description or > otherwise fix it. The description talks about reusing the ADI codes > which is no longer happening. Oh, I forgot to check the patch description. I will fix it. > Otherwise the patch looks good. > > Acked-by: "Eric W. Biederman" <ebiederm@xmission.com> Thanks.
Hi Catalin, I love your patch! Yet something to improve: [auto build test ERROR on arm-soc/for-next] [also build test ERROR on arm/for-next linus/master v5.6-rc3 next-20200226] [cannot apply to arm64/for-next/core kvmarm/next xlnx/master arm-perf/for-next/perf] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Catalin-Marinas/arm64-Memory-Tagging-Extension-user-space-support/20200227-041230 base: https://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git for-next config: x86_64-defconfig (attached as .config) compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): In file included from include/linux/export.h:43:0, from include/linux/linkage.h:7, from arch/x86/include/asm/cache.h:5, from include/linux/cache.h:6, from include/linux/time.h:5, from include/linux/compat.h:10, from arch/x86/kernel/signal_compat.c:2: In function 'signal_compat_build_tests', inlined from 'sigaction_compat_abi' at arch/x86/kernel/signal_compat.c:166:2: >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_30' declared with attribute error: BUILD_BUG_ON failed: NSIGSEGV != 7 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^ include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert' prefix ## suffix(); \ ^~~~~~ include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^~~~~~~~~~~~~~~~ >> arch/x86/kernel/signal_compat.c:30:2: note: in expansion of macro 'BUILD_BUG_ON' BUILD_BUG_ON(NSIGSEGV != 7); ^~~~~~~~~~~~ -- In file included from include/linux/export.h:43:0, from include/linux/linkage.h:7, from arch/x86/include/asm/cache.h:5, from include/linux/cache.h:6, from include/linux/time.h:5, from include/linux/compat.h:10, from arch/x86//kernel/signal_compat.c:2: In function 'signal_compat_build_tests', inlined from 'sigaction_compat_abi' at arch/x86//kernel/signal_compat.c:166:2: >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_30' declared with attribute error: BUILD_BUG_ON failed: NSIGSEGV != 7 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^ include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert' prefix ## suffix(); \ ^~~~~~ include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^~~~~~~~~~~~~~~~ arch/x86//kernel/signal_compat.c:30:2: note: in expansion of macro 'BUILD_BUG_ON' BUILD_BUG_ON(NSIGSEGV != 7); ^~~~~~~~~~~~ vim +/__compiletime_assert_30 +350 include/linux/compiler.h 9a8ab1c39970a4 Daniel Santos 2013-02-21 336 9a8ab1c39970a4 Daniel Santos 2013-02-21 337 #define _compiletime_assert(condition, msg, prefix, suffix) \ 9a8ab1c39970a4 Daniel Santos 2013-02-21 338 __compiletime_assert(condition, msg, prefix, suffix) 9a8ab1c39970a4 Daniel Santos 2013-02-21 339 9a8ab1c39970a4 Daniel Santos 2013-02-21 340 /** 9a8ab1c39970a4 Daniel Santos 2013-02-21 341 * compiletime_assert - break build and emit msg if condition is false 9a8ab1c39970a4 Daniel Santos 2013-02-21 342 * @condition: a compile-time constant condition to check 9a8ab1c39970a4 Daniel Santos 2013-02-21 343 * @msg: a message to emit if condition is false 9a8ab1c39970a4 Daniel Santos 2013-02-21 344 * 9a8ab1c39970a4 Daniel Santos 2013-02-21 345 * In tradition of POSIX assert, this macro will break the build if the 9a8ab1c39970a4 Daniel Santos 2013-02-21 346 * supplied condition is *false*, emitting the supplied error message if the 9a8ab1c39970a4 Daniel Santos 2013-02-21 347 * compiler has support to do so. 9a8ab1c39970a4 Daniel Santos 2013-02-21 348 */ 9a8ab1c39970a4 Daniel Santos 2013-02-21 349 #define compiletime_assert(condition, msg) \ 9a8ab1c39970a4 Daniel Santos 2013-02-21 @350 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) 9a8ab1c39970a4 Daniel Santos 2013-02-21 351 :::::: The code at line 350 was first introduced by commit :::::: 9a8ab1c39970a4938a72d94e6fd13be88a797590 bug.h, compiler.h: introduce compiletime_assert & BUILD_BUG_ON_MSG :::::: TO: Daniel Santos <daniel.santos@pobox.com> :::::: CC: Linus Torvalds <torvalds@linux-foundation.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Thu, Feb 27, 2020 at 06:33:14AM +0800, kbuild test robot wrote: > url: https://github.com/0day-ci/linux/commits/Catalin-Marinas/arm64-Memory-Tagging-Extension-user-space-support/20200227-041230 > base: https://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git for-next > config: x86_64-defconfig (attached as .config) > compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <lkp@intel.com> > > All error/warnings (new ones prefixed by >>): > > In file included from include/linux/export.h:43:0, > from include/linux/linkage.h:7, > from arch/x86/include/asm/cache.h:5, > from include/linux/cache.h:6, > from include/linux/time.h:5, > from include/linux/compat.h:10, > from arch/x86/kernel/signal_compat.c:2: > In function 'signal_compat_build_tests', > inlined from 'sigaction_compat_abi' at arch/x86/kernel/signal_compat.c:166:2: > >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_30' declared with attribute error: BUILD_BUG_ON failed: NSIGSEGV != 7 I haven't realised that x86 has a build check for NSIGSEGV. I'll fold in the diff below (there are no new fields added to siginfo, so no other changes necessary): diff --git a/arch/x86/kernel/signal_compat.c b/arch/x86/kernel/signal_compat.c index 9ccbf0576cd0..a7f3e12cfbdb 100644 --- a/arch/x86/kernel/signal_compat.c +++ b/arch/x86/kernel/signal_compat.c @@ -27,7 +27,7 @@ static inline void signal_compat_build_tests(void) */ BUILD_BUG_ON(NSIGILL != 11); BUILD_BUG_ON(NSIGFPE != 15); - BUILD_BUG_ON(NSIGSEGV != 7); + BUILD_BUG_ON(NSIGSEGV != 9); BUILD_BUG_ON(NSIGBUS != 5); BUILD_BUG_ON(NSIGTRAP != 5); BUILD_BUG_ON(NSIGCHLD != 6);
Catalin Marinas <catalin.marinas@arm.com> writes: > On Thu, Feb 27, 2020 at 06:33:14AM +0800, kbuild test robot wrote: >> url: https://github.com/0day-ci/linux/commits/Catalin-Marinas/arm64-Memory-Tagging-Extension-user-space-support/20200227-041230 >> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git for-next >> config: x86_64-defconfig (attached as .config) >> compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 >> reproduce: >> # save the attached .config to linux build tree >> make ARCH=x86_64 >> >> If you fix the issue, kindly add following tag >> Reported-by: kbuild test robot <lkp@intel.com> >> >> All error/warnings (new ones prefixed by >>): >> >> In file included from include/linux/export.h:43:0, >> from include/linux/linkage.h:7, >> from arch/x86/include/asm/cache.h:5, >> from include/linux/cache.h:6, >> from include/linux/time.h:5, >> from include/linux/compat.h:10, >> from arch/x86/kernel/signal_compat.c:2: >> In function 'signal_compat_build_tests', >> inlined from 'sigaction_compat_abi' at arch/x86/kernel/signal_compat.c:166:2: >> >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_30' declared with attribute error: BUILD_BUG_ON failed: NSIGSEGV != 7 > > I haven't realised that x86 has a build check for NSIGSEGV. I'll fold in > the diff below (there are no new fields added to siginfo, so no other > changes necessary): Yes. That looks good. Acked-by: "Eric W. Biederman" <ebiederm@xmission.com> > diff --git a/arch/x86/kernel/signal_compat.c b/arch/x86/kernel/signal_compat.c > index 9ccbf0576cd0..a7f3e12cfbdb 100644 > --- a/arch/x86/kernel/signal_compat.c > +++ b/arch/x86/kernel/signal_compat.c > @@ -27,7 +27,7 @@ static inline void signal_compat_build_tests(void) > */ > BUILD_BUG_ON(NSIGILL != 11); > BUILD_BUG_ON(NSIGFPE != 15); > - BUILD_BUG_ON(NSIGSEGV != 7); > + BUILD_BUG_ON(NSIGSEGV != 9); > BUILD_BUG_ON(NSIGBUS != 5); > BUILD_BUG_ON(NSIGTRAP != 5); > BUILD_BUG_ON(NSIGCHLD != 6);
diff --git a/include/uapi/asm-generic/siginfo.h b/include/uapi/asm-generic/siginfo.h index cb3d6c267181..7aacf9389010 100644 --- a/include/uapi/asm-generic/siginfo.h +++ b/include/uapi/asm-generic/siginfo.h @@ -229,7 +229,9 @@ typedef struct siginfo { #define SEGV_ACCADI 5 /* ADI not enabled for mapped object */ #define SEGV_ADIDERR 6 /* Disrupting MCD error */ #define SEGV_ADIPERR 7 /* Precise MCD exception */ -#define NSIGSEGV 7 +#define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ +#define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ +#define NSIGSEGV 9 /* * SIGBUS si_codes