From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755402AbbIAR7P (ORCPT ); Tue, 1 Sep 2015 13:59:15 -0400 Received: from mail-by2on0092.outbound.protection.outlook.com ([207.46.100.92]:51024 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754056AbbIAR7J (ORCPT ); Tue, 1 Sep 2015 13:59:09 -0400 X-Greylist: delayed 867 seconds by postgrey-1.27 at vger.kernel.org; Tue, 01 Sep 2015 13:59:09 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=caviumnetworks.com; Date: Tue, 1 Sep 2015 20:44:31 +0300 From: Yury To: Mark Rutland CC: Catalin Marinas , Will Deacon , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "ddaney@caviumnetworks.com" , Suzuki Poulose Subject: Re: [PATCH 2/2] arm64: don't load 32-bit binaries if platform has no aarch32_el0 Message-ID: <20150901174431.GA5684@yury-N73SV> References: <1441118472-3513-1-git-send-email-ynorov@caviumnetworks.com> <1441118472-3513-3-git-send-email-ynorov@caviumnetworks.com> <20150901160426.GB16430@leverpostej> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20150901160426.GB16430@leverpostej> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [91.77.150.194] X-ClientProxiedBy: VI1PR06CA0040.eurprd06.prod.outlook.com (25.162.116.178) To DM2PR07MB621.namprd07.prod.outlook.com (10.141.177.140) X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;2:IifO0Tnfq53OH3koeDMFQC6CzEvviid5mwckP5lNxhd/FD9RD5gkqDDJrcP3VbMyYAkor2ohkDsI2NSkF5aFpNo/CJQINRsfvl0xbqf35dysgCgL7/kI/Ik0NAM7KAETpEKsaSslrsBo5YYFYMybOZUFZZSbU1SunRztGRla558=;3:hNuY4PzhwKbDRa/+zNJcLhvnOoH0rxopJyXQrYJge8UQeap24NcsBLjqCCjgYo5OlBAO2i8k2qeVNFSb8iG9y96K927JxHx1VIyjxVTUHLmKSEOz59IiWagJCqXadRhsFplieEZgH4mdEIFNhvwr+A==;25:u+Zqjbwtd58vwVkQnkowlZickOOsw+9Puy5VuF4hTz7hXxb7Wd7vIEA1DWBlqzSQ9HNDU7ylK/qA/SK5BoCK5eaDa96+ws5jqm7ugNK+qh4KA87RrQceQ+L2jth38H3cJekgW17beG3XLOzZmUnC31YwgV+gwKre9KF4nufZW3bBPHkeypZ5A/ADmDM3gR0Q1EpGDdlY53B/2JBl7eNny+WtYnSnK9zo6hFDqZ0GsYKRSfBgmbJ7OVM9c5Zh1eLi/KM7ijk4vvbFOh4a0oUbvg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB621;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB960; X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;20:+PxFZzw0PemyoZ/WGqEzSlQsrxN+ZVmp1GB1lYBv9zmiXb2JGDnK/16QYW9a68ewHq6uwj/CXEc59zNR6tUhC38uPyHVhkvMGsLz96nEjkaD20L/mMz5AIfzCBo2Yq9diHYy8g1t4Ri/A9Fj9furQwLqkoF44c8ZLHPcIYtq46eMJII94tNGnl/LojPIN+2xuFXtGtHWaFVNjxBBXR3FcZ71JbOE47bQg4dYnygyzruPxRNKNKO4g+AxjsPaug7paXkktWbXDEqwwTqZj+Bfxp5ogY1o9fUVKL6AUdKP/9ZffXKm4+VNyJMua+Xa2Lszt0sx6pTBgaOaV9eTXuQ0NUXhnwwwV4iHNljDo5yIMRb0UvBgL/JV5GFNQ/oBFzxMk+mg1l+9lshIz5msxguRj9UzzFGD+kyAPzrfQoFmEuhTI+Hu0JtQ6DvbKN2hojA+p9R53xv8LY3MjNIASQw5lQ/9dlxPgizNdP+5Wd+2u1ZEODPh9NYDiryxHn0exx7Ygys9IYjZvKvSpHzjZ2DWtkJf4KGDCtSsP+8Vmh7BYSQaiGp4gNQiTONiURaD+kxZOBdfQ12QWPYVEADV4UDyHepwPhz7/qD7jmLmMqtvZg8=;4:gmh7Nw9vJT1R8g3oKVqE4EuZqrZ1OF8jEw6AOA+XGpDrWNstEfSDHF97Bf9XkB4jpw3wGA8qQosXf+BKkUvNzeq/vOkiQ6xTWCWBmVTHVQKcg5kSJc35vy8MqcOvAcc5Ngakb91JvOKmAxlfowFz9npqc0ZxY8AO00S9XFTf4QDcmS5Sam7oPPqyAFK9vJGAjT9/jswCqP4F5zE8UZPpbTc9neiewcXF/D7dAAI5aYQnPDVkt3nue5qkL9cZqM7W88ZrFZbZfxBh8+TE8P47Bh2lJMH7d2VVQFrdOs4ycbZeM8hDhNmAO8PN9g2ZKgwa3LVOMIKJyLlsWGpQXVQ76Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:DM2PR07MB621;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB621; X-Forefront-PRVS: 06860EDC7B X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(979002)(6069001)(6009001)(199003)(164054003)(24454002)(189002)(23726002)(87976001)(62966003)(2950100001)(97756001)(4001540100001)(110136002)(189998001)(50466002)(76176999)(66066001)(81156007)(68736005)(5007970100001)(83506001)(4001350100001)(92566002)(5001860100001)(64706001)(50986999)(101416001)(97736004)(54356999)(47776003)(19580395003)(19580405001)(5001960100002)(5001830100001)(42186005)(77156002)(77096005)(46406003)(122386002)(33716001)(5004730100002)(106356001)(76506005)(40100003)(46102003)(105586002)(33656002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR07MB621;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR07MB621;23:yQdWgpIypsOsWzHmc+BE+2JCb0VRzuIXCLYDUZAFnp?= =?us-ascii?Q?yuiAs3EoJauaKkC5PULlu0cLohZ6tS+dojcpLdthOW6Dv98LsqKcETq6cPm2?= =?us-ascii?Q?RhOgOyYqmQnGak1jcTvInooaxKWtY99g5PQIjGMOi4SEVV33S2aOIuvNPkM7?= =?us-ascii?Q?qPQs6BnRjgzAGT7gNe9I+8pOUXBifQb61bxgjF8vBVf2tmyv4A+8OWXN0bPI?= =?us-ascii?Q?ZkwuGCwXY4UhUpyI86bxwwGsmUZUYcEfZIXj1iAzQt5BfkZwEiYNN1PDqcx/?= =?us-ascii?Q?bel506gt873bisfUelKkFezKwJK26tJeLvHVl3KOA2TpR8digH/yW+RGBBcV?= =?us-ascii?Q?xsoVApFMg2Egr4q3bzFwZtUPLuXAy5WwKPlfok88NAlmeWCCfdA9kutWanqj?= =?us-ascii?Q?ppECHbGloZFsGPIqQsP08p6LhxzI2j6Bs4fJRlgQ/KCC7uTR7/BA/mwUHj5M?= =?us-ascii?Q?aZf+nLpY29e4WK5ttSFn/Vc3scmBQ39nbAA8r2g/ybLSrjQ4fCUCnC3G8yIn?= =?us-ascii?Q?ehVFb/ptWgwibMA3nMCmCcA9shheYwkMv11MaA5WOFJbT4IGq8Cpdp1h0OPa?= =?us-ascii?Q?NOeM7hEUyrDDjMsgQDoWdKLZh5VAK+4aeJ/LeU8KNtkt1PZIPw5Fivu9cNLi?= =?us-ascii?Q?MM2qejHm5u/7w9tgIUlrDor0itxuOSinTQkZl3fMS1Mc2yOP4ECGE4n4ejsV?= =?us-ascii?Q?vhTmzXnORiepKgib7SU9MsR9x6u/Ecec0SHS4TX1XnPQY97k64GXi3xZIRvv?= =?us-ascii?Q?3lcEkf9aqcGk3h9Yd6kPSQgM4dy4Cj43RH0nayEP2ROCyI561HMTLGvIl9ld?= =?us-ascii?Q?bzoy3n/m9A7Tf2MvymcKUcQT+GcQdpswFRGws5yL6GwfOdpkKPSyyFCo+N5p?= =?us-ascii?Q?vJ+frmtBlrRR+NPR1Vs/4uknHFPBSIi581hcK03rjV/RdchJPvcY+v4mRyje?= =?us-ascii?Q?E9MPet8uoJwiGAz5ddfWQrIOaY7ftmT9VWWqyKPm4Erph6IKZOl9Fawi0AH0?= =?us-ascii?Q?GMLfTxBPzrH2hb277WYLGZbpkq7rYm0Zl+qPA+O77IQ7WeZvPJQL0doERpho?= =?us-ascii?Q?hJ+7m8nyh54yUjsK+D17SE1HaNkksMgx8HmBjaV6mN4oR0U6jutVPzROTz/W?= =?us-ascii?Q?ka9C18yGPUh8k4fj8IQUHoZ/bnsRaaaV2BlpmdkTRyNkWDGr0rLa7eRCEiYV?= =?us-ascii?Q?FwIj/KNfboaXDXhxWbBBVuP5GD30SqF04nN8IfTyZ+ejDzsiAZTbTNwgKr07?= =?us-ascii?Q?J56Ml2UMsDNUHy6Fr3AyVZGE6AWdJrJRHYuPm+yRW7fYJ0PG+sY0kgZ8t2x1?= =?us-ascii?Q?0x49uv5ZzlvEm+pZlou8pL4NGA3R2HxQpTIwhxkPRZDYgXt9K2ciWUYEGd6G?= =?us-ascii?Q?0scw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;5:jRI91XTGJSav3316mdE2ua7BzZMf05D26lMKXVSOcy82LI4ezgPNb1XY4pj1/VpTp42k6rjZplt7xVyfxNlqrzdAyWnEWW0QBNGLfmT96vquxqVcHVAvmSwBeq+KflYluh1YIesOumnZueYaRLlPGw==;24:InnwUBE37G10DhnMDBfZebKIcc75scEbRyaGzXn2P2qgYTiBtgrL2LczihbRo42kAaDf+3xh2SuT6Ag0YNn+QWKQ78/Ecg3LYBJ+YFj4uh4=;20:aATA+FIlDzTy/dP2jkLKZ1tQKM2gEfp7UPD49fqgDEOWOvVyP1iYWedzUXHjeS9qnaO/GAYThyIqK7SHJEtfwQ== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2015 17:44:38.7962 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR07MB621 X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB960;2:O4vd72KsFdds6z5eqWLP2AtzRz4y5z6BxDAoC7JsFE0lGshlusFMFEsDJNyp1W4LTNHfHf4xwOTzVDmNJVoU19bwo99BlH+cNyO/g/z+MMYNNrmDL32m2jXlmLmy7Hs6TwiMWAvx6HgFDpt5HgLXaJCNjiYwU8JVGbissxi2+Zw=;3:YEjcUhQuiJnRzIfbH4ybZMYcPy+9NtWkgdxHNP4VRdOuo/rMglpv1dz07sAiIiB9uPHFw5NtyOpIL8PNGwszNkgQgbqVQo2MkQX9WuJxzwlRiG2A6cxULStPzn1gJAYUGZ72nnJ00ff+0XIUT9BV6g==;25:XG8ff7hQmQ54gqkaejkkQHFGRTtcwgnMbqMQnr9KLLyOC6MF+d1bdtHCu8O84yFlthZv1lNHLUEdE1fa/4K4T0ANgbE62zm4HDUj7Deb840itwGkvtgJV/zH7bXdb8jAxy0WbhTI0M2hmY2SL/theKzKCy7kRQ+vOLr/6Ron39ASf2BeDBYcAHYi9SBcqUZpv/E0HzNI9w7I92bHnhaYvK3PhalIzprYgjeMbbzIfSf6f0JQxtafuZZXvlU5M1f9AlR+IWuCMCvrwI+gyZ3sXw==;23:r4TaIJg9slcb2zXZQP2/saZZoWjdjJsYylSk9+FVLsfHHB59pUI4ctbiBZ/SeXdcQa14Q4387BtHNlQ4mv18KxTGjkj/+WZfZnYkLSmPynuX/V4w2oWx0hsuln4tTYvg4v4gbm8rLCxDRR5IW/1J3NsfGnqC9x+WGT5+OZCgfJONkqtpBOsSUJCcAifigFVM X-OriginatorOrg: caviumnetworks.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 01, 2015 at 05:04:26PM +0100, Mark Rutland wrote: > On Tue, Sep 01, 2015 at 03:41:12PM +0100, Yury Norov wrote: > > Kernel option COMPAT defines the ability of executing aarch32 binaries. > > Some platforms does not support aarch32 mode, and so cannot execute that > > binaries. But we cannot just disable COMPAT for them because the same > > kernel binary may be used by multiple platforms. > > > > In this patch, system_supports_aarch32_el0() is introduced to detect > > aarch32 support at run-time. > > > > Signed-off-by: Yury Norov > > --- > > arch/arm64/include/asm/cpufeature.h | 1 + > > arch/arm64/include/asm/elf.h | 6 ++++-- > > arch/arm64/kernel/cpuinfo.c | 9 +++++++++ > > 3 files changed, 14 insertions(+), 2 deletions(-) > > > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > > index 20cdc26..d24ea15 100644 > > --- a/arch/arm64/include/asm/cpufeature.h > > +++ b/arch/arm64/include/asm/cpufeature.h > > @@ -81,6 +81,7 @@ void check_local_cpu_errata(void); > > void check_local_cpu_features(void); > > bool cpu_supports_mixed_endian_el0(void); > > bool system_supports_mixed_endian_el0(void); > > +bool system_supports_aarch32_el0(void); > > > > #endif /* __ASSEMBLY__ */ > > > > diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h > > index faad6df..461897b 100644 > > --- a/arch/arm64/include/asm/elf.h > > +++ b/arch/arm64/include/asm/elf.h > > @@ -21,6 +21,7 @@ > > /* > > * ELF register definitions.. > > */ > > +#include > > #include > > #include > > > > @@ -173,8 +174,9 @@ typedef compat_elf_greg_t compat_elf_gregset_t[COMPAT_ELF_NGREG]; > > > > /* AArch32 EABI. */ > > #define EF_ARM_EABI_MASK 0xff000000 > > -#define compat_elf_check_arch(x) (((x)->e_machine == EM_ARM) && \ > > - ((x)->e_flags & EF_ARM_EABI_MASK)) > > +#define compat_elf_check_arch(x) (system_supports_aarch32_el0() \ > > + && ((x)->e_machine == EM_ARM) \ > > + && ((x)->e_flags & EF_ARM_EABI_MASK)) > > > > #define compat_start_thread compat_start_thread > > #define COMPAT_SET_PERSONALITY(ex) set_thread_flag(TIF_32BIT); > > diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c > > index 75d5a86..95d953f 100644 > > --- a/arch/arm64/kernel/cpuinfo.c > > +++ b/arch/arm64/kernel/cpuinfo.c > > @@ -79,6 +79,15 @@ bool system_supports_mixed_endian_el0(void) > > return mixed_endian_el0; > > } > > > > +#define AARCH64 1 > > +#define AARCH32_64 2 > > These should be better namespaced. Perhaps ID_AA64PFR0_EL1_EL0_64 and > ID_AA64PFR0_EL1_EL0_6432 ? > > > +bool system_supports_aarch32_el0(void) > > +{ > > + struct cpuinfo_arm64 *info = this_cpu_ptr(&cpu_data); > > + u64 arm64_el0 = info->reg_id_aa64pfr0 & 0xf; > > + return arm64_el0 == AARCH32_64; > > +} > > We should handle this the same way as we do for endianness support and > check that all CPUs support AArch32, and set a global flag, rather than > assuming that all CPUs are symmetric. Likewise for any other feature we > have to dynamically detect. > OK. Will do in V2 > Thanks, > Mark.