From patchwork Wed Mar 6 00:50:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krister Johansen X-Patchwork-Id: 1908496 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TqDQ26wTXz1yX4 for ; Wed, 6 Mar 2024 11:51:06 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhfUj-0003uq-Se; Wed, 06 Mar 2024 00:50:54 +0000 Received: from buffalo.pear.relay.mailchannels.net ([23.83.216.24]) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhfUZ-0003r5-TL for kernel-team@lists.ubuntu.com; Wed, 06 Mar 2024 00:50:44 +0000 X-Sender-Id: dreamhost|x-authsender|kjlx@templeofstupid.com Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 1F86082254 for ; Wed, 6 Mar 2024 00:50:41 +0000 (UTC) Received: from pdx1-sub0-mail-a210.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 4EDFC80900 for ; Wed, 6 Mar 2024 00:50:40 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1709686240; a=rsa-sha256; cv=none; b=YJ1O1CvKKIhWiw3s1od+sU7k8kohfAXL5/6adKQBXlOopUZTb10LJkE+gSrxYtDQ90oJ9n IBk68VWzuW8Nf4V7GupxqfcZ3UQ47LNxyK3zGVFNslwbcd66ofKxafCbYLcoErpj63bEou db5T8y/MbTRFGRZBx6k5SFHS1JIxZmug4ShymJUI9DNofi5Z1pxxwPS9iNVgO562JbO8wl CHRvY6db6ZWrGwyMf8n3H3m1p4SKwF/AjnelrrpF7JolxH/xlBuWAqcURr2vWuTWX3+/nT L+/cYa3kSBj3QISQnPcTUSlyhRy/ydxLaj9goz2ppGJRbk73Tin5NBH0qyMlBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1709686240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:dkim-signature; bh=b9PDxuEw0v6kwct9+h44GACXQ4O73HeIyNcEQqZn5AU=; b=5dtrPOjcE7pUov4Pn/ILTzdOIKGCScgWJvWMQLlM1P1RfgGmy5rQv1HLt7SfIgpqcPFojh 5iHn6SC7yAqdoWPRgJRQIK2F/3g9Cn+fQ2Ye6rRKuEbGsCA5EIBzBtIYH7YBtMvyFGiugy BuRJXYnZGupCbuQqEketl3pgkBTydPHI4gIZ3+lqR5U7JTkS75LtTu8kss75UuuwUXwM7R R+aMsXycp8gcSz/CRfsqy3yYKLQqi9Pn5dVFyCV+vsGMRqdesPFUrPQe1hcqqFnDLumk+v LA+8ybmqiFfECLubC8HMj15Wc8v6Ey8zLTAjNQXWPGyx1JrL/LxUcTqz1tmd1A== ARC-Authentication-Results: i=1; rspamd-7f9dd9fb96-nfzbq; auth=pass smtp.auth=dreamhost smtp.mailfrom=kjlx@templeofstupid.com X-Sender-Id: dreamhost|x-authsender|kjlx@templeofstupid.com X-MC-Relay: Good X-MailChannels-SenderId: dreamhost|x-authsender|kjlx@templeofstupid.com X-MailChannels-Auth-Id: dreamhost X-Imminent-Desert: 54fd05913760db26_1709686240703_3364561649 X-MC-Loop-Signature: 1709686240703:2481507800 X-MC-Ingress-Time: 1709686240702 Received: from pdx1-sub0-mail-a210.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.104.192.87 (trex/6.9.2); Wed, 06 Mar 2024 00:50:40 +0000 Received: from kmjvbox.templeofstupid.com (c-73-222-159-162.hsd1.ca.comcast.net [73.222.159.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kjlx@templeofstupid.com) by pdx1-sub0-mail-a210.dreamhost.com (Postfix) with ESMTPSA id 4TqDPX0ffCzBC for ; Tue, 5 Mar 2024 16:50:40 -0800 (PST) Received: from johansen (uid 1000) (envelope-from kjlx@templeofstupid.com) id e0082 by kmjvbox.templeofstupid.com (DragonFly Mail Agent v0.12); Tue, 05 Mar 2024 16:50:31 -0800 Date: Tue, 5 Mar 2024 16:50:31 -0800 From: Krister Johansen To: kernel-team@lists.ubuntu.com Subject: [SRU][J][PATCH v2 1/2] KVM: arm64: Work out supported block level at compile time Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=23.83.216.24; envelope-from=kjlx@templeofstupid.com; helo=buffalo.pear.relay.mailchannels.net X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Oliver Upton BugLink: https://bugs.launchpad.net/bugs/2056227 Work out the minimum page table level where KVM supports block mappings at compile time. While at it, rewrite the comment around supported block mappings to directly describe what KVM supports instead of phrasing in terms of what it does not. Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20221007234151.461779-2-oliver.upton@linux.dev (cherry picked from commit 3b5c082bbfa20d9a57924edd655bbe63fe98ab06) Signed-off-by: Krister Johansen --- arch/arm64/include/asm/kvm_pgtable.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h index 027783829584..87e782eec925 100644 --- a/arch/arm64/include/asm/kvm_pgtable.h +++ b/arch/arm64/include/asm/kvm_pgtable.h @@ -13,6 +13,18 @@ #define KVM_PGTABLE_MAX_LEVELS 4U +/* + * The largest supported block sizes for KVM (no 52-bit PA support): + * - 4K (level 1): 1GB + * - 16K (level 2): 32MB + * - 64K (level 2): 512MB + */ +#ifdef CONFIG_ARM64_4K_PAGES +#define KVM_PGTABLE_MIN_BLOCK_LEVEL 1U +#else +#define KVM_PGTABLE_MIN_BLOCK_LEVEL 2U +#endif + static inline u64 kvm_get_parange(u64 mmfr0) { u64 parange = cpuid_feature_extract_unsigned_field(mmfr0, @@ -58,11 +70,7 @@ static inline u64 kvm_granule_size(u32 level) static inline bool kvm_level_supports_block_mapping(u32 level) { - /* - * Reject invalid block mappings and don't bother with 4TB mappings for - * 52-bit PAs. - */ - return !(level == 0 || (PAGE_SIZE != SZ_4K && level == 1)); + return level >= KVM_PGTABLE_MIN_BLOCK_LEVEL; } /**