Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp943263pxf; Wed, 7 Apr 2021 15:42:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+3r3SHfori4tVV51cemEX69DAavf4LGBo44FmcWwskRi7CQPXl0BRU/9r17YhDmG+h7Sx X-Received: by 2002:a17:907:3e9e:: with SMTP id hs30mr6654794ejc.66.1617835334929; Wed, 07 Apr 2021 15:42:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617835334; cv=none; d=google.com; s=arc-20160816; b=I+F/TqY2SQqNqnpinfv9es5t2j0F6E0bVJSW6sPdHi5kiH5ZdXdZV7076cPAa+WMDs WO97z0U/A94NTB2epixtRxIulyYICUqJq4S+zn57a3kE6uvDPj/C/hFSCD2BE08pDRkB R9AwIZx2SNY9PzIbpO33Ghohm4sL7vUtruR80YbUgyk2nTo4Jl1MndeXGuulNLW2E3Xq soV52nQYI91HgqjC97+oxDPMGJEhHdmnquReCba2W4DCS1iHF9DiBFXIiRWyKayv0zAc diBpq18tzTj4170Gyk2nds1Af1Nq1EWJX3jEBEcz3N3zfKH3bjZEvlXPhpYE4E3KeOgv 7bEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:cc:to:subject:from:references:in-reply-to :message-id; bh=+o5yKew++kFX3Vwne7f0N5qh0JLn5RH+Vi+iF6ubTFc=; b=g2Xdy2fVVp+Lkpp2dxf6PrZhjEfffv5cEFFTdx7wM9jn6mVPbUXHLj5N6KlWGyJVXX vOfebaas3s4aQr2UGbXYeQbHSIMYizQLLp7YxdzTHd28m8vcZn6ET8mIgQ6dtvb1Z+WP EgYtt+5Ahe4QCyUHUxdgi79y5nKjJVzGs4M/TNjt2NqNVdClEdNOYDYFr4T4wO4yJEUT SeL+tbO/tbIv3XrlAw6VuAXrXeW3mcroQchITvpHu/Yqv/kflB/FxotVXDwdfHHPsRp2 +WfyQp6RoLiWZxE+UCGi++ax2jzif7okktqXbByDpXsh9GfhoABbea/SOAVHIXVE6vgy cRpg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b13si21455998ede.383.2021.04.07.15.41.52; Wed, 07 Apr 2021 15:42:14 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233991AbhDGRWx (ORCPT + 99 others); Wed, 7 Apr 2021 13:22:53 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:21301 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348047AbhDGRWs (ORCPT ); Wed, 7 Apr 2021 13:22:48 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4FFrn84JgYzB09ZX; Wed, 7 Apr 2021 19:22:36 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id gy9GIRClgNpX; Wed, 7 Apr 2021 19:22:36 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4FFrn83RXYzB09ZS; Wed, 7 Apr 2021 19:22:36 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 300BA8B7B6; Wed, 7 Apr 2021 19:22:38 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 3XWUjITmkGEt; Wed, 7 Apr 2021 19:22:38 +0200 (CEST) Received: from po16121vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id EE0BA8B75F; Wed, 7 Apr 2021 19:22:37 +0200 (CEST) Received: by po16121vm.idsi0.si.c-s.fr (Postfix, from userid 0) id CDD186799B; Wed, 7 Apr 2021 17:22:37 +0000 (UTC) Message-Id: In-Reply-To: <311235752428dacbee81728767aacc2bf4222384.1617816138.git.christophe.leroy@csgroup.eu> References: <311235752428dacbee81728767aacc2bf4222384.1617816138.git.christophe.leroy@csgroup.eu> From: Christophe Leroy Subject: [PATCH v1 4/8] powerpc/mem: Optimise flush_dcache_icache_hugepage() To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Wed, 7 Apr 2021 17:22:37 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org flush_dcache_icache_hugepage() is a static function, with only one caller. That caller calls it when PageCompound() is true, so bugging on !PageCompound() is useless if we can trust the compiler a little. Remove the BUG_ON(!PageCompound()). The number of elements of a page won't change over time, but GCC doesn't know about it, so it gets the value at every iteration. To avoid that, call compound_nr() outside the loop and save it in a local variable. Whether the page is a HIGHMEM page or not doesn't change over time. But GCC doesn't know it so it does the test on every iteration. Do the test outside the loop. When the page is not a HIGHMEM page, page_address() will fallback on lowmem_page_address(), so call lowmem_page_address() directly and don't suffer the call to page_address() on every iteration. Signed-off-by: Christophe Leroy --- arch/powerpc/mm/mem.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 29ce215e491f..d2c66827d9fd 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -474,14 +474,14 @@ static void __flush_dcache_icache(void *p); static void flush_dcache_icache_hugepage(struct page *page) { int i; + int nr = compound_nr(page); void *start; - BUG_ON(!PageCompound(page)); - - for (i = 0; i < compound_nr(page); i++) { - if (!PageHighMem(page)) { - __flush_dcache_icache(page_address(page+i)); - } else { + if (!PageHighMem(page)) { + for (i = 0; i < nr; i++) + __flush_dcache_icache(lowmem_page_address(page + i)); + } else { + for (i = 0; i < nr; i++) { start = kmap_atomic(page+i); __flush_dcache_icache(start); kunmap_atomic(start); -- 2.25.0