On Tue, 2010-04-27 at 15:47 +0800, Avi Kivity wrote: > (please copy kvm@xxxxxxxxxxxxxxx on kvm patches) Sorry, will do that for all future patches. > On 04/27/2010 10:04 AM, Huang Ying wrote: > > > > +static void kvm_send_hwpoison_signal(struct kvm *kvm, gfn_t gfn) > > +{ > > + char buf[1]; > > + void __user *hva; > > + int r; > > + > > + /* Touch the page, so send SIGBUS */ > > + hva = (void __user *)gfn_to_hva(kvm, gfn); > > + r = copy_from_user(buf, hva, 1); > > > > No error check? What will a copy_from_user() of poisoned page expected > to return? > > Best to return -EFAULT on failure for consistency. Just want to use the side effect of copy_from_user, SIGBUS will be sent to current process because the page touched is marked as poisoned. That is, failure is expected, so the return value is not checked. > > +} > > + > > static int nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, int write, gfn_t gfn) > > { > > int r; > > @@ -1997,7 +2009,11 @@ static int nonpaging_map(struct kvm_vcpu > > /* mmio */ > > if (is_error_pfn(pfn)) { > > kvm_release_pfn_clean(pfn); > > - return 1; > > + if (is_hwpoison_pfn(pfn)) { > > + kvm_send_hwpoison_signal(vcpu->kvm, gfn); > > + return 0; > > + } else > > + return 1; > > } > > > > This is duplicated several times. Please introduce a kvm_handle_bad_page(): > > if (is_error_pfn(pfn)) > return kvm_handle_bad_page(vcpu->kvm, gfn, pfn); OK. Will do that. Best Regards, Huang Ying -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html