On Wed, Sep 13, 2023, isaku.yamahata@xxxxxxxxx wrote: > From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > > Add config, HAVE_GENERIC_PRIVATE_MEM_HANDLE_ERROR, to indicate kvm arch > can handle gmem error page. > > Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > --- > virt/kvm/Kconfig | 3 +++ > virt/kvm/guest_mem.c | 3 +++ > 2 files changed, 6 insertions(+) > > diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig > index 1a48cb530092..624df45baff0 100644 > --- a/virt/kvm/Kconfig > +++ b/virt/kvm/Kconfig > @@ -112,3 +112,6 @@ config KVM_GENERIC_PRIVATE_MEM > select KVM_GENERIC_MEMORY_ATTRIBUTES > select KVM_PRIVATE_MEM > bool > + > +config HAVE_GENERIC_PRIVATE_MEM_HANDLE_ERROR > + bool > diff --git a/virt/kvm/guest_mem.c b/virt/kvm/guest_mem.c > index 85903c32163f..35d8f03e7937 100644 > --- a/virt/kvm/guest_mem.c > +++ b/virt/kvm/guest_mem.c > @@ -307,6 +307,9 @@ static int kvm_gmem_error_page(struct address_space *mapping, struct page *page) > pgoff_t start, end; > gfn_t gfn; > > + if (!IS_ENABLED(CONFIG_HAVE_GENERIC_PRIVATE_MEM_HANDLE_ERROR)) > + return MF_IGNORED; I don't see the point, KVM can and should always zap SPTEs, i.e. can force the geust to re-fault on the affected memory. At that point kvm_gmem_get_pfn() will return -EHWPOISON and architectures that don't support graceful recovery can simply terminate the VM.