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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7AD2BC19F2A for ; Thu, 11 Aug 2022 19:41:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B758B8E0002; Thu, 11 Aug 2022 15:41:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B24C08E0001; Thu, 11 Aug 2022 15:41:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C5478E0002; Thu, 11 Aug 2022 15:41:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 88FA08E0001 for ; Thu, 11 Aug 2022 15:41:46 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 4E294806BB for ; Thu, 11 Aug 2022 19:41:46 +0000 (UTC) X-FDA: 79788331812.21.33231DD Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf25.hostedemail.com (Postfix) with ESMTP id CE2AAA0182 for ; Thu, 11 Aug 2022 19:41:45 +0000 (UTC) Received: by mail-pl1-f178.google.com with SMTP id o3so17788504ple.5 for ; Thu, 11 Aug 2022 12:41:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc; bh=FTvV+r4SxFTcnoWh01bKEFwjf+Gpnp38zT+sxZWWUUM=; b=kvYz6HUUDvbG0h7v8a4t4DEYCK7c5eq9K3pXYJCLg9Ny64+dzzVhzf8tyZEEoQlCQE fn3m1TAVzJcw+3oCn/C9AXuJW5wUby8TRE2ssPQ2MbiyLxl2vpWxQzz1Ew78hWs7cnVG LoPbkfS7d6PwjOybPfjUF24h7tdPmD2MBuwtjkBrtfw33ShzqljOhJTfedZkjUiNL1uk 4MuX2izHAVRz0p6cawvIqvu48X2huz9jyJDOJFjJhHRJgENcgElE5ztflFHmTgOYHTS9 /QhLWkED1JW896elvU2ufc7BVClks1I8iPpPGbBugLLcgmBDhkqThkDWRxLPZWWM7SN3 VUWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=FTvV+r4SxFTcnoWh01bKEFwjf+Gpnp38zT+sxZWWUUM=; b=UW0e2XFCJpqP9EoQh8DtHTd6VVgLEEoCVW5YjLRrSmTu1Ejychw3y/wcfYdRTFizZ9 KSoLWaKOmznL/IwGs5ZCz2K+DTjy0uUTt74tCwaTuknVtNLe0CQslSPUCuhJX3mLd9QK tgU6gduXnfDHtPDtGq7FnHx2gr6wavRjAP9trJrGPZUGABQ6OQ3IN7Fs85JgmTXbyamq 4JbDCrmvAFsUY3avECv2ODR/hx0ouqX+ARVnHTRXJL4OFFQU19qXZfIK/rBML/NH5P+f kOzu4ty6ZOiCQaB1c342fWWm1W2rPBjMp7GBtfgvATM7m9+TqYOVZWMsGXGD+h+Mmi1k L/HQ== X-Gm-Message-State: ACgBeo0VcSHKCr00Q6kMi/khrebHIYsHS2dnYJG2hHhwwRJY9brly5Rk X89FEaa+v3XimwoWVr3ccwetAQ== X-Google-Smtp-Source: AA6agR4ZzMi8yCe2GmWkNjY/xLNXCNUJi+1T7JQUYJfvWciCxoXZ+4zfVV7IB6MVrEFiaUWsM0x3WQ== X-Received: by 2002:a17:903:2309:b0:16f:784:ea5c with SMTP id d9-20020a170903230900b0016f0784ea5cmr736811plh.100.1660246904618; Thu, 11 Aug 2022 12:41:44 -0700 (PDT) Received: from google.com (7.104.168.34.bc.googleusercontent.com. [34.168.104.7]) by smtp.gmail.com with ESMTPSA id i128-20020a626d86000000b005281d926733sm50192pfc.199.2022.08.11.12.41.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 12:41:44 -0700 (PDT) Date: Thu, 11 Aug 2022 19:41:40 +0000 From: Sean Christopherson To: Peter Xu Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, David Hildenbrand , "Dr . David Alan Gilbert" , John Hubbard , Linux MM Mailing List , Andrew Morton , Paolo Bonzini , Andrea Arcangeli Subject: Re: [PATCH v2 2/3] kvm: Add new pfn error KVM_PFN_ERR_SIGPENDING Message-ID: References: <20220721000318.93522-1-peterx@redhat.com> <20220721000318.93522-3-peterx@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220721000318.93522-3-peterx@redhat.com> ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660246905; a=rsa-sha256; cv=none; b=alVNPLMsWvbo06tR47hWgXRh30W0VUmiSZxaV6U0vabTtEQwTOaHuXw3CQElGREfQnu7Lw qjsTNNWdX1TfieQI5NZEU0B2GtQHHvsWorwkjYJuOf0ae2oAQWxGeBccSl3i+dJ/mzM+Z8 XiJ1+M1CUgSnMvO0gNiBtsggNNhy4KA= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=kvYz6HUU; spf=pass (imf25.hostedemail.com: domain of seanjc@google.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=seanjc@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660246905; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FTvV+r4SxFTcnoWh01bKEFwjf+Gpnp38zT+sxZWWUUM=; b=jKNHYZvWFbICim0K1Z/JbnTUTNld2PTM6dK1yQeqXnwR/7SPY9uZpOf6E6bXCInLlvgYWB zX9FIMF41tCExkTTeMLKnjq0TIahoLpBc94AhaSH44PbCnBlHYyCr2vJ0HhY3sNMB4RENm ekxxS9/yKlXoYkfOuUu3g8nnEWiHq9M= X-Rspamd-Queue-Id: CE2AAA0182 Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=kvYz6HUU; spf=pass (imf25.hostedemail.com: domain of seanjc@google.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=seanjc@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam12 X-Stat-Signature: hqqkqas43czwfgsb31adzrf67bfo1oy1 X-HE-Tag: 1660246905-300856 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jul 20, 2022, Peter Xu wrote: > Add one new PFN error type to show when we got interrupted when fetching s/we/KVM > the PFN due to signal pending. > > This prepares KVM to be able to respond to SIGUSR1 (for QEMU that's the > SIGIPI) even during e.g. handling an userfaultfd page fault. > > Signed-off-by: Peter Xu > --- > include/linux/kvm_host.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 83cf7fd842e0..06a5b17d3679 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -96,6 +96,7 @@ > #define KVM_PFN_ERR_FAULT (KVM_PFN_ERR_MASK) > #define KVM_PFN_ERR_HWPOISON (KVM_PFN_ERR_MASK + 1) > #define KVM_PFN_ERR_RO_FAULT (KVM_PFN_ERR_MASK + 2) > +#define KVM_PFN_ERR_SIGPENDING (KVM_PFN_ERR_MASK + 3) > > /* > * error pfns indicate that the gfn is in slot but faild to > @@ -106,6 +107,16 @@ static inline bool is_error_pfn(kvm_pfn_t pfn) > return !!(pfn & KVM_PFN_ERR_MASK); > } > > +/* > + * When KVM_PFN_ERR_SIGPENDING returned, it means we're interrupted during > + * fetching the PFN (a signal might have arrived), we may want to retry at Please avoid "we". Tthe first "we're" can refer to KVM and/or the kernel, whereas the second is a weird mix of KVM and userspace (KVM exits to userspace, but it's userspace's decision whether or not to retry). Easiest thing is to avoid the "we" entirely and not speculate on what may happen. E.g. /* * KVM_PFN_ERR_SIGPENDING indicates that fetching the PFN was interrupted by a * pending signal. Note, the signal may or may not be fatal. */ > + * some later point and kick the userspace to handle the signal. > + */ > +static inline bool is_sigpending_pfn(kvm_pfn_t pfn) > +{ > + return pfn == KVM_PFN_ERR_SIGPENDING; > +} > + > /* > * error_noslot pfns indicate that the gfn can not be > * translated to pfn - it is not in slot or failed to > -- > 2.32.0 >