[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-4.15 v2] xen: Bump the minimum version of GCC supported to 4.9 for arm32 and 5.1 on arm64


  • To: Julien Grall <julien@xxxxxxx>
  • From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Date: Mon, 15 Mar 2021 10:51:49 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X0XzOQVLvAUXQn3ZyykpaVnxCndQp3EHLcUANcPacHc=; b=ikT8kTMW2WImROxRoi/WRA81TI1FRITW3Sav+2eiURSnHiJ8TsN3dBn1GX7UadNrCgjmgV636VzHtYLIwKQ61BmBQGYJIdL0wTujTjBL6KlqecmsFsNI8YoWINh0hMB1ti+HuRg8NOXf3A2vJzb888nrFqUiFGVoXXBUWFV7RPejSNPxFex+1eo46jmhYp5+ZnNUse56yIxPxFHXAyGpXyVyA4D7uQ3nqEFOoWtyktBzVs0wftDKmvm781PlcipfROFMu0kjortZYqHRCuN8sobDLk5KFjuAcs6Op/+PZgSXOrLG8Xu28MTGZziMZ0lRxuzH01h+8UFdiZWwd2M2Gg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=blt5uR2ayGHbPA4glO4P1jqWJ4d05XiWIys7p1TDh5VpeRb1RRcgZmxhhaM//gQN66mZhitjFhhmtH4uptGypegTbJ/DtaZQzjv8Jd99CBmHHvb6GisvBYZZJJGp/g1nB5OjRvP7/V/YPAgci60LOfkXliC+5s0Ecq57y5+sXfx17y3j8wbc97exLENfvzJY6wbje2v/wX/bVr3tuaHDcCEiK1wj17CnYP/W/2zTC01IumsHnB1b4ovQQfIPO7tuJsIFp9digbpp3ksCAF0kF/yRNeM1gQUT7Vs8/GcQ/ZR0uYFOSXIJdNX1QfXanPF7TURvo13KUk8LzS6fZGjPUA==
  • Authentication-results-original: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "volodymyr_babchuk@xxxxxxxx" <volodymyr_babchuk@xxxxxxxx>, Julien Grall <jgrall@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Mon, 15 Mar 2021 10:52:28 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHXGA6vB6atKsiK0Ei5Zy66swOEN6qE4kaA
  • Thread-topic: [PATCH for-4.15 v2] xen: Bump the minimum version of GCC supported to 4.9 for arm32 and 5.1 on arm64

Hi Julien,

> On 13 Mar 2021, at 13:41, Julien Grall <julien@xxxxxxx> wrote:
> 
> From: Julien Grall <jgrall@xxxxxxxxxx>
> 
> Compilers older than 4.8 have known codegen issues which can lead to
> silent miscompilation:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145
> 
> Furthermore, pre-4.9 GCC have known bugs (including things like
> internal compiler errors on Arm) which would require workaround (I
> haven't checked if we have any in Xen).
> 
> The minimum version of GCC to build the hypervisor on arm is now
> raised to 4.9.
> 
> In addition to that, on arm64, GCC version >= 4.9 and < 5.1 have been
> shown to emit memory references beyond the stack pointer, resulting in
> memory corruption if an interrupt is taken after the stack pointer has
> been adjusted but before the reference has been executed.
> 
> Therefore, the minimum for arm64 is raised to 5.1.
> 
> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>

Cheers
Bertrand


> 
> ---
> 
> This patch is candidate to 4.15 and backport.
> 
> This is only a build change and will be low-risk for anyone using newer
> compiler (5.1+ for arm64 and 4.9+ for arm32). Xen will stop building
> for anyone using older compiler. But it is better than fighting
> with codegen issues.
> 
> Changes in v2:
>    - Only bump the GCC version for Arm.
> ---
> README                     |  7 +++++--
> xen/include/xen/compiler.h | 10 ++++++++++
> 2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/README b/README
> index 8c99c30986c1..aa8b4fe126a8 100644
> --- a/README
> +++ b/README
> @@ -42,8 +42,11 @@ provided by your OS distributor:
>         - GNU Binutils 2.16.91.0.5 or later
>         or
>         - Clang/LLVM 3.5 or later
> -      - For ARM:
> -        - GCC 4.8 or later
> +      - For ARM 32-bit:
> +        - GCC 4.9 or later
> +        - GNU Binutils 2.24 or later
> +      - For ARM 64-bit:
> +        - GCC 5.1 or later
>         - GNU Binutils 2.24 or later
>     * Development install of zlib (e.g., zlib-dev)
>     * Development install of Python 2.6 or later (e.g., python-dev)
> diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
> index 0ec0b4698ea7..17cf00e1ec92 100644
> --- a/xen/include/xen/compiler.h
> +++ b/xen/include/xen/compiler.h
> @@ -3,6 +3,16 @@
> 
> #if !defined(__GNUC__) || (__GNUC__ < 4)
> #error Sorry, your compiler is too old/not recognized.
> +#elif CONFIG_CC_IS_GCC
> +# if defined(CONFIG_ARM_32) && CONFIG_GCC_VERSION < 40900
> +#  error Sorry, your version of GCC is too old - please use 4.9 or newer.
> +# elif defined(CONFIG_ARM_64) && CONFIG_GCC_VERSION < 50100
> +/*
> + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
> + * https://lore.kernel.org/r/20210107111841.GN1551@xxxxxxxxxxxxxxxxxxxxx
> + */
> +#  error Sorry, your version of GCC is too old - please use 5.1 or newer.
> +# endif
> #endif
> 
> #define barrier()     __asm__ __volatile__("": : :"memory")
> -- 
> 2.17.1
> 




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.