From nobody Wed Dec 17 15:52:36 2025 Received: from out-181.mta1.migadu.com (out-181.mta1.migadu.com [95.215.58.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5717B2FCC17 for ; Tue, 21 Oct 2025 07:49:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761032946; cv=none; b=exkmk1ZNH326KCySUBtVdzZ2CNh87q3fo46a6/u0gQXgtoMAwEr7d4nGQygLhEl0En45cqAuR/UTji0cOkcdjZAItJdo5U9wxyumRFgxCcB/UUnYnZm/UkyFGzrvt2X0ATM7qxn8SWWu3DzfgGBKNu5ZmwhDaSIxBTsWA1mEU1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761032946; c=relaxed/simple; bh=mimdIqws80HVOxm1yhhjm6Tqchksppfs/5CQtKjZHfU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y7xZEO20TOR+MAW2pp9DXaoFQXwJiRe9uG9fBTZZ3mbe78fXjiH3uJQXIrIlzvzNOJA0szSblY9Xo41Mp3SlEG/s740ysp7s1DoSVCVd8TRdhqwe1yDT3YHrUY+svaNwzjlI1SI57cKxIRsGkxAB29b3o3Nww4wOdcg2wncQwKE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=xw8zX8XW; arc=none smtp.client-ip=95.215.58.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="xw8zX8XW" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761032943; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VWFxHvuiWBriikDXhyh4DbqYsyF3B7/uazdqjEeTciM=; b=xw8zX8XWnCvg/+H+ajgh04dOBKzFTNGN2r2FVXLaYgqrAuF7PkWi1T0UimFIhGlBxnaYJl C62c7t48pgCtJDtnpo9QPOyeXnWu/zgEvGH++X0g8eBnK/UueXZIuhcs7380lrVF9hvgsg FV8Oisoa6bEhWcIKSWrNofNBkVjjIlc= From: Yosry Ahmed To: Sean Christopherson Cc: Paolo Bonzini , Jim Mattson , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed Subject: [PATCH v2 22/23] KVM: selftests: Set the user bit on nested MMU PTEs Date: Tue, 21 Oct 2025 07:47:35 +0000 Message-ID: <20251021074736.1324328-23-yosry.ahmed@linux.dev> In-Reply-To: <20251021074736.1324328-1-yosry.ahmed@linux.dev> References: <20251021074736.1324328-1-yosry.ahmed@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" Similar to KVM's shadow MMU (in most cases), set the user bit on nested PTEs. This is in preparation for supporting NPT mappings, which require the user bit to be set. This should be nop for VMX. Signed-off-by: Yosry Ahmed --- tools/testing/selftests/kvm/lib/x86/processor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testin= g/selftests/kvm/lib/x86/processor.c index 958389ec1722d..c2912b0a49e90 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -211,7 +211,7 @@ static uint64_t *virt_create_upper_pte(struct kvm_vm *v= m, paddr =3D vm_untag_gpa(vm, paddr); =20 if (!(*pte & masks->present)) { - *pte =3D masks->present | masks->writeable | masks->x; + *pte =3D masks->present | masks->writeable | masks->x | masks->user; if (current_level =3D=3D target_level) *pte |=3D masks->large | (paddr & PHYSICAL_PAGE_MASK); else @@ -276,7 +276,7 @@ void __virt_pg_map(struct kvm_vm *vm, vm_paddr_t root_g= pa, uint64_t vaddr, pte =3D virt_get_pte(vm, root_gpa, pte, vaddr, PG_LEVEL_4K, masks); TEST_ASSERT(!(*pte & masks->present), "PTE already present for 4k page at vaddr: 0x%lx", vaddr); - *pte =3D masks->present | masks->writeable | masks->x + *pte =3D masks->present | masks->writeable | masks->x | masks->user | (paddr & PHYSICAL_PAGE_MASK); =20 /* --=20 2.51.0.869.ge66316f041-goog