Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4513806pxv; Tue, 20 Jul 2021 05:39:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8RQof5dVG0UPJCUiyM9gnD69T4mfi6TEUEFz9wqhHz/kz3Bx6EmSH3piGix1SmkBXT/0V X-Received: by 2002:a05:6402:312d:: with SMTP id dd13mr40157716edb.348.1626784784894; Tue, 20 Jul 2021 05:39:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626784784; cv=none; d=google.com; s=arc-20160816; b=Tel6F5d047GU5DDqZVUaPFTnhPP4jHTXV/G4IsRwS3ovxPtBKRQjktiY4PF7yP0Hxj s+N/lAVFGgsoQGMzhaqplgr7oRJezvzDsQf3zOgmq6BjaPaKEb0SyRtsU1YHj5RYWoCG BsLkkgw60xADR5oKhgc9QR9dArTl/TgxE1zlpik+RbmiEvDUir4OfI1X2ijmTrkOGG9t QaB2RrFMYdOIGHnk26uk3zOR4tpyJJ8/E+kStCajqPTYVcV7pgzPJIuWIV9l8FgSpwHx B9XwvlpzrBYkQF0j50xLh97XNfUyiXKu/PcZT1+Njmx/ooGBtjIcoS5QnOIaIcgnnWXA 0fXQ== 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=QT64acG1hacYi29qMEQoTRpF2tSsmtIYW98r8/5bopk=; b=edJVMEA2vKGFecSRlMCarTv2vmm8XyWnxAN3bAYxyUphG8OZuwzzpIAShtwEFG0y6o 0WCy4HgiUQ3hDG0vpK/VHK+pT417LxY1gmvpUG9KbDb8tDd2nGc0mwqAXj2pvTW4jrmL IeRI1iOFHcj5yRIEaOcwNQHRUqkbODAuq2M0WihBBb8kWHQ1qKnK/5ZEuau628SzjRwD +jJ0P7miRLTPnRtqG0RA86PnCzn6AsESmRdrqUsQIrks5TA/u3CRo43cVtVoCLpEcDN1 GyDmYHBSFx/65KABT4tsx3KJiDIbi1KeI0iaKhtDVl+DSwBgMMgY7IxzNVhDUWLsumFL jkxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IsWzOQWg; 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 gz23si20371761ejc.709.2021.07.20.05.39.20; Tue, 20 Jul 2021 05:39:44 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IsWzOQWg; 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 S238023AbhGTLzO (ORCPT + 99 others); Tue, 20 Jul 2021 07:55:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:38930 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229632AbhGTLzE (ORCPT ); Tue, 20 Jul 2021 07:55:04 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E5F6E61186; Tue, 20 Jul 2021 12:35:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626784542; bh=F9par1LOdZWcaYEp+Fsm6nACHy0sgpjKC7cEQSSN6Kk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IsWzOQWgeCT1AYKwtELp1TXCDgnOLCVvxD7X75XcFQe5PScLYsCySiEhWrWsNzIFy NU1eCxY9+EtVnyEeY8mYhtZYNtWKq6pwEnYIuUmhq+Xra94KKBJJODpnH81/4MF4Pl 7uyzd4SqeuJM8/Gemg06n3sL8LVi+LGWAdi3y+rn3xvIoCxR4j6ia9WzfgB8kl+oM5 2ykDSrOi/oG3+IA+5TyQEfXk1QR+3NhmU29GozMF0aqkga4B/tubtAa6SESVqo3Yru cEZWb51tqxOvMK7ctZtnfU8yKwalKFMh4knEqIyj+OBhWfD/KGtJxAT0MoPOPtTKR0 ibGilJFyngZYg== From: Will Deacon To: linux-kernel@vger.kernel.org Cc: Will Deacon , Ard Biesheuvel , Michael Ellerman , Thomas Gleixner , Benjamin Herrenschmidt , Christophe Leroy , Paul Mackerras , Jonathan Marek , Catalin Marinas , Andrew Morton , Mike Rapoport , Mark Rutland , Geert Uytterhoeven , Marc Zyngier , linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] Revert "powerpc/8xx: add support for huge pages on VMAP and VMALLOC" Date: Tue, 20 Jul 2021 13:35:11 +0100 Message-Id: <20210720123512.8740-2-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210720123512.8740-1-will@kernel.org> References: <20210720123512.8740-1-will@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit a6a8f7c4aa7eb50304b5c4e68eccd24313f3a785. Commit c742199a014d ("mm/pgtable: add stubs for {pmd/pub}_{set/clear}_huge") breaks the boot for arm64 when block mappings are used to create the linear map, as this relies on a working implementation of pXd_set_huge() even if the corresponding page-table levels have been folded. Although the problematic patch reverts cleanly, doing so breaks the build for 32-bit PowerPC 8xx machines, which rely on the default function definitions when the corresponding page-table levels are folded: | powerpc64-linux-ld: mm/vmalloc.o: in function `vunmap_pud_range': | linux/mm/vmalloc.c:362: undefined reference to `pud_clear_huge' | powerpc64-linux-ld: mm/vmalloc.o: in function `vunmap_pmd_range': | linux/mm/vmalloc.c:337: undefined reference to `pmd_clear_huge' | powerpc64-linux-ld: mm/vmalloc.o: in function `vunmap_pud_range': | linux/mm/vmalloc.c:362: undefined reference to `pud_clear_huge' | powerpc64-linux-ld: mm/vmalloc.o: in function `vunmap_pmd_range': | linux/mm/vmalloc.c:337: undefined reference to `pmd_clear_huge' | make: *** [Makefile:1177: vmlinux] Error 1 Although Christophe has kindly offered to look into the arm64 breakage, he's on holiday for another 10 days and there isn't an obvious fix on the arm64 side which allows us to continue using huge-vmap for affected configurations. In the interest of quickly getting things back to a working state as they were in 5.13, revert the huge-vmap changes for PowerPC 8xx prior to reverting the change which breaks arm64. We can then work on this together for 5.15 once Christophe is back. Cc: Ard Biesheuvel Cc: Michael Ellerman Cc: Benjamin Herrenschmidt Cc: Christophe Leroy Cc: Paul Mackerras Cc: Catalin Marinas Cc: Andrew Morton Cc: Nicholas Piggin Cc: Mark Rutland Cc: Geert Uytterhoeven Cc: Marc Zyngier Link: https://lore.kernel.org/r/20210719170615.Horde.Qio1wp3k5ebLo-d9xXHdOg1@messagerie.c-s.fr Signed-off-by: Will Deacon --- arch/powerpc/Kconfig | 2 +- arch/powerpc/include/asm/nohash/32/mmu-8xx.h | 43 -------------------- 2 files changed, 1 insertion(+), 44 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index d01e3401581d..5fc19ac62cb9 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -189,7 +189,7 @@ config PPC select GENERIC_VDSO_TIME_NS select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP - select HAVE_ARCH_HUGE_VMAP if PPC_RADIX_MMU || PPC_8xx + select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_JUMP_LABEL_RELATIVE select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14 diff --git a/arch/powerpc/include/asm/nohash/32/mmu-8xx.h b/arch/powerpc/include/asm/nohash/32/mmu-8xx.h index 997cec973406..6e4faa0a9b35 100644 --- a/arch/powerpc/include/asm/nohash/32/mmu-8xx.h +++ b/arch/powerpc/include/asm/nohash/32/mmu-8xx.h @@ -178,7 +178,6 @@ #ifndef __ASSEMBLY__ #include -#include void mmu_pin_tlb(unsigned long top, bool readonly); @@ -226,48 +225,6 @@ static inline unsigned int mmu_psize_to_shift(unsigned int mmu_psize) BUG(); } -static inline bool arch_vmap_try_size(unsigned long addr, unsigned long end, u64 pfn, - unsigned int max_page_shift, unsigned long size) -{ - if (end - addr < size) - return false; - - if ((1UL << max_page_shift) < size) - return false; - - if (!IS_ALIGNED(addr, size)) - return false; - - if (!IS_ALIGNED(PFN_PHYS(pfn), size)) - return false; - - return true; -} - -static inline unsigned long arch_vmap_pte_range_map_size(unsigned long addr, unsigned long end, - u64 pfn, unsigned int max_page_shift) -{ - if (arch_vmap_try_size(addr, end, pfn, max_page_shift, SZ_512K)) - return SZ_512K; - if (PAGE_SIZE == SZ_16K) - return SZ_16K; - if (arch_vmap_try_size(addr, end, pfn, max_page_shift, SZ_16K)) - return SZ_16K; - return PAGE_SIZE; -} -#define arch_vmap_pte_range_map_size arch_vmap_pte_range_map_size - -static inline int arch_vmap_pte_supported_shift(unsigned long size) -{ - if (size >= SZ_512K) - return 19; - else if (size >= SZ_16K) - return 14; - else - return PAGE_SHIFT; -} -#define arch_vmap_pte_supported_shift arch_vmap_pte_supported_shift - /* patch sites */ extern s32 patch__itlbmiss_exit_1, patch__dtlbmiss_exit_1; extern s32 patch__itlbmiss_perf, patch__dtlbmiss_perf; -- 2.32.0.402.g57bb445576-goog