From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Christopherson Date: Mon, 6 Nov 2023 07:56:03 -0800 Subject: [PATCH v13 20/35] KVM: x86/mmu: Handle page fault for private memory In-Reply-To: References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-21-seanjc@google.com> Message-ID: List-Id: To: kvm-riscv@lists.infradead.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Mon, Nov 06, 2023, Xu Yilun wrote: > On Sun, Nov 05, 2023 at 05:19:36PM +0100, Paolo Bonzini wrote: > > On Sun, Nov 5, 2023 at 2:04?PM Xu Yilun wrote: > > > > > > > +static void kvm_mmu_prepare_memory_fault_exit(struct kvm_vcpu *vcpu, > > > > + struct kvm_page_fault *fault) > > > > +{ > > > > + kvm_prepare_memory_fault_exit(vcpu, fault->gfn << PAGE_SHIFT, > > > > + PAGE_SIZE, fault->write, fault->exec, > > > > + fault->is_private); > > > > +} > > > > + > > > > +static int kvm_faultin_pfn_private(struct kvm_vcpu *vcpu, > > > > + struct kvm_page_fault *fault) > > > > +{ > > > > + int max_order, r; > > > > + > > > > + if (!kvm_slot_can_be_private(fault->slot)) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return -EFAULT; > > > > + } > > > > + > > > > + r = kvm_gmem_get_pfn(vcpu->kvm, fault->slot, fault->gfn, &fault->pfn, > > > > + &max_order); > > > > + if (r) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return r; > > > > > > Why report KVM_EXIT_MEMORY_FAULT here? even with a ret != -EFAULT? > > > > The cases are EFAULT, EHWPOISON (which can report > > KVM_EXIT_MEMORY_FAULT) and ENOMEM. I think it's fine > > that even -ENOMEM can return KVM_EXIT_MEMORY_FAULT, > > and it doesn't violate the documentation. The docs tell you "what > > can you do if error if EFAULT or EHWPOISON?"; they don't > > exclude that other errnos result in KVM_EXIT_MEMORY_FAULT, > > it's just that you're not supposed to look at it > > Thanks, it's OK for ENOMEM + KVM_EXIT_MEMORY_FAULT. > > Another concern is, now 3 places to report EFAULT + KVM_EXIT_MEMORY_FAULT: > > if (!kvm_slot_can_be_private(fault->slot)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } > > file = kvm_gmem_get_file(slot); > if (!file) > return -EFAULT; > > if (fault->is_private != kvm_mem_is_private(vcpu->kvm, fault->gfn)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } > > They are different cases, and seems userspace should handle them > differently, but not enough information to distinguish them. For the first, the memory_fault exit will inform userspace that the guest wants to map memory as private, and userspace will see that the memslot isn't configured to support private mappings. Userspace may not even need to query memslots, e.g. if the gfn in question has been enumerated to the guest as something that can only be mapped shared. For the second (no valid guest_memfd file), userspace put the last reference to the guest_memfd file without informing the guest or creating a memslot. That's firmly a userspace bug. For the third and last, userspace will see that the guest is requesting a private mapping but the gfn is configured for shared mappings. In all cases, userspace has the necessary information to resolve the issue, where "resolving the issue" may mean terminating the guest. If userspace isn't tracking memslots or the private attribute, then userspace has far bigger problems. From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) (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 4311F18644 for ; Mon, 6 Nov 2023 15:56:06 +0000 (UTC) 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--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="rf2uFFOE" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-da04fb79246so5346037276.2 for ; Mon, 06 Nov 2023 07:56:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699286165; x=1699890965; darn=lists.linux.dev; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=rf2uFFOEtGGoI2uihU7Ol0wutKNpy1S3GWc4ey9SLXO/fljr88MMZsEHnjCiS6eGpB AFEKusIFDGh4qGhGbQYa4/UVWaCbWCxhaf61XOy0ezkEWd8+/mvGXtAIUSOIIYUbsUAr rExxTIedKoRXBfNlRcIW2N6jFrr227wdrFktmcWOm4r9FLBiUios/dBNHXEDt0Sa9ssR DewAn/fDw+FXPngS5b4oi/GQY1BHI4BCxlZrSEdvk4ArOlzy0zWn4MLgt9+PT7UdYr2J gO89g354joqELOzaqZZSWgS9pnicDJLPOPl4MF5ho7w+2IoqCff94GxPs1/CJuqL8iVp UQRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699286165; x=1699890965; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=oKY44KGDxVhE+M+vRSyW9FAMEHzhCnM3pdAGenGIU7Uwp0sFhoQkKTI/i9sCBd014b EIILd4a7//7Itejb2DfuStnOAe+ju3Ecy5WCrUgjFqDOYoVHnZr1ZWEqC2eNIGyNAaw4 QniH+DQfgqihHO1653BkiRsvH5s4EkVtEPY9w/+jd9AMfBGgXgbKS18NxEzZPVavYL34 xn5PH/+Ffh5uUDRVJsID73bFqUoHKwEyaCfcQ4bWeYkOjUugM7W75sLczWNliWlefCRk 7HNuJxGTuVkwMqP78oRo3MJIBpCpgsEhnqMyPFD+Lp0VndAxXyKT9W4QLk0Y3a4vD1p9 LQ7A== X-Gm-Message-State: AOJu0YxxgFMwa7a0eK8cbV4CGIZSA99W3doY0aQUWolKHtWeKWqjUD6+ C0IMAEp5ZWmTkus2K6OAMJHxH/xL34k= X-Google-Smtp-Source: AGHT+IERk2b/M7d3G4J3vDGzrJ+T8jAsirv4bBIzvQT8OzuTMUe5AwPvC/SZu8YyGY6aMLoBT08jDOLmS/Y= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1083:b0:d9a:c3b8:4274 with SMTP id v3-20020a056902108300b00d9ac3b84274mr683795ybu.7.1699286165114; Mon, 06 Nov 2023 07:56:05 -0800 (PST) Date: Mon, 6 Nov 2023 07:56:03 -0800 In-Reply-To: Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-21-seanjc@google.com> Message-ID: Subject: Re: [PATCH v13 20/35] KVM: x86/mmu: Handle page fault for private memory From: Sean Christopherson To: Xu Yilun Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Viro , Christian Brauner , "Matthew Wilcox (Oracle)" , Andrew Morton , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Xu Yilun , Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , David Matlack , Yu Zhang , Isaku Yamahata , "=?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?=" , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A . Shutemov" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 06, 2023, Xu Yilun wrote: > On Sun, Nov 05, 2023 at 05:19:36PM +0100, Paolo Bonzini wrote: > > On Sun, Nov 5, 2023 at 2:04=E2=80=AFPM Xu Yilun wrote: > > > > > > > +static void kvm_mmu_prepare_memory_fault_exit(struct kvm_vcpu *vcp= u, > > > > + struct kvm_page_fault *= fault) > > > > +{ > > > > + kvm_prepare_memory_fault_exit(vcpu, fault->gfn << PAGE_SHIFT, > > > > + PAGE_SIZE, fault->write, fault-= >exec, > > > > + fault->is_private); > > > > +} > > > > + > > > > +static int kvm_faultin_pfn_private(struct kvm_vcpu *vcpu, > > > > + struct kvm_page_fault *fault) > > > > +{ > > > > + int max_order, r; > > > > + > > > > + if (!kvm_slot_can_be_private(fault->slot)) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return -EFAULT; > > > > + } > > > > + > > > > + r =3D kvm_gmem_get_pfn(vcpu->kvm, fault->slot, fault->gfn, &f= ault->pfn, > > > > + &max_order); > > > > + if (r) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return r; > > > > > > Why report KVM_EXIT_MEMORY_FAULT here? even with a ret !=3D -EFAULT? > >=20 > > The cases are EFAULT, EHWPOISON (which can report > > KVM_EXIT_MEMORY_FAULT) and ENOMEM. I think it's fine > > that even -ENOMEM can return KVM_EXIT_MEMORY_FAULT, > > and it doesn't violate the documentation. The docs tell you "what > > can you do if error if EFAULT or EHWPOISON?"; they don't > > exclude that other errnos result in KVM_EXIT_MEMORY_FAULT, > > it's just that you're not supposed to look at it >=20 > Thanks, it's OK for ENOMEM + KVM_EXIT_MEMORY_FAULT. >=20 > Another concern is, now 3 places to report EFAULT + KVM_EXIT_MEMORY_FAULT= : >=20 > if (!kvm_slot_can_be_private(fault->slot)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } >=20 > file =3D kvm_gmem_get_file(slot); > if (!file) > return -EFAULT; >=20 > if (fault->is_private !=3D kvm_mem_is_private(vcpu->kvm, fault->gfn)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } >=20 > They are different cases, and seems userspace should handle them > differently, but not enough information to distinguish them. For the first, the memory_fault exit will inform userspace that the guest w= ants to map memory as private, and userspace will see that the memslot isn't con= figured to support private mappings. Userspace may not even need to query memslots= , e.g. if the gfn in question has been enumerated to the guest as something that c= an only be mapped shared. For the second (no valid guest_memfd file), userspace put the last referenc= e to the guest_memfd file without informing the guest or creating a memslot. Th= at's firmly a userspace bug. For the third and last, userspace will see that the guest is requesting a p= rivate mapping but the gfn is configured for shared mappings. In all cases, userspace has the necessary information to resolve the issue,= where "resolving the issue" may mean terminating the guest. If userspace isn't t= racking memslots or the private attribute, then userspace has far bigger problems. 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 49390C4332F for ; Mon, 6 Nov 2023 15:56:18 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=rYK++hzkrGO4ZZN5kPY0cr2cOVmD1RHYi2DWRKUWnVk=; b=wqZjEmTgxX+6/LoMnS/fBRyrKp ri6oWcLAB6YxxYjvuTp3ddD3zI81ex51eVYdtsikGy56rp5U7eQHFiKkQ8l6g6DmrCUYz94YFKqgU 3D3Ey+6K28p4rfIoNqXp9Qbye7sHSJRrUH5bmgl7YFAI3m/eApOu1gvvzWD3GWVD2fHL+3UlH6yRT BePoJdsXQpiMGkWbE9uBMwFkpFm+fgGN3VnkbgOPFxM6MlIhv7kC1Iu3fHAFd8pIJXByAD5lokVsl v9sxBHKeWLItavN4rUXdUaUBjR1SbcRWVzCP2Mngv1hMffSyu5mU0NwAfsvuPBnw98RCfK/i6289k kasIbxHw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r01xU-00H2ez-0Y; Mon, 06 Nov 2023 15:56:12 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r01xQ-00H2c7-0f for linux-riscv@lists.infradead.org; Mon, 06 Nov 2023 15:56:10 +0000 Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-da04fb79246so5346039276.2 for ; Mon, 06 Nov 2023 07:56:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699286165; x=1699890965; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=pISNmvwHfjd4le8TCuwWDCQlo/slDwK10sfTICd/zWZbVVsxAdS+Q/j/2pmTQ5Vxsu Kiu7lHcTC7SLjZ+mD8pWiOCoNboH9xOrJJ3ZWvZV1+ad3AAniFY67auaWzNn6asdFzI5 PnKTIKubnIa7lWYaY3ChC5ewFaxCd7fJf6hkoBmOviVmd10MKsas4MOTryVNgfjYFYaV xCO/9ReX32apA1E9W18QYI+UXpGgKQCEfNYwAmBjQ0HYCL3orYELmfAT4zwTZMjF8b2M zL+tj99w3RzZBokWIlXhN/HGdX3AaAfBwjbD809jlL7v/7bqyrTKDMqGOvp6/gD6F+uA se4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699286165; x=1699890965; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=uXeE4Fu7XC0QNz54vVJBy5RReQTWLKcz5L/bXPNhILpQ/p3yrgpuOLhBewy8gUdVTD 2t9eWyLZ56EDTbuVSEkrZ3N+XS54S1Iq2QVxys7ObmV7LBpnf3gJTYfJNiDaPsG5IIzx ylBEupeHv3okh22hFEacF9SChqcRIsGLiojwwJBYzfKjz6GLcCNxFcSKFUXP5gouJOi0 9J6HT8aGHcGy4pDkIsSPv8DmRGEaHS73XODb1pWd7LD2ahBJ4KVomE5k15lLAu4FFuYg 3Ya1PHrGtccumdoZ1fBpEF1u5fxl+6x0KJuzncr2A3tuhKJYEY2LhTBfW/VXwXiQV953 zKyA== X-Gm-Message-State: AOJu0YzeT9B3Rs6asN/3dIf/R5MXsP2veFpnGuMxlGbCjBgkFA509OwC 2SxZgGO94OdCOaSSVekXx8yxLN99fas= X-Google-Smtp-Source: AGHT+IERk2b/M7d3G4J3vDGzrJ+T8jAsirv4bBIzvQT8OzuTMUe5AwPvC/SZu8YyGY6aMLoBT08jDOLmS/Y= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1083:b0:d9a:c3b8:4274 with SMTP id v3-20020a056902108300b00d9ac3b84274mr683795ybu.7.1699286165114; Mon, 06 Nov 2023 07:56:05 -0800 (PST) Date: Mon, 6 Nov 2023 07:56:03 -0800 In-Reply-To: Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-21-seanjc@google.com> Message-ID: Subject: Re: [PATCH v13 20/35] KVM: x86/mmu: Handle page fault for private memory From: Sean Christopherson To: Xu Yilun Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Viro , Christian Brauner , "Matthew Wilcox (Oracle)" , Andrew Morton , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Xu Yilun , Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , David Matlack , Yu Zhang , Isaku Yamahata , "=?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?=" , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A . Shutemov" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231106_075608_264106_A13632FC X-CRM114-Status: GOOD ( 20.15 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBOb3YgMDYsIDIwMjMsIFh1IFlpbHVuIHdyb3RlOgo+IE9uIFN1biwgTm92IDA1LCAy MDIzIGF0IDA1OjE5OjM2UE0gKzAxMDAsIFBhb2xvIEJvbnppbmkgd3JvdGU6Cj4gPiBPbiBTdW4s IE5vdiA1LCAyMDIzIGF0IDI6MDTigK9QTSBYdSBZaWx1biA8eWlsdW4ueHVAbGludXguaW50ZWwu Y29tPiB3cm90ZToKPiA+ID4KPiA+ID4gPiArc3RhdGljIHZvaWQga3ZtX21tdV9wcmVwYXJlX21l bW9yeV9mYXVsdF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fcGFnZV9mYXVsdCAq ZmF1bHQpCj4gPiA+ID4gK3sKPiA+ID4gPiArICAgICBrdm1fcHJlcGFyZV9tZW1vcnlfZmF1bHRf ZXhpdCh2Y3B1LCBmYXVsdC0+Z2ZuIDw8IFBBR0VfU0hJRlQsCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFLCBmYXVsdC0+d3JpdGUsIGZhdWx0LT5l eGVjLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdWx0LT5p c19wcml2YXRlKTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBrdm1f ZmF1bHRpbl9wZm5fcHJpdmF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9wYWdlX2ZhdWx0ICpmYXVsdCkK PiA+ID4gPiArewo+ID4gPiA+ICsgICAgIGludCBtYXhfb3JkZXIsIHI7Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgIGlmICgha3ZtX3Nsb3RfY2FuX2JlX3ByaXZhdGUoZmF1bHQtPnNsb3QpKSB7Cj4g PiA+ID4gKyAgICAgICAgICAgICBrdm1fbW11X3ByZXBhcmVfbWVtb3J5X2ZhdWx0X2V4aXQodmNw dSwgZmF1bHQpOwo+ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gPiA+ID4g KyAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICByID0ga3ZtX2dtZW1fZ2V0X3Bmbih2Y3B1 LT5rdm0sIGZhdWx0LT5zbG90LCBmYXVsdC0+Z2ZuLCAmZmF1bHQtPnBmbiwKPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAmbWF4X29yZGVyKTsKPiA+ID4gPiArICAgICBpZiAocikg ewo+ID4gPiA+ICsgICAgICAgICAgICAga3ZtX21tdV9wcmVwYXJlX21lbW9yeV9mYXVsdF9leGl0 KHZjcHUsIGZhdWx0KTsKPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiByOwo+ID4gPgo+ID4g PiBXaHkgcmVwb3J0IEtWTV9FWElUX01FTU9SWV9GQVVMVCBoZXJlPyBldmVuIHdpdGggYSByZXQg IT0gLUVGQVVMVD8KPiA+IAo+ID4gVGhlIGNhc2VzIGFyZSBFRkFVTFQsIEVIV1BPSVNPTiAod2hp Y2ggY2FuIHJlcG9ydAo+ID4gS1ZNX0VYSVRfTUVNT1JZX0ZBVUxUKSBhbmQgRU5PTUVNLiBJIHRo aW5rIGl0J3MgZmluZQo+ID4gdGhhdCBldmVuIC1FTk9NRU0gY2FuIHJldHVybiBLVk1fRVhJVF9N RU1PUllfRkFVTFQsCj4gPiBhbmQgaXQgZG9lc24ndCB2aW9sYXRlIHRoZSBkb2N1bWVudGF0aW9u LiAgVGhlIGRvY3MgdGVsbCB5b3UgIndoYXQKPiA+IGNhbiB5b3UgZG8gaWYgZXJyb3IgaWYgRUZB VUxUIG9yIEVIV1BPSVNPTj8iOyB0aGV5IGRvbid0Cj4gPiBleGNsdWRlIHRoYXQgb3RoZXIgZXJy bm9zIHJlc3VsdCBpbiBLVk1fRVhJVF9NRU1PUllfRkFVTFQsCj4gPiBpdCdzIGp1c3QgdGhhdCB5 b3UncmUgbm90IHN1cHBvc2VkIHRvIGxvb2sgYXQgaXQKPiAKPiBUaGFua3MsIGl0J3MgT0sgZm9y IEVOT01FTSArIEtWTV9FWElUX01FTU9SWV9GQVVMVC4KPiAKPiBBbm90aGVyIGNvbmNlcm4gaXMs IG5vdyAzIHBsYWNlcyB0byByZXBvcnQgRUZBVUxUICsgS1ZNX0VYSVRfTUVNT1JZX0ZBVUxUOgo+ IAo+ICAgaWYgKCFrdm1fc2xvdF9jYW5fYmVfcHJpdmF0ZShmYXVsdC0+c2xvdCkpIHsKPiAJa3Zt X21tdV9wcmVwYXJlX21lbW9yeV9mYXVsdF9leGl0KHZjcHUsIGZhdWx0KTsKPiAJcmV0dXJuIC1F RkFVTFQ7Cj4gICB9Cj4gCj4gICBmaWxlID0ga3ZtX2dtZW1fZ2V0X2ZpbGUoc2xvdCk7Cj4gICBp ZiAoIWZpbGUpCj4gCXJldHVybiAtRUZBVUxUOwo+IAo+ICAgaWYgKGZhdWx0LT5pc19wcml2YXRl ICE9IGt2bV9tZW1faXNfcHJpdmF0ZSh2Y3B1LT5rdm0sIGZhdWx0LT5nZm4pKSB7Cj4gCWt2bV9t bXVfcHJlcGFyZV9tZW1vcnlfZmF1bHRfZXhpdCh2Y3B1LCBmYXVsdCk7Cj4gCXJldHVybiAtRUZB VUxUOwo+ICAgfQo+IAo+IFRoZXkgYXJlIGRpZmZlcmVudCBjYXNlcywgYW5kIHNlZW1zIHVzZXJz cGFjZSBzaG91bGQgaGFuZGxlIHRoZW0KPiBkaWZmZXJlbnRseSwgYnV0IG5vdCBlbm91Z2ggaW5m b3JtYXRpb24gdG8gZGlzdGluZ3Vpc2ggdGhlbS4KCkZvciB0aGUgZmlyc3QsIHRoZSBtZW1vcnlf ZmF1bHQgZXhpdCB3aWxsIGluZm9ybSB1c2Vyc3BhY2UgdGhhdCB0aGUgZ3Vlc3Qgd2FudHMKdG8g bWFwIG1lbW9yeSBhcyBwcml2YXRlLCBhbmQgdXNlcnNwYWNlIHdpbGwgc2VlIHRoYXQgdGhlIG1l bXNsb3QgaXNuJ3QgY29uZmlndXJlZAp0byBzdXBwb3J0IHByaXZhdGUgbWFwcGluZ3MuICBVc2Vy c3BhY2UgbWF5IG5vdCBldmVuIG5lZWQgdG8gcXVlcnkgbWVtc2xvdHMsIGUuZy4KaWYgdGhlIGdm biBpbiBxdWVzdGlvbiBoYXMgYmVlbiBlbnVtZXJhdGVkIHRvIHRoZSBndWVzdCBhcyBzb21ldGhp bmcgdGhhdCBjYW4gb25seQpiZSBtYXBwZWQgc2hhcmVkLgoKRm9yIHRoZSBzZWNvbmQgKG5vIHZh bGlkIGd1ZXN0X21lbWZkIGZpbGUpLCB1c2Vyc3BhY2UgcHV0IHRoZSBsYXN0IHJlZmVyZW5jZSB0 bwp0aGUgZ3Vlc3RfbWVtZmQgZmlsZSB3aXRob3V0IGluZm9ybWluZyB0aGUgZ3Vlc3Qgb3IgY3Jl YXRpbmcgYSBtZW1zbG90LiAgVGhhdCdzCmZpcm1seSBhIHVzZXJzcGFjZSBidWcuCgpGb3IgdGhl IHRoaXJkIGFuZCBsYXN0LCB1c2Vyc3BhY2Ugd2lsbCBzZWUgdGhhdCB0aGUgZ3Vlc3QgaXMgcmVx dWVzdGluZyBhIHByaXZhdGUKbWFwcGluZyBidXQgdGhlIGdmbiBpcyBjb25maWd1cmVkIGZvciBz aGFyZWQgbWFwcGluZ3MuCgpJbiBhbGwgY2FzZXMsIHVzZXJzcGFjZSBoYXMgdGhlIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiB0byByZXNvbHZlIHRoZSBpc3N1ZSwgd2hlcmUKInJlc29sdmluZyB0aGUg aXNzdWUiIG1heSBtZWFuIHRlcm1pbmF0aW5nIHRoZSBndWVzdC4gIElmIHVzZXJzcGFjZSBpc24n dCB0cmFja2luZwptZW1zbG90cyBvciB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGUsIHRoZW4gdXNlcnNw YWNlIGhhcyBmYXIgYmlnZ2VyIHByb2JsZW1zLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2 QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1yaXNjdgo= 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 32EAEC4332F for ; Mon, 6 Nov 2023 15:57:02 +0000 (UTC) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20230601 header.b=pOqN6VSU; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4SPGF80VT9z3cLk for ; Tue, 7 Nov 2023 02:57:00 +1100 (AEDT) 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=pOqN6VSU; 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::b49; helo=mail-yb1-xb49.google.com; envelope-from=3lqxjzqykdaqwierngksskpi.gsqpmry1ttg-hizpmwxw.s3pefw.svk@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) (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 4SPGDB4sMTz3bPM for ; Tue, 7 Nov 2023 02:56:08 +1100 (AEDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-da033914f7cso5367554276.0 for ; Mon, 06 Nov 2023 07:56:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699286165; x=1699890965; darn=lists.ozlabs.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=pOqN6VSUX09VIQ5IUUaiz2qmR7DTB5m4CJIhTpFsNHd2zQmJSRbu8UTqfgSw6Y6VPM eJylUDpkR8ERTrZKzWfACNCpqhFA0TVEOlwTmsweA+64BF7xsAMoUL1/quRcmqKm2EGi mwLZZ+pLHL8+zggHQLuHGPz26ItUNfn74+ZhPZ4lN5Mmb4CA0HSFnUEpBYVOlJIYi+JZ Zj0A7AMKUTnScMFzzrGVWULOuXc7YfZ9CJE7Lf0xX1f5Tvc/bcebyeLi+RMND458WXzp dacHuWL4ufN9dr4TyBqTL0jGmzYOgRqisnXH2gupbGROeRIqguseLyVQA3/wstN8wm/v xMGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699286165; x=1699890965; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=DPiMmcl/3NYRSJsm2pRb2GZkBhuFd0ht6plPnljjOSSefTn42xFGJpE+pr2dfIg5EQ Dw2PX1lh18wfkgvhSgaDlGVQXHunfTJWtyCf3EcRO8P0AxGryPrw71WYZlYeLCqDYUTy HY0RKmts/VFzaOWmqQWHyhlSF8kNMaToesG3JYu5VAfQ2UP4bgcrrRTKNURPF/adbgBe M42HoTPN3b8ypnxlkcugRQBvPjT8TJuTo9lJnNCSCBXg9mXOrHtuPVgao6hGxeDTf1Hb /qQo5Hbvb62HbZ6sS5LMj3hBy/ei9OewuWN990ejMg6l4IlZ+RrMjlhKJ6q0BR9lYurm XdHg== X-Gm-Message-State: AOJu0YyC1LoxjWp+grR9zH1U4FweYloV5+sIwZuxKvAMm3jJk/jcIluy eohCTYahsH7iX5nxho454Jhl1C7fp7E= X-Google-Smtp-Source: AGHT+IERk2b/M7d3G4J3vDGzrJ+T8jAsirv4bBIzvQT8OzuTMUe5AwPvC/SZu8YyGY6aMLoBT08jDOLmS/Y= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1083:b0:d9a:c3b8:4274 with SMTP id v3-20020a056902108300b00d9ac3b84274mr683795ybu.7.1699286165114; Mon, 06 Nov 2023 07:56:05 -0800 (PST) Date: Mon, 6 Nov 2023 07:56:03 -0800 In-Reply-To: Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-21-seanjc@google.com> Message-ID: Subject: Re: [PATCH v13 20/35] KVM: x86/mmu: Handle page fault for private memory From: Sean Christopherson To: Xu Yilun Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm@vger.kernel.org, David Hildenbrand , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chao Peng , linux-riscv@lists.infradead.org, Isaku Yamahata , Marc Zyngier , Huacai Chen , Xiaoyao Li , "Matthew Wilcox \(Oracle\)" , Wang , Fuad Tabba , Yu Zhang , Maciej Szmigiero , Albert Ou , Vlastimil Babka , Michael Roth , Ackerley Tng , Alexander Viro , Paul Walmsley , kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, =?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?= , Isaku Yamahata , Christian Brauner , Quentin Perret , L iam Merwick , linux-mips@vger.kernel.org, Oliver Upton , David Matlack , Jarkko Sakkinen , Palmer Dabbelt , "Kirill A . Shutemov" , kvm-riscv@lists.infradead.org, Anup Patel , linux-fsdevel@vger.kernel.org, Paolo Bonzini , Andrew Morton , Vishal Annapurve , linuxppc-dev@lists.ozlabs.org, Xu Yilun , Anish Moorthy Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Mon, Nov 06, 2023, Xu Yilun wrote: > On Sun, Nov 05, 2023 at 05:19:36PM +0100, Paolo Bonzini wrote: > > On Sun, Nov 5, 2023 at 2:04=E2=80=AFPM Xu Yilun wrote: > > > > > > > +static void kvm_mmu_prepare_memory_fault_exit(struct kvm_vcpu *vcp= u, > > > > + struct kvm_page_fault *= fault) > > > > +{ > > > > + kvm_prepare_memory_fault_exit(vcpu, fault->gfn << PAGE_SHIFT, > > > > + PAGE_SIZE, fault->write, fault-= >exec, > > > > + fault->is_private); > > > > +} > > > > + > > > > +static int kvm_faultin_pfn_private(struct kvm_vcpu *vcpu, > > > > + struct kvm_page_fault *fault) > > > > +{ > > > > + int max_order, r; > > > > + > > > > + if (!kvm_slot_can_be_private(fault->slot)) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return -EFAULT; > > > > + } > > > > + > > > > + r =3D kvm_gmem_get_pfn(vcpu->kvm, fault->slot, fault->gfn, &f= ault->pfn, > > > > + &max_order); > > > > + if (r) { > > > > + kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > > > > + return r; > > > > > > Why report KVM_EXIT_MEMORY_FAULT here? even with a ret !=3D -EFAULT? > >=20 > > The cases are EFAULT, EHWPOISON (which can report > > KVM_EXIT_MEMORY_FAULT) and ENOMEM. I think it's fine > > that even -ENOMEM can return KVM_EXIT_MEMORY_FAULT, > > and it doesn't violate the documentation. The docs tell you "what > > can you do if error if EFAULT or EHWPOISON?"; they don't > > exclude that other errnos result in KVM_EXIT_MEMORY_FAULT, > > it's just that you're not supposed to look at it >=20 > Thanks, it's OK for ENOMEM + KVM_EXIT_MEMORY_FAULT. >=20 > Another concern is, now 3 places to report EFAULT + KVM_EXIT_MEMORY_FAULT= : >=20 > if (!kvm_slot_can_be_private(fault->slot)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } >=20 > file =3D kvm_gmem_get_file(slot); > if (!file) > return -EFAULT; >=20 > if (fault->is_private !=3D kvm_mem_is_private(vcpu->kvm, fault->gfn)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > return -EFAULT; > } >=20 > They are different cases, and seems userspace should handle them > differently, but not enough information to distinguish them. For the first, the memory_fault exit will inform userspace that the guest w= ants to map memory as private, and userspace will see that the memslot isn't con= figured to support private mappings. Userspace may not even need to query memslots= , e.g. if the gfn in question has been enumerated to the guest as something that c= an only be mapped shared. For the second (no valid guest_memfd file), userspace put the last referenc= e to the guest_memfd file without informing the guest or creating a memslot. Th= at's firmly a userspace bug. For the third and last, userspace will see that the guest is requesting a p= rivate mapping but the gfn is configured for shared mappings. In all cases, userspace has the necessary information to resolve the issue,= where "resolving the issue" may mean terminating the guest. If userspace isn't t= racking memslots or the private attribute, then userspace has far bigger problems. 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 84EB5C4332F for ; Mon, 6 Nov 2023 15:56:40 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=dLuZoiEOtVId3Jq9YserjljTa3hRbK2VQyMyz02Yi3c=; b=VueU2wz5uSVeEMrGaZjhi0g0Z8 EskATNKGS95AjzW2ODi1gU0xyDz4nvPoFdSyOezoPFACXHX2T0bWPM2ppmn4YYBu6F6n2mcTPC4Ua ZRGkGWsI3+rHQNJ+7eFs+0U0L0Zw/hKrXWbYytX8jMKlNQzlBwX8Ct5buR9VWnZvjcEDZDxSa8Twl 5Hp6m1zm7NYglsVC++NWFWTMkAQA5Bcxf3HTtsTpZ29ibu1CxdTgpGCest00Vj6kQa8xMlbISvWco M0XSFtcE+3LFHb/EsySqr93l5fwGHnCdFLlOHL53w+iDl6UaCbCcHM6iFKEzJeDcyKKYAW1xliCJM bwwC1LaA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r01xT-00H2eY-25; Mon, 06 Nov 2023 15:56:11 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r01xP-00H2c6-2z for linux-arm-kernel@lists.infradead.org; Mon, 06 Nov 2023 15:56:10 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d99ec34829aso5356459276.1 for ; Mon, 06 Nov 2023 07:56:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699286165; x=1699890965; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=pISNmvwHfjd4le8TCuwWDCQlo/slDwK10sfTICd/zWZbVVsxAdS+Q/j/2pmTQ5Vxsu Kiu7lHcTC7SLjZ+mD8pWiOCoNboH9xOrJJ3ZWvZV1+ad3AAniFY67auaWzNn6asdFzI5 PnKTIKubnIa7lWYaY3ChC5ewFaxCd7fJf6hkoBmOviVmd10MKsas4MOTryVNgfjYFYaV xCO/9ReX32apA1E9W18QYI+UXpGgKQCEfNYwAmBjQ0HYCL3orYELmfAT4zwTZMjF8b2M zL+tj99w3RzZBokWIlXhN/HGdX3AaAfBwjbD809jlL7v/7bqyrTKDMqGOvp6/gD6F+uA se4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699286165; x=1699890965; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=2j2Mtk4lW9HEtWavGEnwteIJF5J/7dhiq9rSq3IBx+E=; b=P+bS3VT2RKKYjMY7n6zxpEGwHK1nOa6h0e9Oq+q+oIySxUBC+OuSFzjsxXog/lKpFc iox9kaz2BQuxOw7cDVBCHm6ArdtZIIbbSDEEZAo92t597KakR7i1WSwLSI3vmCJvsAS/ x1xzzMWUwLGaadB16Hpe2i7s7zc4uJvkRTz7wUuxeCRvXGoEb69mzSg9Fc0QXCP+rLfm cM5YFnpclQ0hg+i4tCcZ6A+ZE4y+QBttuqoS61I8xeaPvv1iHzTwgG5Cb3tyskdHkrZv 0aSjBNO2xykesMGkmiENOZuqI2cHx3wfDroO5l59bnkLlZH2UekxvMtnTIEfxMPWNzYU o+pg== X-Gm-Message-State: AOJu0YwCKimSoN1C99lWSAH9Qdb0rci8XfcG12G8GyK0u7rE2YkR2eQh oduKPNe0F39o8V8+iRx/f+PKlIMrfXU= X-Google-Smtp-Source: AGHT+IERk2b/M7d3G4J3vDGzrJ+T8jAsirv4bBIzvQT8OzuTMUe5AwPvC/SZu8YyGY6aMLoBT08jDOLmS/Y= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1083:b0:d9a:c3b8:4274 with SMTP id v3-20020a056902108300b00d9ac3b84274mr683795ybu.7.1699286165114; Mon, 06 Nov 2023 07:56:05 -0800 (PST) Date: Mon, 6 Nov 2023 07:56:03 -0800 In-Reply-To: Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-21-seanjc@google.com> Message-ID: Subject: Re: [PATCH v13 20/35] KVM: x86/mmu: Handle page fault for private memory From: Sean Christopherson To: Xu Yilun Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Viro , Christian Brauner , "Matthew Wilcox (Oracle)" , Andrew Morton , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Xu Yilun , Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , David Matlack , Yu Zhang , Isaku Yamahata , "=?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?=" , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A . Shutemov" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231106_075607_963356_7D16DE70 X-CRM114-Status: GOOD ( 21.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBOb3YgMDYsIDIwMjMsIFh1IFlpbHVuIHdyb3RlOgo+IE9uIFN1biwgTm92IDA1LCAy MDIzIGF0IDA1OjE5OjM2UE0gKzAxMDAsIFBhb2xvIEJvbnppbmkgd3JvdGU6Cj4gPiBPbiBTdW4s IE5vdiA1LCAyMDIzIGF0IDI6MDTigK9QTSBYdSBZaWx1biA8eWlsdW4ueHVAbGludXguaW50ZWwu Y29tPiB3cm90ZToKPiA+ID4KPiA+ID4gPiArc3RhdGljIHZvaWQga3ZtX21tdV9wcmVwYXJlX21l bW9yeV9mYXVsdF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fcGFnZV9mYXVsdCAq ZmF1bHQpCj4gPiA+ID4gK3sKPiA+ID4gPiArICAgICBrdm1fcHJlcGFyZV9tZW1vcnlfZmF1bHRf ZXhpdCh2Y3B1LCBmYXVsdC0+Z2ZuIDw8IFBBR0VfU0hJRlQsCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFLCBmYXVsdC0+d3JpdGUsIGZhdWx0LT5l eGVjLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdWx0LT5p c19wcml2YXRlKTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBrdm1f ZmF1bHRpbl9wZm5fcHJpdmF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9wYWdlX2ZhdWx0ICpmYXVsdCkK PiA+ID4gPiArewo+ID4gPiA+ICsgICAgIGludCBtYXhfb3JkZXIsIHI7Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgIGlmICgha3ZtX3Nsb3RfY2FuX2JlX3ByaXZhdGUoZmF1bHQtPnNsb3QpKSB7Cj4g PiA+ID4gKyAgICAgICAgICAgICBrdm1fbW11X3ByZXBhcmVfbWVtb3J5X2ZhdWx0X2V4aXQodmNw dSwgZmF1bHQpOwo+ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gPiA+ID4g KyAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICByID0ga3ZtX2dtZW1fZ2V0X3Bmbih2Y3B1 LT5rdm0sIGZhdWx0LT5zbG90LCBmYXVsdC0+Z2ZuLCAmZmF1bHQtPnBmbiwKPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAmbWF4X29yZGVyKTsKPiA+ID4gPiArICAgICBpZiAocikg ewo+ID4gPiA+ICsgICAgICAgICAgICAga3ZtX21tdV9wcmVwYXJlX21lbW9yeV9mYXVsdF9leGl0 KHZjcHUsIGZhdWx0KTsKPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiByOwo+ID4gPgo+ID4g PiBXaHkgcmVwb3J0IEtWTV9FWElUX01FTU9SWV9GQVVMVCBoZXJlPyBldmVuIHdpdGggYSByZXQg IT0gLUVGQVVMVD8KPiA+IAo+ID4gVGhlIGNhc2VzIGFyZSBFRkFVTFQsIEVIV1BPSVNPTiAod2hp Y2ggY2FuIHJlcG9ydAo+ID4gS1ZNX0VYSVRfTUVNT1JZX0ZBVUxUKSBhbmQgRU5PTUVNLiBJIHRo aW5rIGl0J3MgZmluZQo+ID4gdGhhdCBldmVuIC1FTk9NRU0gY2FuIHJldHVybiBLVk1fRVhJVF9N RU1PUllfRkFVTFQsCj4gPiBhbmQgaXQgZG9lc24ndCB2aW9sYXRlIHRoZSBkb2N1bWVudGF0aW9u LiAgVGhlIGRvY3MgdGVsbCB5b3UgIndoYXQKPiA+IGNhbiB5b3UgZG8gaWYgZXJyb3IgaWYgRUZB VUxUIG9yIEVIV1BPSVNPTj8iOyB0aGV5IGRvbid0Cj4gPiBleGNsdWRlIHRoYXQgb3RoZXIgZXJy bm9zIHJlc3VsdCBpbiBLVk1fRVhJVF9NRU1PUllfRkFVTFQsCj4gPiBpdCdzIGp1c3QgdGhhdCB5 b3UncmUgbm90IHN1cHBvc2VkIHRvIGxvb2sgYXQgaXQKPiAKPiBUaGFua3MsIGl0J3MgT0sgZm9y IEVOT01FTSArIEtWTV9FWElUX01FTU9SWV9GQVVMVC4KPiAKPiBBbm90aGVyIGNvbmNlcm4gaXMs IG5vdyAzIHBsYWNlcyB0byByZXBvcnQgRUZBVUxUICsgS1ZNX0VYSVRfTUVNT1JZX0ZBVUxUOgo+ IAo+ICAgaWYgKCFrdm1fc2xvdF9jYW5fYmVfcHJpdmF0ZShmYXVsdC0+c2xvdCkpIHsKPiAJa3Zt X21tdV9wcmVwYXJlX21lbW9yeV9mYXVsdF9leGl0KHZjcHUsIGZhdWx0KTsKPiAJcmV0dXJuIC1F RkFVTFQ7Cj4gICB9Cj4gCj4gICBmaWxlID0ga3ZtX2dtZW1fZ2V0X2ZpbGUoc2xvdCk7Cj4gICBp ZiAoIWZpbGUpCj4gCXJldHVybiAtRUZBVUxUOwo+IAo+ICAgaWYgKGZhdWx0LT5pc19wcml2YXRl ICE9IGt2bV9tZW1faXNfcHJpdmF0ZSh2Y3B1LT5rdm0sIGZhdWx0LT5nZm4pKSB7Cj4gCWt2bV9t bXVfcHJlcGFyZV9tZW1vcnlfZmF1bHRfZXhpdCh2Y3B1LCBmYXVsdCk7Cj4gCXJldHVybiAtRUZB VUxUOwo+ICAgfQo+IAo+IFRoZXkgYXJlIGRpZmZlcmVudCBjYXNlcywgYW5kIHNlZW1zIHVzZXJz cGFjZSBzaG91bGQgaGFuZGxlIHRoZW0KPiBkaWZmZXJlbnRseSwgYnV0IG5vdCBlbm91Z2ggaW5m b3JtYXRpb24gdG8gZGlzdGluZ3Vpc2ggdGhlbS4KCkZvciB0aGUgZmlyc3QsIHRoZSBtZW1vcnlf ZmF1bHQgZXhpdCB3aWxsIGluZm9ybSB1c2Vyc3BhY2UgdGhhdCB0aGUgZ3Vlc3Qgd2FudHMKdG8g bWFwIG1lbW9yeSBhcyBwcml2YXRlLCBhbmQgdXNlcnNwYWNlIHdpbGwgc2VlIHRoYXQgdGhlIG1l bXNsb3QgaXNuJ3QgY29uZmlndXJlZAp0byBzdXBwb3J0IHByaXZhdGUgbWFwcGluZ3MuICBVc2Vy c3BhY2UgbWF5IG5vdCBldmVuIG5lZWQgdG8gcXVlcnkgbWVtc2xvdHMsIGUuZy4KaWYgdGhlIGdm biBpbiBxdWVzdGlvbiBoYXMgYmVlbiBlbnVtZXJhdGVkIHRvIHRoZSBndWVzdCBhcyBzb21ldGhp bmcgdGhhdCBjYW4gb25seQpiZSBtYXBwZWQgc2hhcmVkLgoKRm9yIHRoZSBzZWNvbmQgKG5vIHZh bGlkIGd1ZXN0X21lbWZkIGZpbGUpLCB1c2Vyc3BhY2UgcHV0IHRoZSBsYXN0IHJlZmVyZW5jZSB0 bwp0aGUgZ3Vlc3RfbWVtZmQgZmlsZSB3aXRob3V0IGluZm9ybWluZyB0aGUgZ3Vlc3Qgb3IgY3Jl YXRpbmcgYSBtZW1zbG90LiAgVGhhdCdzCmZpcm1seSBhIHVzZXJzcGFjZSBidWcuCgpGb3IgdGhl IHRoaXJkIGFuZCBsYXN0LCB1c2Vyc3BhY2Ugd2lsbCBzZWUgdGhhdCB0aGUgZ3Vlc3QgaXMgcmVx dWVzdGluZyBhIHByaXZhdGUKbWFwcGluZyBidXQgdGhlIGdmbiBpcyBjb25maWd1cmVkIGZvciBz aGFyZWQgbWFwcGluZ3MuCgpJbiBhbGwgY2FzZXMsIHVzZXJzcGFjZSBoYXMgdGhlIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiB0byByZXNvbHZlIHRoZSBpc3N1ZSwgd2hlcmUKInJlc29sdmluZyB0aGUg aXNzdWUiIG1heSBtZWFuIHRlcm1pbmF0aW5nIHRoZSBndWVzdC4gIElmIHVzZXJzcGFjZSBpc24n dCB0cmFja2luZwptZW1zbG90cyBvciB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGUsIHRoZW4gdXNlcnNw YWNlIGhhcyBmYXIgYmlnZ2VyIHByb2JsZW1zLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=