From nobody Fri Dec 19 04:53:09 2025 Received: from mail-ed1-f74.google.com (mail-ed1-f74.google.com [209.85.208.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05AF81F4E52 for ; Wed, 18 Dec 2024 19:41:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734550868; cv=none; b=XvO2IxLtM8oDnSsZcbbj7mVYJmieEBpDfbpx2EtBpIsI1awwVAzxgkx7ntxzk/jLSME8vZpvrHonOT636FkUfDCw2k6M/HyZvWgN7PUh7ZG9cAXJYCkDEQ8EuZGhI4DRh0kF+BBG9WF2BpFlX7z62RknLmQlA2tDc6nk68hP9UY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734550868; c=relaxed/simple; bh=Kg88ZLOSt5DEJULJvuUpLuYaHJObdPA+yjSMbyikhzU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=JwDzqDGrMEAfgvlOlO9xXVWhIqjQz8Hzti0z7eMkdEaRSDBjvGl81mReWAqnFoOZAfrBjIGTzOp4bQ2N4WBDBb011KscXehizG6QYDEItyLqHoZy0jvEQu2pqNc/8ZdFl0Bdm/SdVf5O9FU4Vp4tsup9z+zv64o1PI61knpuNO0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--qperret.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=1mTygjx3; arc=none smtp.client-ip=209.85.208.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--qperret.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="1mTygjx3" Received: by mail-ed1-f74.google.com with SMTP id 4fb4d7f45d1cf-5d3ff30b566so6976467a12.1 for ; Wed, 18 Dec 2024 11:41:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1734550864; x=1735155664; darn=vger.kernel.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=nRdmYoUKXOUG+sswfkSeT6n5jAc9VmmCt4ArLqZWt3Y=; b=1mTygjx3mGa2itmZndMU7eSib9hf2/l0JtXRN7VrGpWu+ubAWZZawGxtOUPN3aZf0m a0xqScNVTRC1qmRhH+9If6egKDmNNQx6d9yDK0hYezm+xka8s0tPRgAj8l0U5YRoT8fZ magHQBF9bbzJIE6H9pyekIF/JpxA6x56zTmxugfY9Cgk2MLZanGkzGSZzOi+fZNbWS5K 8ZwDwa1hF8jqtfBlltouJzxQZ63dOwXbVBRS6+ns77DVnE4EwqETPlErNF5uxeWoDjVV Mrrtwv/LhIjbdfMH+d234X9E0weXc9mKQPLwchKK72+VXcNu+EbYpg9Y42yDPHDIxBxn vDZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734550864; x=1735155664; 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=nRdmYoUKXOUG+sswfkSeT6n5jAc9VmmCt4ArLqZWt3Y=; b=hMN4KXucWUGvlRNwfNi+KGdRmcyMdauB/UCCvMZgeEta78e2sCzf77prvn1aax8Fpj azyFO0r7FlEedcYSPDr6fI6Pm/m6y/hei/XuLE/APzvpaEQvyCIuI5xJhTdyRVK8Zn/e c6lx48DMBrWAasWqAEluRi0g1H87TgoLGUlP4w8zO8TezQXyiyLEeH2lglIJdAVmLqF8 Oe2iQYw8UHKDT/rS7s4lTCNfL1l/TdIg9Y77/Wc8+5QXkQHzB+GLqionC9ioPe6MBaD5 8gg8ingyFWTjb/Ec1rxlZEeAC2e0XXJak3Okly7VKLqMLq7m9Ki3PGukXuqz4HO6007G zOtQ== X-Forwarded-Encrypted: i=1; AJvYcCXf+zYB3C0G1YKaaaixCcx5PMdFZFw3pOCJ/m2lIgih5Y4IpUxU9ZREOkQQYa18Q1EzV/vEA7f4O5w3+5M=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe6GnspggVnPU8Yw6FoZVcbXxZ3AtmCYSx+1LQbeAr0cflUH/F JkVYBQIpCxApwhwEHo5aF6LfNVNpt/XSnuN7DQkp0cmYDk+Rn7yUe7guJhD+PRQA+wkWUDfa8Mb leGyz+Q== X-Google-Smtp-Source: AGHT+IHvQzDESjuWp5L1AoEov+naUf7YhDv2p3IzRK4XOlwykk+DiFMJtRC57ZjwupiXLJO6FV3a8dSL7apE X-Received: from edbfj18.prod.google.com ([2002:a05:6402:2b92:b0:5d4:34da:32db]) (user=qperret job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6402:528a:b0:5cf:e218:984f with SMTP id 4fb4d7f45d1cf-5d7ee3ff473mr4159198a12.27.1734550864372; Wed, 18 Dec 2024 11:41:04 -0800 (PST) Date: Wed, 18 Dec 2024 19:40:42 +0000 In-Reply-To: <20241218194059.3670226-1-qperret@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241218194059.3670226-1-qperret@google.com> X-Mailer: git-send-email 2.47.1.613.gc27f4b7a9f-goog Message-ID: <20241218194059.3670226-2-qperret@google.com> Subject: [PATCH v4 01/18] KVM: arm64: Change the layout of enum pkvm_page_state From: Quentin Perret To: Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon Cc: Fuad Tabba , Vincent Donnefort , Sebastian Ene , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The 'concrete' (a.k.a non-meta) page states are currently encoded using software bits in PTEs. For performance reasons, the abstract pkvm_page_state enum uses the same bits to encode these states as that makes conversions from and to PTEs easy. In order to prepare the ground for moving the 'concrete' state storage to the hyp vmemmap, re-arrange the enum to use bits 0 and 1 for this purpose. No functional changes intended. Tested-by: Fuad Tabba Reviewed-by: Fuad Tabba Signed-off-by: Quentin Perret --- arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h b/arch/arm64/kvm= /hyp/include/nvhe/mem_protect.h index 0972faccc2af..5462faf6bfee 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h +++ b/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h @@ -24,25 +24,27 @@ */ enum pkvm_page_state { PKVM_PAGE_OWNED =3D 0ULL, - PKVM_PAGE_SHARED_OWNED =3D KVM_PGTABLE_PROT_SW0, - PKVM_PAGE_SHARED_BORROWED =3D KVM_PGTABLE_PROT_SW1, - __PKVM_PAGE_RESERVED =3D KVM_PGTABLE_PROT_SW0 | - KVM_PGTABLE_PROT_SW1, + PKVM_PAGE_SHARED_OWNED =3D BIT(0), + PKVM_PAGE_SHARED_BORROWED =3D BIT(1), + __PKVM_PAGE_RESERVED =3D BIT(0) | BIT(1), =20 /* Meta-states which aren't encoded directly in the PTE's SW bits */ - PKVM_NOPAGE, + PKVM_NOPAGE =3D BIT(2), }; +#define PKVM_PAGE_META_STATES_MASK (~__PKVM_PAGE_RESERVED) =20 #define PKVM_PAGE_STATE_PROT_MASK (KVM_PGTABLE_PROT_SW0 | KVM_PGTABLE_PROT= _SW1) static inline enum kvm_pgtable_prot pkvm_mkstate(enum kvm_pgtable_prot pro= t, enum pkvm_page_state state) { - return (prot & ~PKVM_PAGE_STATE_PROT_MASK) | state; + prot &=3D ~PKVM_PAGE_STATE_PROT_MASK; + prot |=3D FIELD_PREP(PKVM_PAGE_STATE_PROT_MASK, state); + return prot; } =20 static inline enum pkvm_page_state pkvm_getstate(enum kvm_pgtable_prot pro= t) { - return prot & PKVM_PAGE_STATE_PROT_MASK; + return FIELD_GET(PKVM_PAGE_STATE_PROT_MASK, prot); } =20 struct host_mmu { --=20 2.47.1.613.gc27f4b7a9f-goog