Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5949435pxu; Wed, 23 Dec 2020 09:16:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJzeEXBRInsol9YaWoizHEDlVMbPe14Rz5YcNz2lmfj3rlownT1O8LkKagHg0n8O0x/phrXS X-Received: by 2002:a17:906:2798:: with SMTP id j24mr24855363ejc.328.1608743814707; Wed, 23 Dec 2020 09:16:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608743814; cv=none; d=google.com; s=arc-20160816; b=CR+jvBLcymyxLktji0fjatfhbH9DzbMgNc2uDSopv9vnywy02YbQPxHrbg4mHMMBFy uYC5W31mp7rRMm64udVAYxpqLfSBVv5sAGzE+d9/DX702YlptLDO086BKigm6VNIBVZf I3A7oTW4HsxPC+LxHfPVyE4thoZYelRLIgk2ybU5Lqchut26/4s2SXuppZsa4DdRC0UE 7Sh3bO2Rsf9kSGAuf1QSeMoDdputbCuPSHnrVeILPXMBkX9JsrdKN77l56yWYWmfT5tn sRpotr6HIdj10wi6MJSmtW3Xy8YBhOK1re5/Ny1pHb4W/j1D8Ed14gvDi5Zy7bL/X3N2 8KAw== 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 :message-id:date:subject:cc:to:from:dkim-signature:dkim-filter; bh=EJDHjvxBhuu/OgdB/K8U9ottihe8bt0d/rxGUNGG0PE=; b=P9oKirBot31GjEuQm2fXZ4O+7qEG7zrSVmHnMgH4zfAYWcpXp/dHfDGszdyE9CdrOj 1/I0lr0FaUaj4UPgrzq3LEw/45dOesPzisB3tm45Iyf5lNcNRY4DDYh7z6HhPHIMYI9Y UrtTIP/sGolaMQ408GZlC1QVKhkcmxUpPzmvlVyRvy8kkfvhpsCrw6ZSa1gpdr+DQAAC DsCXi1mlVxq0mzApnkVSn+pzqzUNCDT/crjy3GhIbY/+JC+LTezQTd41X6W6QZpKaga7 rmyUHZs2jQyPdbj+MfLlsaqVbcpCOubP0SYVisrb6IUyjlDieFwjwIjfKO+3eb1MmSus HN2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@nifty.com header.s=dec2015msa header.b=2SquL9pu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d14si14455784edp.294.2020.12.23.09.16.32; Wed, 23 Dec 2020 09:16:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@nifty.com header.s=dec2015msa header.b=2SquL9pu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727468AbgLWROs (ORCPT + 99 others); Wed, 23 Dec 2020 12:14:48 -0500 Received: from conuserg-10.nifty.com ([210.131.2.77]:22713 "EHLO conuserg-10.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725807AbgLWROr (ORCPT ); Wed, 23 Dec 2020 12:14:47 -0500 Received: from grover.flets-west.jp (softbank126090214151.bbtec.net [126.90.214.151]) (authenticated) by conuserg-10.nifty.com with ESMTP id 0BNHBjDI029748; Thu, 24 Dec 2020 02:11:46 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com 0BNHBjDI029748 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1608743507; bh=EJDHjvxBhuu/OgdB/K8U9ottihe8bt0d/rxGUNGG0PE=; h=From:To:Cc:Subject:Date:From; b=2SquL9pujp6+tlP0kbW8WKUCr6guAfpCgqHNGYypN6orvm6jVqiUhK4dvlRtEgaXg tdL2J+kwChXubNp350IaryPh7AQJzbg2K0MoaWf9usBRkanDoQfHsSzw/hHj7AO6IX Y5LaeCrmSCLKA0rylT9Fl1SKlZtm3N64GWd1R9TB5Tur6Vts+fwp58+n5Vguw/7Xgk hHKltwyFMDaaAKbRCfxIAlvSIp0silAX61dZjaO54fvhwS+1YVCHRo7rO7ymf5DRqP PT3SpDeLpPWxiBc0I2EbNff10BQYgd/u2EZlV3yaR3CshNaOXUdj3FaC6/tLMRKfq7 dBSGJ6F4pL+ag== X-Nifty-SrcIP: [126.90.214.151] From: Masahiro Yamada To: Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , linuxppc-dev@lists.ozlabs.org Cc: Masahiro Yamada , Ard Biesheuvel , Christophe Leroy , Daniel Axtens , Greentime Hu , Michal Suchanek , Nicholas Piggin , "Oliver O'Halloran" , Ravi Bangoria , linux-kernel@vger.kernel.org Subject: [PATCH 1/2] powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o Date: Thu, 24 Dec 2020 02:11:41 +0900 Message-Id: <20201223171142.707053-1-masahiroy@kernel.org> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org vgettimeofday.o is unnecessarily rebuilt. Adding it to 'targets' is not enough to fix the issue. Kbuild is correctly rebuilding it because the command line is changed. PowerPC builds each vdso directory twice; first in vdso_prepare to generate vdso{32,64}-offsets.h, second as part of the ordinary build process to embed vdso{32,64}.so.dbg into the kernel. The problem shows up when CONFIG_PPC_WERROR=y due to the following line in arch/powerpc/Kbuild: subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror In the preparation stage, Kbuild directly visits the vdso directories, hence it does not inherit subdir-ccflags-y. In the second descend, Kbuild adds -Werror, which results in the command line flipping with/without -Werror. It implies a potential danger; if a more critical flag that would impact the resulted vdso, the offsets recorded in the headers might be different from real offsets in the embedded vdso images. Removing the unneeded second descend solves the problem. Link: https://lore.kernel.org/linuxppc-dev/87tuslxhry.fsf@mpe.ellerman.id.au/ Reported-by: Michael Ellerman Signed-off-by: Masahiro Yamada --- arch/powerpc/kernel/Makefile | 4 ++-- arch/powerpc/kernel/vdso32/Makefile | 5 +---- arch/powerpc/kernel/{vdso32 => }/vdso32_wrapper.S | 0 arch/powerpc/kernel/vdso64/Makefile | 6 +----- arch/powerpc/kernel/{vdso64 => }/vdso64_wrapper.S | 0 5 files changed, 4 insertions(+), 11 deletions(-) rename arch/powerpc/kernel/{vdso32 => }/vdso32_wrapper.S (100%) rename arch/powerpc/kernel/{vdso64 => }/vdso64_wrapper.S (100%) diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index fe2ef598e2ea..79ee7750937d 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile @@ -51,7 +51,7 @@ obj-y += ptrace/ obj-$(CONFIG_PPC64) += setup_64.o \ paca.o nvram_64.o note.o syscall_64.o obj-$(CONFIG_COMPAT) += sys_ppc32.o signal_32.o -obj-$(CONFIG_VDSO32) += vdso32/ +obj-$(CONFIG_VDSO32) += vdso32_wrapper.o obj-$(CONFIG_PPC_WATCHDOG) += watchdog.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o obj-$(CONFIG_PPC_DAWR) += dawr.o @@ -60,7 +60,7 @@ obj-$(CONFIG_PPC_BOOK3S_64) += cpu_setup_power.o obj-$(CONFIG_PPC_BOOK3S_64) += mce.o mce_power.o obj-$(CONFIG_PPC_BOOK3E_64) += exceptions-64e.o idle_book3e.o obj-$(CONFIG_PPC_BARRIER_NOSPEC) += security.o -obj-$(CONFIG_PPC64) += vdso64/ +obj-$(CONFIG_PPC64) += vdso64_wrapper.o obj-$(CONFIG_ALTIVEC) += vecemu.o obj-$(CONFIG_PPC_BOOK3S_IDLE) += idle_book3s.o procfs-y := proc_powerpc.o diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile index 59aa2944ecae..42fc3de89b39 100644 --- a/arch/powerpc/kernel/vdso32/Makefile +++ b/arch/powerpc/kernel/vdso32/Makefile @@ -30,7 +30,7 @@ CC32FLAGS += -m32 KBUILD_CFLAGS := $(filter-out -mcmodel=medium,$(KBUILD_CFLAGS)) endif -targets := $(obj-vdso32) vdso32.so.dbg +targets := $(obj-vdso32) vdso32.so.dbg vgettimeofday.o obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32)) GCOV_PROFILE := n @@ -46,9 +46,6 @@ obj-y += vdso32_wrapper.o targets += vdso32.lds CPPFLAGS_vdso32.lds += -P -C -Upowerpc -# Force dependency (incbin is bad) -$(obj)/vdso32_wrapper.o : $(obj)/vdso32.so.dbg - # link rule for the .so file, .lds has to be first $(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday.o FORCE $(call if_changed,vdso32ld_and_check) diff --git a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S b/arch/powerpc/kernel/vdso32_wrapper.S similarity index 100% rename from arch/powerpc/kernel/vdso32/vdso32_wrapper.S rename to arch/powerpc/kernel/vdso32_wrapper.S diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile index d365810a689a..b50b39fedf74 100644 --- a/arch/powerpc/kernel/vdso64/Makefile +++ b/arch/powerpc/kernel/vdso64/Makefile @@ -17,7 +17,7 @@ endif # Build rules -targets := $(obj-vdso64) vdso64.so.dbg +targets := $(obj-vdso64) vdso64.so.dbg vgettimeofday.o obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) GCOV_PROFILE := n @@ -29,15 +29,11 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib \ -Wl,-soname=linux-vdso64.so.1 -Wl,--hash-style=both asflags-y := -D__VDSO64__ -s -obj-y += vdso64_wrapper.o targets += vdso64.lds CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) $(obj)/vgettimeofday.o: %.o: %.c FORCE -# Force dependency (incbin is bad) -$(obj)/vdso64_wrapper.o : $(obj)/vdso64.so.dbg - # link rule for the .so file, .lds has to be first $(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday.o FORCE $(call if_changed,vdso64ld_and_check) diff --git a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S b/arch/powerpc/kernel/vdso64_wrapper.S similarity index 100% rename from arch/powerpc/kernel/vdso64/vdso64_wrapper.S rename to arch/powerpc/kernel/vdso64_wrapper.S -- 2.27.0