From patchwork Fri Feb 14 21:21:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andi Kleen X-Patchwork-Id: 3654581 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id D4AB5BF13A for ; Fri, 14 Feb 2014 21:28:31 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 10185201CE for ; Fri, 14 Feb 2014 21:28:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2A73D201BF for ; Fri, 14 Feb 2014 21:28:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753139AbaBNV2K (ORCPT ); Fri, 14 Feb 2014 16:28:10 -0500 Received: from mga01.intel.com ([192.55.52.88]:9979 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753200AbaBNVW3 (ORCPT ); Fri, 14 Feb 2014 16:22:29 -0500 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 14 Feb 2014 13:22:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.95,847,1384329600"; d="scan'208";a="475474951" Received: from laut.jf.intel.com (HELO localhost) ([10.23.232.94]) by fmsmga001.fm.intel.com with ESMTP; 14 Feb 2014 13:22:29 -0800 Received: by localhost (Postfix, from userid 1000) id 6DD3A124B09; Fri, 14 Feb 2014 22:21:49 +0100 (CET) From: Andi Kleen To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, linux-kbuild@vger.kernel.org, mmarek@suse.cz, Andi Kleen Subject: [PATCH 13/19] Kbuild, lto: Set TMPDIR for LTO v2 Date: Fri, 14 Feb 2014 22:21:37 +0100 Message-Id: <1392412903-25733-14-git-send-email-andi@firstfloor.org> X-Mailer: git-send-email 1.8.5.2 In-Reply-To: <1392412903-25733-1-git-send-email-andi@firstfloor.org> References: <1392412903-25733-1-git-send-email-andi@firstfloor.org> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Andi Kleen LTO gcc puts a lot of data into $TMPDIR, essentially another copy of the object directory to pass the repartitioned object files to the code generation processes. TMPDIR defaults to /tmp With /tmp as tmpfs it's easy to drive systems to out of memory, because they will compete with the already high anonymous memory consumption of the wpa LTO pass. When LTO is set always set TMPDIR to the object directory. This could be slightly slower, but is far safer and eliminates another parameter the LTO user would need to set manually. I made it conditional on LTO for now. v2: Allow user to override (H. Peter Anvin) Signed-off-by: Andi Kleen --- Makefile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile b/Makefile index 933e1de..23629a9 100644 --- a/Makefile +++ b/Makefile @@ -407,6 +407,14 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL export KBUILD_ARFLAGS +ifdef CONFIG_LTO +# LTO gcc creates a lot of files in TMPDIR, and with /tmp as tmpfs +# it's easy to drive the machine OOM. Use the object directory +# instead +TMPDIR ?= ${objtree} +export TMPDIR +endif + # When compiling out-of-tree modules, put MODVERDIR in the module # tree rather than in the kernel tree. The kernel tree might # even be read-only.