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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 29C86C71136 for ; Sat, 14 Jun 2025 00:09:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=loXFTGYYp6Os2wIqvVMB22OgZU+0z5bAizLaDblmr2g=; b=EQACY48UZOPC4R 9mMQXKHGNou6OL6wlYFvIWfIg14Qvlz5IuFjqDaS234pqV0xsRRw7hGIfTgYiCrGnsGeuy8vdbubV cdn1P3fyUpUij6HW9Un/DpQZEiJ8KeZXtm/C8WChNKIyNyOdCArmkb8mP7Wr+3DyRQbyWgkzTFAVK qH9IaePDgoO7V2fhgRVKQp6GYq8wv1vTyjzKO3soEXZU+IYsjaxTbbXMCsAvPhgfZqViObmogEEL9 nf2oH4gcJsX+WX6bKyZpPlV7wvA3VlcJ0JrLqt5QFIqwR8jvuRsNz3bR6Sgw/uC+WDR2cXB4unK5e 6dLuqbsioBfd7fYy9/Sg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQET7-00000000NIE-1g9A; Sat, 14 Jun 2025 00:09:57 +0000 Received: from out-171.mta1.migadu.com ([95.215.58.171]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQET4-00000000NGF-28sy for kvm-riscv@lists.infradead.org; Sat, 14 Jun 2025 00:09:56 +0000 Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1749859791; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LbpWLSH9rDDdqtA+Sb9xpkQ5UT+CvuC/hhHqruiikz4=; b=iL4gr6Z6lF+iNm3fi26JoZLJFoc51ULHyABpXVyoijOfZz5KZi5RvdedlJOiSyWyBNto0k cZ5LhikgZo3Yh66mubHMhwvPMZ9vf+ma1BrWnpHakAcBojLoUOJ/FeXDOSyvtql2QXdnic whKaXzo2UigzOFa+B20N92/yuKviUes= Date: Fri, 13 Jun 2025 17:09:41 -0700 MIME-Version: 1.0 Subject: Re: [PATCH v2 05/12] RISC-V: KVM: Don't flush TLB when PTE is unchanged To: Anup Patel Cc: Palmer Dabbelt , Paul Walmsley , Alexandre Ghiti , Andrew Jones , Anup Patel , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org References: <20250613065743.737102-1-apatel@ventanamicro.com> <20250613065743.737102-6-apatel@ventanamicro.com> Content-Language: en-US X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Atish Patra In-Reply-To: <20250613065743.737102-6-apatel@ventanamicro.com> X-Migadu-Flow: FLOW_OUT X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250613_170954_994528_2C5F1242 X-CRM114-Status: GOOD ( 14.21 ) X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+kvm-riscv=archiver.kernel.org@lists.infradead.org On 6/12/25 11:57 PM, Anup Patel wrote: > The gstage_set_pte() and gstage_op_pte() should flush TLB only when > a leaf PTE changes so that unnecessary TLB flushes can be avoided. > > Signed-off-by: Anup Patel > --- > arch/riscv/kvm/mmu.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c > index 1087ea74567b..29f1bd853a66 100644 > --- a/arch/riscv/kvm/mmu.c > +++ b/arch/riscv/kvm/mmu.c > @@ -167,9 +167,11 @@ static int gstage_set_pte(struct kvm *kvm, u32 level, > ptep = &next_ptep[gstage_pte_index(addr, current_level)]; > } > > - set_pte(ptep, *new_pte); > - if (gstage_pte_leaf(ptep)) > - gstage_remote_tlb_flush(kvm, current_level, addr); > + if (pte_val(*ptep) != pte_val(*new_pte)) { > + set_pte(ptep, *new_pte); > + if (gstage_pte_leaf(ptep)) > + gstage_remote_tlb_flush(kvm, current_level, addr); > + } > > return 0; > } > @@ -229,7 +231,7 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > pte_t *ptep, u32 ptep_level, enum gstage_op op) > { > int i, ret; > - pte_t *next_ptep; > + pte_t old_pte, *next_ptep; > u32 next_ptep_level; > unsigned long next_page_size, page_size; > > @@ -258,11 +260,13 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > if (op == GSTAGE_OP_CLEAR) > put_page(virt_to_page(next_ptep)); > } else { > + old_pte = *ptep; > if (op == GSTAGE_OP_CLEAR) > set_pte(ptep, __pte(0)); > else if (op == GSTAGE_OP_WP) > set_pte(ptep, __pte(pte_val(ptep_get(ptep)) & ~_PAGE_WRITE)); > - gstage_remote_tlb_flush(kvm, ptep_level, addr); > + if (pte_val(*ptep) != pte_val(old_pte)) > + gstage_remote_tlb_flush(kvm, ptep_level, addr); > } > } > Reviewed-by: Atish Patra -- kvm-riscv mailing list kvm-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kvm-riscv From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-183.mta1.migadu.com (out-183.mta1.migadu.com [95.215.58.183]) (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 3FAC64A24 for ; Sat, 14 Jun 2025 00:10:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.183 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749859807; cv=none; b=jTvPLzMfH+0kFJNg/KUPyg9NAsGcVVUOte7Pd9AJBvCAqK0gaXeiB8FxnRdgvao5ZmZpEZTS/0N4apGf+1AYRP5tIAVu5QvbPqvHReu9cKxpI6aRiPvpaebYrDqxI0fQMt1/A6sG5AUw19J0qTYyoHjO6Cx1qa71FUk8fWsRbp4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749859807; c=relaxed/simple; bh=7lSStw4IyBObwGIg2QyFJG+tkhOCRsvLVl4qYXr6szc=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=cjdhiK9KdaQQj2mu49uyzeNDYX49TP2xBqfHRsXpFX2cMOEhbMTd27mZDBk0BXsb9GKi2L3/YfREskUSteTa3QAhlJIXzM8Zt93rlhlkfgADIOJtSwjrvTYzt4lAXarIzTqLYEe2BOdDH5/T2bcC2tjl2LXqOur89EK7RCibEdY= 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=iL4gr6Z6; arc=none smtp.client-ip=95.215.58.183 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="iL4gr6Z6" Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1749859791; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LbpWLSH9rDDdqtA+Sb9xpkQ5UT+CvuC/hhHqruiikz4=; b=iL4gr6Z6lF+iNm3fi26JoZLJFoc51ULHyABpXVyoijOfZz5KZi5RvdedlJOiSyWyBNto0k cZ5LhikgZo3Yh66mubHMhwvPMZ9vf+ma1BrWnpHakAcBojLoUOJ/FeXDOSyvtql2QXdnic whKaXzo2UigzOFa+B20N92/yuKviUes= Date: Fri, 13 Jun 2025 17:09:41 -0700 Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH v2 05/12] RISC-V: KVM: Don't flush TLB when PTE is unchanged To: Anup Patel Cc: Palmer Dabbelt , Paul Walmsley , Alexandre Ghiti , Andrew Jones , Anup Patel , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org References: <20250613065743.737102-1-apatel@ventanamicro.com> <20250613065743.737102-6-apatel@ventanamicro.com> Content-Language: en-US X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Atish Patra In-Reply-To: <20250613065743.737102-6-apatel@ventanamicro.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT On 6/12/25 11:57 PM, Anup Patel wrote: > The gstage_set_pte() and gstage_op_pte() should flush TLB only when > a leaf PTE changes so that unnecessary TLB flushes can be avoided. > > Signed-off-by: Anup Patel > --- > arch/riscv/kvm/mmu.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c > index 1087ea74567b..29f1bd853a66 100644 > --- a/arch/riscv/kvm/mmu.c > +++ b/arch/riscv/kvm/mmu.c > @@ -167,9 +167,11 @@ static int gstage_set_pte(struct kvm *kvm, u32 level, > ptep = &next_ptep[gstage_pte_index(addr, current_level)]; > } > > - set_pte(ptep, *new_pte); > - if (gstage_pte_leaf(ptep)) > - gstage_remote_tlb_flush(kvm, current_level, addr); > + if (pte_val(*ptep) != pte_val(*new_pte)) { > + set_pte(ptep, *new_pte); > + if (gstage_pte_leaf(ptep)) > + gstage_remote_tlb_flush(kvm, current_level, addr); > + } > > return 0; > } > @@ -229,7 +231,7 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > pte_t *ptep, u32 ptep_level, enum gstage_op op) > { > int i, ret; > - pte_t *next_ptep; > + pte_t old_pte, *next_ptep; > u32 next_ptep_level; > unsigned long next_page_size, page_size; > > @@ -258,11 +260,13 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > if (op == GSTAGE_OP_CLEAR) > put_page(virt_to_page(next_ptep)); > } else { > + old_pte = *ptep; > if (op == GSTAGE_OP_CLEAR) > set_pte(ptep, __pte(0)); > else if (op == GSTAGE_OP_WP) > set_pte(ptep, __pte(pte_val(ptep_get(ptep)) & ~_PAGE_WRITE)); > - gstage_remote_tlb_flush(kvm, ptep_level, addr); > + if (pte_val(*ptep) != pte_val(old_pte)) > + gstage_remote_tlb_flush(kvm, ptep_level, addr); > } > } > Reviewed-by: Atish Patra 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 C3DB0C71135 for ; Sat, 14 Jun 2025 00:10:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7BPM/1tFR1WYdejsiuZ64C4eaefpwxlLgYuBI0nHOho=; b=aSHmyWXlS5HMmr WLZZK10KXLMcC1yLzN0O1dgJ2ow0j0upDR3FUISHjKywueEQWAuPomYEP8D/p/SvvtPZ19C6QlFS3 11UdWxlp/ivYXTymcT3KxfDTtuLlVoGH+sEKFfkJ66/kSYn4k+T4ZbB/eMpqBKUlfHgc3+7gwo0Mi PBBcIGCkafBu8iRmW1Vrcu1IcCLaz52N9NYVaBSNC9d4GuFqzUSZMI/VfkcJQGvuPnm+4U47ZTgFh KbG4bC8mO+CSZ4LBE+2BURWUuToxoGYSccf822VRLz8dqgtPoMkr1gayggYbjFkSGFWQBamL3v0xg 8JCvJyNlpq0As0mpqdNw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQETF-00000000NKm-30tz; Sat, 14 Jun 2025 00:10:05 +0000 Received: from out-182.mta1.migadu.com ([95.215.58.182]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQETD-00000000NJF-0fjx for linux-riscv@lists.infradead.org; Sat, 14 Jun 2025 00:10:04 +0000 Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1749859791; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LbpWLSH9rDDdqtA+Sb9xpkQ5UT+CvuC/hhHqruiikz4=; b=iL4gr6Z6lF+iNm3fi26JoZLJFoc51ULHyABpXVyoijOfZz5KZi5RvdedlJOiSyWyBNto0k cZ5LhikgZo3Yh66mubHMhwvPMZ9vf+ma1BrWnpHakAcBojLoUOJ/FeXDOSyvtql2QXdnic whKaXzo2UigzOFa+B20N92/yuKviUes= Date: Fri, 13 Jun 2025 17:09:41 -0700 MIME-Version: 1.0 Subject: Re: [PATCH v2 05/12] RISC-V: KVM: Don't flush TLB when PTE is unchanged To: Anup Patel Cc: Palmer Dabbelt , Paul Walmsley , Alexandre Ghiti , Andrew Jones , Anup Patel , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org References: <20250613065743.737102-1-apatel@ventanamicro.com> <20250613065743.737102-6-apatel@ventanamicro.com> Content-Language: en-US X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Atish Patra In-Reply-To: <20250613065743.737102-6-apatel@ventanamicro.com> X-Migadu-Flow: FLOW_OUT X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250613_171003_351478_E12087A8 X-CRM114-Status: GOOD ( 14.21 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org On 6/12/25 11:57 PM, Anup Patel wrote: > The gstage_set_pte() and gstage_op_pte() should flush TLB only when > a leaf PTE changes so that unnecessary TLB flushes can be avoided. > > Signed-off-by: Anup Patel > --- > arch/riscv/kvm/mmu.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c > index 1087ea74567b..29f1bd853a66 100644 > --- a/arch/riscv/kvm/mmu.c > +++ b/arch/riscv/kvm/mmu.c > @@ -167,9 +167,11 @@ static int gstage_set_pte(struct kvm *kvm, u32 level, > ptep = &next_ptep[gstage_pte_index(addr, current_level)]; > } > > - set_pte(ptep, *new_pte); > - if (gstage_pte_leaf(ptep)) > - gstage_remote_tlb_flush(kvm, current_level, addr); > + if (pte_val(*ptep) != pte_val(*new_pte)) { > + set_pte(ptep, *new_pte); > + if (gstage_pte_leaf(ptep)) > + gstage_remote_tlb_flush(kvm, current_level, addr); > + } > > return 0; > } > @@ -229,7 +231,7 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > pte_t *ptep, u32 ptep_level, enum gstage_op op) > { > int i, ret; > - pte_t *next_ptep; > + pte_t old_pte, *next_ptep; > u32 next_ptep_level; > unsigned long next_page_size, page_size; > > @@ -258,11 +260,13 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, > if (op == GSTAGE_OP_CLEAR) > put_page(virt_to_page(next_ptep)); > } else { > + old_pte = *ptep; > if (op == GSTAGE_OP_CLEAR) > set_pte(ptep, __pte(0)); > else if (op == GSTAGE_OP_WP) > set_pte(ptep, __pte(pte_val(ptep_get(ptep)) & ~_PAGE_WRITE)); > - gstage_remote_tlb_flush(kvm, ptep_level, addr); > + if (pte_val(*ptep) != pte_val(old_pte)) > + gstage_remote_tlb_flush(kvm, ptep_level, addr); > } > } > Reviewed-by: Atish Patra _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv