From mboxrd@z Thu Jan 1 00:00:00 1970 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 796BDCFC5EC for ; Thu, 10 Oct 2024 18:32:02 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4XPdWz5NTXz3cPW; Fri, 11 Oct 2024 05:27:11 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip="2607:f8b0:4864:20::54a" ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1728584831; cv=none; b=MhyfdbIxdhxKw7nbpbS9FlD5b46Bv7/jbg1wwAGqtvUgvXLc5V55pgKCBHLuyODUAngxAPKgl7l5gTujMUN7Z2PiXw314ReF9N7OK79jxmLZBVQ8Q5NJDGq8E/MnXLgWghSXfvOrQnBj3XZ3lerLgrkuPCa2ToSf5f77P+fmwo8iEewCp881WLXrAj/c7EfUY0Zvpsgqsj0dQ27iqHFQoIDEvIaFyo1e73bH0uXa6LhHPE0GTRXzX5MpDunMfQb/Gthd8fPD2YEY6lgX1f7VTgYazVmPYxlnBnibGsRLhR8nCIIbHb/HCu3YyX4PPmFfBNqvh/OtqA5ZZUwVclAsRg== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1728584831; c=relaxed/relaxed; bh=0kIT1cNFK/xt59MDB/Io88ATgyMybLemEwY+DfOgUM8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=JXcb6mNMzduYofbT0jI+biEINBF0nTCAtwHP1jqBq/WKJuqBvNnMtwO/wftXmH4Vk6RRk4MXnoqip4lt5ZUWiOAdQmusWXqgdQ38S97wsd9bvGV63BVw1uwb3UIKdAdkTaf9ZyRBQpNNatVenPS0wyDverUmUTJSpykQOnmTuWy4YxtdW7vdm84fAg+J/H2uww3vBHTRd86Yt7U1HQBl+FzTMHnynRmviY3+FxwufEHDftb/5HbwSLSLBqv6gTCNuPNnzzpawXOV7OPX+oLywO0pxpGWah9qx2hE9ly9nnDBj3IgZivwopWCn2mdIOhSK6VoClPV8jg4F2h3fZrx0A== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20230601 header.b=Te7tJ2LX; dkim-atps=neutral; spf=pass (client-ip=2607:f8b0:4864:20::54a; helo=mail-pg1-x54a.google.com; envelope-from=3frwizwykdbye0w95y2aa270.ya8749gjbby-z0h74efe.al7wxe.ad2@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20230601 header.b=Te7tJ2LX; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=flex--seanjc.bounces.google.com (client-ip=2607:f8b0:4864:20::54a; helo=mail-pg1-x54a.google.com; envelope-from=3frwizwykdbye0w95y2aa270.ya8749gjbby-z0h74efe.al7wxe.ad2@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) (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) by lists.ozlabs.org (Postfix) with ESMTPS id 4XPdWz0Xpxz3cRF for ; Fri, 11 Oct 2024 05:27:11 +1100 (AEDT) Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-6c8f99fef10so1638336a12.3 for ; Thu, 10 Oct 2024 11:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1728584829; x=1729189629; darn=lists.ozlabs.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=0kIT1cNFK/xt59MDB/Io88ATgyMybLemEwY+DfOgUM8=; b=Te7tJ2LXxSjlmRjRL1v65sOiEl1kMej4RNmsrwIp+Q5s3EXupuAUJBjSldbRo/1n2Q CNSGo1JsD5QPkUevwp2hRppFt19MuExzgQgCKe70afr3MB6O549QI/sIEbWgQKJztifM 3loKPXC1QavPeblGgSGQeAr92X1EjMV96IWcdVoYV3Pu96IedrnPjf0FOpoujuuarwWn ZbdRS8Qq6WyhRHOYIyZzS5smp2HkGJoP58Mg3IzNWj8b692E1zoDI40JFIhRIYZX9hkz iSDqxlejOgchDia5SeIhRsdM9XwN2PM7C0mYrYDSWsH0z4lmFnUSQeas4NLFSyGSAYdT Zr5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728584829; x=1729189629; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0kIT1cNFK/xt59MDB/Io88ATgyMybLemEwY+DfOgUM8=; b=cleBxR+NCNP1UBmoD2ll5pS5a1xk7+FqLS6fPuPd5HnkHHJmIcHAOQ9pQyFBsHZ8AM 1aWaGQ95eWuWkcKn1s1p7H9ZM04w1lhKuwXfWbmKylklKMVNIY1KScmLLthusgjcpeb+ dNraz4YU6YOrwps8FhRIyldOjLdSVClSi5uEzieBqLvmjzVrNTCK3ALJNrvKHG4w2NPA K8FInCGtv1cPeuMe9HApKaigd2CfX5TEaVD05v7bWa4emaIM1rsASRmerAC2Fnq9nX/T eIZn4wXGoPvqS2/n2wCFyOUaMXLwJbf0iGqTfEVNUkxKE3W2sg4HcQ/oeeTyHzDegOus G+xA== X-Forwarded-Encrypted: i=1; AJvYcCWyHyZpJckcqr+32tJjp9hdf1z2XaXzC7bCSI4PawrrzcjnUzlFguFogXJbsvRlROeJoDG9s9iqrODZvPM=@lists.ozlabs.org X-Gm-Message-State: AOJu0YwqyR5v85h55RS//nBUgvTcm/mt0PRUKbeJ5ZhNdjMvTc1yw9dk 4VGKV5JJ2S970IpbYFME0u7SKZ5kJMoa2xIrXp4IlyZw0wdAIKsBaTcMlw6wagkz0MeuYW3uTtn tSw== X-Google-Smtp-Source: AGHT+IEVjHGN/ZoxQo+Z413816spxD1Vig97FmVkGQ57WYZx6k/7CY2I8TFVs2SPVm+Oq4UkGx7TgXf3+Fw= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:9d:3983:ac13:c240]) (user=seanjc job=sendgmr) by 2002:a17:903:192:b0:20b:bd8d:427a with SMTP id d9443c01a7336-20c6377ab7bmr1062205ad.5.1728584829203; Thu, 10 Oct 2024 11:27:09 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 10 Oct 2024 11:24:07 -0700 In-Reply-To: <20241010182427.1434605-1-seanjc@google.com> X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Post: List-Subscribe: , , List-Unsubscribe: Mime-Version: 1.0 References: <20241010182427.1434605-1-seanjc@google.com> X-Mailer: git-send-email 2.47.0.rc1.288.g06298d1525-goog Message-ID: <20241010182427.1434605-66-seanjc@google.com> Subject: [PATCH v13 65/85] KVM: LoongArch: Mark "struct page" pfns dirty only in "slow" page fault path From: Sean Christopherson To: Paolo Bonzini , Marc Zyngier , Oliver Upton , Tianrui Zhao , Bibo Mao , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Sean Christopherson Cc: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, "=?UTF-8?q?Alex=20Benn=C3=A9e?=" , Yan Zhao , David Matlack , David Stevens , Andrew Jones Content-Type: text/plain; charset="UTF-8" Mark pages/folios dirty only the slow page fault path, i.e. only when mmu_lock is held and the operation is mmu_notifier-protected, as marking a page/folio dirty after it has been written back can make some filesystems unhappy (backing KVM guests will such filesystem files is uncommon, and the race is minuscule, hence the lack of complaints). See the link below for details. Link: https://lore.kernel.org/all/cover.1683044162.git.lstoakes@gmail.com Reviewed-by: Bibo Mao Signed-off-by: Sean Christopherson --- arch/loongarch/kvm/mmu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/arch/loongarch/kvm/mmu.c b/arch/loongarch/kvm/mmu.c index 28681dfb4b85..cc2a5f289b14 100644 --- a/arch/loongarch/kvm/mmu.c +++ b/arch/loongarch/kvm/mmu.c @@ -608,13 +608,13 @@ static int kvm_map_page_fast(struct kvm_vcpu *vcpu, unsigned long gpa, bool writ if (kvm_pte_young(changed)) kvm_set_pfn_accessed(pfn); - if (kvm_pte_dirty(changed)) { - mark_page_dirty(kvm, gfn); - kvm_set_pfn_dirty(pfn); - } if (page) put_page(page); } + + if (kvm_pte_dirty(changed)) + mark_page_dirty(kvm, gfn); + return ret; out: spin_unlock(&kvm->mmu_lock); @@ -915,12 +915,14 @@ static int kvm_map_page(struct kvm_vcpu *vcpu, unsigned long gpa, bool write) else ++kvm->stat.pages; kvm_set_pte(ptep, new_pte); - spin_unlock(&kvm->mmu_lock); - if (prot_bits & _PAGE_DIRTY) { - mark_page_dirty_in_slot(kvm, memslot, gfn); + if (writeable) kvm_set_pfn_dirty(pfn); - } + + spin_unlock(&kvm->mmu_lock); + + if (prot_bits & _PAGE_DIRTY) + mark_page_dirty_in_slot(kvm, memslot, gfn); kvm_release_pfn_clean(pfn); out: -- 2.47.0.rc1.288.g06298d1525-goog