From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Christopherson Date: Thu, 2 Nov 2023 08:56:43 -0700 Subject: [PATCH v13 09/35] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace In-Reply-To: <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-10-seanjc@google.com> <482bfea6f54ea1bb7d1ad75e03541d0ba0e5be6f.camel@intel.com> <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.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 Thu, Nov 02, 2023, Kai Huang wrote: > On Wed, 2023-11-01 at 10:36 -0700, Sean Christopherson wrote: > > On Wed, Nov 01, 2023, Kai Huang wrote: > > > > > > > +7.34 KVM_CAP_MEMORY_FAULT_INFO > > > > +------------------------------ > > > > + > > > > +:Architectures: x86 > > > > +:Returns: Informational only, -EINVAL on direct KVM_ENABLE_CAP. > > > > + > > > > +The presence of this capability indicates that KVM_RUN will fill > > > > +kvm_run.memory_fault if KVM cannot resolve a guest page fault VM-Exit, e.g. if > > > > +there is a valid memslot but no backing VMA for the corresponding host virtual > > > > +address. > > > > + > > > > +The information in kvm_run.memory_fault is valid if and only if KVM_RUN returns > > > > +an error with errno=EFAULT or errno=EHWPOISON *and* kvm_run.exit_reason is set > > > > +to KVM_EXIT_MEMORY_FAULT. > > > > > > IIUC returning -EFAULT or whatever -errno is sort of KVM internal > > > implementation. > > > > The errno that is returned to userspace is ABI. In KVM, it's a _very_ poorly > > defined ABI for the vast majority of ioctls(), but it's still technically ABI. > > KVM gets away with being cavalier with errno because the vast majority of errors > > are considered fatal by userespace, i.e. in most cases, userspace simply doesn't > > care about the exact errno. > > > > A good example is KVM_RUN with -EINTR; if KVM were to return something other than > > -EINTR on a pending signal or vcpu->run->immediate_exit, userspace would fall over. > > > > > Is it better to relax the validity of kvm_run.memory_fault when > > > KVM_RUN returns any -errno? > > > > Not unless there's a need to do so, and if there is then we can update the > > documentation accordingly. If KVM's ABI is that kvm_run.memory_fault is valid > > for any errno, then KVM would need to purge kvm_run.exit_reason super early in > > KVM_RUN, e.g. to prevent an -EINTR return due to immediate_exit from being > > misinterpreted as KVM_EXIT_MEMORY_FAULT. And purging exit_reason super early is > > subtly tricky because KVM's (again, poorly documented) ABI is that *some* exit > > reasons are preserved across KVM_RUN with vcpu->run->immediate_exit (or with a > > pending signal). > > > > https://lore.kernel.org/all/ZFFbwOXZ5uI%2Fgdaf at google.com > > > > > > Agreed with not to relax to any errno. However using -EFAULT as part of ABI > definition seems a little bit dangerous, e.g., someone could accidentally or > mistakenly return -EFAULT in KVM_RUN at early time and/or in a completely > different code path, etc. ?-EINTR has well defined meaning, but -EFAULT (which > is "Bad address") seems doesn't but I am not sure either. :-) KVM has returned -EFAULT since forever, i.e. it's effectively already part of the ABI. I doubt there's a userspace that relies precisely on -EFAULT, but userspace definitely will be confused if KVM returns '0' where KVM used to return -EFAULT. And so if we want to return '0', it needs to be opt-in, which means forcing userspace to enable a capability *and* requires code in KVM to conditionally return '0' instead of -EFAULT/-EHWPOISON. > One example is, for backing VMA with VM_IO | VM_PFNMAP, hva_to_pfn() returns > KVM_PFN_ERR_FAULT when the kernel cannot get a valid PFN (e.g. when SGX vepc > fault handler failed to allocate EPC) and kvm_handle_error_pfn() will just > return -EFAULT. If kvm_run.exit_reason isn't purged early then is it possible > to have some issue here? Well, yeah, but that's exactly why this series has a patch to reset exit_reason. The solution to "if KVM is buggy then bad things happen" is to not have KVM bugs :-) From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (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 EC1DC1CAA2 for ; Thu, 2 Nov 2023 15:56:45 +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="N74LiKJV" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-d9cb4de3bf0so1385908276.0 for ; Thu, 02 Nov 2023 08:56:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=N74LiKJV1kGFhASyv4/WL4GEw/dI4QVpFx4+kWha6PCyO0Tdlrs/nmoAVFiOMOnVoG YvsHqgEr9QO8069cQw7Qu61yn7fionrKoM48WRQ9f0FAL4nRHvUSpCGDekomqa8gowDM VO+QY2LF53WE0vRrrg4bd3NPIRsriRU4bC1nonnbunk3RDu8BRw1ZOVyMexQDlJp/+0G C9AquS+QMOFG5A7iNKyXk/NTQqZ0Ws23rgbl3gvzzgcNXRQ8GBiYIbQFkw1JMF/aYHhA 2GME4S6nEpnhaDupoUSwmcj0KSXa/IqkhZTapYB+ldCucbOxU5wcpu6Ulv61JawsBqQv w8bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=msFz1v49jA7F16MFFSHN26ARm+ZfCU4QTp9nnWqvo3dbOeh3SxCy7vt4s54rWG4imF INXPPfitMeuXGuDwjUtITC3LVXO+T2aCcKRBpzSGnEfmQCLWfoPDSdpk0OV70aozD5Pd vL8jr+rV2uhILNS/en4EopAVNMhbKL9fneLawvWGm1/qwZ26Rio+bhTDRkEG1wf52rAp Eub6ACs9xvYZUdnsD35P4JKFSsQ/IMY4MjonfKkQq9yrtnDFpSOPVgKCbkX5pTkOkaRS Pasumvx7R9NhxxuKukbYsoQTtJqP2P/2TOE6qWw/pSmtp5cu02ZKmqxwRSslIqwp6oaU FqHQ== X-Gm-Message-State: AOJu0Yz9qrfX73OpReBrUAXgZbcnrcKdtIP49hfTwNibvP5ANZ7rMxVL cTRK8JzVpxO1i/2SpIR5WTPpE9HJLvU= X-Google-Smtp-Source: AGHT+IGZwkk8ZQOm5+11CB83zMzVhzLYncHDWYhyGGxNXJ5R5wT9b6yT+r/XAOkVnZeNHiaSF1GNxI0NkwA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:aae7:0:b0:da0:5a30:6887 with SMTP id t94-20020a25aae7000000b00da05a306887mr349504ybi.4.1698940604877; Thu, 02 Nov 2023 08:56:44 -0700 (PDT) Date: Thu, 2 Nov 2023 08:56:43 -0700 In-Reply-To: <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> 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-10-seanjc@google.com> <482bfea6f54ea1bb7d1ad75e03541d0ba0e5be6f.camel@intel.com> <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Message-ID: Subject: Re: [PATCH v13 09/35] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Kai Huang Cc: Xiaoyao Li , "kvm-riscv@lists.infradead.org" , "mic@digikod.net" , "liam.merwick@oracle.com" , Isaku Yamahata , "kvm@vger.kernel.org" , "pbonzini@redhat.com" , "kirill.shutemov@linux.intel.com" , "david@redhat.com" , "linux-fsdevel@vger.kernel.org" , "amoorthy@google.com" , "linuxppc-dev@lists.ozlabs.org" , "tabba@google.com" , "kvmarm@lists.linux.dev" , "linux-kernel@vger.kernel.org" , "michael.roth@amd.com" , "viro@zeniv.linux.org.uk" , "oliver.upton@linux.dev" , "chao.p.peng@linux.intel.com" , "palmer@dabbelt.com" , "chenhuacai@kernel.org" , "aou@eecs.berkeley.edu" , "linux-mips@vger.kernel.org" , "mpe@ellerman.id.au" , Vishal Annapurve , "vbabka@suse.cz" , "mail@maciej.szmigiero.name" , "linux-riscv@lists.infradead.org" , "maz@kernel.org" , "willy@infradead.org" , "dmatlack@google.com" , "anup@brainfault.org" , "yu.c.zhang@linux.intel.com" , Yilun Xu , "qperret@google.com" , "brauner@kernel.org" , "isaku.yamahata@gmail.com" , "ackerleytng@google.com" , "jarkko@kernel.org" , "paul.walmsley@sifive.com" , "linux-arm-kernel@lists.infradead.org" , "linux-mm@kvack.org" , Wei W Wang , "akpm@linux-foundation.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Thu, Nov 02, 2023, Kai Huang wrote: > On Wed, 2023-11-01 at 10:36 -0700, Sean Christopherson wrote: > > On Wed, Nov 01, 2023, Kai Huang wrote: > > >=20 > > > > +7.34 KVM_CAP_MEMORY_FAULT_INFO > > > > +------------------------------ > > > > + > > > > +:Architectures: x86 > > > > +:Returns: Informational only, -EINVAL on direct KVM_ENABLE_CAP. > > > > + > > > > +The presence of this capability indicates that KVM_RUN will fill > > > > +kvm_run.memory_fault if KVM cannot resolve a guest page fault VM-E= xit, e.g. if > > > > +there is a valid memslot but no backing VMA for the corresponding = host virtual > > > > +address. > > > > + > > > > +The information in kvm_run.memory_fault is valid if and only if KV= M_RUN returns > > > > +an error with errno=3DEFAULT or errno=3DEHWPOISON *and* kvm_run.ex= it_reason is set > > > > +to KVM_EXIT_MEMORY_FAULT. > > >=20 > > > IIUC returning -EFAULT or whatever -errno is sort of KVM internal > > > implementation. > >=20 > > The errno that is returned to userspace is ABI. In KVM, it's a _very_ = poorly > > defined ABI for the vast majority of ioctls(), but it's still technical= ly ABI. > > KVM gets away with being cavalier with errno because the vast majority = of errors > > are considered fatal by userespace, i.e. in most cases, userspace simpl= y doesn't > > care about the exact errno. > >=20 > > A good example is KVM_RUN with -EINTR; if KVM were to return something = other than > > -EINTR on a pending signal or vcpu->run->immediate_exit, userspace woul= d fall over. > >=20 > > > Is it better to relax the validity of kvm_run.memory_fault when > > > KVM_RUN returns any -errno? > >=20 > > Not unless there's a need to do so, and if there is then we can update = the > > documentation accordingly. If KVM's ABI is that kvm_run.memory_fault i= s valid > > for any errno, then KVM would need to purge kvm_run.exit_reason super e= arly in > > KVM_RUN, e.g. to prevent an -EINTR return due to immediate_exit from be= ing > > misinterpreted as KVM_EXIT_MEMORY_FAULT. And purging exit_reason super= early is > > subtly tricky because KVM's (again, poorly documented) ABI is that *som= e* exit > > reasons are preserved across KVM_RUN with vcpu->run->immediate_exit (or= with a > > pending signal). > >=20 > > https://lore.kernel.org/all/ZFFbwOXZ5uI%2Fgdaf@google.com > >=20 > >=20 >=20 > Agreed with not to relax to any errno. However using -EFAULT as part of = ABI > definition seems a little bit dangerous, e.g., someone could accidentally= or > mistakenly return -EFAULT in KVM_RUN at early time and/or in a completely > different code path, etc. =C2=A0-EINTR has well defined meaning, but -EFA= ULT (which > is "Bad address") seems doesn't but I am not sure either. :-) KVM has returned -EFAULT since forever, i.e. it's effectively already part = of the ABI. I doubt there's a userspace that relies precisely on -EFAULT, but use= rspace definitely will be confused if KVM returns '0' where KVM used to return -EF= AULT. And so if we want to return '0', it needs to be opt-in, which means forcing userspace to enable a capability *and* requires code in KVM to conditionall= y return '0' instead of -EFAULT/-EHWPOISON. > One example is, for backing VMA with VM_IO | VM_PFNMAP, hva_to_pfn() retu= rns > KVM_PFN_ERR_FAULT when the kernel cannot get a valid PFN (e.g. when SGX v= epc > fault handler failed to allocate EPC) and kvm_handle_error_pfn() will jus= t > return -EFAULT. If kvm_run.exit_reason isn't purged early then is it pos= sible > to have some issue here? Well, yeah, but that's exactly why this series has a patch to reset exit_re= ason. The solution to "if KVM is buggy then bad things happen" is to not have KVM= bugs :-) 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 EA0D0C4332F for ; Thu, 2 Nov 2023 15:56: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-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=zowmChg1QdUX/pbyxHOrANy5elDbiFrGHb/upITD3K8=; b=q2JT6yOjAzXfyW4fYvR2bFu2yh oM1eBclYSGTi6eHhVLjZLP10uBsIfB/lfb0NOdwnZrJUiWKl3YLIM4IKvwwniYyyT7bI0k2csMJeo w8XonD3EraSeGZ7F1IJFUsfchGpBTZ8zGJ1klcOfNwTy2qCXODch7+rPfg/PCJY1l+Qg3komrj2IJ UDGvubZmrzR5ZJlMGdHhRVSlKfWL47OWKjWcvKMXjGuuhGf30E+2AoMKLvTtNgFj38uqWUzJRLIUl kYTPgI+SzuANi6v8vRzClk43o3asPJzh6PI1QMcgGMsb/sJIc9FrXT5EyM2hnw4i4LX6SwX25Qka9 nw9YwVWg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qya3v-009ob1-1o; Thu, 02 Nov 2023 15:56:51 +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 1qya3s-009oYs-0O for linux-riscv@lists.infradead.org; Thu, 02 Nov 2023 15:56:49 +0000 Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-da1aa98ec19so1349586276.2 for ; Thu, 02 Nov 2023 08:56:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=LBWX4AgV789mWcvQcmbeJCE8i9G58j9nBks9/VsNAS+m46T5K+gNsaQjWjbvjWQo/1 w/g3DAMFhHsdD14EFT9GJQfNEerHsAZJvI37OTpDfkWkYqSRBbmD23cQ3Jri6s24AqVY phyu6Yh2GgibIcDwfXYKHgnP0D1DHBhuE1GqK/YfdGnzhdE+Ma7RpitkzoRhr2p6fztd Ntuwv2XTazi8FJO8xcX7y7tZZNizZFY3glfhD/sPy/fnOXJ4C7kaquUXeWNvaZX2H/6u Fqdw8tXsYmNUausHRRBCRDgIK+6AP9ut1A1NRzOyyHMpD0klMB1HsvGIseXntcmE44hg 560g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=aRWI1egP2bitxb7VWzQzgKOlW9PsomvXdCgN/ONHa2IowO31KTUolWyw9UZG0GjLS+ UX9c26He8vetT184R2nH3j+z2/AMyzRZT4ZdLcvF2MDOmgLWV6IYfDQ7135v0OTyMLgI 6lKtX9DO1U9ejM99Lcmhs1Ela1ZndwY+f9dR1KvVIdtTnI0FRJ8ATdIsXXw4Kds0E3lv otLhVh4KG5Tf9VqrPKt+9bcHBR/0KE2dZMo8YuYMLQI1GCWht7OmJgLHKkTv3F71bggT unQIDEzHJGs52rQpqmc2Cbhc09fWym9xhNILe/1Ty8WrG2vb9TTALGhEtjNIukbyUJE2 jbPQ== X-Gm-Message-State: AOJu0YyvIjGKIYGgUVHQaaTcgyZOukOV0q5U0/sI4/apq7x+oOEnZiEI yjcHzm7teOqkG4QTfLvXdW5af1s+Py0= X-Google-Smtp-Source: AGHT+IGZwkk8ZQOm5+11CB83zMzVhzLYncHDWYhyGGxNXJ5R5wT9b6yT+r/XAOkVnZeNHiaSF1GNxI0NkwA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:aae7:0:b0:da0:5a30:6887 with SMTP id t94-20020a25aae7000000b00da05a306887mr349504ybi.4.1698940604877; Thu, 02 Nov 2023 08:56:44 -0700 (PDT) Date: Thu, 2 Nov 2023 08:56:43 -0700 In-Reply-To: <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-10-seanjc@google.com> <482bfea6f54ea1bb7d1ad75e03541d0ba0e5be6f.camel@intel.com> <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Message-ID: Subject: Re: [PATCH v13 09/35] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Kai Huang Cc: Xiaoyao Li , "kvm-riscv@lists.infradead.org" , "mic@digikod.net" , "liam.merwick@oracle.com" , Isaku Yamahata , "kvm@vger.kernel.org" , "pbonzini@redhat.com" , "kirill.shutemov@linux.intel.com" , "david@redhat.com" , "linux-fsdevel@vger.kernel.org" , "amoorthy@google.com" , "linuxppc-dev@lists.ozlabs.org" , "tabba@google.com" , "kvmarm@lists.linux.dev" , "linux-kernel@vger.kernel.org" , "michael.roth@amd.com" , "viro@zeniv.linux.org.uk" , "oliver.upton@linux.dev" , "chao.p.peng@linux.intel.com" , "palmer@dabbelt.com" , "chenhuacai@kernel.org" , "aou@eecs.berkeley.edu" , "linux-mips@vger.kernel.org" , "mpe@ellerman.id.au" , Vishal Annapurve , "vbabka@suse.cz" , "mail@maciej.szmigiero.name" , "linux-riscv@lists.infradead.org" , "maz@kernel.org" , "willy@infradead.org" , "dmatlack@google.com" , "anup@brainfault.org" , "yu.c.zhang@linux.intel.com" , Yilun Xu , "qperret@google.com" , "brauner@kernel.org" , "isaku.yamahata@gmail.com" , "ackerleytng@google.com" , "jarkko@kernel.org" , "paul.walmsley@sifive.com" , "linux-arm-kernel@lists.infradead.org" , "linux-mm@kvack.org" , Wei W Wang , "akpm@linux-foundation.org" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231102_085648_158054_CAD40C30 X-CRM114-Status: GOOD ( 28.20 ) 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 T24gVGh1LCBOb3YgMDIsIDIwMjMsIEthaSBIdWFuZyB3cm90ZToKPiBPbiBXZWQsIDIwMjMtMTEt MDEgYXQgMTA6MzYgLTA3MDAsIFNlYW4gQ2hyaXN0b3BoZXJzb24gd3JvdGU6Cj4gPiBPbiBXZWQs IE5vdiAwMSwgMjAyMywgS2FpIEh1YW5nIHdyb3RlOgo+ID4gPiAKPiA+ID4gPiArNy4zNCBLVk1f Q0FQX01FTU9SWV9GQVVMVF9JTkZPCj4gPiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gPiA+ICsKPiA+ID4gPiArOkFyY2hpdGVjdHVyZXM6IHg4Ngo+ID4gPiA+ICs6UmV0 dXJuczogSW5mb3JtYXRpb25hbCBvbmx5LCAtRUlOVkFMIG9uIGRpcmVjdCBLVk1fRU5BQkxFX0NB UC4KPiA+ID4gPiArCj4gPiA+ID4gK1RoZSBwcmVzZW5jZSBvZiB0aGlzIGNhcGFiaWxpdHkgaW5k aWNhdGVzIHRoYXQgS1ZNX1JVTiB3aWxsIGZpbGwKPiA+ID4gPiAra3ZtX3J1bi5tZW1vcnlfZmF1 bHQgaWYgS1ZNIGNhbm5vdCByZXNvbHZlIGEgZ3Vlc3QgcGFnZSBmYXVsdCBWTS1FeGl0LCBlLmcu IGlmCj4gPiA+ID4gK3RoZXJlIGlzIGEgdmFsaWQgbWVtc2xvdCBidXQgbm8gYmFja2luZyBWTUEg Zm9yIHRoZSBjb3JyZXNwb25kaW5nIGhvc3QgdmlydHVhbAo+ID4gPiA+ICthZGRyZXNzLgo+ID4g PiA+ICsKPiA+ID4gPiArVGhlIGluZm9ybWF0aW9uIGluIGt2bV9ydW4ubWVtb3J5X2ZhdWx0IGlz IHZhbGlkIGlmIGFuZCBvbmx5IGlmIEtWTV9SVU4gcmV0dXJucwo+ID4gPiA+ICthbiBlcnJvciB3 aXRoIGVycm5vPUVGQVVMVCBvciBlcnJubz1FSFdQT0lTT04gKmFuZCoga3ZtX3J1bi5leGl0X3Jl YXNvbiBpcyBzZXQKPiA+ID4gPiArdG8gS1ZNX0VYSVRfTUVNT1JZX0ZBVUxULgo+ID4gPiAKPiA+ ID4gSUlVQyByZXR1cm5pbmcgLUVGQVVMVCBvciB3aGF0ZXZlciAtZXJybm8gaXMgc29ydCBvZiBL Vk0gaW50ZXJuYWwKPiA+ID4gaW1wbGVtZW50YXRpb24uCj4gPiAKPiA+IFRoZSBlcnJubyB0aGF0 IGlzIHJldHVybmVkIHRvIHVzZXJzcGFjZSBpcyBBQkkuICBJbiBLVk0sIGl0J3MgYSBfdmVyeV8g cG9vcmx5Cj4gPiBkZWZpbmVkIEFCSSBmb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgaW9jdGxzKCks IGJ1dCBpdCdzIHN0aWxsIHRlY2huaWNhbGx5IEFCSS4KPiA+IEtWTSBnZXRzIGF3YXkgd2l0aCBi ZWluZyBjYXZhbGllciB3aXRoIGVycm5vIGJlY2F1c2UgdGhlIHZhc3QgbWFqb3JpdHkgb2YgZXJy b3JzCj4gPiBhcmUgY29uc2lkZXJlZCBmYXRhbCBieSB1c2VyZXNwYWNlLCBpLmUuIGluIG1vc3Qg Y2FzZXMsIHVzZXJzcGFjZSBzaW1wbHkgZG9lc24ndAo+ID4gY2FyZSBhYm91dCB0aGUgZXhhY3Qg ZXJybm8uCj4gPiAKPiA+IEEgZ29vZCBleGFtcGxlIGlzIEtWTV9SVU4gd2l0aCAtRUlOVFI7IGlm IEtWTSB3ZXJlIHRvIHJldHVybiBzb21ldGhpbmcgb3RoZXIgdGhhbgo+ID4gLUVJTlRSIG9uIGEg cGVuZGluZyBzaWduYWwgb3IgdmNwdS0+cnVuLT5pbW1lZGlhdGVfZXhpdCwgdXNlcnNwYWNlIHdv dWxkIGZhbGwgb3Zlci4KPiA+IAo+ID4gPiBJcyBpdCBiZXR0ZXIgdG8gcmVsYXggdGhlIHZhbGlk aXR5IG9mIGt2bV9ydW4ubWVtb3J5X2ZhdWx0IHdoZW4KPiA+ID4gS1ZNX1JVTiByZXR1cm5zIGFu eSAtZXJybm8/Cj4gPiAKPiA+IE5vdCB1bmxlc3MgdGhlcmUncyBhIG5lZWQgdG8gZG8gc28sIGFu ZCBpZiB0aGVyZSBpcyB0aGVuIHdlIGNhbiB1cGRhdGUgdGhlCj4gPiBkb2N1bWVudGF0aW9uIGFj Y29yZGluZ2x5LiAgSWYgS1ZNJ3MgQUJJIGlzIHRoYXQga3ZtX3J1bi5tZW1vcnlfZmF1bHQgaXMg dmFsaWQKPiA+IGZvciBhbnkgZXJybm8sIHRoZW4gS1ZNIHdvdWxkIG5lZWQgdG8gcHVyZ2Uga3Zt X3J1bi5leGl0X3JlYXNvbiBzdXBlciBlYXJseSBpbgo+ID4gS1ZNX1JVTiwgZS5nLiB0byBwcmV2 ZW50IGFuIC1FSU5UUiByZXR1cm4gZHVlIHRvIGltbWVkaWF0ZV9leGl0IGZyb20gYmVpbmcKPiA+ IG1pc2ludGVycHJldGVkIGFzIEtWTV9FWElUX01FTU9SWV9GQVVMVC4gIEFuZCBwdXJnaW5nIGV4 aXRfcmVhc29uIHN1cGVyIGVhcmx5IGlzCj4gPiBzdWJ0bHkgdHJpY2t5IGJlY2F1c2UgS1ZNJ3Mg KGFnYWluLCBwb29ybHkgZG9jdW1lbnRlZCkgQUJJIGlzIHRoYXQgKnNvbWUqIGV4aXQKPiA+IHJl YXNvbnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgS1ZNX1JVTiB3aXRoIHZjcHUtPnJ1bi0+aW1tZWRp YXRlX2V4aXQgKG9yIHdpdGggYQo+ID4gcGVuZGluZyBzaWduYWwpLgo+ID4gCj4gPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvWkZGYndPWFo1dUklMkZnZGFmQGdvb2dsZS5jb20KPiA+IAo+ ID4gCj4gCj4gQWdyZWVkIHdpdGggbm90IHRvIHJlbGF4IHRvIGFueSBlcnJuby4gIEhvd2V2ZXIg dXNpbmcgLUVGQVVMVCBhcyBwYXJ0IG9mIEFCSQo+IGRlZmluaXRpb24gc2VlbXMgYSBsaXR0bGUg Yml0IGRhbmdlcm91cywgZS5nLiwgc29tZW9uZSBjb3VsZCBhY2NpZGVudGFsbHkgb3IKPiBtaXN0 YWtlbmx5IHJldHVybiAtRUZBVUxUIGluIEtWTV9SVU4gYXQgZWFybHkgdGltZSBhbmQvb3IgaW4g YSBjb21wbGV0ZWx5Cj4gZGlmZmVyZW50IGNvZGUgcGF0aCwgZXRjLiDCoC1FSU5UUiBoYXMgd2Vs bCBkZWZpbmVkIG1lYW5pbmcsIGJ1dCAtRUZBVUxUICh3aGljaAo+IGlzICJCYWQgYWRkcmVzcyIp IHNlZW1zIGRvZXNuJ3QgYnV0IEkgYW0gbm90IHN1cmUgZWl0aGVyLiA6LSkKCktWTSBoYXMgcmV0 dXJuZWQgLUVGQVVMVCBzaW5jZSBmb3JldmVyLCBpLmUuIGl0J3MgZWZmZWN0aXZlbHkgYWxyZWFk eSBwYXJ0IG9mIHRoZQpBQkkuICBJIGRvdWJ0IHRoZXJlJ3MgYSB1c2Vyc3BhY2UgdGhhdCByZWxp ZXMgcHJlY2lzZWx5IG9uIC1FRkFVTFQsIGJ1dCB1c2Vyc3BhY2UKZGVmaW5pdGVseSB3aWxsIGJl IGNvbmZ1c2VkIGlmIEtWTSByZXR1cm5zICcwJyB3aGVyZSBLVk0gdXNlZCB0byByZXR1cm4gLUVG QVVMVC4KQW5kIHNvIGlmIHdlIHdhbnQgdG8gcmV0dXJuICcwJywgaXQgbmVlZHMgdG8gYmUgb3B0 LWluLCB3aGljaCBtZWFucyBmb3JjaW5nCnVzZXJzcGFjZSB0byBlbmFibGUgYSBjYXBhYmlsaXR5 ICphbmQqIHJlcXVpcmVzIGNvZGUgaW4gS1ZNIHRvIGNvbmRpdGlvbmFsbHkgcmV0dXJuCicwJyBp bnN0ZWFkIG9mIC1FRkFVTFQvLUVIV1BPSVNPTi4KCj4gT25lIGV4YW1wbGUgaXMsIGZvciBiYWNr aW5nIFZNQSB3aXRoIFZNX0lPIHwgVk1fUEZOTUFQLCBodmFfdG9fcGZuKCkgcmV0dXJucwo+IEtW TV9QRk5fRVJSX0ZBVUxUIHdoZW4gdGhlIGtlcm5lbCBjYW5ub3QgZ2V0IGEgdmFsaWQgUEZOIChl LmcuIHdoZW4gU0dYIHZlcGMKPiBmYXVsdCBoYW5kbGVyIGZhaWxlZCB0byBhbGxvY2F0ZSBFUEMp IGFuZCBrdm1faGFuZGxlX2Vycm9yX3BmbigpIHdpbGwganVzdAo+IHJldHVybiAtRUZBVUxULiAg SWYga3ZtX3J1bi5leGl0X3JlYXNvbiBpc24ndCBwdXJnZWQgZWFybHkgdGhlbiBpcyBpdCBwb3Nz aWJsZQo+IHRvIGhhdmUgc29tZSBpc3N1ZSBoZXJlPwoKV2VsbCwgeWVhaCwgYnV0IHRoYXQncyBl eGFjdGx5IHdoeSB0aGlzIHNlcmllcyBoYXMgYSBwYXRjaCB0byByZXNldCBleGl0X3JlYXNvbi4K VGhlIHNvbHV0aW9uIHRvICJpZiBLVk0gaXMgYnVnZ3kgdGhlbiBiYWQgdGhpbmdzIGhhcHBlbiIg aXMgdG8gbm90IGhhdmUgS1ZNIGJ1Z3MgOi0pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 BA0AEC4332F for ; Thu, 2 Nov 2023 15:57:41 +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=Wyj2cOzU; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4SLpRm2htvz3dBv for ; Fri, 3 Nov 2023 02:57:40 +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=Wyj2cOzU; 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::b4a; helo=mail-yb1-xb4a.google.com; envelope-from=3vmzdzqykdik5rn0wpt11tyr.p1zyv07a22p-qr8yv565.1cyno5.14t@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) (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 4SLpQm34Q6z3cbt for ; Fri, 3 Nov 2023 02:56:48 +1100 (AEDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-da1aa98ec19so1349587276.2 for ; Thu, 02 Nov 2023 08:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=Wyj2cOzUANgXy4q6LVAN27yM+elGFARnCrTBLUVbAfiXhO2m9J++oBN2qtHS2oNvW6 gRUpHfMZRaY8sFwonkhTaxDlNr4in5dkLS4GMI/zID1Obza7B0kBBzq4qfG2bkYs0kUt KAiW8Dav89diIARDOWFr7CgK5+YSgO6QhzDirzbKl5cnXhZuOtjYUbsehS5x5E3sU9GL HwHdohwm/xb1FL1oWu2j4Ad0HEX7G2LA13vxgYoW5AsNKsceT7LC5wyH/u/WlhxDrUIR LyM+aiONNbQ8P8vK7/u190Erp/Z9QgwP4sZiTqGxSGjkqGpA5n6rYTTPkhyvlWgjkd1U yK0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=kFPYV8yuw8SFgHnKBWqdddiiqO8oNNBOwvhWFYiBJ/H3HaHNXG39l/a8h4mGio8JX0 f1UEVI4y6dOFW8m9iYtMASCW3e7zbzyMRWAAOy+0Y6ayQZgCcAvQVJ5+C2+FmWRzvG6j NLNz96EmpAXzt+hL9YjC6O991Hhn0emrAFio5l7KcjI18Nk6dtFv3XZELVEyakggMF7p EG/x4I3Uw7s4RPQeJMdRGFi/DD9dy6roEMfl0riBrlI6sjSkkesTbUup6KP1aiua2Sdp HRSiuDadlQnjeBeZ0L4596SsAMlg2bUI8TeWJjHs4OjcF8EJn/oq3Xr5NnLPglvCgIY7 NtLA== X-Gm-Message-State: AOJu0YzzlD2VNUEMuIBP28XObilFsE+CcdaDbT/GPhlZbvDT6kbOWylk PFsiYEBlv34j33+wWMlhcxOhEHoMsks= X-Google-Smtp-Source: AGHT+IGZwkk8ZQOm5+11CB83zMzVhzLYncHDWYhyGGxNXJ5R5wT9b6yT+r/XAOkVnZeNHiaSF1GNxI0NkwA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:aae7:0:b0:da0:5a30:6887 with SMTP id t94-20020a25aae7000000b00da05a306887mr349504ybi.4.1698940604877; Thu, 02 Nov 2023 08:56:44 -0700 (PDT) Date: Thu, 2 Nov 2023 08:56:43 -0700 In-Reply-To: <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-10-seanjc@google.com> <482bfea6f54ea1bb7d1ad75e03541d0ba0e5be6f.camel@intel.com> <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Message-ID: Subject: Re: [PATCH v13 09/35] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Kai Huang 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@redhat.com" , "paul.walmsley@sifive.com" , "linux-mips@vger.kernel.org" , "linux-mm@kvack.org" , "mic@digikod.net" , "chao.p.peng@linux.intel.com" , "linux-riscv@lists.infradead.org" , "isaku.yamahata@gmail.com" , "chenhuacai@kernel.org" , Xiaoyao Li , "willy@infradead.org" , Wei W Wang , "vbabka@suse.cz" , "yu.c.zhang@linux.intel.com" , "linux-arm-kernel@lists.infradead.org" , "mail@maciej.szmigiero.name" , "aou@eecs.berkeley.edu" , "michael.roth@amd.com" , "ackerleytng@google.com" , "viro@zeniv.linux.org.uk" , "liam.merwick@oracle.com" , "kvmarm@lists.linux.dev" , "tabba@google.com" , Isaku Yamahata , "brauner@kernel.org" , "qperret@google.com" , "anup@brainfault.org" , "linux-kernel@vger.kernel.org" , "oliver.upton@linux.dev" , "dmatlack@google.com" , "jarkko@kernel.org" , "palmer@dabbelt.com" , "kirill.shutemov@linux.intel.com" , "kvm-riscv@lists.infradead.org" , "maz@kernel.org" , "linux-fsdevel@vger.kernel.org" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" , Vishal Annapurve , "linuxppc-dev@lists.ozlabs.org" , Yilun Xu , "amoorthy@google.com" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Thu, Nov 02, 2023, Kai Huang wrote: > On Wed, 2023-11-01 at 10:36 -0700, Sean Christopherson wrote: > > On Wed, Nov 01, 2023, Kai Huang wrote: > > >=20 > > > > +7.34 KVM_CAP_MEMORY_FAULT_INFO > > > > +------------------------------ > > > > + > > > > +:Architectures: x86 > > > > +:Returns: Informational only, -EINVAL on direct KVM_ENABLE_CAP. > > > > + > > > > +The presence of this capability indicates that KVM_RUN will fill > > > > +kvm_run.memory_fault if KVM cannot resolve a guest page fault VM-E= xit, e.g. if > > > > +there is a valid memslot but no backing VMA for the corresponding = host virtual > > > > +address. > > > > + > > > > +The information in kvm_run.memory_fault is valid if and only if KV= M_RUN returns > > > > +an error with errno=3DEFAULT or errno=3DEHWPOISON *and* kvm_run.ex= it_reason is set > > > > +to KVM_EXIT_MEMORY_FAULT. > > >=20 > > > IIUC returning -EFAULT or whatever -errno is sort of KVM internal > > > implementation. > >=20 > > The errno that is returned to userspace is ABI. In KVM, it's a _very_ = poorly > > defined ABI for the vast majority of ioctls(), but it's still technical= ly ABI. > > KVM gets away with being cavalier with errno because the vast majority = of errors > > are considered fatal by userespace, i.e. in most cases, userspace simpl= y doesn't > > care about the exact errno. > >=20 > > A good example is KVM_RUN with -EINTR; if KVM were to return something = other than > > -EINTR on a pending signal or vcpu->run->immediate_exit, userspace woul= d fall over. > >=20 > > > Is it better to relax the validity of kvm_run.memory_fault when > > > KVM_RUN returns any -errno? > >=20 > > Not unless there's a need to do so, and if there is then we can update = the > > documentation accordingly. If KVM's ABI is that kvm_run.memory_fault i= s valid > > for any errno, then KVM would need to purge kvm_run.exit_reason super e= arly in > > KVM_RUN, e.g. to prevent an -EINTR return due to immediate_exit from be= ing > > misinterpreted as KVM_EXIT_MEMORY_FAULT. And purging exit_reason super= early is > > subtly tricky because KVM's (again, poorly documented) ABI is that *som= e* exit > > reasons are preserved across KVM_RUN with vcpu->run->immediate_exit (or= with a > > pending signal). > >=20 > > https://lore.kernel.org/all/ZFFbwOXZ5uI%2Fgdaf@google.com > >=20 > >=20 >=20 > Agreed with not to relax to any errno. However using -EFAULT as part of = ABI > definition seems a little bit dangerous, e.g., someone could accidentally= or > mistakenly return -EFAULT in KVM_RUN at early time and/or in a completely > different code path, etc. =C2=A0-EINTR has well defined meaning, but -EFA= ULT (which > is "Bad address") seems doesn't but I am not sure either. :-) KVM has returned -EFAULT since forever, i.e. it's effectively already part = of the ABI. I doubt there's a userspace that relies precisely on -EFAULT, but use= rspace definitely will be confused if KVM returns '0' where KVM used to return -EF= AULT. And so if we want to return '0', it needs to be opt-in, which means forcing userspace to enable a capability *and* requires code in KVM to conditionall= y return '0' instead of -EFAULT/-EHWPOISON. > One example is, for backing VMA with VM_IO | VM_PFNMAP, hva_to_pfn() retu= rns > KVM_PFN_ERR_FAULT when the kernel cannot get a valid PFN (e.g. when SGX v= epc > fault handler failed to allocate EPC) and kvm_handle_error_pfn() will jus= t > return -EFAULT. If kvm_run.exit_reason isn't purged early then is it pos= sible > to have some issue here? Well, yeah, but that's exactly why this series has a patch to reset exit_re= ason. The solution to "if KVM is buggy then bad things happen" is to not have KVM= bugs :-) 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 6BAAFC4332F for ; Thu, 2 Nov 2023 15:57:21 +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=FG/bGxfQblzZ7QJVGnLuCN4SzkWi3xszTmwdeQ7kb2E=; b=uP8Qd4ByIYQexYuGo4ahmQXFlt KApHzCQPuhA/BrMf8VdiKmJhOHOJX1/Zp8wUKT2GdOArl9y0Lcv+EJRlCHAbgL/a+Sg2vFDreJLd2 oWmN0PIrxGLNA7fMF9nASPymw8vC3Zo4cZfJsjMD63A4cUnZ0VhiZWVfsH/yT8v0yKuBMYUN4rnqt 4NQZEqnvOv7ia32a5lWbUEFLbv7qAz/6Mdfz1MNHNp98J8Y6YmsTMz7M/I8ETo9t59sK5y2Xa6m/u iRkF4YcNpvtmUSQIqL+vC7Gz3PfU/UxD1/I4Yx1Rz98RIT5HW+MLnjuTkcBQEfEhRrIiDGrR8e9ti bRXFyhDQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qya3w-009obc-0e; Thu, 02 Nov 2023 15:56:52 +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 1qya3s-009oYr-10 for linux-arm-kernel@lists.infradead.org; Thu, 02 Nov 2023 15:56:51 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d9cb4de3bf0so1385911276.0 for ; Thu, 02 Nov 2023 08:56:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=LBWX4AgV789mWcvQcmbeJCE8i9G58j9nBks9/VsNAS+m46T5K+gNsaQjWjbvjWQo/1 w/g3DAMFhHsdD14EFT9GJQfNEerHsAZJvI37OTpDfkWkYqSRBbmD23cQ3Jri6s24AqVY phyu6Yh2GgibIcDwfXYKHgnP0D1DHBhuE1GqK/YfdGnzhdE+Ma7RpitkzoRhr2p6fztd Ntuwv2XTazi8FJO8xcX7y7tZZNizZFY3glfhD/sPy/fnOXJ4C7kaquUXeWNvaZX2H/6u Fqdw8tXsYmNUausHRRBCRDgIK+6AP9ut1A1NRzOyyHMpD0klMB1HsvGIseXntcmE44hg 560g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698940605; x=1699545405; 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=sYwIeNUmcSQVXWofeU45UHS4WNGoW8dkX+AiEs9OLu8=; b=SXCwe/ncEWyn59nHancPmwA5fJUjxvmxTsYuX8OF0yi8AW7iDhk0yZVYLjrWgPBSiD 0CMQH3CTiuxtCX7fEphcKQ7LQo5M74wn3d++DZ9T2FdEB8j8JAfBLTz0GHtMFLqNrsUX v/PRz6Z56+kAsjkY+d1VAgZad2mWjQ0n/u7YDx+QCx14318dFopF7JRkee07nkxswC82 oxrmIB2u4wgErZjl14cnmiTSGUwx9jzhyNLysP6wynp7czj2g3ENXa6nqKN3ip6iqARC d5LGsrphlZJlwh1Q59bL7VfSQFQyIPRSxVe52ZpMYA1uzoo8dWxlx6F2CqnkmoN1Iawh PqlA== X-Gm-Message-State: AOJu0YxqUae06V9BglN606H74rlBm/IpjQRDVhA/c7tX4df4fCyoNxSC ttkeKxm+I84ElAFP05PcT3x8YCPyOdM= X-Google-Smtp-Source: AGHT+IGZwkk8ZQOm5+11CB83zMzVhzLYncHDWYhyGGxNXJ5R5wT9b6yT+r/XAOkVnZeNHiaSF1GNxI0NkwA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:aae7:0:b0:da0:5a30:6887 with SMTP id t94-20020a25aae7000000b00da05a306887mr349504ybi.4.1698940604877; Thu, 02 Nov 2023 08:56:44 -0700 (PDT) Date: Thu, 2 Nov 2023 08:56:43 -0700 In-Reply-To: <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Mime-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-10-seanjc@google.com> <482bfea6f54ea1bb7d1ad75e03541d0ba0e5be6f.camel@intel.com> <64e3764e36ba7a00d94cc7db1dea1ef06b620aaf.camel@intel.com> Message-ID: Subject: Re: [PATCH v13 09/35] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Kai Huang Cc: Xiaoyao Li , "kvm-riscv@lists.infradead.org" , "mic@digikod.net" , "liam.merwick@oracle.com" , Isaku Yamahata , "kvm@vger.kernel.org" , "pbonzini@redhat.com" , "kirill.shutemov@linux.intel.com" , "david@redhat.com" , "linux-fsdevel@vger.kernel.org" , "amoorthy@google.com" , "linuxppc-dev@lists.ozlabs.org" , "tabba@google.com" , "kvmarm@lists.linux.dev" , "linux-kernel@vger.kernel.org" , "michael.roth@amd.com" , "viro@zeniv.linux.org.uk" , "oliver.upton@linux.dev" , "chao.p.peng@linux.intel.com" , "palmer@dabbelt.com" , "chenhuacai@kernel.org" , "aou@eecs.berkeley.edu" , "linux-mips@vger.kernel.org" , "mpe@ellerman.id.au" , Vishal Annapurve , "vbabka@suse.cz" , "mail@maciej.szmigiero.name" , "linux-riscv@lists.infradead.org" , "maz@kernel.org" , "willy@infradead.org" , "dmatlack@google.com" , "anup@brainfault.org" , "yu.c.zhang@linux.intel.com" , Yilun Xu , "qperret@google.com" , "brauner@kernel.org" , "isaku.yamahata@gmail.com" , "ackerleytng@google.com" , "jarkko@kernel.org" , "paul.walmsley@sifive.com" , "linux-arm-kernel@lists.infradead.org" , "linux-mm@kvack.org" , Wei W Wang , "akpm@linux-foundation.org" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231102_085648_351305_CBBC6BF0 X-CRM114-Status: GOOD ( 29.66 ) 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 T24gVGh1LCBOb3YgMDIsIDIwMjMsIEthaSBIdWFuZyB3cm90ZToKPiBPbiBXZWQsIDIwMjMtMTEt MDEgYXQgMTA6MzYgLTA3MDAsIFNlYW4gQ2hyaXN0b3BoZXJzb24gd3JvdGU6Cj4gPiBPbiBXZWQs IE5vdiAwMSwgMjAyMywgS2FpIEh1YW5nIHdyb3RlOgo+ID4gPiAKPiA+ID4gPiArNy4zNCBLVk1f Q0FQX01FTU9SWV9GQVVMVF9JTkZPCj4gPiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gPiA+ICsKPiA+ID4gPiArOkFyY2hpdGVjdHVyZXM6IHg4Ngo+ID4gPiA+ICs6UmV0 dXJuczogSW5mb3JtYXRpb25hbCBvbmx5LCAtRUlOVkFMIG9uIGRpcmVjdCBLVk1fRU5BQkxFX0NB UC4KPiA+ID4gPiArCj4gPiA+ID4gK1RoZSBwcmVzZW5jZSBvZiB0aGlzIGNhcGFiaWxpdHkgaW5k aWNhdGVzIHRoYXQgS1ZNX1JVTiB3aWxsIGZpbGwKPiA+ID4gPiAra3ZtX3J1bi5tZW1vcnlfZmF1 bHQgaWYgS1ZNIGNhbm5vdCByZXNvbHZlIGEgZ3Vlc3QgcGFnZSBmYXVsdCBWTS1FeGl0LCBlLmcu IGlmCj4gPiA+ID4gK3RoZXJlIGlzIGEgdmFsaWQgbWVtc2xvdCBidXQgbm8gYmFja2luZyBWTUEg Zm9yIHRoZSBjb3JyZXNwb25kaW5nIGhvc3QgdmlydHVhbAo+ID4gPiA+ICthZGRyZXNzLgo+ID4g PiA+ICsKPiA+ID4gPiArVGhlIGluZm9ybWF0aW9uIGluIGt2bV9ydW4ubWVtb3J5X2ZhdWx0IGlz IHZhbGlkIGlmIGFuZCBvbmx5IGlmIEtWTV9SVU4gcmV0dXJucwo+ID4gPiA+ICthbiBlcnJvciB3 aXRoIGVycm5vPUVGQVVMVCBvciBlcnJubz1FSFdQT0lTT04gKmFuZCoga3ZtX3J1bi5leGl0X3Jl YXNvbiBpcyBzZXQKPiA+ID4gPiArdG8gS1ZNX0VYSVRfTUVNT1JZX0ZBVUxULgo+ID4gPiAKPiA+ ID4gSUlVQyByZXR1cm5pbmcgLUVGQVVMVCBvciB3aGF0ZXZlciAtZXJybm8gaXMgc29ydCBvZiBL Vk0gaW50ZXJuYWwKPiA+ID4gaW1wbGVtZW50YXRpb24uCj4gPiAKPiA+IFRoZSBlcnJubyB0aGF0 IGlzIHJldHVybmVkIHRvIHVzZXJzcGFjZSBpcyBBQkkuICBJbiBLVk0sIGl0J3MgYSBfdmVyeV8g cG9vcmx5Cj4gPiBkZWZpbmVkIEFCSSBmb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgaW9jdGxzKCks IGJ1dCBpdCdzIHN0aWxsIHRlY2huaWNhbGx5IEFCSS4KPiA+IEtWTSBnZXRzIGF3YXkgd2l0aCBi ZWluZyBjYXZhbGllciB3aXRoIGVycm5vIGJlY2F1c2UgdGhlIHZhc3QgbWFqb3JpdHkgb2YgZXJy b3JzCj4gPiBhcmUgY29uc2lkZXJlZCBmYXRhbCBieSB1c2VyZXNwYWNlLCBpLmUuIGluIG1vc3Qg Y2FzZXMsIHVzZXJzcGFjZSBzaW1wbHkgZG9lc24ndAo+ID4gY2FyZSBhYm91dCB0aGUgZXhhY3Qg ZXJybm8uCj4gPiAKPiA+IEEgZ29vZCBleGFtcGxlIGlzIEtWTV9SVU4gd2l0aCAtRUlOVFI7IGlm IEtWTSB3ZXJlIHRvIHJldHVybiBzb21ldGhpbmcgb3RoZXIgdGhhbgo+ID4gLUVJTlRSIG9uIGEg cGVuZGluZyBzaWduYWwgb3IgdmNwdS0+cnVuLT5pbW1lZGlhdGVfZXhpdCwgdXNlcnNwYWNlIHdv dWxkIGZhbGwgb3Zlci4KPiA+IAo+ID4gPiBJcyBpdCBiZXR0ZXIgdG8gcmVsYXggdGhlIHZhbGlk aXR5IG9mIGt2bV9ydW4ubWVtb3J5X2ZhdWx0IHdoZW4KPiA+ID4gS1ZNX1JVTiByZXR1cm5zIGFu eSAtZXJybm8/Cj4gPiAKPiA+IE5vdCB1bmxlc3MgdGhlcmUncyBhIG5lZWQgdG8gZG8gc28sIGFu ZCBpZiB0aGVyZSBpcyB0aGVuIHdlIGNhbiB1cGRhdGUgdGhlCj4gPiBkb2N1bWVudGF0aW9uIGFj Y29yZGluZ2x5LiAgSWYgS1ZNJ3MgQUJJIGlzIHRoYXQga3ZtX3J1bi5tZW1vcnlfZmF1bHQgaXMg dmFsaWQKPiA+IGZvciBhbnkgZXJybm8sIHRoZW4gS1ZNIHdvdWxkIG5lZWQgdG8gcHVyZ2Uga3Zt X3J1bi5leGl0X3JlYXNvbiBzdXBlciBlYXJseSBpbgo+ID4gS1ZNX1JVTiwgZS5nLiB0byBwcmV2 ZW50IGFuIC1FSU5UUiByZXR1cm4gZHVlIHRvIGltbWVkaWF0ZV9leGl0IGZyb20gYmVpbmcKPiA+ IG1pc2ludGVycHJldGVkIGFzIEtWTV9FWElUX01FTU9SWV9GQVVMVC4gIEFuZCBwdXJnaW5nIGV4 aXRfcmVhc29uIHN1cGVyIGVhcmx5IGlzCj4gPiBzdWJ0bHkgdHJpY2t5IGJlY2F1c2UgS1ZNJ3Mg KGFnYWluLCBwb29ybHkgZG9jdW1lbnRlZCkgQUJJIGlzIHRoYXQgKnNvbWUqIGV4aXQKPiA+IHJl YXNvbnMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgS1ZNX1JVTiB3aXRoIHZjcHUtPnJ1bi0+aW1tZWRp YXRlX2V4aXQgKG9yIHdpdGggYQo+ID4gcGVuZGluZyBzaWduYWwpLgo+ID4gCj4gPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvWkZGYndPWFo1dUklMkZnZGFmQGdvb2dsZS5jb20KPiA+IAo+ ID4gCj4gCj4gQWdyZWVkIHdpdGggbm90IHRvIHJlbGF4IHRvIGFueSBlcnJuby4gIEhvd2V2ZXIg dXNpbmcgLUVGQVVMVCBhcyBwYXJ0IG9mIEFCSQo+IGRlZmluaXRpb24gc2VlbXMgYSBsaXR0bGUg Yml0IGRhbmdlcm91cywgZS5nLiwgc29tZW9uZSBjb3VsZCBhY2NpZGVudGFsbHkgb3IKPiBtaXN0 YWtlbmx5IHJldHVybiAtRUZBVUxUIGluIEtWTV9SVU4gYXQgZWFybHkgdGltZSBhbmQvb3IgaW4g YSBjb21wbGV0ZWx5Cj4gZGlmZmVyZW50IGNvZGUgcGF0aCwgZXRjLiDCoC1FSU5UUiBoYXMgd2Vs bCBkZWZpbmVkIG1lYW5pbmcsIGJ1dCAtRUZBVUxUICh3aGljaAo+IGlzICJCYWQgYWRkcmVzcyIp IHNlZW1zIGRvZXNuJ3QgYnV0IEkgYW0gbm90IHN1cmUgZWl0aGVyLiA6LSkKCktWTSBoYXMgcmV0 dXJuZWQgLUVGQVVMVCBzaW5jZSBmb3JldmVyLCBpLmUuIGl0J3MgZWZmZWN0aXZlbHkgYWxyZWFk eSBwYXJ0IG9mIHRoZQpBQkkuICBJIGRvdWJ0IHRoZXJlJ3MgYSB1c2Vyc3BhY2UgdGhhdCByZWxp ZXMgcHJlY2lzZWx5IG9uIC1FRkFVTFQsIGJ1dCB1c2Vyc3BhY2UKZGVmaW5pdGVseSB3aWxsIGJl IGNvbmZ1c2VkIGlmIEtWTSByZXR1cm5zICcwJyB3aGVyZSBLVk0gdXNlZCB0byByZXR1cm4gLUVG QVVMVC4KQW5kIHNvIGlmIHdlIHdhbnQgdG8gcmV0dXJuICcwJywgaXQgbmVlZHMgdG8gYmUgb3B0 LWluLCB3aGljaCBtZWFucyBmb3JjaW5nCnVzZXJzcGFjZSB0byBlbmFibGUgYSBjYXBhYmlsaXR5 ICphbmQqIHJlcXVpcmVzIGNvZGUgaW4gS1ZNIHRvIGNvbmRpdGlvbmFsbHkgcmV0dXJuCicwJyBp bnN0ZWFkIG9mIC1FRkFVTFQvLUVIV1BPSVNPTi4KCj4gT25lIGV4YW1wbGUgaXMsIGZvciBiYWNr aW5nIFZNQSB3aXRoIFZNX0lPIHwgVk1fUEZOTUFQLCBodmFfdG9fcGZuKCkgcmV0dXJucwo+IEtW TV9QRk5fRVJSX0ZBVUxUIHdoZW4gdGhlIGtlcm5lbCBjYW5ub3QgZ2V0IGEgdmFsaWQgUEZOIChl LmcuIHdoZW4gU0dYIHZlcGMKPiBmYXVsdCBoYW5kbGVyIGZhaWxlZCB0byBhbGxvY2F0ZSBFUEMp IGFuZCBrdm1faGFuZGxlX2Vycm9yX3BmbigpIHdpbGwganVzdAo+IHJldHVybiAtRUZBVUxULiAg SWYga3ZtX3J1bi5leGl0X3JlYXNvbiBpc24ndCBwdXJnZWQgZWFybHkgdGhlbiBpcyBpdCBwb3Nz aWJsZQo+IHRvIGhhdmUgc29tZSBpc3N1ZSBoZXJlPwoKV2VsbCwgeWVhaCwgYnV0IHRoYXQncyBl eGFjdGx5IHdoeSB0aGlzIHNlcmllcyBoYXMgYSBwYXRjaCB0byByZXNldCBleGl0X3JlYXNvbi4K VGhlIHNvbHV0aW9uIHRvICJpZiBLVk0gaXMgYnVnZ3kgdGhlbiBiYWQgdGhpbmdzIGhhcHBlbiIg aXMgdG8gbm90IGhhdmUgS1ZNIGJ1Z3MgOi0pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==