[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210910195910.2542662-1-hpa@zytor.com>
Date: Fri, 10 Sep 2021 12:59:07 -0700
From: "H. Peter Anvin (Intel)" <hpa@...or.com>
To: Borislav Petkov <bp@...en8.de>, Ingo Molnar <mingo@...hat.com>,
Thomas Gleixner <tglx@...utronix.de>,
Andy Lutomirski <luto@...nel.org>
Cc: x86 mailing list <x86@...nel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
"H. Peter Anvin (Intel)" <hpa@...or.com>
Subject: [PATCH v3 0/2] x86/asm: avoid register pressure from the init case in static_cpu_has()
gcc will sometimes manifest the address of boot_cpu_data in a register
as part of constant propagation. When multiple static_cpu_has() are
used this may foul the mainline code with a register load which will
only be used on the fallback path, which is unused after
initialization.
Explicitly force gcc to use immediate (rip-relative) addressing for
the fallback path, thus removing any possible register use from
static_cpu_has().
However, currently there is no convenient way to make gcc generate a
%rip-relative immediate reference without splitting code into i386 and
x86-64 versions, so add a new macro to <asm/asm.h> for this purpose.
Changes in v3:
--------------
* Clarify the subject line
Changes in v2:
--------------
* Add new macro to <asm/asm.h>
* *Actually* generate the %rip-relative addressing mode.
arch/x86/include/asm/asm.h | 5 +++++
arch/x86/include/asm/cpufeature.h | 13 +++++++++----
2 files changed, 14 insertions(+), 4 deletions(-)
Powered by blists - more mailing lists