From patchwork Wed Dec 13 08:40:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13490552 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D2BA6C4332F for ; Wed, 13 Dec 2023 08:41:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=SXcLtZ0OgTxj8B8lebxRnyaF8Pi1q7NayBF+qRpeNzo=; b=3NHbhf+0zZ8KV0JMZWc7vQakVy G6IeDcCEu5SlB8mYBY77dCKVlu4j2ykMqjNNP3G6XS/okO8KU0vj4sYFMfHcG1YwHwJBySoikZwh2 ostE+pzNliXfzfIvhGL2xhdwW0QtBDyzNuqOtaAwlqoRDh7SNdR/yM3xtu0ZoYMdufIyr8/mEa9Kx RO0h6hIYpFPyG6DNeKOnttswAIPEGxRTBS9kQzxGJ1ybMPwGoyryubFbWi7UEAVoF0Rofgh4dAiys LE0D3n1Hp8Thl5uZoyPU21orfEU9U+i/9umtcFIkNzwLFnqM8H4GuNvfZOz4UmfmLZb3Y3w20sMME QOYkeumw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rDKne-00E3Lu-1Z; Wed, 13 Dec 2023 08:41:02 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rDKnW-00E3In-11 for linux-arm-kernel@lists.infradead.org; Wed, 13 Dec 2023 08:40:55 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5d12853cb89so75288727b3.3 for ; Wed, 13 Dec 2023 00:40:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702456853; x=1703061653; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=SyyAeMosOrBSkbl1SQsOUBScLakw7in0tEhwFQt6I28=; b=OQ95MfTEzq2+fbMldl1BbIEdw0F6cmV1XXtUdk+umJp1idJ7MoHbVOSjGgYiWkwgHW q8ibcL2rUVvKx1i5ZtUe4Qlr5dCQXoPUAfkS52t78WHM8VVC0stVyTq/ueAwJjw9vV0N kH/ijYYqezuuz6S5oL4Bs9qm5QR0N46Nw/tZZV4PycD5GaFg9pTsLc9cgTuVWjZ+WYSO k3fv6P+7jgHt5VB5ZoclRXE5Aad9BINWlVbYDYprhsEzUNEzQnorqY1iVQWLLkHEn+n2 2dJ6Z4ssbAWQS109tvLCTvUeMwtXtsKGsNJBqp85SNEyB8YNDmQW9Qk0VVMZFMRXHtMV ZBtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702456853; x=1703061653; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SyyAeMosOrBSkbl1SQsOUBScLakw7in0tEhwFQt6I28=; b=nbcrnq0cL4OqzMnvMSBsczLJDXQKE/BD+m2vRRbkkjyWkgGanTocsF722vhFqfJC04 wTZMY0nSYIXczvCFa71X76rP0M8MoYTnrTfyr8muYY4cWYfJBvK3FEqs/spdiOxycPHN Cqjh9IS7k+ia2oj/j7XSRhtCgjDlRskQWyNF/yvJqHXY2oO0F2UDtlWntW1QfY9yYZqx 6w/rDrwGnUFlTdGhgKbb20OdS+Hu4deqRbiESrd21tCTHpvZoXhN+9MVa0BOylXqLenN qC54S2lRxItiOsVXUqXW4UNGbx9ae8eo3T+rZHGu4VHVVhgId3ZM5ov6vL1ujTkTcbk/ iKGA== X-Gm-Message-State: AOJu0Yyv4BAtpb+OpzI/vaQgHb+D7V43xbi7KfVAb9iMZrG7YcdHRpdo K3crafabmCgtvtJgD29f1Ow6FJ/FCgUFSjRektZvMjKqxkiP/p9EuzpIiZBUSNXFgjsTIAuPoyw jWcJ8n5Q0bM4RaKai6mkoipaQVl+GNhwcsQs/cZjRhHNE4An3u65PSQEaagA8xvjHTFPV7yWV/+ E= X-Google-Smtp-Source: AGHT+IH1nZ91uvYxypIv/QE1OKKsPyeXRwla1LpNu60BTzPWP12TOJtGt8foTnbQIjE6e0FAXR6sFRWm X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6902:4d0:b0:dbc:b226:bd23 with SMTP id v16-20020a05690204d000b00dbcb226bd23mr27602ybs.0.1702456852591; Wed, 13 Dec 2023 00:40:52 -0800 (PST) Date: Wed, 13 Dec 2023 09:40:31 +0100 In-Reply-To: <20231213084024.2367360-9-ardb@google.com> Mime-Version: 1.0 References: <20231213084024.2367360-9-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1790; i=ardb@kernel.org; h=from:subject; bh=EprKnS4h+kj2zZNqC12tc0oCTHrUD5uJVzU1RyQ/vR4=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIbUy99+ev10cMxVW1X6YwG+s5TKnr/4F14vts86rL0+5b iX082FlRykLgxgHg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZjI2k+MDHdljKorPscttZ4q w2F+8MJFlfh74SqX2Tjz3m7k4ur2c2f47/hOIz/TSt9gz93Vau8yt21/+vNQ3oEn9881aH7Wn3J AiQkA X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20231213084024.2367360-15-ardb@google.com> Subject: [PATCH v7 6/7] arm64: mm: Reclaim unused vmemmap region for vmalloc use From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231213_004054_356711_3B840894 X-CRM114-Status: GOOD ( 14.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel The vmemmap array is statically sized based on the maximum supported size of the virtual address space, but it is located inside the upper VA region, which is statically sized based on the *minimum* supported size of the VA space. This doesn't matter much when using 64k pages, which is the only configuration that currently supports 52-bit virtual addressing. However, upcoming LPA2 support will change this picture somewhat, as in that case, the vmemmap array will take up more than 25% of the upper VA region when using 4k pages. Given that most of this space is never used when running on a system that does not support 52-bit virtual addressing, let's reclaim the unused vmemmap area in that case. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/pgtable.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 8d30e2787b1f..5b5bedfa320e 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -18,11 +18,15 @@ * VMALLOC range. * * VMALLOC_START: beginning of the kernel vmalloc space - * VMALLOC_END: extends to the available space below vmemmap, PCI I/O space - * and fixed mappings + * VMALLOC_END: extends to the available space below vmemmap */ #define VMALLOC_START (MODULES_END) +#if VA_BITS == VA_BITS_MIN #define VMALLOC_END (VMEMMAP_START - SZ_8M) +#else +#define VMEMMAP_UNUSED_NPAGES ((_PAGE_OFFSET(vabits_actual) - PAGE_OFFSET) >> PAGE_SHIFT) +#define VMALLOC_END (VMEMMAP_START + VMEMMAP_UNUSED_NPAGES * sizeof(struct page) - SZ_8M) +#endif #define vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT))