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

[PATCH 2/3] x86/clang: add retpoline support


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Wed, 16 Feb 2022 10:02:59 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ECbNckFONGl7yneZ3OdlmPn6TeB2jy3nQWF/X3oEJ1k=; b=aZgUNs1+X44o3ew/aHJNg2BMaAUsTMYXLyKDNMJvvSZGq0YqMFkIYE2pDSbh5TJJ6HQELrl2kchinkQeXZUHVs66zpOhbAbQx49JdhC34HXPapc7FvLxoYki+3OJQhCijUYCHIaE9xoDSTJHGmdjDAgG2X61ZzD+vI3zDYOgkSshHnk9P1P7N66znUJiWT8VAfYSqV9Ur0hZfpxwRLNJukxKte7sf8FDDOaeT/+iE7+11oznsW1/sRlTQS9eVfcM/g+jybgCv2ZUM7hqzEhRAkEgqM6fbH4UxP+5ta5pL346Qb4CXygw8p3SWYmH0EQjWbloUFJdTXa+b6d9nV0Fbw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X1CTA2wFk6gkfO5fh4f664suwHeKKFu9zqoktu063yPfuH+vv1qT8mAfnvsCEWHn/OCq9ahcYDqW3yNXtPN3Wsai1zNoqtpIbZ5EE8JB6CM+ggSGkNY1NmUC4GJSTuIHkthRB8iBEWlF2yQCN61A5ToNLuhPQv9WtWJZKsMmvBOYlp74xJsL1a1/tBjdB31ZaDGanzoEo3h8TBRRiJ/bGFcyBRCPgTfsp4rxfYlnU3QvZ/amaZerBbHAd2sEO86fJIy/lhz0TWEKgudjYdfWVjaap+hqLuM8vyY8HTwH5uxKVN8BKv5Qzw7PAUp1iSR5JbSTj4xAZxmC4u6GULJz7A==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Jan Beulich <JBeulich@xxxxxxxx>
  • Delivery-date: Wed, 16 Feb 2022 09:03:31 +0000
  • Ironport-data: A9a23:ogkKKq0KJL2SZDMhf/bD5Q92kn2cJEfYwER7XKvMYLTBsI5bpzxWn zYfX2uEPv2PNzHxfY8lYI/noEME7JGGzoAySQM6pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCanAZqTNMEn9700o5wrBh2+aEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhgvRv1 okc7L6MChobHPPMkek2DzBFKnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6Diu4MChWZp25km8fD2d 8ATUxtjPAj8ZD5NIQ1LOJEOt/aViSyqG9FfgA3M/vdmi4TJ9yRu1JD9PdyTfcaFLe1XlEuFo mPN/0ziHwoXcteYzFKt4n+qw+PCgy7/cIYTD6GjsO5nhkWJwW4eAwFQUkG0ycRVkWbnBYgZc RZNvHNz8+5iryRHU+URQTWlhGCa4k9FeeYTDt8YtgGEx4GIyhugUz1soiF6VPQqs8o/RDoP3 1CPns/0CTEHjIB5WU5x5Z/P82rsZHF9wXsqIHZdEFBbu4WLTJQb00qXJuuPBpJZmTEc9dvY5 zmR5BYziLwI5SLg//XqpAuX695AS3Wgc+LU2uk1dj/9hu+aTNT8D2BN1bQ9xawdRGp+ZgPc1 EXoY+DEsIgz4WilzURhutklErCz/OqiOzbBm1NpFJRJ323zpyLyINkKsWAvfR0B3iM4ldnBO hK7VeR5vsE7AZdXRfUvP9LZ5zoCkcAM6ugJptiLN4ETM/CdhSeM/T10ZF744oweuBNErE3LA r/CKZzEJS9DUcxPlWPqL89Age5D7n1vngv7GMGkpylLJJLDPRZ5v59eawDQBg34hYvZyDjoH yF3bZvakU4OD7enP0E6M+c7dDg3EJTyPrivw+R/fe+fOAt2XmYnDv7a27Q6fIJ52a9Sk4/1E ruVACe0EXLz2i/KLxukcHdmZO+9VJpztytjbyctIUypyz4oZoP2tPUTcJ4+fL8G8u1/zKErE 6lZKpvYWvkfGC7a/zk9bIXmqNAwfhqcmg/TbTGuZyIyfsA8SlWRqMPkZAbm6AIHEjGz6Zklu 7Sl2w6CGcgDSg1uAdz4cvWqy1/t73ERlPgrBxnDI8VJeVWq+49vcnSjgvgyKsAKCBPC2jrFi FrGXUZG/bHA+tZn/sPIiKaIq5aSP9F/RkcKTXPG6buWNDXB+jbxy4F3T+vVLyvWU3n5+fv+a LwNne38KvAOgH1Dr5F4T+Rw1as76tbi++1awwBjECmZZlinEOo9cHyP3M0JvaxR3L5J/wCxX xvXqNVdPLyIPuLjEUIQe1V5PrjSi6lMl2mA9+kxLWX7+DRzreiOXkhlNhWRjDBQceluO4Q/z OZ94MMb5mRTUPbx3gpqWsyMy1mxEw==
  • Ironport-hdrordr: A9a23:QazVxakHD/MAfaoGRsauTjQS8cLpDfIT3DAbv31ZSRFFG/FwWf re5cjztCWE8Ar5PUtLpTnuAtjkfZqxz+8W3WBVB8bAYOCEggqVxeNZnO/fKlTbckWUygce78 ddmsNFebrN5DZB/KDHCcqDf+rIAuPrzEllv4jjJr5WIz1XVw==
  • Ironport-sdr: eXBBRENLS5qMAQ/WkGgr51csUPz+1mesK+tKLmgbgzVoNVN1w0Q1+FTSpe+YOtsFoNO5KHnb7G E+RZGP5X4CnX6amIhD9/TRJ1oAUPPwrki0/uTQlmpCyOoYcTYZKN6Ipp05W3L6VALL1B7DpKII 15nyvmtP+bpXhdS2OZIjH4sfbL46Ox3Rm82FmYWE+rLYDunQwo54hzuRR7ysRJT+ZBkSxk1WDM 9X7VoYFHHn3iR63yZ7KFCGSFEH9vEHfMMcTGbhgAK/sMJkzMn2KYepc+FK3ZwGtu/yOoZMb58a DT9c1rjFkZBYV5t72y49VthF
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Detect whether the compiler supports clang retpoline option and enable
by default if available, just like it's done for gcc.

Note clang already disables jump tables when retpoline is enabled, so
there's no need to also pass the fno-jump-tables parameter.

Reported-by: Jan Beulich <JBeulich@xxxxxxxx>
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 xen/arch/x86/Kconfig | 5 ++++-
 xen/arch/x86/arch.mk | 3 +++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 2cd713724f..fe00b4598b 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -35,8 +35,11 @@ config ARCH_DEFCONFIG
 config GCC_INDIRECT_THUNK
        def_bool $(cc-option,-mindirect-branch-register)
 
+config CLANG_INDIRECT_THUNK
+       def_bool $(cc-option,-mretpoline-external-thunk)
+
 config INDIRECT_THUNK
-       depends on GCC_INDIRECT_THUNK
+       depends on GCC_INDIRECT_THUNK || CLANG_INDIRECT_THUNK
        def_bool y
 
 config HAS_AS_CET_SS
diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
index 2da4bdb1ed..f2aa2a515f 100644
--- a/xen/arch/x86/arch.mk
+++ b/xen/arch/x86/arch.mk
@@ -47,6 +47,9 @@ CFLAGS-$(CONFIG_GCC_INDIRECT_THUNK) += 
-mindirect-branch=thunk-extern
 CFLAGS-$(CONFIG_GCC_INDIRECT_THUNK) += -mindirect-branch-register
 CFLAGS-$(CONFIG_GCC_INDIRECT_THUNK) += -fno-jump-tables
 
+# Enable clang retpoline support if available.
+CFLAGS-$(CONFIG_CLANG_INDIRECT_THUNK) += -mretpoline-external-thunk
+
 # If supported by the compiler, reduce stack alignment to 8 bytes. But allow
 # this to be overridden elsewhere.
 $(call cc-option-add,CFLAGS_stack_boundary,CC,-mpreferred-stack-boundary=3)
-- 
2.34.1




 


Rackspace

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