From patchwork Wed Apr 1 09:37:13 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 457175 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id BEB631400A0 for ; Wed, 1 Apr 2015 20:40:32 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1YdF60-0006RQ-JQ; Wed, 01 Apr 2015 09:38:00 +0000 Received: from andre.telenet-ops.be ([195.130.132.53]) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1YdF5u-0006LW-6u for linux-arm-kernel@lists.infradead.org; Wed, 01 Apr 2015 09:37:55 +0000 Received: from ayla.of.borg ([84.193.93.87]) by andre.telenet-ops.be with bizsmtp id AZdD1q00m1t5w8s01ZdDtn; Wed, 01 Apr 2015 11:37:31 +0200 Received: from geert (helo=localhost) by ayla.of.borg with local-esmtp (Exim 4.82) (envelope-from ) id 1YdF5F-0003sy-G1; Wed, 01 Apr 2015 11:37:13 +0200 Date: Wed, 1 Apr 2015 11:37:13 +0200 (CEST) From: Geert Uytterhoeven To: Kevin Hilman Subject: [PATCH] mm/migrate: Mark unmap_and_move() "noinline" to avoid ICE in gcc 4.7.3 (was: Re: Possible regression in gcc 4.7.3 next-20150323 due to "ARM, arm64: kvm: get rid of the bounce page") In-Reply-To: <7h8uec95t2.fsf@deeprootsystems.com> Message-ID: References: <20150324004537.GA24816@verge.net.au> <20150324161358.GA694@kahuna> <20150326003939.GA25368@verge.net.au> <20150326133631.GB2805@arm.com> <20150327002554.GA5527@verge.net.au> <20150327100612.GB1562@arm.com> <7hbnj99epe.fsf@deeprootsystems.com> <7h8uec95t2.fsf@deeprootsystems.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150401_023754_415820_C03605E3 X-CRM114-Status: GOOD ( 28.11 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [195.130.132.53 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [195.130.132.53 listed in wl.mailspike.net] -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders Cc: Nishanth Menon , Magnus Damm , Russell King - ARM Linux , Arnd Bergmann , Ard Biesheuvel , Marc Zyngier , Will Deacon , "linux-sh@vger.kernel.org" , Tyler Baker , Linux Kernel Development , linux-mm@kvack.org, Simon Horman , Catalin Marinas , "grygorii.strashko@linaro.org" , Andrew Morton , "linux-omap@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org Hi Kevin, On Tue, 31 Mar 2015, Kevin Hilman wrote: > Ard Biesheuvel writes: > Nope, that branch is already part of linux-next, and linux-next still > fails to compile for 20+ defconfigs[1] > > > Could you elaborate on the issue please? What is the error you are > > getting, and can you confirm that is is caused by ld choking on the > > linker script? If not, this is another error than the one we have been > > trying to fix > > It's definitely not linker script related. > > Using "arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.7.3-12ubuntu1) 4.7.3", > here's the error when building for multi_v7_defconfig (full log > available[2]): > > ../mm/migrate.c: In function 'migrate_pages': > ../mm/migrate.c:1148:1: internal compiler error: in push_minipool_fix, at config/arm/arm.c:13101 > Please submit a full bug report, > with preprocessed source if appropriate. > See for instructions. > Preprocessed source stored into /tmp/ccO1Nz1m.out file, please attach > this to your bugreport. > make[2]: *** [mm/migrate.o] Error 1 > make[2]: Target `__build' not remade because of errors. > make[1]: *** [mm] Error 2 > > build bisect points to commit 21f992084aeb[3], but that doesn't revert > cleanly so I haven't got any further than that yet. I installed gcc-arm-linux-gnueabi (4:4.7.2-1 from Ubuntu 14.04 LTS) and could reproduce the ICE. I came up with the workaround below. Does this work for you? From 7ebe83316eaf1952e55a76754ce7a5832e461b8c Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Wed, 1 Apr 2015 11:22:51 +0200 Subject: [PATCH] mm/migrate: Mark unmap_and_move() "noinline" to avoid ICE in gcc 4.7.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) : mm/migrate.c: In function ‘migrate_pages’: mm/migrate.c:1148:1: internal compiler error: in push_minipool_fix, at config/arm/arm.c:13500 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. Preprocessed source stored into /tmp/ccPoM1tr.out file, please attach this to your bugreport. make[1]: *** [mm/migrate.o] Error 1 make: *** [mm/migrate.o] Error 2 Mark unmap_and_move() (which is used in a single place only) "noinline" to work around this compiler bug. Reported-by: Kevin Hilman Signed-off-by: Geert Uytterhoeven Tested-by: Kevin Hilman --- mm/migrate.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 114602a68111d809..98f8574456c2010c 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -904,9 +904,10 @@ out: * Obtain the lock on page, remove all ptes and migrate the page * to the newly allocated page in newpage. */ -static int unmap_and_move(new_page_t get_new_page, free_page_t put_new_page, - unsigned long private, struct page *page, int force, - enum migrate_mode mode) +static noinline int unmap_and_move(new_page_t get_new_page, + free_page_t put_new_page, + unsigned long private, struct page *page, + int force, enum migrate_mode mode) { int rc = 0; int *result = NULL;