From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794493545; b=nTEL9p6K6jKVrHzqd9QGVNgWMSc8RqT5A8B9imyMLeEp/Pbkvo0N79IoOzMssImq98iW 9HHisGy5NR7TgSlO3v8NWWarnplXx74oLfQPWpn4UGDQilOpE2gSFXlF/BwJLZT0VXa7n Glh+No6TyA6DCeLyRR/7BiAKFao7kp01Ut1I4nhJvxW/PkQYLkDkT6shVXw7N3tnSUgcP 44ojgTUQr+7ZitmHGSaMf2SgH0T1MPdEgnf+PdSD75jU0kI7Qv1Q7J5r0LAybzHXVvX3U rXVif7UTKWyVnxUBS/rqjmx6R6kpP/hTFnOc5Tfk0CZx851HXf4Tq6VoT4qazbJVxgw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794493545; h=DMARC-Filter:Received:Received:Received:From:To:Cc:Subject:Date: Message-ID:X-Mailer:In-Reply-To:References:MIME-Version:Content-Type: Content-Transfer-Encoding:X-Rspamd-Pre-Result:X-Rspamd-Queue-Id: X-Rspamd-Pre-Result:X-Rspamd-Action:X-Rspamd-Server:X-Spam-Level: X-Spamd-Result:X-Spam-Flag:X-Spam-Score; bh=w7T2ylc9Guag4RlzXlw1wbZ6igDDXq/UphBkpee43Ak=; b=DTkuFkbWt8YfWRuy8bNymoTQJFYu8D9JPYIumrUHsiHiMZf4946OoWXmRNqJqv4T6rz5 +IDdZ9W00zFxUpDOoeb+3OIAHeqEZl8vY5rp7O82HFcP4JMWNNMykjFRq+5Npgl4y2m+b suWj+Isd09V8vuoBJSNhfHnczK1ERqn0UsM3RkBsUboeikatx2NqPCKoEBDpHrSgzAIKq 0a+XR2Vb9byLdbix8sk5jX5n6OzbAjW+45MF/mDVhMOb/Ur2B8LttLiWPpjwzf9RGiQm0 Gy5+EqHweJMV3G/tHZ5TNuUCCWSwLAKrN6LXLl4k2zxlUPMfSY6oiGGGDcTvzMHWGaQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.remote-ip=195.135.223.131 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 482A4606F892; Thu, 12 Nov 2026 14:25:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 482A4606F892 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id AB13C1F7B9; Thu, 12 Nov 2026 14:25:43 +0000 (UTC) Authentication-Results: smtp-out2.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5FDE913432; Thu, 12 Nov 2026 14:25:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id w9GzDFnM9WoAPwAAD6G6ig:T10 (envelope-from ); Thu, 12 Nov 2026 14:25:42 +0000 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= To: kvm@vger.kernel.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-riscv@lists.infradead.org, seanjc@google.com, pbonzini@redhat.com, akpm@linux-foundation.org, david@kernel.org, peterx@redhat.com, ljs@kernel.org, imbrenda@linux.ibm.com, borntraeger@linux.ibm.com, frankja@linux.ibm.com, =?UTF-8?q?Carlos=20L=C3=B3pez?= , Steffen Eiden , Andreas Grapentin , Marc Zyngier , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Sven Schnelle Subject: [PATCH v3 9/9] KVM: s390: don't unmap the gmap on permission upgrade Date: Thu, 12 Nov 2026 15:20:38 +0100 Message-ID: <20261112142039.907090-11-clopez@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20261112142039.907090-2-clopez@suse.de> References: <20261112142039.907090-2-clopez@suse.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: AB13C1F7B9 X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spam-Level: X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Flag: NO X-Spam-Score: -4.00 When an mmu_notifier invalidation only upgrades permissions (MMU_NOTIFIER_RANGE_PERM_UPGRADE), keep the existing gmap entries instead of unmapping them. The PFN is unchanged and no access is revoked, so an existing entry is no more permissive than the new host PTE. A write to an entry that is still read-only causes a protection exception, which kvm_s390_faultin_gfn() handles as a write fault. This applies to both s390 and arm64 guests. Signed-off-by: Carlos López --- arch/s390/kvm/arm64/arm.c | 7 +++++++ arch/s390/kvm/s390/s390.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/arch/s390/kvm/arm64/arm.c b/arch/s390/kvm/arm64/arm.c index bd9d85235f43..5aee1817aad8 100644 --- a/arch/s390/kvm/arm64/arm.c +++ b/arch/s390/kvm/arm64/arm.c @@ -678,6 +678,13 @@ void kvm_arch_commit_memory_region(struct kvm *kvm, struct kvm_memory_slot *old, bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range) { + /* + * Do not bother unmapping if this is only a protection upgrade. + * Permissions will be faulted-in on demand. + */ + if (range->flags & MMU_NOTIFIER_RANGE_PERM_UPGRADE) + return false; + return gmap_unmap_gfn_range(kvm->arch.gmap, range->slot, range->start, range->end); } diff --git a/arch/s390/kvm/s390/s390.c b/arch/s390/kvm/s390/s390.c index 18fb200f854a..954bf6b64683 100644 --- a/arch/s390/kvm/s390/s390.c +++ b/arch/s390/kvm/s390/s390.c @@ -5871,6 +5871,13 @@ bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) */ bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range) { + /* + * Do not bother unmapping if this is only a protection upgrade. + * Permissions will be faulted-in on demand. + */ + if (range->flags & MMU_NOTIFIER_RANGE_PERM_UPGRADE) + return false; + return gmap_unmap_gfn_range(kvm->arch.gmap, range->slot, range->start, range->end); } -- 2.51.0