Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp1843561imw; Sat, 16 Jul 2022 16:38:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vLsjOYmpjsgOfY45M5d40PlAP5uXqqVYK8dMOlTfzVbMNz1UlMLEpRJ4YWLMAmGx/eu4dP X-Received: by 2002:a05:6a00:27a6:b0:52a:e089:e777 with SMTP id bd38-20020a056a0027a600b0052ae089e777mr21847102pfb.53.1658014733381; Sat, 16 Jul 2022 16:38:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658014733; cv=none; d=google.com; s=arc-20160816; b=JWLUcInIaMPhYVYYoWnt4dUqqNYy44UzStZzc4rgNtmwidhUZmgA22THvXrzgG2poa /ZqNGx2L/s+7io5xSWs+ZGyBx8SfWN8G5R2HVF2jvkJRUFari3C3S+rAp+9zVFhmdm7D 16Wu6D3oIt+Y/A+KLvO6fL6FRkLs/wo7v+zn+bYHDr1SSbU+GtFoPSvVchUw4QFCx+9+ y8nravy1FIw91uypc8ceYH/muwRQpbH4vSKz/T4z+aHPHndRfErvs9ihoKriGV7ZKk1T LTjaOAG6a6Gh7Y0rSz14aqqfMZWXBBmgonu/3f0eJnTrxzDd/C7dBT6hR4HOPh+t8QJ6 xn5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=3supOg+sDQQOfSp9ifUSIygdjymw6D8ncsEppKfmHZA=; b=RYl+qfnCYnhoSwyg7PIvIKosR0pXqrkjF1yBCwQx71IKR1O/GyY7Y/jNAlpY0i457E C4VXRdCZm1SAjam/SUOYNlVexnLB30/TnUfQzG/2rIAhPtr+eQBfwySWK2CvKvnfMv81 18+ScMqHJnILHfAtY3OlThkKNVsNKF17LnTLJu/+zHEW1HruuzCVPq+0A+zPV9vodbCN 1jsXSPpZrN/hF0/2RxsFrn/lS3nCg4D7EXxLkaAoXcydcfHPdG1Fi6vh+ZsHM8cLrTry 1Pi0hQz5bROsHpoyYOVSNlWqYCR7LLruWQyBfJb06Bb6KxsI3mQAC0pEwr4MoBsStTIv OUUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=lprSnZOr; dkim=neutral (no key) header.i=@linutronix.de header.b=NYy2oXk2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d21-20020a170902729500b0016a71a4d774si7493418pll.257.2022.07.16.16.38.39; Sat, 16 Jul 2022 16:38:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=lprSnZOr; dkim=neutral (no key) header.i=@linutronix.de header.b=NYy2oXk2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233101AbiGPXR6 (ORCPT + 99 others); Sat, 16 Jul 2022 19:17:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232725AbiGPXRk (ORCPT ); Sat, 16 Jul 2022 19:17:40 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DBF7922BE7 for ; Sat, 16 Jul 2022 16:17:28 -0700 (PDT) Message-ID: <20220716230953.265188514@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1658013446; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=3supOg+sDQQOfSp9ifUSIygdjymw6D8ncsEppKfmHZA=; b=lprSnZOrYsVcKhla+weKD3GW8WaOjVFwhF5vQ7tqfZr7swIkUCxUaWUEmFfVrlVmf+P2Dl iBkimFBI6lVycjhXXYg3zoBkiocSn1AIOAl04A00I7oaarB1ExIr15g8LFG+UhXvxi4h60 rQzpNxoqDS0lQpA1mFgMXsjoWdSiFEnp07CX2uG3ezJJkdx1slb0RDpC7VG1YnfmnlIyZ1 VrtL2GWlu2Z6PDWQklZL5fkTL0O6djafREywpx18Ligr1JBEWofhHDTkEQ9I56OANqWhxD Fo4Dij2OfRM9xFAFjFUgOeVOApqT9CKKcKI6uyH5hsTcuKnTrK9lKSesZPi6kA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1658013446; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=3supOg+sDQQOfSp9ifUSIygdjymw6D8ncsEppKfmHZA=; b=NYy2oXk2xptMAHSOgKlFJOeSqUAAOCZIiYPMmqpSGFiXoEU6nWjlfbJ1ADNlu0rCgNzxiL 0zGgfqqGJDYk+SBg== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Linus Torvalds , Tim Chen , Josh Poimboeuf , Andrew Cooper , Pawan Gupta , Johannes Wikner , Alyssa Milburn , Jann Horn , "H.J. Lu" , Joao Moreira , Joseph Nuzman , Steven Rostedt , "Peter Zijlstra (Intel)" Subject: [patch 10/38] objtool: Add --hacks=skylake References: <20220716230344.239749011@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Date: Sun, 17 Jul 2022 01:17:25 +0200 (CEST) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Peter Zijlstra Make the call/func sections selectable via the --hacks option. Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Thomas Gleixner --- scripts/Makefile.lib | 3 ++- tools/objtool/builtin-check.c | 7 ++++++- tools/objtool/check.c | 18 ++++++++++-------- tools/objtool/include/objtool/builtin.h | 1 + 4 files changed, 19 insertions(+), 10 deletions(-) --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -231,7 +231,8 @@ objtool := $(objtree)/tools/objtool/objt objtool_args = \ $(if $(CONFIG_HAVE_JUMP_LABEL_HACK), --hacks=jump_label) \ - $(if $(CONFIG_HAVE_NOINSTR_HACK), --hacks=noinstr) \ + $(if $(CONFIG_HAVE_NOINSTR_HACK), --hacks=noinstr) \ + $(if $(CONFIG_CALL_DEPTH_TRACKING), --hacks=skylake) \ $(if $(CONFIG_X86_KERNEL_IBT), --ibt) \ $(if $(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL), --mcount) \ $(if $(CONFIG_UNWINDER_ORC), --orc) \ --- a/tools/objtool/builtin-check.c +++ b/tools/objtool/builtin-check.c @@ -57,12 +57,17 @@ static int parse_hacks(const struct opti found = true; } + if (!str || strstr(str, "skylake")) { + opts.hack_skylake = true; + found = true; + } + return found ? 0 : -1; } const struct option check_options[] = { OPT_GROUP("Actions:"), - OPT_CALLBACK_OPTARG('h', "hacks", NULL, NULL, "jump_label,noinstr", "patch toolchain bugs/limitations", parse_hacks), + OPT_CALLBACK_OPTARG('h', "hacks", NULL, NULL, "jump_label,noinstr,skylake", "patch toolchain bugs/limitations", parse_hacks), OPT_BOOLEAN('i', "ibt", &opts.ibt, "validate and annotate IBT"), OPT_BOOLEAN('m', "mcount", &opts.mcount, "annotate mcount/fentry calls for ftrace"), OPT_BOOLEAN('n', "noinstr", &opts.noinstr, "validate noinstr rules"), --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -4372,15 +4372,17 @@ int check(struct objtool_file *file) goto out; warnings += ret; - ret = create_direct_call_sections(file); - if (ret < 0) - goto out; - warnings += ret; + if (opts.hack_skylake) { + ret = create_direct_call_sections(file); + if (ret < 0) + goto out; + warnings += ret; - ret = create_sym_thunk_sections(file); - if (ret < 0) - goto out; - warnings += ret; + ret = create_sym_thunk_sections(file); + if (ret < 0) + goto out; + warnings += ret; + } } if (opts.mcount) { --- a/tools/objtool/include/objtool/builtin.h +++ b/tools/objtool/include/objtool/builtin.h @@ -14,6 +14,7 @@ struct opts { bool dump_orc; bool hack_jump_label; bool hack_noinstr; + bool hack_skylake; bool ibt; bool mcount; bool noinstr;