From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) (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 1FE08390CBF for ; Tue, 21 Jul 2026 08:56:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.69 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784624214; cv=none; b=QVyQZMZsHzjiw+FoWv9tCM7AAT2qDklWb59rN7eB0dt9DuzJU6AdJuJ8aYEmt55aSq54RiBT+JL1VjydN8/3XY6fHE9PD1lXwSpHKn582THBgfj8mUraRQeVzEWaOQ6maluFHVY+V+72JoCIRO4klpEJ/mJMcbXfT2MSN04lw4M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784624214; c=relaxed/simple; bh=H5Jo2NE294YKi2+iOps1WJzux6a9VrlLZFbf4tPEIXM=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=jYBwxUUNazhV12w8MrJay2roqrbdUgaDmYUdDyvcWRXIz8l8nBOkxcUH7gZ1YP0sFs2T85C8lB43HE7STK9cdy5hmsggRZctf4NOo+kqLbSRxVaLTewzYY3/X4xTEI3LL8oEKIeEjq1Ft6luTVH1aEGTrI07ff06Q6b+r6QVVWQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--smostafa.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=iEJcicui; arc=none smtp.client-ip=209.85.221.69 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--smostafa.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="iEJcicui" Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-476d52b13d7so6902406f8f.0 for ; Tue, 21 Jul 2026 01:56:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1784624210; x=1785229010; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:mime-version:date:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Z76iw/uyYgGfytOiOZ22580VeGLYiQlgTYWmVZJjXYY=; b=iEJcicui4DzU19pZ3Uj+z0AOJcdbmXZiFlk14FHlFprCesEOo9NtRxMVc0Jjg5mLcv BGGRopIq1u7XBGUGZkYaFyD+0JLyzCrRxQj5JaAb/tBOgPQ/cmIVjMAdJkHS2bVNwSXc uIOSu7ZhkzRCQLTfIlN/hSk8tHD/s+MjE3ny++v4oaPcZofIvClMQBUIDqDsmtZNS+zW qG5nLXF1m5SYSBR0F5qXUjS1lgt79+LNY8AAVmTHNkg4cVCHk77vxOav70xFMADNOmRf Kt5DpNWdeOS6JquOBFA+X0DUlHq1X6Hq+fxQn07j5SPuVG4IOkzbvZZZJwSALjVqNUpU en2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784624210; x=1785229010; h=content-type:cc:to:from:subject:message-id:mime-version:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Z76iw/uyYgGfytOiOZ22580VeGLYiQlgTYWmVZJjXYY=; b=c5ym4WesIi7JTs465fBVNMkvUPuFsZHL5dcD8Uoe1H0fiwp8R/lT7uGO+3vZ/W/SpX 8+bAqf0w3sZBi6rPGlNzehXVVcO3DlQcoMJD2ZO+yiToWr+Gy7c/DhGLSOQZYPIKCcZl 3M/2r8lcn5B0zIBF0XGyhfaRM12XzxY2qElvi2jfFiHEfKXd4jsVD/xnkyc/2i0PFk5R GdD7ZIaMx1NYEOBM/B11avPg+9/MKtqOQgpqSOnodFYp5cvJocn6aKOsnP4LZcpMZdqy evQpeUoF+EzkGeSBEJjeemYWY2xghk8rN8Sm27iI1Zw+zpqego9Ux/k6oaDAzw5stG/k c8YA== X-Gm-Message-State: AOJu0YyknetJ/LznDkpMAOXjJDLncrWZSz5zaHqqxREKuucS/07POXfI GHwp4j0hOzjAdUqLAC28D/b0/VZWg7e46tUFCBQtoSTXJSRz75uMJCme0hH4xUrDOe4xLJnQ8Qg LEZjrzV6PLjQ7vNchelsMq75kR3o/2xqsDjSKZlrcwguVSjcPdE63KOYu2aQLAoL67qsB0aJXYp NzjLUlChep4NhDb6p7r9Y92dLrwQ1xMt/o6ya64ROYGhH/3LFTtm0HBM8= X-Received: from wrtr5.prod.google.com ([2002:a5d:4e45:0:b0:47f:40f3:b18a]) (user=smostafa job=prod-delivery.src-stubby-dispatcher) by 2002:a5d:5f51:0:b0:47b:5f25:7c59 with SMTP id ffacd0b85a97d-47f6231c5dcmr20981425f8f.38.1784624209952; Tue, 21 Jul 2026 01:56:49 -0700 (PDT) Date: Tue, 21 Jul 2026 08:56:45 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.55.0.229.g6434b31f56-goog Message-ID: <20260721085646.1660673-1-smostafa@google.com> Subject: [PATCH v2] KVM: arm64: Optimize protected mode and FWB From: Mostafa Saleh To: linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org Cc: maz@kernel.org, oupton@kernel.org, seiden@linux.ibm.com, joey.gouly@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, vdonnefort@google.com, tabba@google.com, sebastianene@google.com, keirf@google.com, Mostafa Saleh , Fuad Tabba Content-Type: text/plain; charset="UTF-8" KVM opportunistically enables FWB if supported by the system for guest VMs, which allows it to elude cache maintenance for data as they are forced to be cacheable from stage-2. In that case, __clean_dcache_guest_page() will immediately return. However in protected mode, before calling __clean_dcache_guest_page() it loops over the range and fix_map/unmap it, issuing TLB invalidations, dsb() and isb() unnecessarily. This can be optimized by returning early if FWB is supported, kvm_pgtable_stage2_map() already issues dsb() and tlb invalidation functions issue dsb() for the unmap path. Signed-off-by: Mostafa Saleh Reviewed-by: Fuad Tabba --- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index 4e329e39a695..049a09be2bbf 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -261,6 +261,13 @@ static void __apply_guest_page(void *va, size_t size, static void clean_dcache_guest_page(void *va, size_t size) { + /* + * Guest stage-2 uses FWB if available, making it safe to elide CMOs. + * In contrast, the host stage-2 never has FWB enabled. + */ + if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB)) + return; + __apply_guest_page(va, size, __clean_dcache_guest_page); } -- 2.55.0.229.g6434b31f56-goog