From: Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
To: James Greenhalgh <james.greenhalgh@arm.com>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
Richard Earnshaw <Richard.Earnshaw@arm.com>, nd <nd@arm.com>
Subject: Re: [AARCH64] Disable pc relative literal load irrespective of TARGET_FIX_ERR_A53_84341
Date: Wed, 30 Aug 2017 09:05:00 -0000 [thread overview]
Message-ID: <CAELXzTP6GvcGEDf=wyZpzc1LsiyTKErCy+YYps1JR3xORY48sA@mail.gmail.com> (raw)
In-Reply-To: <20170829113141.GA18078@arm.com>
Hi James,
On 29 August 2017 at 21:31, James Greenhalgh <james.greenhalgh@arm.com> wrote:
> On Tue, Jun 27, 2017 at 11:20:02AM +1000, Kugan Vivekanandarajah wrote:
>> https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00614.html added this
>> workaround to get kernel building with when TARGET_FIX_ERR_A53_843419
>> is enabled.
>>
>> This was added to support building kernel loadable modules. In kernel,
>> when CONFIG_ARM64_ERRATUM_843419 is selected, the relocation needed
>> for ADRP/LDR (R_AARCH64_ADR_PREL_PG_HI21 and
>> R_AARCH64_ADR_PREL_PG_HI21_NC are removed from the kernel to avoid
>> loading objects with possibly offending sequence). Thus, it could only
>> support pc relative literal loads.
>>
>> However, the following patch was posted to kernel to add
>> -mpc-relative-literal-loads
>> http://www.spinics.net/lists/arm-kernel/msg476149.html
>>
>> -mpc-relative-literal-loads is unconditionally added to the kernel
>> build as can be seen from:
>> https://github.com/torvalds/linux/blob/master/arch/arm64/Makefile
>>
>> Therefore this patch removes the hunk so that applications like
>> SPECcpu2017's 521/621.wrf can be built (with LTO in this case) without
>> -mno-pc-relative-literal-loads
>>
>> Bootstrapped and regression tested on aarch64-linux-gnu with no new regressions.
>>
>> Is this OK for trunk?
>
> Hi Kugan,
>
> I'm struggling a little to convince myself that this is correct. I think
> the argument is that this was a workaround for one very particular issue
> with the linux kernel module loader, which hard faults by refusing to
> handle these relocations when in a workaround mode for Erratum 843419.
Yes.
> Most of these relocations won't occur because the kernel builds with
> -mcmodel=large, but literals would always use a small model style
> adrp/load, unless we were using -mpc-relative-literal-loads . So, this
> workaround enabled -mpc-relative-literal-loads always when we were in
> a workaround mode, thus allowing the kernel loader to continue.
>
> The argument for removing it then, is that with the kernel now always using
> -mpc-relative-literal-loads there is no reason for this workaround to stay
> in place. The linkers which we will use will apply the workaround if needed.
Yes.
> Testcases and a detailed problem report of the build failures you had seen in
> 521.wrf would have helped me get closer to understanding this, and made
> review substantially easier.
Sorry for not being clear with this. Unfortunately 521.wrf was
showing this error with LTO so I could not reproduce with a small
enough test case.
> Am I on the right track?
>
> If so, this is OK for trunk. If not, please can you expand on what is going
> on in this patch.
Thanks for the review.
Kugan
>
> Thanks,
> James
>
>
>>
>> Thanks,
>> Kugan
>>
>> gcc/testsuite/ChangeLog:
>>
>> 2017-06-27 Kugan Vivekanandarajah <kuganv@linaro.org>
>>
>> * gcc.target/aarch64/pr63304_1.c: Remove-mno-fix-cortex-a53-843419.
>>
>> gcc/ChangeLog:
>>
>> 2017-06-27 Kugan Vivekanandarajah <kuganv@linaro.org>
>>
>> * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
>> Disable pc relative literal load irrespective of TARGET_FIX_ERR_A53_84341
>> for default.
>
>
next prev parent reply other threads:[~2017-08-30 5:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-27 1:20 Kugan Vivekanandarajah
2017-06-27 8:01 ` Ramana Radhakrishnan
2017-06-28 1:02 ` Kugan Vivekanandarajah
2017-06-28 22:06 ` Ramana Radhakrishnan
2017-07-21 10:12 ` Kugan Vivekanandarajah
2017-08-11 10:34 ` Kugan Vivekanandarajah
2017-08-29 8:32 ` Kugan Vivekanandarajah
2017-08-29 12:02 ` James Greenhalgh
2017-08-30 9:05 ` Kugan Vivekanandarajah [this message]
2018-03-07 1:59 ` Kugan Vivekanandarajah
2018-03-07 10:35 ` James Greenhalgh
2017-08-11 13:07 Wilco Dijkstra
2017-08-11 13:08 ` Yvan Roux
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='CAELXzTP6GvcGEDf=wyZpzc1LsiyTKErCy+YYps1JR3xORY48sA@mail.gmail.com' \
--to=kugan.vivekanandarajah@linaro.org \
--cc=Richard.Earnshaw@arm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=james.greenhalgh@arm.com \
--cc=nd@arm.com \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).