From patchwork Thu Oct 26 16:00:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158603 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp781729vqb; Thu, 26 Oct 2023 09:02:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEUVMhhItyMozCn0ZYokxZuhgLM93AthLC3Vk/tbM2BB5X6ELTeSv5Jpl7Uik9zGdiCs24p X-Received: by 2002:a05:6870:1344:b0:1e9:8699:d20c with SMTP id 4-20020a056870134400b001e98699d20cmr14634811oac.53.1698336129030; Thu, 26 Oct 2023 09:02:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336129; cv=none; d=google.com; s=arc-20160816; b=jJ6AvDgdez/8OPC2tId1rAEG+F5flyRaPygRDAuvAy2Zu3K2zDRBVhE4L0AASwptdV jDvcLXoEXzKK7w6op1PxF5nQ6VEkpTPcp1/VHRxFWB/i+5+ESiZyNnC/wrPjApMALvoe 3TcpHG4xPtag+tFy0FWV+yNlYDQ2yRZsByFYEPAmiEc/6MQWKqflaNDCU6jQ+YGHTExw GPPn3+xB9sQFeKmjF92fJ2GZ/U6LzptD78HFa54boFNfdJ33zAhh7IpvxOO2TUbUQijg SnugA2L4/amAMIesk9+Z10bH6g6ElXudXNmMd5WjGHE46lSldYH5AojDApPSsCe20TyZ e9tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MozeFj7AsxNvK40iWKEorOKKdXplrF78HG0tGDcuTc0=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=cCIhnfcVUSQ/xSf2E8iEsviS0w3ob7VorxLU0n8c3owEin/kkKpWehX0UoacZlBWE2 qs8H77gBvnQvO9X2NqCaDnf5B08xF6IInENUEz8MpmuA0uCMiVRydeU30MdMKQRG6zXc tXH4YWCfjlZlTPQAeVdZiuFY2bhRv87eQ7sgU2eDqU/Bjew0HNRj4M4fY8IaDAkioMgZ PyaW6/WybssP6fwNJvHGAc8RucOq2daA8ybbhTCKiB10nVU7O30geWN8SFdkYNJPqMKd UhowfgI1RfCTcDssYuf4OAMiWMxCkCWlsxt8mqHlMyE6l4xvhQJKM9x54E/eRmneO5nD e9/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GB4NcKHd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id c16-20020a056870b29000b001e954801df4si4782298oao.265.2023.10.26.09.01.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GB4NcKHd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id B81FF8260086; Thu, 26 Oct 2023 09:01:52 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345499AbjJZQBd (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235079AbjJZQBa (ORCPT ); Thu, 26 Oct 2023 12:01:30 -0400 Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 017FD1B9 for ; Thu, 26 Oct 2023 09:01:26 -0700 (PDT) Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-d9c66e70ebdso767653276.2 for ; Thu, 26 Oct 2023 09:01:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336086; x=1698940886; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MozeFj7AsxNvK40iWKEorOKKdXplrF78HG0tGDcuTc0=; b=GB4NcKHd4RJL62zGkcpJ37lY5KUvD4GOW6pYjX3nDrxmSSor3nzIAqypIayvUJl7y0 A26QvGTpRtXeqnhjGFtuaq0s5SGqNdQliEvM5xWsdPb0pLzBWiHtdEy7FKipcsLl08yy KAOalrx1/TY4l2KmbZ4uP0jCr1U7N1+qB0EAztxNxAOucRJB+LTj1QsDgTJUgXxx0LKo ThKgTITtWUApjAV9oC+l5cqITFStMLFvtqUN24vcjvOexbcNewj8KkZL0qcb6R+2ekFA F/VM/H9wMXbTJO6+XhGSeln23aDUCZodiKA8GTLu8/M5EPtLgXaNeQ7C3zYjSr1oCjAl axwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336086; x=1698940886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MozeFj7AsxNvK40iWKEorOKKdXplrF78HG0tGDcuTc0=; b=AP/6kypU9oCmrS7q+PessGEkd58Idixm0JrTDGE68QW7yTzLxOS0V/AD4zC1fHJ54m m/slOIA8bwcnFcivP8snhF8lexipgbiO3+WWUyR/R27EqQpZPEdSAySrITMGbgiVorDT cZUSt5DcH0QBD6g3WUG4WsNuDd+bvq0LU7qqeieheeSI4FVL8iS/3rah6cfDRLVRBOOo 2boZKW7q593zNX/s0q4lU9VGcDBqMOCmSjEMNWIQtooHByCQ9q4M6Kf92bpkhvlBvhf1 tL9bqYDpaNTPtQ8zwLjyIF0Q4aINv8v0YEmX/4Sr9f/XMnmz2M+CW6Q8MEVtHChGH7B/ U/KQ== X-Gm-Message-State: AOJu0Yx56/0Dfmnrbi9tMlYrj6FOn8jWj9oUjAz7k1lEwt7EuNvwDKMd jDL2tkfJYWD4HNgVVI8kPerKyQ7G3A== X-Received: by 2002:a05:690c:d96:b0:5a7:aa83:9fb with SMTP id da22-20020a05690c0d9600b005a7aa8309fbmr22744081ywb.0.1698336085720; Thu, 26 Oct 2023 09:01:25 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:25 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 01/11] x86/stackprotector/32: Remove stack protector test script Date: Thu, 26 Oct 2023 12:00:50 -0400 Message-ID: <20231026160100.195099-2-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:01:52 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834504561953844 X-GMAIL-MSGID: 1780834504561953844 Test for compiler support directly in Kconfig. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/Kconfig | 2 +- scripts/gcc-x86_32-has-stack-protector.sh | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) delete mode 100755 scripts/gcc-x86_32-has-stack-protector.sh diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 5ef081aa12ac..039872be1630 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -411,7 +411,7 @@ config PGTABLE_LEVELS config CC_HAS_SANE_STACKPROTECTOR bool default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC) $(CLANG_FLAGS)) if 64BIT - default $(success,$(srctree)/scripts/gcc-x86_32-has-stack-protector.sh $(CC) $(CLANG_FLAGS)) + default $(cc-option,-mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard) help We have to make sure stack protector is unconditionally disabled if the compiler produces broken code or if it does not let us control diff --git a/scripts/gcc-x86_32-has-stack-protector.sh b/scripts/gcc-x86_32-has-stack-protector.sh deleted file mode 100755 index 825c75c5b715..000000000000 --- a/scripts/gcc-x86_32-has-stack-protector.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -# This requires GCC 8.1 or better. Specifically, we require -# -mstack-protector-guard-reg, added by -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81708 - -echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -m32 -O0 -fstack-protector -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard - -o - 2> /dev/null | grep -q "%fs" From patchwork Thu Oct 26 16:00:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158604 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp781793vqb; Thu, 26 Oct 2023 09:02:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEL5zS/N/0Xn7DPBUa2YJ7Xn1Q9PNCzFnBvsLoQeizObT5RVZkadMSKqmP8bPu+1xhdFUaA X-Received: by 2002:a05:6830:618:b0:6bd:9e1c:93a6 with SMTP id w24-20020a056830061800b006bd9e1c93a6mr2078707oti.0.1698336134389; Thu, 26 Oct 2023 09:02:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336134; cv=none; d=google.com; s=arc-20160816; b=02rirWEFPahZijntupdRvGfbdPdM00cOK0T7wYlwZ2v1crmzGBamVFXWIF7qLtQqhF M/bjgILuxFMycNjHtDim7f4jQ68w9GRZKJHYMgRIFDYCzbpC4lknSAzgTPAgITo9JckX KORrwnCXis43KaCfWn0Ij/vrqmpJoEQY3aBcbyWqEuB4OdrYz2lP1dUONn2a4FTHB1ju 7+Jp6xJgWrZZHsv9C08U2dftOtCjfZPMfTYe+hoAHI4t1JHSV6ePl8oE2wDOctLc1I94 IUcBkT5Y//YAkqWxf2nVNLw7ltaZ+eAsAbLNb9ZgfGozQcZwp1GhT1e7e5lcBj3Nv9Cu NYOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=6Eshj9ssogtik9Akv+/0p6H72PveiCEWZM0GK4P1lOg=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=UbQlMBwvHsIoSYCgWWz9QOxHQKBv01NxNX4uiR1XmTttkLDZq69q/OCoRhuOKKDckw dR3EEaXtn+Yyw38H1QE1WstGZewmPhdNIHyBBijrCkVi8YcvVlzcnWfVB7C9MJuYJ1SY ZPa+PfRGymvOf6ywZ97N3e6+Zz9H07UMSSCzZAje+aiEHg+Qz9YEym+gCLYNMlueJSfw A5qvx07y3gyXP3Nd8eyxSH9ztsidCifT9k0JnFteGplNjYACl69TxWqYmGhhdANLwpgS yPkz0OUUDOJB43STkYKV7rUJLznF1YbSgkahIfP/s+wuWxDTL+Sfo1/jB4lENgxITfWE Mtcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OkoLIX6X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id g20-20020a9d6a14000000b006d1ac4b440dsi957515otn.309.2023.10.26.09.02.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OkoLIX6X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 751FE80D6AD7; Thu, 26 Oct 2023 09:01:57 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235087AbjJZQBh (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235072AbjJZQBa (ORCPT ); Thu, 26 Oct 2023 12:01:30 -0400 Received: from mail-yw1-x1132.google.com (mail-yw1-x1132.google.com [IPv6:2607:f8b0:4864:20::1132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D5671BC for ; Thu, 26 Oct 2023 09:01:27 -0700 (PDT) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5a7a80a96dbso19652607b3.0 for ; Thu, 26 Oct 2023 09:01:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336087; x=1698940887; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6Eshj9ssogtik9Akv+/0p6H72PveiCEWZM0GK4P1lOg=; b=OkoLIX6XzzwhgdyCMTG8iAGU4SqCs2PwRyw1wQB8sCZy4e95zRwjuUQNSi54YnyWuD Y3IolT3RkKI+O91OQigu44miZGubYjv+lmuyJb9sVhvDXTptjNNJKz/JMY6FhTD6RWAh 04lzE9ubTByYfpDgbWzSBIVLzgsXYKna/llX5aK5VizkyE7jq5yZ+9i42k7wDAqX50wl vm3tjOnOwsQA3z9wdYXQUemp3WFo2yHCizfUTbdflsGWhsX5+VyuPY9CurXFPLaAZMVq xKlHKgewqhj3Mu5vz8gYZv2GFC38Bssv0BNTx1pxupw6iFwwCCRBVPtle86jmJb+OW20 7CGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336087; x=1698940887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6Eshj9ssogtik9Akv+/0p6H72PveiCEWZM0GK4P1lOg=; b=b6HLkGFeV9ij+DXxydy/R3nVbHSXqgCGgPh4/4Cmk/fJdf9i0KmpbOAwcnkG3yg8Ha VC/InkBXQWMdwgM7+L5NGW2sl0IaH0RT/3pMBNd51rK8LSTK5qmp/kJKGp9xBWZkznmt frLYymDAVEyXEtr+OWLtVa3slQ/vlSvaWcK5Or8QbFHSWBF9HG8SyKtd6e+a4BvVE960 umdylS8UKYBuo7DV9kyVXpUZ3njU7t2YYkYQsECfsh9rrloJJplyn8QCeXSXbrrN4Xdr Ing2IZEmQu3X0WTgpbLMXUZUQVE6kpju0g5yJWn7dAyHeUafs/HFRUivfhyBkVJRktkH dSxA== X-Gm-Message-State: AOJu0YxtuTkRupIINveIY0JjxKGSun2J6RocivbsXVE+BoVqVeQI2Q0f AMCFLp4cOHdF+Ti5njOY0Q4bYZHBbg== X-Received: by 2002:a05:690c:708:b0:5a7:b53a:3223 with SMTP id bs8-20020a05690c070800b005a7b53a3223mr5207193ywb.21.1698336086730; Thu, 26 Oct 2023 09:01:26 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:26 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 02/11] x86/stackprotector/64: Remove stack protector test script Date: Thu, 26 Oct 2023 12:00:51 -0400 Message-ID: <20231026160100.195099-3-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:01:57 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834510238803146 X-GMAIL-MSGID: 1780834510238803146 This test for the stack protector was added in 2006 to make sure the compiler had the PR28281 patch applied. With GCC 5.1 being the minimum supported compiler now, it is no longer necessary. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/Kconfig | 2 +- scripts/gcc-x86_64-has-stack-protector.sh | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100755 scripts/gcc-x86_64-has-stack-protector.sh diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 039872be1630..92144c6f26d2 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -410,7 +410,7 @@ config PGTABLE_LEVELS config CC_HAS_SANE_STACKPROTECTOR bool - default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC) $(CLANG_FLAGS)) if 64BIT + default y if 64BIT default $(cc-option,-mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard) help We have to make sure stack protector is unconditionally disabled if diff --git a/scripts/gcc-x86_64-has-stack-protector.sh b/scripts/gcc-x86_64-has-stack-protector.sh deleted file mode 100755 index 75e4e22b986a..000000000000 --- a/scripts/gcc-x86_64-has-stack-protector.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -m64 -O0 -mcmodel=kernel -fno-PIE -fstack-protector - -o - 2> /dev/null | grep -q "%gs" From patchwork Thu Oct 26 16:00:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158605 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp782006vqb; Thu, 26 Oct 2023 09:02:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSSFL3EEKHhV6OObTgd4nIglCJMjCOdnYARJ3i8ade59tkIEoSJ4/qVSenzDFP+jR9jrub X-Received: by 2002:a9d:6b0e:0:b0:6bd:ba2c:fbbd with SMTP id g14-20020a9d6b0e000000b006bdba2cfbbdmr19898690otp.20.1698336147182; Thu, 26 Oct 2023 09:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336147; cv=none; d=google.com; s=arc-20160816; b=w/bCIeDy8E1dTWDLbn/4r9Px4Y413IiUW+KTN8in8P/T3J7X/z3ux1yWRQAPJt0zId F95Nm3ltfmPB6IFaub2+A785mOLn8T7wRHaA3lDXzVxQz8T4WTa6+MD8L9SBBVuErqhu dmRUHiiS4UqdBawkiEqV/QfmBK1L38HZ78R41oTwr4xdzz9f9jF7KvM9wUvraDvPllFX WvNZonHJ9nYekbS/fgbDGFAsCD4ujXIUdYf1a21bpjntBd2sVG37SU15m3dgHPJKUq6s wjNw+df0HTLTtaJ/PEMuNXndgoX2YeX+acedSeX9xAU4fK963fMbhDEkKVRpn2esXyCQ KJNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=lsKN0vAWTPkRoeR+0eW+M/Vw4EKK+fkuLodskFQx/7g=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=0KzxmqZiqWWeGnAKR3vqTSx+OtQ+7RswVmaExM9PIgZg/MLa4W9y27H00hJi+JQYMo R+L665fL6G+m6ZrMFFhxOYfLmasEk9uz/WVpEZ5ydI3I8JuRJJglhQeGUqoevJvUCPXT a1pGb9ghvA/EfQZDc9KZbuUolvgTNklLB92YL9c1t31paqMxiowsfLFKfzZm1K69Xo8m w7MeMYFZwmheP0eyIGvKeDKcEZS/Nn5TXwzYzH+JchyZSA1FOc7E6R1puqfHD/iysQaU 8bDC8YQhfmOQaSOSTPI2cj4RxaTi6JLp5utaWAMkQTMLq2ZlL4rjNhevw5vzlWOl8X4d BbWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=CrlvYmec; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id s6-20020a4a5106000000b0057babfeb85dsi716754ooa.46.2023.10.26.09.02.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=CrlvYmec; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 26A3B8246E15; Thu, 26 Oct 2023 09:02:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345548AbjJZQBq (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345509AbjJZQBd (ORCPT ); Thu, 26 Oct 2023 12:01:33 -0400 Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F3161B2 for ; Thu, 26 Oct 2023 09:01:29 -0700 (PDT) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5ae143e08b1so8101977b3.1 for ; Thu, 26 Oct 2023 09:01:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336088; x=1698940888; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lsKN0vAWTPkRoeR+0eW+M/Vw4EKK+fkuLodskFQx/7g=; b=CrlvYmeciFZwZGlBVcmedkuCpuq2R5W736RvulBNXvei7KiUsb8Ui1DPebXWX+6oBA MpoLHSuAZ+UN0QDa0JXLqIEzOlCv+HQrylOYuuWqJLPJ9gTrFusR1bDEF6aGfTKnQ4is GNmu3cDG70MVnxL3ePXKGoF4a015jaXqK74jbvFvxMI0IA010CMKHKj37rZHoT00CIV5 asaB/K8ktaJWqMZY3wCMF4ub9COmZvULUsfLyGSmbNkIkBeTTr6hkT1rvBS5EgnuAzrI aovyyn07bYO/TL6UvifJ2k4Wni9DeH5+hjivtZzdvTG4wEIbD2ks0PT4ZWLqtiOSMIMb Jvag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336088; x=1698940888; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lsKN0vAWTPkRoeR+0eW+M/Vw4EKK+fkuLodskFQx/7g=; b=gJalBVHiTZAOETKgBJz8pXJ3pD/6N1IHVdrhS7r4SP6lf/KMiABpvyUHRFPkUqZrUU 2KfmVgLGQnLEGQ+U5UE4jYplEs1lrOLZSha+1XO0RTvrHPlk03YpyJfSb8021WNbRpzp vhmDKM4oXPU6WzTBlWRtUse+dD//SNOtYzqO+PjhXD484zX7FbCLIJYbcJ0KIWswUiYr +jFfDOXgegD07LXoz/chH/PHAQNAoGrNE7L/RpzfrlVQI0ySPDumxT02J15e/Mop8bhO G28abG/yout8KVe5MQBPjjC8sTjeKps9VC40L8z/xxjrCeTce0jJCsQsUCXckxaW299d O5Ww== X-Gm-Message-State: AOJu0YwiQ91AoFJOze6yxQkDIt1mMX/VSyuU/Xo3owCjrI3HEntpUexF PHEJYqaRstDHPnvCz1B16+zJK17Zhw== X-Received: by 2002:a05:690c:fc3:b0:5a7:cc02:68b0 with SMTP id dg3-20020a05690c0fc300b005a7cc0268b0mr23755342ywb.23.1698336087890; Thu, 26 Oct 2023 09:01:27 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:27 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 03/11] x86/boot: Disable stack protector for early boot code Date: Thu, 26 Oct 2023 12:00:52 -0400 Message-ID: <20231026160100.195099-4-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:05 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834523836276490 X-GMAIL-MSGID: 1780834523836276490 On 64-bit, this will prevent crashes when the canary access is changed from %gs:40 to %gs:__stack_chk_guard(%rip). RIP-relative addresses from the identity-mapped early boot code will target the wrong address with zero-based percpu. KASLR could then shift that address to an unmapped page causing a crash on boot. This early boot code runs well before userspace is active and does not need stack protector enabled. Signed-off-by: Brian Gerst --- arch/x86/kernel/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 0000325ab98f..aff619054e17 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -39,6 +39,8 @@ KMSAN_SANITIZE_nmi.o := n KCOV_INSTRUMENT_head$(BITS).o := n KCOV_INSTRUMENT_sev.o := n +CFLAGS_head32.o := -fno-stack-protector +CFLAGS_head64.o := -fno-stack-protector CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace obj-y += head_$(BITS).o From patchwork Thu Oct 26 16:00:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158611 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp783326vqb; Thu, 26 Oct 2023 09:03:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFMTR8AQdE1CvB9FlumWZa7KTJVsE837ikPrq/BThW84o+sQyHUMO7Yb7E1XGbMfoUjVGQ9 X-Received: by 2002:a0d:d58d:0:b0:5ad:d4be:7d08 with SMTP id x135-20020a0dd58d000000b005add4be7d08mr288387ywd.17.1698336223585; Thu, 26 Oct 2023 09:03:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336223; cv=none; d=google.com; s=arc-20160816; b=ByqPHD9CQb0SumFo2g1kqJ9cqqywVs+h/mF4sEn9fjkAxCszqsJUNKcldRRBbF1aQP ctk2M2PJ23uU3Q66qCUylSwFak1fZa2m5MKv15bsodwRH1obPbrVTwPbZ5Re4q8vr72a oG26kfmcXrTEqJGzLPt8jmbJY+dKpd1P3u0kP412p7uk9l5AiogPzhZTOoB9D0uhTkkl 47xrtgd7dbnvgm+gEP/Thnj3JYKqP1/Mi6nlsuhf4qgm4be7+pr9/FXEPNOXgXP8LToX OlSTG6aHHEqm0zZKFiealFUJjh3ullu2rxcMBVKxbQJKn4Q+hCiV7bZFeuIOBWKuIEkb crSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YqzolOp4klsZhxy+kaJN9ua5Z74gn7QT8Zy5CMJl/9s=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=LIJPnONE7yQzNaRGS34aZ2R5/LvBicf0GTGg7U5HpAF01mWOTS2h/Rn1vGBXOUX/11 ajlF8jLLidhpVT46t091VgXnBYrMnCTUm+G2+tkeVTNEWQp1+8838F4OVDYxsMDod59f 4/bD9NLeAn2AFPIJP1VKmF5+dr2OihyswCXw56/NEYQvzuNqjMPNgiw/wKJZjFJ4UxTy SJk5GvHFWvADb6/W43BGukloI0YMu5pUEXxjvwm5D+9RVyxh6aV+/4oV0+cQ54iJAdsZ H1E+5fSACkGrN+rJrUl+fQOiDtEW+YOQ2AsX5yO0qwp+5+SksBAaXOKiIpk5OPlLr0Od H6Fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MRk7DpXm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id t127-20020a815f85000000b005a8a753979esi16385822ywb.245.2023.10.26.09.03.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:03:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MRk7DpXm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 3E67A806293D; Thu, 26 Oct 2023 09:02:02 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345541AbjJZQBl (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345510AbjJZQBc (ORCPT ); Thu, 26 Oct 2023 12:01:32 -0400 Received: from mail-yw1-x1132.google.com (mail-yw1-x1132.google.com [IPv6:2607:f8b0:4864:20::1132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B7BD1B5 for ; Thu, 26 Oct 2023 09:01:30 -0700 (PDT) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5a8628e54d4so9760157b3.0 for ; Thu, 26 Oct 2023 09:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336089; x=1698940889; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YqzolOp4klsZhxy+kaJN9ua5Z74gn7QT8Zy5CMJl/9s=; b=MRk7DpXmZtyr4jc5oJnfhUSoRLt8ev+5bU8OdegWIpgAI6CG5oNr+BTqY2NEUeLeff zmLt2+YCVzmu2iuUGUGjeZk8DnQNzu3gpxpZMcO6OcBUzmJNVLtEt7k0whyWReWppuHM 7QMS0zbCJAANzKuzKiW+zCigN7sEcM3rzXVjkgPgYUqRtkBsEm6ZYI71v7HpO5qPk33n aDnshcntezXMvUyEwNu26wIpj7Uiq8bdHKLLM9FQ/vw5d7vQohAmsot/52NppDz7v1HE jCFtcOjHtpskwQe/Sx6zzxNdTG/KXFASMWl9huTj/3B6zPaO25m38SwdDkpgjY3w28eQ UieA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336089; x=1698940889; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YqzolOp4klsZhxy+kaJN9ua5Z74gn7QT8Zy5CMJl/9s=; b=cS3WJos7bcem+SegvKU0dm9xzjkJIT3q+4fShHWyM7BeaZkmwDhfcK1pZelIX3MTLE cZNephvSbxtP7X3OQRTdIQxpYe866pbjUTXN92jpxi6Iygn7urEQ4zzL4Iz2D7lPQQtE JwunnvU/0md0aw6KtqZtproiqUaTDb7LxpYUc0LnKW3EQn12+YKFg1VqSPa1OolEJQ25 AUnx06ZNX/RAIO8Tu0QNwcKStW7/7F9FFH+HihV5AGcXBJpDThdSvUT5bhfEtu/6eP4C dFDXMo2Vp7ciwD46ED5PRUQ1DspiJ2ESO4oqGKBTafynpH1Yw2NjMMTd3NlV+9ltAchU Hqxg== X-Gm-Message-State: AOJu0YxgCu3t6wCL+8ylmzj3hgBWv5YLbfhPPa1RXsLehmB69rgqwkq2 YDluAcjw9FvtlxodjLdKS85Vr7MNqQ== X-Received: by 2002:a81:ac02:0:b0:5af:5651:3d31 with SMTP id k2-20020a81ac02000000b005af56513d31mr414114ywh.7.1698336089005; Thu, 26 Oct 2023 09:01:29 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:28 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 04/11] x86/pvh: Use fixed_percpu_data for early boot GSBASE Date: Thu, 26 Oct 2023 12:00:53 -0400 Message-ID: <20231026160100.195099-5-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:02 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834603916495788 X-GMAIL-MSGID: 1780834603916495788 Instead of having a private area for the stack canary, use fixed_percpu_data for GSBASE like the native kernel. Signed-off-by: Brian Gerst --- arch/x86/platform/pvh/head.S | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S index c4365a05ab83..be8d973c0528 100644 --- a/arch/x86/platform/pvh/head.S +++ b/arch/x86/platform/pvh/head.S @@ -96,8 +96,9 @@ SYM_CODE_START_LOCAL(pvh_start_xen) 1: /* Set base address in stack canary descriptor. */ mov $MSR_GS_BASE,%ecx - mov $_pa(canary), %eax - xor %edx, %edx + lea INIT_PER_CPU_VAR(fixed_percpu_data)(%rip), %rdx + mov %edx, %eax + shr $32, %rdx wrmsr call xen_prepare_pvh @@ -156,8 +157,6 @@ SYM_DATA_START_LOCAL(gdt_start) SYM_DATA_END_LABEL(gdt_start, SYM_L_LOCAL, gdt_end) .balign 16 -SYM_DATA_LOCAL(canary, .fill 48, 1, 0) - SYM_DATA_START_LOCAL(early_stack) .fill BOOT_STACK_SIZE, 1, 0 SYM_DATA_END_LABEL(early_stack, SYM_L_LOCAL, early_stack_end) From patchwork Thu Oct 26 16:00:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158613 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp783488vqb; Thu, 26 Oct 2023 09:03:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEmisPLKCW/9nnCKaLedUBLdwN851vwltaEDQ54w1fgBpmy0pwIZsbuvM7tYvdeD7+MZfA6 X-Received: by 2002:a0d:e648:0:b0:5a7:fc84:4314 with SMTP id p69-20020a0de648000000b005a7fc844314mr18380811ywe.40.1698336232337; Thu, 26 Oct 2023 09:03:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336232; cv=none; d=google.com; s=arc-20160816; b=UnPa6kcfjezSnljW880kPJ7GrXwu1DKtmUbIvFTWmYq07ygYFG5cdnvNM5K+quuoPm bxMqvd5MeAv+egfYW4SzXHV4Nm5Um8C5Zu+i8UEl9Pm02bdd3oAOTcJuGyAcOQkySHZh zx5KZ6b+nDQ4SsKfoBD423AfgpYUU4FgjrtPYDfsbcSGs3UhwsT11eVJP3EyBw5vCvd4 AB3IlOPj6Q8+Scoh3uZnn4+CTlpnnMxvCo52GuY4PqTOQ209mRabISLi2yAKadEIB/Cz wzMn4Wm2R3zIT2A0RL/l63ADmDPO7X7tavZK8Xaf/IuHnSm1b6T1LzrcMGh9bRbZ2LCC DV3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=v8bf/choau5eM7/3Y9MdeM+IwC0QQbaOD15x1tu2PeM=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=pOnRoCdkj8DAPHo2yKU1UJlZGBA6MtsLBedUbOdEq4CytyXm7mRUTemJ1tTRMV3iDE 1+KOwftNSeRdACmpiq7cY5FCN95PEju0wmF56ZnP41DiGaKG1Pf2FQ/w6/lGTAMMUaxO XEfNcjgyq4a8GQESsWoJJC9Ih6dzg78yz9M3QeDnC3HzL3XgdV0EDhDwq0uFtgnhwONJ WYbk32R0HbFAyjJBb2MgC4JCI4tEkWmRMA/9IejsYeD5J9sqyALRuV44GJ/NJwi/vpNT rLhDjxP1uuck+QaHcHQWFbqVVDgZC94tSoFc49lK+IgL5XvDsAUrnIjgIKfjFbXcRwGB tt6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y4Up4BVZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id m85-20020a0dca58000000b0059f5772c1f3si13295933ywd.129.2023.10.26.09.03.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:03:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y4Up4BVZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id DDD6680A73C6; Thu, 26 Oct 2023 09:02:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345558AbjJZQBt (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345529AbjJZQBf (ORCPT ); Thu, 26 Oct 2023 12:01:35 -0400 Received: from mail-yw1-x1129.google.com (mail-yw1-x1129.google.com [IPv6:2607:f8b0:4864:20::1129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B17591B3 for ; Thu, 26 Oct 2023 09:01:31 -0700 (PDT) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5a7b91faf40so8371237b3.1 for ; Thu, 26 Oct 2023 09:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336090; x=1698940890; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=v8bf/choau5eM7/3Y9MdeM+IwC0QQbaOD15x1tu2PeM=; b=Y4Up4BVZsbfjbSK+Twtai/gpBBQfpx4/iHHwZEu5/O8A2w2b/fOwfXWsH0vHXSTqre UnQG2H2bqqCVyiMDJ9tBLaG0rzdN05e68gpvXPs5nbMhD/FEbpKJ9OE6nFezpR7zt/9J SjVjAXPyaHMhla/bKnhqRieDuY+Vq5vhXgtnxPS54RUnIKcr6ZAmG62ZvYAGUS5IR9K0 37eTs8mORYGYVwPk4PQ4XAXCeRhfD/2WGQE91K2yQbi1tQ1oPkCZwY2EKkcCSp3TGavx NWF9AksnUpORX/rvyuZAhuIttvlfX0EET2g1WyPX3GwsTu6r90K/x7HudrKouHfE9QPN 8Cnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336090; x=1698940890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=v8bf/choau5eM7/3Y9MdeM+IwC0QQbaOD15x1tu2PeM=; b=tOSUarFKnzjebv1hEyVd0SOuoHq9eGXZAPvKtbsV0MujZJet5QdBj5YpsGth5wENMo 4u/Dvu2XSZxCDtDets+1lgTrv8M1xkeoVW+3JJgaUfJc0Xf1mt42CcxRTu5Wcb+gVAMo eROmp2VSL7N5sPLEwGRFEZO8PHCbk+EPJfacsdVqUNQ3msUe36BsUKmON+9a+5EIUVWo D0xVRNyB8fE5jCvP4SFSU5qTgDSZA6Z7d39AyGC1CySp+23KKadIEKA2QudVUSHZOqHQ Q0qyMn2pfR+wkoE0KEWD6kOWJ3jjs9Sg3v67xRQUt8hbNTsSMYtBGiq/O6a+fKsArkGY Y7WA== X-Gm-Message-State: AOJu0YxkgkaOJjjCMEJoKeryHhlNXYTOs1kJZEmBl5PWhNE9iZOf50lT Iim6kF5Bh3/M8GMUM/5A0ZG7sH96sw== X-Received: by 2002:a81:8943:0:b0:5a8:1058:5d97 with SMTP id z64-20020a818943000000b005a810585d97mr19244991ywf.45.1698336090168; Thu, 26 Oct 2023 09:01:30 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:29 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 05/11] x86/stackprotector/64: Convert stack protector to normal percpu variable Date: Thu, 26 Oct 2023 12:00:54 -0400 Message-ID: <20231026160100.195099-6-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834612883801362 X-GMAIL-MSGID: 1780834612883801362 Older versions of GCC fixed the location of the stack protector canary at %gs:40. This constraint forced the percpu section to be linked at virtual address 0 so that the canary could be the first data object in the percpu section. Supporting the zero-based percpu section requires additional code to handle relocations for RIP-relative references to percpu data, extra complexity to kallsyms, and workarounds for linker bugs due to the use of absolute symbols. Since version 8.1, GCC has options to configure the location of the canary value. This allows the canary to be turned into a normal percpu variable and removes the constraint that the percpu section be zero-based. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/Kconfig | 5 ++-- arch/x86/Makefile | 19 +++++++++----- arch/x86/entry/entry_64.S | 2 +- arch/x86/include/asm/processor.h | 15 +---------- arch/x86/include/asm/stackprotector.h | 37 +++++---------------------- arch/x86/kernel/asm-offsets_64.c | 6 ----- arch/x86/kernel/cpu/common.c | 4 +-- arch/x86/kernel/head_64.S | 3 +-- arch/x86/xen/xen-head.S | 3 +-- 9 files changed, 26 insertions(+), 68 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 92144c6f26d2..c95e0ce557da 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -410,12 +410,11 @@ config PGTABLE_LEVELS config CC_HAS_SANE_STACKPROTECTOR bool - default y if 64BIT + default $(cc-option,-mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=__stack_chk_guard) if 64BIT default $(cc-option,-mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard) help We have to make sure stack protector is unconditionally disabled if - the compiler produces broken code or if it does not let us control - the segment on 32-bit kernels. + the compiler does not allow control of the segment and symbol. menu "Processor type and features" diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 22e41d9dbc23..6ab8b4419f41 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -111,13 +111,7 @@ ifeq ($(CONFIG_X86_32),y) # temporary until string.h is fixed KBUILD_CFLAGS += -ffreestanding - ifeq ($(CONFIG_STACKPROTECTOR),y) - ifeq ($(CONFIG_SMP),y) - KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard - else - KBUILD_CFLAGS += -mstack-protector-guard=global - endif - endif + percpu_seg := fs else BITS := 64 UTS_MACHINE := x86_64 @@ -167,6 +161,17 @@ else KBUILD_CFLAGS += -mcmodel=kernel KBUILD_RUSTFLAGS += -Cno-redzone=y KBUILD_RUSTFLAGS += -Ccode-model=kernel + + percpu_seg := gs +endif + +ifeq ($(CONFIG_STACKPROTECTOR),y) + ifeq ($(CONFIG_SMP),y) + KBUILD_CFLAGS += -mstack-protector-guard-reg=$(percpu_seg) + KBUILD_CFLAGS += -mstack-protector-guard-symbol=__stack_chk_guard + else + KBUILD_CFLAGS += -mstack-protector-guard=global + endif endif # diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 1a88ad8a7b48..cddcc236aaae 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -190,7 +190,7 @@ SYM_FUNC_START(__switch_to_asm) #ifdef CONFIG_STACKPROTECTOR movq TASK_stack_canary(%rsi), %rbx - movq %rbx, PER_CPU_VAR(fixed_percpu_data + FIXED_stack_canary) + movq %rbx, PER_CPU_VAR(__stack_chk_guard) #endif /* diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 4b130d894cb6..2b6531d90273 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -394,16 +394,7 @@ struct irq_stack { #ifdef CONFIG_X86_64 struct fixed_percpu_data { - /* - * GCC hardcodes the stack canary as %gs:40. Since the - * irq_stack is the object at %gs:0, we reserve the bottom - * 48 bytes of the irq stack for the canary. - * - * Once we are willing to require -mstack-protector-guard-symbol= - * support for x86_64 stackprotector, we can get rid of this. - */ char gs_base[40]; - unsigned long stack_canary; }; DECLARE_PER_CPU_FIRST(struct fixed_percpu_data, fixed_percpu_data) __visible; @@ -418,11 +409,7 @@ extern asmlinkage void entry_SYSCALL32_ignore(void); /* Save actual FS/GS selectors and bases to current->thread */ void current_save_fsgs(void); -#else /* X86_64 */ -#ifdef CONFIG_STACKPROTECTOR -DECLARE_PER_CPU(unsigned long, __stack_chk_guard); -#endif -#endif /* !X86_64 */ +#endif /* X86_64 */ struct perf_event; diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h index 00473a650f51..33abbd29ea26 100644 --- a/arch/x86/include/asm/stackprotector.h +++ b/arch/x86/include/asm/stackprotector.h @@ -2,26 +2,13 @@ /* * GCC stack protector support. * - * Stack protector works by putting predefined pattern at the start of + * Stack protector works by putting a predefined pattern at the start of * the stack frame and verifying that it hasn't been overwritten when - * returning from the function. The pattern is called stack canary - * and unfortunately gcc historically required it to be at a fixed offset - * from the percpu segment base. On x86_64, the offset is 40 bytes. + * returning from the function. The pattern is called the stack canary + * and is a unique value for each task. * - * The same segment is shared by percpu area and stack canary. On - * x86_64, percpu symbols are zero based and %gs (64-bit) points to the - * base of percpu area. The first occupant of the percpu area is always - * fixed_percpu_data which contains stack_canary at the appropriate - * offset. On x86_32, the stack canary is just a regular percpu - * variable. - * - * Putting percpu data in %fs on 32-bit is a minor optimization compared to - * using %gs. Since 32-bit userspace normally has %fs == 0, we are likely - * to load 0 into %fs on exit to usermode, whereas with percpu data in - * %gs, we are likely to load a non-null %gs on return to user mode. - * - * Once we are willing to require GCC 8.1 or better for 64-bit stackprotector - * support, we can remove some of this complexity. + * GCC is configured to read the stack canary value from the __stack_chk_guard + * per-cpu variable, which is changed on task switch. */ #ifndef _ASM_STACKPROTECTOR_H @@ -36,6 +23,8 @@ #include +DECLARE_PER_CPU(unsigned long, __stack_chk_guard); + /* * Initialize the stackprotector canary value. * @@ -51,25 +40,13 @@ static __always_inline void boot_init_stack_canary(void) { unsigned long canary = get_random_canary(); -#ifdef CONFIG_X86_64 - BUILD_BUG_ON(offsetof(struct fixed_percpu_data, stack_canary) != 40); -#endif - current->stack_canary = canary; -#ifdef CONFIG_X86_64 - this_cpu_write(fixed_percpu_data.stack_canary, canary); -#else this_cpu_write(__stack_chk_guard, canary); -#endif } static inline void cpu_init_stack_canary(int cpu, struct task_struct *idle) { -#ifdef CONFIG_X86_64 - per_cpu(fixed_percpu_data.stack_canary, cpu) = idle->stack_canary; -#else per_cpu(__stack_chk_guard, cpu) = idle->stack_canary; -#endif } #else /* STACKPROTECTOR */ diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c index bb65371ea9df..590b6cd0eac0 100644 --- a/arch/x86/kernel/asm-offsets_64.c +++ b/arch/x86/kernel/asm-offsets_64.c @@ -54,11 +54,5 @@ int main(void) BLANK(); #undef ENTRY - BLANK(); - -#ifdef CONFIG_STACKPROTECTOR - OFFSET(FIXED_stack_canary, fixed_percpu_data, stack_canary); - BLANK(); -#endif return 0; } diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 9058da9ae011..fb8f0371ffc3 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -2104,15 +2104,13 @@ void syscall_init(void) X86_EFLAGS_AC|X86_EFLAGS_ID); } -#else /* CONFIG_X86_64 */ +#endif /* CONFIG_X86_64 */ #ifdef CONFIG_STACKPROTECTOR DEFINE_PER_CPU(unsigned long, __stack_chk_guard); EXPORT_PER_CPU_SYMBOL(__stack_chk_guard); #endif -#endif /* CONFIG_X86_64 */ - /* * Clear all 6 debug registers: */ diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 3dcabbc49149..0d94d2a091fe 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -345,8 +345,7 @@ SYM_INNER_LABEL(secondary_startup_64_no_verify, SYM_L_GLOBAL) /* Set up %gs. * - * The base of %gs always points to fixed_percpu_data. If the - * stack protector canary is enabled, it is located at %gs:40. + * The base of %gs always points to fixed_percpu_data. * Note that, on SMP, the boot cpu uses init data section until * the per cpu areas are set up. */ diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index a0ea285878db..30f27e757354 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -53,8 +53,7 @@ SYM_CODE_START(startup_xen) /* Set up %gs. * - * The base of %gs always points to fixed_percpu_data. If the - * stack protector canary is enabled, it is located at %gs:40. + * The base of %gs always points to fixed_percpu_data. * Note that, on SMP, the boot cpu uses init data section until * the per cpu areas are set up. */ From patchwork Thu Oct 26 16:00:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158610 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp783242vqb; Thu, 26 Oct 2023 09:03:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEVlOkHXJWgk+xeusfgGJi6/Klp1y6Hfi7gV+dVlqU8+UJwNINZKeUH9BPS9LWOH6bPBA4c X-Received: by 2002:a05:690c:f11:b0:5a7:d937:6f27 with SMTP id dc17-20020a05690c0f1100b005a7d9376f27mr23656025ywb.19.1698336219652; Thu, 26 Oct 2023 09:03:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336219; cv=none; d=google.com; s=arc-20160816; b=n/SUKmeLuMWD53HB4dqIL5zxNf5zrczqU6yUqm2HeTv7IitmL66RQGaOf/Ht3rEBSS jEqZmTpM5kLSY9LftaoPHx7gLgmyBfhF7MFZbgoR0e4/zF4KDVhsMQzxg2gWED75aRLH Sy3EdXPx2vSGXgm7zR+iE2ON1NvT4hNpPqGHf2lkyVfpZCMdh3s65X+RfdCN1qfjdMcu PEyo6xWnXNVdSByUlU69e5ZaCUl6kRZ/kVEj/sW1U8+TaucUUK4ihU6KcyskpgRkrt4q /xFMqJ2A7P5umNXbByJituJJITJO/VBXBFFZ+nrITqBxv4bCq0cIUThNNOeQVmh2H3/f Dg6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=M4rQnE8nrNp1mQ6GgRY7B4WNhxftPYkRdGzH6F4NzGA=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=GKknLll1NLcdUiu8igA48O5nTsqjDSh6LXjp1xzxRU0CHLQ0tBZYYWN6pN8QqRHhAn xzMh3iZSRFQsEWgFW023xkr23XK8UpdKgcd6og2ocTmhYXkV/i/0TZs23g9hga0fJA0t bJEoDXcrCUfpJre1EHq+TBFf+62/PZ9Q7YswUCPKAvnrE1vUDCvj2BDjipN4gD0q8zns b+nRqUHDVm+UHgFVih+HE5toFprFNkE7nZBRwFf2WbmbGuztV+5znYzkZ0TFoQn5BnAV Oy18aiappEoBFUO/MqXyknRqNQqdEv/oFYS92YETUP68lEYnF9nq7OWf6sqohS6cbdNh L4Yg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=KqBKLkXX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id h128-20020a0dc586000000b0059f57156507si15261110ywd.104.2023.10.26.09.03.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:03:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=KqBKLkXX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id EC49E80A73CD; Thu, 26 Oct 2023 09:02:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345571AbjJZQBx (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235068AbjJZQBf (ORCPT ); Thu, 26 Oct 2023 12:01:35 -0400 Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A8FA1BC for ; Thu, 26 Oct 2023 09:01:32 -0700 (PDT) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5af6c445e9eso1975137b3.0 for ; Thu, 26 Oct 2023 09:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336091; x=1698940891; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M4rQnE8nrNp1mQ6GgRY7B4WNhxftPYkRdGzH6F4NzGA=; b=KqBKLkXXq1QJ5aZOn0EV1Qp6lZwrkhkA2rIPwpHi/EZco66HzMc3GTEUGbpyXplC+3 /sa4Xr8LjO1nRwr7LLJYqUg88EgmPUsbmLM0VR2M53AhZZogrMiLwvKjZIJq72XXcPtu sMQcIDadcMBQkUJBUePAgNaOCoihjjG5dT1p5yGc/dgFo1OoW/7ePecaaCPgA2QQe3Bw 3g/Z8U/quOUeAyGOF/xiXLBtwOKGBhPVfYBV8JyGhZFEmKmGxZQH3V1ZM1H27FSuycr9 V7Q2BfQkmyWJY3RrWtPUZuvjZ89Pr4IWKDKr91/2HE6R5cRx2n0lW5TeIqTDu+qbTuu4 475w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336091; x=1698940891; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M4rQnE8nrNp1mQ6GgRY7B4WNhxftPYkRdGzH6F4NzGA=; b=uIC28h8PNF2O8SbbOyF5WPlBG4W/S/uFglzybAk1u3iWDLSwChnWWyAdgZjT+BrvMK DVPYPMVmTGR1TB5sJe67EcAo7izS/id2losNnlgpovKHwB8TWv4nfdYXx0A7kNdxxNyP UqBxigLCGWSv3KjBfaohTLFGi6z8Qx10D52mF1C25C1gIhUntvEynYFpBDsXM597X97k YLKBOlr7IpFcjGbHhFcQVm950OjgWI48j9WXZgG1IvDNaJsUD+Q8FFTLh9nvjscnx6zP ms1Ih5CZJRSXQHFg+vdymLHn8UWUD+bnl/wfWxcmCfmHdqdM9HntYiSHfF6A0LHAi0LZ r88A== X-Gm-Message-State: AOJu0YyhyOrjQP9uFX4gPhxZD7IDxaI/Af0nkB3k0O3h0gRiLnBrftkM LEtnb5lJFRI30sIdozJALUsyeIHlOg== X-Received: by 2002:a05:690c:f83:b0:570:89bf:6f10 with SMTP id df3-20020a05690c0f8300b0057089bf6f10mr21132399ywb.25.1698336091379; Thu, 26 Oct 2023 09:01:31 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:30 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 06/11] x86/percpu/64: Remove fixed_percpu_data Date: Thu, 26 Oct 2023 12:00:55 -0400 Message-ID: <20231026160100.195099-7-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:09 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834599681563084 X-GMAIL-MSGID: 1780834599681563084 Now that the stack protector canary value is a normal percpu variable, fixed_percpu_data is unused and can be removed. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/include/asm/processor.h | 13 +++++-------- arch/x86/kernel/cpu/common.c | 4 ---- arch/x86/kernel/head_64.S | 11 ++++++----- arch/x86/kernel/vmlinux.lds.S | 6 ------ arch/x86/platform/pvh/head.S | 7 ++++++- arch/x86/tools/relocs.c | 1 - arch/x86/xen/xen-head.S | 11 ++++++++--- 7 files changed, 25 insertions(+), 28 deletions(-) diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 2b6531d90273..d5a4044dba8f 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -393,16 +393,13 @@ struct irq_stack { } __aligned(IRQ_STACK_SIZE); #ifdef CONFIG_X86_64 -struct fixed_percpu_data { - char gs_base[40]; -}; - -DECLARE_PER_CPU_FIRST(struct fixed_percpu_data, fixed_percpu_data) __visible; -DECLARE_INIT_PER_CPU(fixed_percpu_data); - static inline unsigned long cpu_kernelmode_gs_base(int cpu) { - return (unsigned long)per_cpu(fixed_percpu_data.gs_base, cpu); +#ifdef CONFIG_SMP + return per_cpu_offset(cpu); +#else + return 0; +#endif } extern asmlinkage void entry_SYSCALL32_ignore(void); diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index fb8f0371ffc3..32ae76cf4508 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -2052,10 +2052,6 @@ EXPORT_PER_CPU_SYMBOL(pcpu_hot); EXPORT_PER_CPU_SYMBOL(const_pcpu_hot); #ifdef CONFIG_X86_64 -DEFINE_PER_CPU_FIRST(struct fixed_percpu_data, - fixed_percpu_data) __aligned(PAGE_SIZE) __visible; -EXPORT_PER_CPU_SYMBOL_GPL(fixed_percpu_data); - static void wrmsrl_cstar(unsigned long val) { /* diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 0d94d2a091fe..f2453eb38417 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -72,9 +72,14 @@ SYM_CODE_START_NOALIGN(startup_64) /* Setup GSBASE to allow stack canary access for C code */ movl $MSR_GS_BASE, %ecx - leaq INIT_PER_CPU_VAR(fixed_percpu_data)(%rip), %rdx +#ifdef CONFIG_SMP + leaq __per_cpu_load(%rip), %rdx movl %edx, %eax shrq $32, %rdx +#else + xorl %eax, %eax + xorl %edx, %edx +#endif wrmsr call startup_64_setup_env @@ -345,14 +350,10 @@ SYM_INNER_LABEL(secondary_startup_64_no_verify, SYM_L_GLOBAL) /* Set up %gs. * - * The base of %gs always points to fixed_percpu_data. * Note that, on SMP, the boot cpu uses init data section until * the per cpu areas are set up. */ movl $MSR_GS_BASE,%ecx -#ifndef CONFIG_SMP - leaq INIT_PER_CPU_VAR(fixed_percpu_data)(%rip), %rdx -#endif movl %edx, %eax shrq $32, %rdx wrmsr diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 1239be7cc8d8..e6126cd21615 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -510,14 +510,8 @@ SECTIONS */ #define INIT_PER_CPU(x) init_per_cpu__##x = ABSOLUTE(x) + __per_cpu_load INIT_PER_CPU(gdt_page); -INIT_PER_CPU(fixed_percpu_data); INIT_PER_CPU(irq_stack_backing_store); -#ifdef CONFIG_SMP -. = ASSERT((fixed_percpu_data == 0), - "fixed_percpu_data is not at start of per-cpu area"); -#endif - #ifdef CONFIG_CPU_UNRET_ENTRY . = ASSERT((retbleed_return_thunk & 0x3f) == 0, "retbleed_return_thunk not cacheline-aligned"); #endif diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S index be8d973c0528..d215b16bf89f 100644 --- a/arch/x86/platform/pvh/head.S +++ b/arch/x86/platform/pvh/head.S @@ -96,9 +96,14 @@ SYM_CODE_START_LOCAL(pvh_start_xen) 1: /* Set base address in stack canary descriptor. */ mov $MSR_GS_BASE,%ecx - lea INIT_PER_CPU_VAR(fixed_percpu_data)(%rip), %rdx +#ifdef CONFIG_SMP + lea __per_cpu_load(%rip), %rdx mov %edx, %eax shr $32, %rdx +#else + xor %eax, %eax + xor %edx, %edx +#endif wrmsr call xen_prepare_pvh diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index d30949e25ebd..3ccd9d4fcf9c 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -811,7 +811,6 @@ static void percpu_init(void) * __per_cpu_load * * The "gold" linker incorrectly associates: - * init_per_cpu__fixed_percpu_data * init_per_cpu__gdt_page */ static int is_percpu_sym(ElfW(Sym) *sym, const char *symname) diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index 30f27e757354..9ce0d9d268bb 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -53,13 +53,18 @@ SYM_CODE_START(startup_xen) /* Set up %gs. * - * The base of %gs always points to fixed_percpu_data. * Note that, on SMP, the boot cpu uses init data section until * the per cpu areas are set up. */ movl $MSR_GS_BASE,%ecx - movq $INIT_PER_CPU_VAR(fixed_percpu_data),%rax - cdq +#ifdef CONFIG_SMP + leaq __per_cpu_load(%rip), %rdx + movl %edx, %eax + shrq $32, %rdx +#else + xorl %eax, %eax + xorl %edx, %edx +#endif wrmsr mov %rsi, %rdi From patchwork Thu Oct 26 16:00:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158607 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp782400vqb; Thu, 26 Oct 2023 09:02:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF20RI3hilV+tAIuAzkKRDnI88hziN9TXfIgm7ThX1ZqXCM5J3tTsJzaKB8HB8Qbt33gg3t X-Received: by 2002:a05:6870:158d:b0:1e9:a4c8:1da7 with SMTP id j13-20020a056870158d00b001e9a4c81da7mr21267324oab.20.1698336170147; Thu, 26 Oct 2023 09:02:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336170; cv=none; d=google.com; s=arc-20160816; b=MhhFd1CSGVFm2+3TxmUIFUFlA3QBJkBQmzHUMbc6BqHoWvYSTb6igA8zOlf9YHZm8w 3wGyqsal3RGQvYAVd48c3WB4uFDxcaoAq41yDs2eLVNRa2U4i7Td1979I5THV5z7toJX 5GIRXdDjv7Ht3c9+K1x0rVVeErRJYf6z8LqStEVk/Y5yYDCJ5jZGfHRWDfnKp6pZnxxd QnNx9L6T5OjPqAG7ggH10oAh/lK89vSCrkOTAXK+L+keaWFDSAWS1UAYlEZsAsx8WCX7 rtWPwFXyVNpMnFxUX2SoPUC754E0rDLtoyz8ItqYld1xNKRJFxUapzBOKf5JLcQufO6d 4twQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=CzZdKB+Rr9L94zIvXHTcozK/pzpYFPssH1Oc3UCmsKk=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=0EaB1HMmwBjumaF22Xk6Afhe/6aW4G6yrV5S+KjHosQl7CMYq4UK1LlvIc4DCzpKaZ 4ytR3TXIjbtC5iLFvqUH663a2mV0GERws77kBHFL0NQF7nYZNUWX3hSAJNDo/QHDCq7S KofwlazTeSuDiDg1Egtel92/TrnYNoLRMJtoCSZSfk2e8wzA4nI/+cCDbQLqqO3lC5bo W1IzAOASC4CS3dWvhFFC+ly7Fgx0HO6pEYlKOSlJBvi9Wi8DBB5B2sPk0V4JvLJMmJW+ Rtv25C8IfOEu1P74XyndmijrPQxbwd2PW6DjqhOhhGUfPe9F+m3nr9lISRl3CzH0rCfy 6sWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Fcf0Oq1p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id ti24-20020a056871891800b001eb192be4e4si4117031oab.69.2023.10.26.09.02.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Fcf0Oq1p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 0366E826BBB6; Thu, 26 Oct 2023 09:02:47 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345573AbjJZQB5 (ORCPT + 26 others); Thu, 26 Oct 2023 12:01:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235079AbjJZQBg (ORCPT ); Thu, 26 Oct 2023 12:01:36 -0400 Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE52D1B9 for ; Thu, 26 Oct 2023 09:01:33 -0700 (PDT) Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-d9a518d66a1so781315276.0 for ; Thu, 26 Oct 2023 09:01:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336092; x=1698940892; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CzZdKB+Rr9L94zIvXHTcozK/pzpYFPssH1Oc3UCmsKk=; b=Fcf0Oq1pfPBzz2o8bl8grY8jviFMstrp+uPSTxy7Xb44AzhuFLaXOBD9O1SO8KLc1G uZ13zf2dHK2Aqw7T0jnJ581hidyggXfNdkWezUDGdY6wcs27szYszH4j5A7jjNspJzfo QYLHDzVBbNVi2E4g/WyyVAAnl2Z92CQmowQM+5p8bRSNogQEg9UJEDMO6diq0YBZ1opR 9yiWWzutnMLVY5sXqlhLMGMTtgPUr/NJdnMxvL+O1HjUl0yeZMb01w5/vHLld9DU8/Zk 41jmK/OvHQJ4NUg+WmsNHNrJbevryi+Br7Yjs7QJLxCwCMHAbe9apLWFZ7hE61rJ1yYU t0vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336092; x=1698940892; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CzZdKB+Rr9L94zIvXHTcozK/pzpYFPssH1Oc3UCmsKk=; b=PJI0w7hHUqF9SOj1RNXVqVvAJmW9/R/Fq3rg8RScxQj9ceiP0SRQ6zzwCTZzq5uJ47 FcRj3mStdUdI6yFcS4hdEfnZybk8KLeCW9yqIYFo2eWuWzSzpwsWp7kLxv5OWyvcS7ZS 6D3MismLRkSdrnzN4i/QA2l02Jj4pkC18I1oNyRwqmrfToqj0jiREorpJhVl6S2jPt6a frfbWY+AXgAuZoUCy0MslW1VuRoAFfw5IalyV1p5KuiSd6O9H3NZt/2q/HnMFTDBG4PV c+hCtNldHR8CWLkfJoiSZjba/jyurPK56DYGLpA8L7E5SSTf2azGjMm3TgHpzNfqQINx /how== X-Gm-Message-State: AOJu0Yx2/0viEH9oUF+Y6eMa3lS5AFtqC+rj2Dx32eiwIkXveY2uGgSF Ni9UiM1kutY59a9l/MSOpAbuCfwEHw== X-Received: by 2002:a81:7354:0:b0:5a8:1973:190a with SMTP id o81-20020a817354000000b005a81973190amr21056414ywc.8.1698336092476; Thu, 26 Oct 2023 09:01:32 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:32 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 07/11] x86/percpu/64: Use relative percpu offsets Date: Thu, 26 Oct 2023 12:00:56 -0400 Message-ID: <20231026160100.195099-8-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:47 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834548021246184 X-GMAIL-MSGID: 1780834548021246184 The percpu section is currently linked at virtual address 0, because older compilers hardcoded the stack protector canary value at a fixed offset from the start of the GS segment. Now that the canary is a normal percpu variable, the percpu section can be linked normally. This means that x86-64 will calculate percpu offsets like most other architectures, as the delta between the initial percpu address and the dynamically allocated memory. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/kernel/head_64.S | 6 ------ arch/x86/kernel/setup_percpu.c | 12 ++---------- arch/x86/kernel/vmlinux.lds.S | 24 +----------------------- arch/x86/platform/pvh/head.S | 6 ------ arch/x86/tools/relocs.c | 10 +++------- arch/x86/xen/xen-head.S | 6 ------ init/Kconfig | 2 +- 7 files changed, 7 insertions(+), 59 deletions(-) diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index f2453eb38417..b35f74e58dd7 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -72,14 +72,8 @@ SYM_CODE_START_NOALIGN(startup_64) /* Setup GSBASE to allow stack canary access for C code */ movl $MSR_GS_BASE, %ecx -#ifdef CONFIG_SMP - leaq __per_cpu_load(%rip), %rdx - movl %edx, %eax - shrq $32, %rdx -#else xorl %eax, %eax xorl %edx, %edx -#endif wrmsr call startup_64_setup_env diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index 2c97bf7b56ae..8707dd07b9ce 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c @@ -23,18 +23,10 @@ #include #include -#ifdef CONFIG_X86_64 -#define BOOT_PERCPU_OFFSET ((unsigned long)__per_cpu_load) -#else -#define BOOT_PERCPU_OFFSET 0 -#endif - -DEFINE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET; +DEFINE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off); EXPORT_PER_CPU_SYMBOL(this_cpu_off); -unsigned long __per_cpu_offset[NR_CPUS] __ro_after_init = { - [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET, -}; +unsigned long __per_cpu_offset[NR_CPUS] __ro_after_init; EXPORT_SYMBOL(__per_cpu_offset); /* diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index e6126cd21615..efa4885060b5 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -103,12 +103,6 @@ const_pcpu_hot = pcpu_hot; PHDRS { text PT_LOAD FLAGS(5); /* R_E */ data PT_LOAD FLAGS(6); /* RW_ */ -#ifdef CONFIG_X86_64 -#ifdef CONFIG_SMP - percpu PT_LOAD FLAGS(6); /* RW_ */ -#endif - init PT_LOAD FLAGS(7); /* RWE */ -#endif note PT_NOTE FLAGS(0); /* ___ */ } @@ -224,21 +218,7 @@ SECTIONS __init_begin = .; /* paired with __init_end */ } -#if defined(CONFIG_X86_64) && defined(CONFIG_SMP) - /* - * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the - * output PHDR, so the next output section - .init.text - should - * start another segment - init. - */ - PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu) - ASSERT(SIZEOF(.data..percpu) < CONFIG_PHYSICAL_START, - "per-CPU data too large - increase CONFIG_PHYSICAL_START") -#endif - INIT_TEXT_SECTION(PAGE_SIZE) -#ifdef CONFIG_X86_64 - :init -#endif /* * Section for code used exclusively before alternatives are run. All @@ -368,9 +348,7 @@ SECTIONS EXIT_DATA } -#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP) PERCPU_SECTION(INTERNODE_CACHE_BYTES) -#endif . = ALIGN(PAGE_SIZE); @@ -508,7 +486,7 @@ SECTIONS * Per-cpu symbols which need to be offset from __per_cpu_load * for the boot processor. */ -#define INIT_PER_CPU(x) init_per_cpu__##x = ABSOLUTE(x) + __per_cpu_load +#define INIT_PER_CPU(x) init_per_cpu__##x = ABSOLUTE(x) INIT_PER_CPU(gdt_page); INIT_PER_CPU(irq_stack_backing_store); diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S index d215b16bf89f..4bd925b23436 100644 --- a/arch/x86/platform/pvh/head.S +++ b/arch/x86/platform/pvh/head.S @@ -96,14 +96,8 @@ SYM_CODE_START_LOCAL(pvh_start_xen) 1: /* Set base address in stack canary descriptor. */ mov $MSR_GS_BASE,%ecx -#ifdef CONFIG_SMP - lea __per_cpu_load(%rip), %rdx - mov %edx, %eax - shr $32, %rdx -#else xor %eax, %eax xor %edx, %edx -#endif wrmsr call xen_prepare_pvh diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 3ccd9d4fcf9c..01efbfdd3eb3 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -815,12 +815,7 @@ static void percpu_init(void) */ static int is_percpu_sym(ElfW(Sym) *sym, const char *symname) { - int shndx = sym_index(sym); - - return (shndx == per_cpu_shndx) && - strcmp(symname, "__init_begin") && - strcmp(symname, "__per_cpu_load") && - strncmp(symname, "init_per_cpu_", 13); + return 0; } @@ -1043,7 +1038,8 @@ static int cmp_relocs(const void *va, const void *vb) static void sort_relocs(struct relocs *r) { - qsort(r->offset, r->count, sizeof(r->offset[0]), cmp_relocs); + if (r->count) + qsort(r->offset, r->count, sizeof(r->offset[0]), cmp_relocs); } static int write32(uint32_t v, FILE *f) diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index 9ce0d9d268bb..c1d9c92b417a 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -57,14 +57,8 @@ SYM_CODE_START(startup_xen) * the per cpu areas are set up. */ movl $MSR_GS_BASE,%ecx -#ifdef CONFIG_SMP - leaq __per_cpu_load(%rip), %rdx - movl %edx, %eax - shrq $32, %rdx -#else xorl %eax, %eax xorl %edx, %edx -#endif wrmsr mov %rsi, %rdi diff --git a/init/Kconfig b/init/Kconfig index 6d35728b94b2..1af31b23e376 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1718,7 +1718,7 @@ config KALLSYMS_ALL config KALLSYMS_ABSOLUTE_PERCPU bool depends on KALLSYMS - default X86_64 && SMP + default n config KALLSYMS_BASE_RELATIVE bool From patchwork Thu Oct 26 16:00:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158612 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp783461vqb; Thu, 26 Oct 2023 09:03:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFro57my8H7E/q8eTFuVFjvbNJR3vV/CYkdXNcRCODcYinR9NGcBCXDfdeiqynhYB3TK3fj X-Received: by 2002:a0d:fb86:0:b0:583:3c7e:7749 with SMTP id l128-20020a0dfb86000000b005833c7e7749mr18922526ywf.41.1698336230817; Thu, 26 Oct 2023 09:03:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336230; cv=none; d=google.com; s=arc-20160816; b=k6iHWbOzTB/B8UPNain+bGeBFTX2Ifkli2T2+oYCSJuCfTxTJ7jx2bUJGiiaSaeEBr pEakGOcyRwvttQ945CNIHnS+R5a73jSjHaY01+17r8jL3V1koedGE/UVIKyZ6k829qiB lldI0HOuPcBMDWmDM5phWiNLcNTwxbGUOFiAIpvKlVf72uqtVLyJt1CQ6LEoe09JFta0 xS0rC14i6wPSuj/uNp92fi7GfJQtCmOpQV10/fNuKgAUAZFsgq92m3r7QFMKl4IE2csH m33gb6E+7xLlZFfKkLnmbMULeCeD/fdzeK37GQpWjo/mzr5wjjC8bNEQyCO97dtGqt/C Ckyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=db30fLrdyUYnUnirSu1qpKhiubFgmXt1L06pmuCbQb8=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=qXIRl3gsrW0pCK3zCKBBFX5kuVarBAnje8k0zW3VQ5h9BmPCQjF7tlSj234+BpUq3g o5fPjhyrh1G1ilBjCdUaP6KRP6zRvol58iXjHh7tD9o7QRcmiOMvFbbl1M5rnHRFGy9Q flg/99ylTFrLSSTVJmD7Aog5LKw09taFbfA7eZB/kTiLmxbMYVyXEMEV0vQ90Yxo8e58 uA8O3/9176w4bsC2IUp9nrYvd0LxMX9+0kZ4x05CHdrLiOQW5/qeC46qWgClK7bzCXlb uGo1ZTDTz0kYxuG3J4rx5DbcNGxY1STuMk2lluZVIHl+GNIeQMMH75j8sUV0PTy480kG nq2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=lxC4suD8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id g188-20020a0dddc5000000b005a1eab0dafasi16194456ywe.82.2023.10.26.09.03.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:03:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=lxC4suD8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 38D2A8184E19; Thu, 26 Oct 2023 09:02:15 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235139AbjJZQCC (ORCPT + 26 others); Thu, 26 Oct 2023 12:02:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33220 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345508AbjJZQBi (ORCPT ); Thu, 26 Oct 2023 12:01:38 -0400 Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD47E1B8 for ; Thu, 26 Oct 2023 09:01:34 -0700 (PDT) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-59b5484fbe6so8285837b3.1 for ; Thu, 26 Oct 2023 09:01:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336093; x=1698940893; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=db30fLrdyUYnUnirSu1qpKhiubFgmXt1L06pmuCbQb8=; b=lxC4suD8+q+AxzH9HmdOLE5O0UhJ8gk2iGm9QGVXTBaJxTGESORJ+zY3aRwZ6L0mzc RWzB7VanCRDU+aiVPCv54dd+vCyvhsWPYEVmhRNP2hjyLC5V6VqU/iD6fbn7s8b7Nw5S DOp9W7BrRVMUupAkMPtl953z3VvKdCMSemgYagy4ku3+vFQX0oIaNEwhxH+i1DltXjTO KiYCG1ODLtgLLTQS2efn1AV0NElAyhwJe8ofwyw5y52QSBUXu2uHHc8a8GEz9WLQaTaI Vl6jhlyPL5XXUcSRxi1we+ovK6SQHKUS0PLclWGtoiBUQ0BpQFxpzWCzUTua1vbaQiv/ v3sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336093; x=1698940893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=db30fLrdyUYnUnirSu1qpKhiubFgmXt1L06pmuCbQb8=; b=ct684/uMKKUWUnypvUbyjjxauKXj5VkOnZuP3LCW1dJf1h6mkaJdvoVXKO9NH3BzXF RGUjAugZ/PxckvoD9K7EglqWB8ICQF8T/ZzqyyiEO05xY2Gyy3Iaz0ZC9NANBzuPlePZ YonxXhVM02O0BVxzh0+gOR5zOZsRcW/eWRAD+ptN4a/1pVmi6EliSM5vP5UzvjDmMVJ7 o8i8wTPvCASncuEIcJkxHZ04/kniDNEqdP5ogsFVpTie0MBk251QU0df2OmQutXucjd9 PhoPgNyzgKA+vG/AebQm+/Vm0WzFxsIJ8dz0lIXhj8FaJZSl90IKBIjeuwXquT7VQxg1 29Nw== X-Gm-Message-State: AOJu0Yx06vrUchomR9PwJvMbL1TfzvUY1vyQpp1HdygEgxsGN0dfTO2v i/NfUFw19mtDwvDz6ZOEiSBGA2iX/w== X-Received: by 2002:a0d:df44:0:b0:5a8:2037:36d9 with SMTP id i65-20020a0ddf44000000b005a8203736d9mr18901456ywe.25.1698336093543; Thu, 26 Oct 2023 09:01:33 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:33 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 08/11] x86/boot/64: Remove inverse relocations Date: Thu, 26 Oct 2023 12:00:57 -0400 Message-ID: <20231026160100.195099-9-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:15 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834611395856908 X-GMAIL-MSGID: 1780834611395856908 Now that the percpu section is not at a fixed virtual address, inverse relocations, which were needed to offset the effects of relocation on RIP-relative percpu references, are no longer needed. Signed-off-by: Brian Gerst --- arch/x86/boot/compressed/misc.c | 14 +--- arch/x86/tools/relocs.c | 126 +------------------------------- 2 files changed, 2 insertions(+), 138 deletions(-) diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index b99e08e6815b..2de345a236c0 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c @@ -221,7 +221,7 @@ static void handle_relocations(void *output, unsigned long output_len, /* * Process relocations: 32 bit relocations first then 64 bit after. - * Three sets of binary relocations are added to the end of the kernel + * Two sets of binary relocations are added to the end of the kernel * before compression. Each relocation table entry is the kernel * address of the location which needs to be updated stored as a * 32-bit value which is sign extended to 64 bits. @@ -231,8 +231,6 @@ static void handle_relocations(void *output, unsigned long output_len, * kernel bits... * 0 - zero terminator for 64 bit relocations * 64 bit relocation repeated - * 0 - zero terminator for inverse 32 bit relocations - * 32 bit inverse relocation repeated * 0 - zero terminator for 32 bit relocations * 32 bit relocation repeated * @@ -249,16 +247,6 @@ static void handle_relocations(void *output, unsigned long output_len, *(uint32_t *)ptr += delta; } #ifdef CONFIG_X86_64 - while (*--reloc) { - long extended = *reloc; - extended += map; - - ptr = (unsigned long)extended; - if (ptr < min_addr || ptr > max_addr) - error("inverse 32-bit relocation outside of kernel!\n"); - - *(int32_t *)ptr -= delta; - } for (reloc--; *reloc; reloc--) { long extended = *reloc; extended += map; diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 01efbfdd3eb3..7feb63179b62 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -28,7 +28,6 @@ struct relocs { static struct relocs relocs16; static struct relocs relocs32; #if ELF_BITS == 64 -static struct relocs relocs32neg; static struct relocs relocs64; #define FMT PRIu64 #else @@ -84,7 +83,6 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = { "__initramfs_start|" "(jiffies|jiffies_64)|" #if ELF_BITS == 64 - "__per_cpu_load|" "init_per_cpu__.*|" "__end_rodata_hpage_align|" #endif @@ -281,33 +279,6 @@ static const char *sym_name(const char *sym_strtab, Elf_Sym *sym) return name; } -static Elf_Sym *sym_lookup(const char *symname) -{ - int i; - for (i = 0; i < shnum; i++) { - struct section *sec = &secs[i]; - long nsyms; - char *strtab; - Elf_Sym *symtab; - Elf_Sym *sym; - - if (sec->shdr.sh_type != SHT_SYMTAB) - continue; - - nsyms = sec->shdr.sh_size/sizeof(Elf_Sym); - symtab = sec->symtab; - strtab = sec->link->strtab; - - for (sym = symtab; --nsyms >= 0; sym++) { - if (!sym->st_name) - continue; - if (strcmp(symname, strtab + sym->st_name) == 0) - return sym; - } - } - return 0; -} - #if BYTE_ORDER == LITTLE_ENDIAN #define le16_to_cpu(val) (val) #define le32_to_cpu(val) (val) @@ -750,75 +721,8 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, } } -/* - * The .data..percpu section is a special case for x86_64 SMP kernels. - * It is used to initialize the actual per_cpu areas and to provide - * definitions for the per_cpu variables that correspond to their offsets - * within the percpu area. Since the values of all of the symbols need - * to be offsets from the start of the per_cpu area the virtual address - * (sh_addr) of .data..percpu is 0 in SMP kernels. - * - * This means that: - * - * Relocations that reference symbols in the per_cpu area do not - * need further relocation (since the value is an offset relative - * to the start of the per_cpu area that does not change). - * - * Relocations that apply to the per_cpu area need to have their - * offset adjusted by by the value of __per_cpu_load to make them - * point to the correct place in the loaded image (because the - * virtual address of .data..percpu is 0). - * - * For non SMP kernels .data..percpu is linked as part of the normal - * kernel data and does not require special treatment. - * - */ -static int per_cpu_shndx = -1; -static Elf_Addr per_cpu_load_addr; - -static void percpu_init(void) -{ - int i; - for (i = 0; i < shnum; i++) { - ElfW(Sym) *sym; - if (strcmp(sec_name(i), ".data..percpu")) - continue; - - if (secs[i].shdr.sh_addr != 0) /* non SMP kernel */ - return; - - sym = sym_lookup("__per_cpu_load"); - if (!sym) - die("can't find __per_cpu_load\n"); - - per_cpu_shndx = i; - per_cpu_load_addr = sym->st_value; - return; - } -} - #if ELF_BITS == 64 -/* - * Check to see if a symbol lies in the .data..percpu section. - * - * The linker incorrectly associates some symbols with the - * .data..percpu section so we also need to check the symbol - * name to make sure that we classify the symbol correctly. - * - * The GNU linker incorrectly associates: - * __init_begin - * __per_cpu_load - * - * The "gold" linker incorrectly associates: - * init_per_cpu__gdt_page - */ -static int is_percpu_sym(ElfW(Sym) *sym, const char *symname) -{ - return 0; -} - - static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, const char *symname) { @@ -829,12 +733,6 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, if (sym->st_shndx == SHN_UNDEF) return 0; - /* - * Adjust the offset if this reloc applies to the percpu section. - */ - if (sec->shdr.sh_info == per_cpu_shndx) - offset += per_cpu_load_addr; - switch (r_type) { case R_X86_64_NONE: /* NONE can be ignored. */ @@ -843,33 +741,21 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, case R_X86_64_PC32: case R_X86_64_PLT32: /* - * PC relative relocations don't need to be adjusted unless - * referencing a percpu symbol. + * PC relative relocations don't need to be adjusted. * * NB: R_X86_64_PLT32 can be treated as R_X86_64_PC32. */ - if (is_percpu_sym(sym, symname)) - add_reloc(&relocs32neg, offset); break; case R_X86_64_PC64: /* * Only used by jump labels */ - if (is_percpu_sym(sym, symname)) - die("Invalid R_X86_64_PC64 relocation against per-CPU symbol %s\n", - symname); break; case R_X86_64_32: case R_X86_64_32S: case R_X86_64_64: - /* - * References to the percpu area don't need to be adjusted. - */ - if (is_percpu_sym(sym, symname)) - break; - if (shn_abs) { /* * Whitelisted absolute symbols do not require @@ -1083,7 +969,6 @@ static void emit_relocs(int as_text, int use_real_mode) /* Order the relocations for more efficient processing */ sort_relocs(&relocs32); #if ELF_BITS == 64 - sort_relocs(&relocs32neg); sort_relocs(&relocs64); #else sort_relocs(&relocs16); @@ -1115,13 +1000,6 @@ static void emit_relocs(int as_text, int use_real_mode) /* Now print each relocation */ for (i = 0; i < relocs64.count; i++) write_reloc(relocs64.offset[i], stdout); - - /* Print a stop */ - write_reloc(0, stdout); - - /* Now print each inverse 32-bit relocation */ - for (i = 0; i < relocs32neg.count; i++) - write_reloc(relocs32neg.offset[i], stdout); #endif /* Print a stop */ @@ -1172,8 +1050,6 @@ void process(FILE *fp, int use_real_mode, int as_text, read_strtabs(fp); read_symtabs(fp); read_relocs(fp); - if (ELF_BITS == 64) - percpu_init(); if (show_absolute_syms) { print_absolute_symbols(); return; From patchwork Thu Oct 26 16:00:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158609 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp782680vqb; Thu, 26 Oct 2023 09:03:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEq9l5zhJocR/4NyQM4K+PYgnLObxUqo0hRG7wYcD0ILRtUH4Bh8sjxp4yY88Y8/NwpijgH X-Received: by 2002:a05:6808:138f:b0:3ab:88a0:78f8 with SMTP id c15-20020a056808138f00b003ab88a078f8mr23803543oiw.23.1698336186257; Thu, 26 Oct 2023 09:03:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336186; cv=none; d=google.com; s=arc-20160816; b=pXHKb7MYVKxcaq4zgoi2O2xVR7D/2yFIg/lPIJhCARESm3JKST/YKDYYYUweYr/ITv 9WkmtpvAfDibF5Z75mSvyKQfCEl52ukQg4ciYwZzGwOOlSdz2hnHgqV9HwrfAEL7IIoY Mx15aS16XuU1FOSp+4NiX+xV6Z3G/pwWaRHsCoMwhfbPoEgyGTS9mJ8Q16bPyaRt0zOo 6ilGvCXpW9Jbx2+i7c5HFFwI2mFDcV5f6RjN+v8tYddU7lK1FJ2fzO+dKihidhGQ6xhk fxms378psQwvnmenCkKa8X6psvXRxctnqlxQcBs+1Couo2FnnQzdqFMnyMx4WdKaAfJH WqjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4WeYX5TweL3gBg8KtkuF5OPQydAmV7WW1ssTZwTj5jM=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=rqSK8C6eRoCB+F1RpfDMuWCp7UMFTmXx72C8dbmr1/lnpyunIHRFBLfXReZlPqV16s 7pi+f8XepCYaVSJI8NKRjyoHs3u2BIJ/N71aY8q0nSiPHIIQKIuLwXG+slr9VEASu2bC XqEvE9Gf4QeTE9Bpd6lbPD8xcBFQzg1qgk7OX9656zoV/QDT2xZczx1YwxXI9xkwp2Sk jxOtkxTa75hw/Vc/0YLdHswwlAMtV17xP0fwD7s77W8h9d+1XRg2rfNNEVdliLB/UxLG ZSrIhjqyPimrRPdS2aTd4f23TG1PWe+C8sfm8drCYkicKbgTI+aOD7ffi58qOo7vc9DZ 4RoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="i/h2yucj"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id q18-20020a056808201200b003b3e8a6082asi4887058oiw.79.2023.10.26.09.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:03:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="i/h2yucj"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id D2F1F8244E76; Thu, 26 Oct 2023 09:02:47 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345530AbjJZQCH (ORCPT + 26 others); Thu, 26 Oct 2023 12:02:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51972 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345554AbjJZQBs (ORCPT ); Thu, 26 Oct 2023 12:01:48 -0400 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1A8A1A2 for ; Thu, 26 Oct 2023 09:01:35 -0700 (PDT) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5a7dd65052aso8950407b3.0 for ; Thu, 26 Oct 2023 09:01:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336094; x=1698940894; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4WeYX5TweL3gBg8KtkuF5OPQydAmV7WW1ssTZwTj5jM=; b=i/h2yucjQZWyknL8+mXny1nbXvEWlyBmzdhK19SRcrZ+JQwRulUS6Si7xmKTPO5SGH BWD9OyinFMiQ6MNzz+pii1BY0bj/mnSAv5j+zPgjHoaYnUtbc0XNKocCVAl2G1mM/7Ke zlG4LmQ7AQyNTxqv5PVeeGWsn9oHIeXhQSsidPRZO6C+yjmWQnJ5yk84LlueujOtvFdc lCv5oqejDni3Al554GqEDVmUuN5pwdgilgWCkC4uagKvk449Lx1D5LRhWOhXUzzeUWC+ oXlncicyLUi2aF0pcV9qJtOm2k97onEYhctYSD7OCnCxwv4c0QtiB6U4hjkkVllJPRuL IOPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336094; x=1698940894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4WeYX5TweL3gBg8KtkuF5OPQydAmV7WW1ssTZwTj5jM=; b=BilAp+OSd7RXbCdBbxWI3njJasoq8xYEkdzKhp27gIpzVxO+1coG/igxARgMwmdGAl irHfwl+kwLkudQ61UqmYqzgfYKhraPzx8IvWRJM/3rTLsevezCwdaL1ghmaL5avpi9dD cwCmvxgSuyrn0TnWeR/5JUTIg9C/OYMRwih//xrMpewrGJHiCoLlq1N7TIOGm60ylZk1 g2MpTZkOMu78x6qb6ENVywirXpNV0h+4TLaMEnEYSY53oaHielFCbOQAHqdXywH31jPJ 98RHMDJ5z21w04uOgCejaeT3dnR4XzlQ/FcWb8D1gCw8WkEFEuUKP1YYEl6pOn+/Cw2Z 0h9A== X-Gm-Message-State: AOJu0YxJcG0F2FxhEiY4wmGQps/BU8QCjraog8xdcodpoXRIucnNoMTB CIn47cg1QOkop7M21XodzFQZL32jPw== X-Received: by 2002:a0d:f646:0:b0:5a4:3e67:35a3 with SMTP id g67-20020a0df646000000b005a43e6735a3mr17953461ywf.49.1698336094606; Thu, 26 Oct 2023 09:01:34 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:34 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 09/11] x86/percpu/64: Remove INIT_PER_CPU macros Date: Thu, 26 Oct 2023 12:00:58 -0400 Message-ID: <20231026160100.195099-10-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:47 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834564852352011 X-GMAIL-MSGID: 1780834564852352011 The load and link addresses of percpu variables are now the same, so these macros are no longer necessary. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- arch/x86/include/asm/percpu.h | 22 ---------------------- arch/x86/kernel/irq_64.c | 1 - arch/x86/kernel/vmlinux.lds.S | 7 ------- arch/x86/tools/relocs.c | 1 - 4 files changed, 31 deletions(-) diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h index b86b27d15e52..7a176381ee01 100644 --- a/arch/x86/include/asm/percpu.h +++ b/arch/x86/include/asm/percpu.h @@ -20,12 +20,6 @@ #define PER_CPU_VAR(var) __percpu(var)__percpu_rel -#ifdef CONFIG_X86_64_SMP -#define INIT_PER_CPU_VAR(var) init_per_cpu__##var -#else -#define INIT_PER_CPU_VAR(var) var -#endif - #else /* ...!ASSEMBLY */ #include @@ -96,22 +90,6 @@ #define __percpu_arg(x) __percpu_prefix "%" #x #define __force_percpu_arg(x) __force_percpu_prefix "%" #x -/* - * Initialized pointers to per-cpu variables needed for the boot - * processor need to use these macros to get the proper address - * offset from __per_cpu_load on SMP. - * - * There also must be an entry in vmlinux_64.lds.S - */ -#define DECLARE_INIT_PER_CPU(var) \ - extern typeof(var) init_per_cpu_var(var) - -#ifdef CONFIG_X86_64_SMP -#define init_per_cpu_var(var) init_per_cpu__##var -#else -#define init_per_cpu_var(var) var -#endif - /* For arch-specific code, we can use direct single-insn ops (they * don't give an lvalue though). */ diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c index fe0c859873d1..30424f9876bc 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -26,7 +26,6 @@ #include DEFINE_PER_CPU_PAGE_ALIGNED(struct irq_stack, irq_stack_backing_store) __visible; -DECLARE_INIT_PER_CPU(irq_stack_backing_store); #ifdef CONFIG_VMAP_STACK /* diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index efa4885060b5..9aea7b6b02c7 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -482,13 +482,6 @@ SECTIONS "kernel image bigger than KERNEL_IMAGE_SIZE"); #ifdef CONFIG_X86_64 -/* - * Per-cpu symbols which need to be offset from __per_cpu_load - * for the boot processor. - */ -#define INIT_PER_CPU(x) init_per_cpu__##x = ABSOLUTE(x) -INIT_PER_CPU(gdt_page); -INIT_PER_CPU(irq_stack_backing_store); #ifdef CONFIG_CPU_UNRET_ENTRY . = ASSERT((retbleed_return_thunk & 0x3f) == 0, "retbleed_return_thunk not cacheline-aligned"); diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 7feb63179b62..931d90aa814c 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -83,7 +83,6 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = { "__initramfs_start|" "(jiffies|jiffies_64)|" #if ELF_BITS == 64 - "init_per_cpu__.*|" "__end_rodata_hpage_align|" #endif "__vvar_page|" From patchwork Thu Oct 26 16:00:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158608 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp782526vqb; Thu, 26 Oct 2023 09:02:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrcGs6YPez/PkYDCsyjLQ4tKSsMFERmZ+F6bMb7aa9ApmwoyHCILocM2qPSsx9Zg+K7ssa X-Received: by 2002:a05:6871:b309:b0:1e9:6a4e:6b56 with SMTP id bd9-20020a056871b30900b001e96a4e6b56mr1959455oac.3.1698336178104; Thu, 26 Oct 2023 09:02:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336178; cv=none; d=google.com; s=arc-20160816; b=jA4XgfTmG3TcV1pGYwYRIqGNQxGEJCaZVZnoOjorHF2GLhBlSO8pHQraNYLK7UuQy+ Z378LVq4YMcnmUKH6JFtQsbXMguniop0kaI+MyWgT0jrAQ5B5GHc+5vnNTwLMOHzK0pn 8Sp0NSra0gvkK2HKmoYxsxvp2fEEaVQjz/ZskYdcjKPGxjhPsQnP2he4VomfEuqPRlfk 1X06MZZe5okee3c+I46kis6TqFFNUDeerCepx8EMZ4SqwFNRwdb7nHzRVCpCbLbywAWU Zr2a8NLpYhAvoN8EZZgN0GDHviJ0ZxD/DC4ifLfULQyxxOP1ITARC7AJMbxW1rHZjL4J QVWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4b6n2hqqBemYL89ZXVDSUOUI69G9HFJxSx2FZy1kuzU=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=qTytJqnmCZIeSmsnwuYs+x8tfrK/bjBV8XVhXmJnMqH0dUJdniLtW3Or2616I6N6Kj zdqjoGhLtJz7O8W9wn56H3u4/H7YBgGnIPd7a9Mp3QrczuasuS1GJ1PS0rJJafzx5akz 5X1utCkPt6MbP2AuCQ4rkqSyKfy5z6CCAiwTEfyKhTJ9f8dgr3o6xxxYkIj9qhGzC5HO 6anzr4MP1PXVxZN4OCXYmXBVhU8PRCrjYJoYCTXdJIsLyBXgjShhAB1tELmkuYwylVEH BFGj8bgWb+HKrClf548acW/026O+V6OrF8EKHFoSr0Qd9EQH5DawzNduLM1VPQp3QAEu nQbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=d8vLPhX0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id r33-20020a05683044a100b006bcc576935dsi5039102otv.94.2023.10.26.09.02.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=d8vLPhX0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 19C828136BC7; Thu, 26 Oct 2023 09:02:44 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345612AbjJZQCS (ORCPT + 26 others); Thu, 26 Oct 2023 12:02:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235088AbjJZQCA (ORCPT ); Thu, 26 Oct 2023 12:02:00 -0400 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C7CBD59 for ; Thu, 26 Oct 2023 09:01:37 -0700 (PDT) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-5a8628e54d4so9761417b3.0 for ; Thu, 26 Oct 2023 09:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336096; x=1698940896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4b6n2hqqBemYL89ZXVDSUOUI69G9HFJxSx2FZy1kuzU=; b=d8vLPhX0Xan4gRYruPzX6i0hYvrmS/wY231LQBpNO8xt1tis34AFmiG1X/4tJNpP0j w/O2+irKWJo9TnzXT1kDudUg5UlcePeUN0sg01qXwDw9I4DbYg081yPEg/sIUpOBZbVP 970Q5SYqKIT7LLukSxN8Ra+H6JDNSny9ZNkcrE6RSAewW7FEYCI6aokx2rXtj3OsHjSG kVvPF+jHfpJHjR+D55YljR8W7stH/I/aUfBM7OP+DcoSEmp/LsTKgGBcIyYw6zIO7XRw yUhV8DDxhPKBKGyJvUfloXKYMFW//pa5J/7Q3w4wKfx3whfmChsaE3+Cx3uI3ZTQqC+d 512w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336096; x=1698940896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4b6n2hqqBemYL89ZXVDSUOUI69G9HFJxSx2FZy1kuzU=; b=hjDCqpi/FGkHwDfDEmA1MpiQu17N8JDlyqP9wDi7ERng4MEXEqWF39trWz4pSPSzqc otRnRthfL2Eu//VP3VhUODHEaiJRDI/MQTu0La0mgD2xrqzGYHJ/g7XCX/kc6CpLCp25 vWvgj7BXCHsPOmdc/DaF3o4tDnlJOnmAJXt2hRqHiqOPoZ8ORTgiUSdfP11nCZZOo0OE 8mDaSvNisTrzHruvVKfCcEXGYzcTUML0aLNYqiPITsi/Dagcn+z7Eqbl0+do6UDz0O1c shEvoZonmk4vf+rvlByNT0biy4IRxlVn+zhJtfZLvse1mGKXHE7oQSHynMFPwBvJoH5A TQtA== X-Gm-Message-State: AOJu0Yy4LE1JBqwlXfJLpWjPmAT6QhQIjisdPUp9HDOS8DEci8Cfa9cq WJgA8JSQRzWVW1kafssJ9WX0Y84zwA== X-Received: by 2002:a81:aa48:0:b0:59f:699b:c3b3 with SMTP id z8-20020a81aa48000000b0059f699bc3b3mr5147764ywk.0.1698336095705; Thu, 26 Oct 2023 09:01:35 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:35 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 10/11] percpu: Remove PER_CPU_FIRST_SECTION Date: Thu, 26 Oct 2023 12:00:59 -0400 Message-ID: <20231026160100.195099-11-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:44 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834555902821558 X-GMAIL-MSGID: 1780834555902821558 x86-64 was the only user. Signed-off-by: Brian Gerst Reviewed-by: Uros Bizjak --- include/asm-generic/vmlinux.lds.h | 1 - include/linux/percpu-defs.h | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 67d8dd2f1bde..23d8acc72760 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -1032,7 +1032,6 @@ */ #define PERCPU_INPUT(cacheline) \ __per_cpu_start = .; \ - *(.data..percpu..first) \ . = ALIGN(PAGE_SIZE); \ *(.data..percpu..page_aligned) \ . = ALIGN(cacheline); \ diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index ec3573119923..b9ddee91e6c7 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h @@ -26,13 +26,11 @@ #define PER_CPU_SHARED_ALIGNED_SECTION "..shared_aligned" #define PER_CPU_ALIGNED_SECTION "..shared_aligned" #endif -#define PER_CPU_FIRST_SECTION "..first" #else #define PER_CPU_SHARED_ALIGNED_SECTION "" #define PER_CPU_ALIGNED_SECTION "..shared_aligned" -#define PER_CPU_FIRST_SECTION "" #endif @@ -114,16 +112,6 @@ #define DEFINE_PER_CPU(type, name) \ DEFINE_PER_CPU_SECTION(type, name, "") -/* - * Declaration/definition used for per-CPU variables that must come first in - * the set of variables. - */ -#define DECLARE_PER_CPU_FIRST(type, name) \ - DECLARE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION) - -#define DEFINE_PER_CPU_FIRST(type, name) \ - DEFINE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION) - /* * Declaration/definition used for per-CPU variables that must be cacheline * aligned under SMP conditions so that, whilst a particular instance of the From patchwork Thu Oct 26 16:01:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Gerst X-Patchwork-Id: 158606 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp782312vqb; Thu, 26 Oct 2023 09:02:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHnpkvLJIopoue2M8xAeVlXVMclCub/QINrYQy8lgdQK5rxbma7ZmKLM3U1ZITMQe318mAA X-Received: by 2002:a05:6870:aa07:b0:1e9:f9e5:d353 with SMTP id gv7-20020a056870aa0700b001e9f9e5d353mr23515089oab.12.1698336164148; Thu, 26 Oct 2023 09:02:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698336164; cv=none; d=google.com; s=arc-20160816; b=Zqyjtjy0wmDd8LZO9fIj2laScMtrTGLk8Ekp80NsA6dYsNr1+yWY5ZxSmgecGDcUU0 ZdwJrbySheufDjRhLvH6dVAt4Vy0yasYD4I+2NfidAt55Ps3MR0yO1SFgzfKCAiRV7PO TZEJHeZ6Du387gpGuCeCFwmNUq9Rh2tqK0AhPO+k6YnaOng1c7H4QgmlQVhKyo2xZIQc vrrW//70li4cyCy6PMogNHmODJSGyU1nsiHiN9q+IFIrZtIDIOCLTY21D6ph4LhfrjUn QfHpMnLNTYv+/vuM364VJw7gLiGudq1aqlSh5NH1HnsP0VcckPmivaXCMpx9VIoz4FU8 QMDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uEKMOhNXhzYoW+58HZlorWdy0xM6bOeFhfp+J2ei5Pk=; fh=kGpLZLNLRje3BV+NP+TIHFvhQuUJy2o1P7WKpXu8DOs=; b=Q4vivym7Dq1pclbGKs/8U+zV11viTDmsG9HYvcBDQkdwZGU0Mbw+kJBHlMhUmCWuOP oNlsH4ZTf4s0J4QSzvgcnn8rbymmfCJDd1IPBUqwsuZjulPUfbTv2XIOi9pGWoMDTk2N Xp0xgNqtMLgsugufx3fi+4z+/w8j9LN9LqP6aSWkJhvcLHA1VCPTpjXv9yy1/8Xspp7X Z9NrKGg5PhLtNwWxTbxrT4FumgAwTlrSf75SXgOLSIwVRNoekS61gZJDY/cbh6q+qbGO fDyGvms3BCCV02EVuAKSpctQZCuPovUOp+c1imDAPdgFXJ5grx7d5NGuLMPVhEA3JRWU uicw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UF24kzL8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id gc10-20020a056870678a00b001e107026bb6si4826338oab.130.2023.10.26.09.02.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:02:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UF24kzL8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 7F1C8801BEA2; Thu, 26 Oct 2023 09:02:39 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345637AbjJZQCV (ORCPT + 26 others); Thu, 26 Oct 2023 12:02:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33294 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235128AbjJZQCB (ORCPT ); Thu, 26 Oct 2023 12:02:01 -0400 Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15CBDD64 for ; Thu, 26 Oct 2023 09:01:38 -0700 (PDT) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-5a7d9d357faso8561987b3.0 for ; Thu, 26 Oct 2023 09:01:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698336097; x=1698940897; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uEKMOhNXhzYoW+58HZlorWdy0xM6bOeFhfp+J2ei5Pk=; b=UF24kzL8KHCKobWjP+px9fmlmmQxH9yWGNpsLZbuLJY+xYs/MAhviGKf9djclpdWkZ 7NtSBxlMGtEfD+bxkn04jRCPp8/GIbsuUkxWsoAOFXPEa4z+fQKfNY6esNhEuMl4WmU+ h7N+mdnhhQ8NqFVBFCjwXyrQuRecJs5JLTble+wAE7BCV8kWgtQKZYcGlbVS/AekZFh2 MDhBy3ccESy2GCYidca014KIUJ0+yUhUJwO20OjTsnl/1GDuUZ5nRpabFHI1PaN3mVE0 exrOFfOIRrtuGX9D9ecwotwvKm4IxEol3JKg4lgYwzCNIovOHzSORTUyxKK3UMsUVWq0 ARSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698336097; x=1698940897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uEKMOhNXhzYoW+58HZlorWdy0xM6bOeFhfp+J2ei5Pk=; b=ETLwUhmjOzf3VLMHE3xwdx+s7bqYG3I81qj+vF95Bl48XxAibfI1ZiJubWZ5C5u2Kf 3ZJ0Qkpzp0ZU13bD/7FQEK6QWNL88wUYk7IOq6a77nLHB3OhJkZoSGCahkmnQZEJi+6g u/V/Z0qVvzfZxcdt8+b3+xUKGVqoKByWdEHFRyc4BkLHhNm+YBdR0/B83BPgr1s2K351 R17iXbOlRW80PX9OGyylt7wgrxw+dHeouv+F5j0VUxi4ce33wdFJ99/JlIS5g9HQNZKP 8mc7Wca9xiGYH9FMVHQOio/FocxIzU9vLM+SmvIRCH+HPabAI9C0S/JE2sNL3wa75zge 3nwg== X-Gm-Message-State: AOJu0Yz0XDL4wcm0kSzW9gfn6QCX07ijYYy6DkWzgQv5Pm/kIhY43RE8 LzHbbLaaoJLMH7gUie50tWKDSKXWEw== X-Received: by 2002:a81:a050:0:b0:5a7:ba54:af02 with SMTP id x77-20020a81a050000000b005a7ba54af02mr20164519ywg.38.1698336096799; Thu, 26 Oct 2023 09:01:36 -0700 (PDT) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1019]) by smtp.gmail.com with ESMTPSA id a71-20020a0dd84a000000b005a20ab8a184sm6130129ywe.31.2023.10.26.09.01.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 09:01:36 -0700 (PDT) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , Thomas Gleixner , Borislav Petkov , "H . Peter Anvin" , Peter Zijlstra , Uros Bizjak , Brian Gerst Subject: [PATCH v2 11/11] kallsyms: Remove KALLSYMS_ABSOLUTE_PERCPU Date: Thu, 26 Oct 2023 12:01:00 -0400 Message-ID: <20231026160100.195099-12-brgerst@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231026160100.195099-1-brgerst@gmail.com> References: <20231026160100.195099-1-brgerst@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Thu, 26 Oct 2023 09:02:39 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780834541862705053 X-GMAIL-MSGID: 1780834541862705053 x86-64 was the only user. Signed-off-by: Brian Gerst --- init/Kconfig | 11 +----- kernel/kallsyms.c | 12 ++----- scripts/kallsyms.c | 80 ++++++++--------------------------------- scripts/link-vmlinux.sh | 4 --- 4 files changed, 18 insertions(+), 89 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index 1af31b23e376..4d91c5632aaf 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1715,11 +1715,6 @@ config KALLSYMS_ALL Say N unless you really need all symbols, or kernel live patching. -config KALLSYMS_ABSOLUTE_PERCPU - bool - depends on KALLSYMS - default n - config KALLSYMS_BASE_RELATIVE bool depends on KALLSYMS @@ -1727,11 +1722,7 @@ config KALLSYMS_BASE_RELATIVE help Instead of emitting them as absolute values in the native word size, emit the symbol references in the kallsyms table as 32-bit entries, - each containing a relative value in the range [base, base + U32_MAX] - or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either - an absolute value in the range [0, S32_MAX] or a relative value in the - range [base, base + S32_MAX], where base is the lowest relative symbol - address encountered in the image. + each containing a relative value in the range [base, base + U32_MAX]. On 64-bit builds, this reduces the size of the address table by 50%, but more importantly, it results in entries whose values are build diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 18edd57b5fe8..f4e8e531052a 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -151,16 +151,8 @@ unsigned long kallsyms_sym_address(int idx) if (!IS_ENABLED(CONFIG_KALLSYMS_BASE_RELATIVE)) return kallsyms_addresses[idx]; - /* values are unsigned offsets if --absolute-percpu is not in effect */ - if (!IS_ENABLED(CONFIG_KALLSYMS_ABSOLUTE_PERCPU)) - return kallsyms_relative_base + (u32)kallsyms_offsets[idx]; - - /* ...otherwise, positive offsets are absolute values */ - if (kallsyms_offsets[idx] >= 0) - return kallsyms_offsets[idx]; - - /* ...and negative offsets are relative to kallsyms_relative_base - 1 */ - return kallsyms_relative_base - 1 - kallsyms_offsets[idx]; + /* values are unsigned offsets */ + return kallsyms_relative_base + (u32)kallsyms_offsets[idx]; } static void cleanup_symbol_name(char *s) diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 653b92f6d4c8..501f978abf4b 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -5,8 +5,8 @@ * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * - * Usage: kallsyms [--all-symbols] [--absolute-percpu] - * [--base-relative] [--lto-clang] in.map > out.S + * Usage: kallsyms [--all-symbols] [--base-relative] [--lto-clang] + * in.map > out.S * * Table compression uses all the unused char codes on the symbols and * maps these to the most used substrings (tokens). For instance, it might @@ -37,7 +37,6 @@ struct sym_entry { unsigned int len; unsigned int seq; unsigned int start_pos; - unsigned int percpu_absolute; unsigned char sym[]; }; @@ -55,14 +54,9 @@ static struct addr_range text_ranges[] = { #define text_range_text (&text_ranges[0]) #define text_range_inittext (&text_ranges[1]) -static struct addr_range percpu_range = { - "__per_cpu_start", "__per_cpu_end", -1ULL, 0 -}; - static struct sym_entry **table; static unsigned int table_size, table_cnt; static int all_symbols; -static int absolute_percpu; static int base_relative; static int lto_clang; @@ -75,7 +69,7 @@ static unsigned char best_table_len[256]; static void usage(void) { - fprintf(stderr, "Usage: kallsyms [--all-symbols] [--absolute-percpu] " + fprintf(stderr, "Usage: kallsyms [--all-symbols] " "[--base-relative] [--lto-clang] in.map > out.S\n"); exit(1); } @@ -167,7 +161,6 @@ static struct sym_entry *read_symbol(FILE *in, char **buf, size_t *buf_len) return NULL; check_symbol_range(name, addr, text_ranges, ARRAY_SIZE(text_ranges)); - check_symbol_range(name, addr, &percpu_range, 1); /* include the type field in the symbol name, so that it gets * compressed together */ @@ -183,7 +176,6 @@ static struct sym_entry *read_symbol(FILE *in, char **buf, size_t *buf_len) sym->len = len; sym->sym[0] = type; strcpy(sym_name(sym), name); - sym->percpu_absolute = 0; return sym; } @@ -334,11 +326,6 @@ static int expand_symbol(const unsigned char *data, int len, char *result) return total; } -static int symbol_absolute(const struct sym_entry *s) -{ - return s->percpu_absolute; -} - static void cleanup_symbol_name(char *s) { char *p; @@ -499,30 +486,17 @@ static void write_src(void) */ long long offset; - int overflow; - - if (!absolute_percpu) { - offset = table[i]->addr - relative_base; - overflow = (offset < 0 || offset > UINT_MAX); - } else if (symbol_absolute(table[i])) { - offset = table[i]->addr; - overflow = (offset < 0 || offset > INT_MAX); - } else { - offset = relative_base - table[i]->addr - 1; - overflow = (offset < INT_MIN || offset >= 0); - } - if (overflow) { + + offset = table[i]->addr - relative_base; + if (offset < 0 || offset > UINT_MAX) { fprintf(stderr, "kallsyms failure: " - "%s symbol value %#llx out of range in relative mode\n", - symbol_absolute(table[i]) ? "absolute" : "relative", + "symbol value %#llx out of range in relative mode\n", table[i]->addr); exit(EXIT_FAILURE); } printf("\t.long\t%#x /* %s */\n", (int)offset, table[i]->sym); - } else if (!symbol_absolute(table[i])) { - output_address(table[i]->addr); } else { - printf("\tPTR\t%#llx\n", table[i]->addr); + output_address(table[i]->addr); } } printf("\n"); @@ -775,36 +749,15 @@ static void sort_symbols(void) qsort(table, table_cnt, sizeof(table[0]), compare_symbols); } -static void make_percpus_absolute(void) -{ - unsigned int i; - - for (i = 0; i < table_cnt; i++) - if (symbol_in_range(table[i], &percpu_range, 1)) { - /* - * Keep the 'A' override for percpu symbols to - * ensure consistent behavior compared to older - * versions of this tool. - */ - table[i]->sym[0] = 'A'; - table[i]->percpu_absolute = 1; - } -} - -/* find the minimum non-absolute symbol address */ +/* find the minimum symbol address */ static void record_relative_base(void) { - unsigned int i; - - for (i = 0; i < table_cnt; i++) - if (!symbol_absolute(table[i])) { - /* - * The table is sorted by address. - * Take the first non-absolute symbol value. - */ - relative_base = table[i]->addr; - return; - } + /* + * The table is sorted by address. + * Take the first symbol value. + */ + if (table_cnt) + relative_base = table[0]->addr; } int main(int argc, char **argv) @@ -812,7 +765,6 @@ int main(int argc, char **argv) while (1) { static const struct option long_options[] = { {"all-symbols", no_argument, &all_symbols, 1}, - {"absolute-percpu", no_argument, &absolute_percpu, 1}, {"base-relative", no_argument, &base_relative, 1}, {"lto-clang", no_argument, <o_clang, 1}, {}, @@ -831,8 +783,6 @@ int main(int argc, char **argv) read_map(argv[optind]); shrink_table(); - if (absolute_percpu) - make_percpus_absolute(); sort_symbols(); if (base_relative) record_relative_base(); diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index a432b171be82..d25b6d5de45e 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -148,10 +148,6 @@ kallsyms() kallsymopt="${kallsymopt} --all-symbols" fi - if is_enabled CONFIG_KALLSYMS_ABSOLUTE_PERCPU; then - kallsymopt="${kallsymopt} --absolute-percpu" - fi - if is_enabled CONFIG_KALLSYMS_BASE_RELATIVE; then kallsymopt="${kallsymopt} --base-relative" fi