From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Christopherson Date: Fri, 22 Sep 2023 09:35:55 -0700 Subject: [RFC PATCH v12 07/33] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace In-Reply-To: References: <20230914015531.1419405-1-seanjc@google.com> <20230914015531.1419405-8-seanjc@google.com> <117db856-9aec-e91c-b1d4-db2b90ae563d@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 Fri, Sep 22, 2023, Sean Christopherson wrote: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 7c0e38752526..d13b646188e5 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -4184,6 +4184,16 @@ static long kvm_vcpu_ioctl(struct file *filp, > synchronize_rcu(); > put_pid(oldpid); > } > + > + /* > + * Reset the exit reason if the previous userspace exit was due > + * to a memory fault. Not all -EFAULT exits are annotated, and > + * so leaving exit_reason set to KVM_EXIT_MEMORY_FAULT could > + * result in feeding userspace stale information. > + */ > + if (vcpu->run->exit_reason == KVM_EXIT_MEMORY_FAULT) > + vcpu->run->exit_reason = KVM_EXIT_UNKNOWN Darn semicolons. Doesn't look like I botched anything else though. > + > r = kvm_arch_vcpu_ioctl_run(vcpu); > trace_kvm_userspace_exit(vcpu->run->exit_reason, r); > break; > > base-commit: 2358793cd9062b068ac25ac9c965c00d685eea92 > -- > 2.42.0.515.g380fc7ccd1-goog > From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 D1C763D986 for ; Fri, 22 Sep 2023 16:35:59 +0000 (UTC) Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-59c12d31d04so32887557b3.1 for ; Fri, 22 Sep 2023 09:35:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695400558; x=1696005358; darn=lists.linux.dev; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Q0oE+/MaiDFgsp6iziho8X2Tgq3nTZtQM1PapiHujnw=; b=D+O0U7oPBjybCL+sOUVXSDEYrrIW5BrkofblOaV6/+O64rG6luXtchfoC9IRUQskr3 O8CZxYlDliAECaoeKbzCv7gzqM/XOcsyIqWz5uW68KMgv6x4ZoDLTB6mDo/h7ym51B6e zqMKl3gdVc/sFpcNhrg1PDUtVjDJRXHqS0JA7lGYxqdFx8YwJ6L0qS5niMD8F8cc25Zc F3e8wLBRIpIFUA8vYXAjxbjI8I8gX1m8u1EFSr96bFXBT2aotQP8LpE3S2VqxJ0X9uhv zv7mfyoaA7zqAcAHuam8BHGG/nF6V1kKzzY3JD0gmHtKslopkfG+ZY+UWNiW7DglMLXM S8zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695400558; x=1696005358; h=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=Q0oE+/MaiDFgsp6iziho8X2Tgq3nTZtQM1PapiHujnw=; b=G1PdPn5nhrC03cTYTWHeIzfH5fpLJoLDXCnPXytGDvTgsu3qJfxL90NdDiPdjxlVKO iXYco7imtX57Q+zZHRMNfiw82x4Ir9AWqXCWb8YtDDAF/7yYUeiIEYXflVTJVxhCvRSx LXxzh9/9G83CCpNaiWqBTgsRDpLpqzOnDlrdK/JXQFeIZL0styRipr8k4xXcdXcnzS2D Kqa3Eifq498lDWybMZTYntrfGe6QtI6GO2wXYsJg7+pRHmJpWS2EXpefFwzKqmdZaaMu xX3mt9DF/3I7dgV6vSMi+TQpigw6YY412DJaOFnd8xMcZlWa6X4FO2PXHeM1gOW3xKuM ii3A== X-Gm-Message-State: AOJu0YylrcqQHMersBwdxpqykck7dpG+VItBCE0JJg/VRORltjZmc4HI 6H18y74XdTadLs4lxuSiRxBTxKHHM6E= X-Google-Smtp-Source: AGHT+IFLZDZ0yRx4G++/GeEF3wqTDfiWZKbL/SiNWKFZ+fbpe6OgP+5vRr+CDsxCgjuigYvaCRnJk470cKM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:b148:0:b0:59b:f3a2:cd79 with SMTP id p69-20020a81b148000000b0059bf3a2cd79mr3289ywh.8.1695400557678; Fri, 22 Sep 2023 09:35:57 -0700 (PDT) Date: Fri, 22 Sep 2023 09:35:55 -0700 In-Reply-To: Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20230914015531.1419405-1-seanjc@google.com> <20230914015531.1419405-8-seanjc@google.com> <117db856-9aec-e91c-b1d4-db2b90ae563d@intel.com> Message-ID: Subject: Re: [RFC PATCH v12 07/33] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Xiaoyao Li Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , kvm@vger.kernel.org, kvmarm@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , Yu Zhang , Isaku Yamahata , Xu Yilun , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata Content-Type: text/plain; charset="us-ascii" On Fri, Sep 22, 2023, Sean Christopherson wrote: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 7c0e38752526..d13b646188e5 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -4184,6 +4184,16 @@ static long kvm_vcpu_ioctl(struct file *filp, > synchronize_rcu(); > put_pid(oldpid); > } > + > + /* > + * Reset the exit reason if the previous userspace exit was due > + * to a memory fault. Not all -EFAULT exits are annotated, and > + * so leaving exit_reason set to KVM_EXIT_MEMORY_FAULT could > + * result in feeding userspace stale information. > + */ > + if (vcpu->run->exit_reason == KVM_EXIT_MEMORY_FAULT) > + vcpu->run->exit_reason = KVM_EXIT_UNKNOWN Darn semicolons. Doesn't look like I botched anything else though. > + > r = kvm_arch_vcpu_ioctl_run(vcpu); > trace_kvm_userspace_exit(vcpu->run->exit_reason, r); > break; > > base-commit: 2358793cd9062b068ac25ac9c965c00d685eea92 > -- > 2.42.0.515.g380fc7ccd1-goog >