From: Sean Christopherson <seanjc@google.com>
To: ankita@nvidia.com
Cc: jgg@nvidia.com, alex.williamson@redhat.com,
naoya.horiguchi@nec.com, akpm@linux-foundation.org,
tony.luck@intel.com, bp@alien8.de, linmiaohe@huawei.com,
rafael@kernel.org, lenb@kernel.org, james.morse@arm.com,
shiju.jose@huawei.com, bhelgaas@google.com, pabeni@redhat.com,
yishaih@nvidia.com, shameerali.kolothum.thodi@huawei.com,
kevin.tian@intel.com, aniketa@nvidia.com, cjia@nvidia.com,
kwankhede@nvidia.com, targupta@nvidia.com, vsethi@nvidia.com,
acurrid@nvidia.com, apopple@nvidia.com, anuaggarwal@nvidia.com,
jhubbard@nvidia.com, danw@nvidia.com, mochs@nvidia.com,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
linux-edac@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH v2 2/4] mm: Add poison error check in fixup_user_fault() for mapped pfn
Date: Fri, 1 Dec 2023 09:04:51 -0800 [thread overview]
Message-ID: <ZWoSM_0xLJQo8De5@google.com> (raw)
In-Reply-To: <20231123003513.24292-3-ankita@nvidia.com>
On Thu, Nov 23, 2023, ankita@nvidia.com wrote:
> From: Ankit Agrawal <ankita@nvidia.com>
>
> The fixup_user_fault() currently does not expect a VM_FAULT_HWPOISON
> and hence does not check for it while calling vm_fault_to_errno(). Since
> we now have a new code path which can trigger such case, change
> fixup_user_fault to look for VM_FAULT_HWPOISON.
>
> Also make hva_to_pfn_remapped check for -EHWPOISON and communicate the
> poison fault up to the user_mem_abort().
I would much prefer the KVM change be split out to its own patch, I see no
reason why it needs to be bundled with the fixup_user_fault() change. KVM will
set pfn to KVM_PFN_ERR_FAULT before and after the fixup_user_fault() change.
> Signed-off-by: Ankit Agrawal <ankita@nvidia.com>
> ---
> mm/gup.c | 2 +-
> virt/kvm/kvm_main.c | 6 ++++++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/mm/gup.c b/mm/gup.c
> index 231711efa390..b78af20a0f52 100644
> --- a/mm/gup.c
> +++ b/mm/gup.c
> @@ -1414,7 +1414,7 @@ int fixup_user_fault(struct mm_struct *mm,
> }
>
> if (ret & VM_FAULT_ERROR) {
> - int err = vm_fault_to_errno(ret, 0);
> + int err = vm_fault_to_errno(ret, FOLL_HWPOISON);
>
> if (err)
> return err;
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 486800a7024b..2ff067f21a7c 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -2731,6 +2731,12 @@ kvm_pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool interruptible,
> r = hva_to_pfn_remapped(vma, addr, write_fault, writable, &pfn);
> if (r == -EAGAIN)
> goto retry;
> +
> + if (r == -EHWPOISON) {
> + pfn = KVM_PFN_ERR_HWPOISON;
> + goto exit;
> + }
> +
> if (r < 0)
> pfn = KVM_PFN_ERR_FAULT;
I vote for
if (r == -EHWPOISON)
pfn = KVM_PFN_ERR_HWPOISON;
else if (r < 0)
pfn = KVM_PFN_ERR_FAULT;
or even opportunstically fix the < 0 weirdness:
if (r == -EHWPOISON)
pfn = KVM_PFN_ERR_HWPOISON;
else if (r)
pfn = KVM_PFN_ERR_FAULT;
It's rather confusing to see a goto in one error path but an effective fallthrough
in a different error path, i.e. gives the impression that KVM_PFN_ERR_HWPOISON
has some special behavior that doesn't apply to KVM_PFN_ERR_FAULT.
WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: ankita@nvidia.com
Cc: jgg@nvidia.com, alex.williamson@redhat.com,
naoya.horiguchi@nec.com, akpm@linux-foundation.org,
tony.luck@intel.com, bp@alien8.de, linmiaohe@huawei.com,
rafael@kernel.org, lenb@kernel.org, james.morse@arm.com,
shiju.jose@huawei.com, bhelgaas@google.com, pabeni@redhat.com,
yishaih@nvidia.com, shameerali.kolothum.thodi@huawei.com,
kevin.tian@intel.com, aniketa@nvidia.com, cjia@nvidia.com,
kwankhede@nvidia.com, targupta@nvidia.com, vsethi@nvidia.com,
acurrid@nvidia.com, apopple@nvidia.com, anuaggarwal@nvidia.com,
jhubbard@nvidia.com, danw@nvidia.com, mochs@nvidia.com,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
linux-edac@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH v2 2/4] mm: Add poison error check in fixup_user_fault() for mapped pfn
Date: Fri, 1 Dec 2023 09:04:51 -0800 [thread overview]
Message-ID: <ZWoSM_0xLJQo8De5@google.com> (raw)
In-Reply-To: <20231123003513.24292-3-ankita@nvidia.com>
On Thu, Nov 23, 2023, ankita@nvidia.com wrote:
> From: Ankit Agrawal <ankita@nvidia.com>
>
> The fixup_user_fault() currently does not expect a VM_FAULT_HWPOISON
> and hence does not check for it while calling vm_fault_to_errno(). Since
> we now have a new code path which can trigger such case, change
> fixup_user_fault to look for VM_FAULT_HWPOISON.
>
> Also make hva_to_pfn_remapped check for -EHWPOISON and communicate the
> poison fault up to the user_mem_abort().
I would much prefer the KVM change be split out to its own patch, I see no
reason why it needs to be bundled with the fixup_user_fault() change. KVM will
set pfn to KVM_PFN_ERR_FAULT before and after the fixup_user_fault() change.
> Signed-off-by: Ankit Agrawal <ankita@nvidia.com>
> ---
> mm/gup.c | 2 +-
> virt/kvm/kvm_main.c | 6 ++++++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/mm/gup.c b/mm/gup.c
> index 231711efa390..b78af20a0f52 100644
> --- a/mm/gup.c
> +++ b/mm/gup.c
> @@ -1414,7 +1414,7 @@ int fixup_user_fault(struct mm_struct *mm,
> }
>
> if (ret & VM_FAULT_ERROR) {
> - int err = vm_fault_to_errno(ret, 0);
> + int err = vm_fault_to_errno(ret, FOLL_HWPOISON);
>
> if (err)
> return err;
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 486800a7024b..2ff067f21a7c 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -2731,6 +2731,12 @@ kvm_pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool interruptible,
> r = hva_to_pfn_remapped(vma, addr, write_fault, writable, &pfn);
> if (r == -EAGAIN)
> goto retry;
> +
> + if (r == -EHWPOISON) {
> + pfn = KVM_PFN_ERR_HWPOISON;
> + goto exit;
> + }
> +
> if (r < 0)
> pfn = KVM_PFN_ERR_FAULT;
I vote for
if (r == -EHWPOISON)
pfn = KVM_PFN_ERR_HWPOISON;
else if (r < 0)
pfn = KVM_PFN_ERR_FAULT;
or even opportunstically fix the < 0 weirdness:
if (r == -EHWPOISON)
pfn = KVM_PFN_ERR_HWPOISON;
else if (r)
pfn = KVM_PFN_ERR_FAULT;
It's rather confusing to see a goto in one error path but an effective fallthrough
in a different error path, i.e. gives the impression that KVM_PFN_ERR_HWPOISON
has some special behavior that doesn't apply to KVM_PFN_ERR_FAULT.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-12-01 17:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 0:35 [PATCH v2 0/4] mm: Implement ECC handling for pfn with no struct page ankita
2023-11-23 0:35 ` ankita
2023-11-23 0:35 ` [PATCH v2 1/4] mm: handle poisoning of pfn without struct pages ankita
2023-11-23 0:35 ` ankita
2023-11-23 0:35 ` [PATCH v2 2/4] mm: Add poison error check in fixup_user_fault() for mapped pfn ankita
2023-11-23 0:35 ` ankita
2023-12-01 17:04 ` Sean Christopherson [this message]
2023-12-01 17:04 ` Sean Christopherson
2023-11-23 0:35 ` [PATCH v2 3/4] mm: Change ghes code to allow poison of non-struct pfn ankita
2023-11-23 0:35 ` ankita
2023-12-02 23:23 ` Borislav Petkov
2023-12-02 23:23 ` Borislav Petkov
2023-12-04 14:36 ` Jason Gunthorpe
2023-12-04 14:36 ` Jason Gunthorpe
2023-12-04 15:36 ` Borislav Petkov
2023-12-04 15:36 ` Borislav Petkov
2023-12-04 15:54 ` Ankit Agrawal
2023-12-04 15:54 ` Ankit Agrawal
2023-12-04 15:55 ` Jason Gunthorpe
2023-12-04 15:55 ` Jason Gunthorpe
2023-11-23 0:35 ` [PATCH v2 4/4] vfio/nvgpu: register device memory for poison handling ankita
2023-11-23 0:35 ` ankita
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZWoSM_0xLJQo8De5@google.com \
--to=seanjc@google.com \
--cc=acurrid@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=alex.williamson@redhat.com \
--cc=aniketa@nvidia.com \
--cc=ankita@nvidia.com \
--cc=anuaggarwal@nvidia.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=cjia@nvidia.com \
--cc=danw@nvidia.com \
--cc=james.morse@arm.com \
--cc=jgg@nvidia.com \
--cc=jhubbard@nvidia.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=lenb@kernel.org \
--cc=linmiaohe@huawei.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mochs@nvidia.com \
--cc=naoya.horiguchi@nec.com \
--cc=pabeni@redhat.com \
--cc=rafael@kernel.org \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shiju.jose@huawei.com \
--cc=targupta@nvidia.com \
--cc=tony.luck@intel.com \
--cc=vsethi@nvidia.com \
--cc=yishaih@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.