From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757496Ab1ANBhW (ORCPT ); Thu, 13 Jan 2011 20:37:22 -0500 Received: from mga11.intel.com ([192.55.52.93]:39915 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752034Ab1ANBhT (ORCPT ); Thu, 13 Jan 2011 20:37:19 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.60,320,1291622400"; d="scan'208";a="877363155" Subject: Re: [PATCH 1/2] mm, Make __get_user_pages return -EHWPOISON for HWPOISON page optionally From: Huang Ying To: Avi Kivity Cc: Marcelo Tosatti , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , Andi Kleen , "Luck, Tony" , Dean Nelson , Andrew Morton In-Reply-To: <4D2ED737.6050802@redhat.com> References: <1294908168.4596.58.camel@yhuang-dev> <4D2ED737.6050802@redhat.com> Content-Type: text/plain; charset="UTF-8" Date: Fri, 14 Jan 2011 09:37:16 +0800 Message-ID: <1294969036.4596.67.camel@yhuang-dev> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2011-01-13 at 18:43 +0800, Avi Kivity wrote: > On 01/13/2011 10:42 AM, Huang Ying wrote: > > Make __get_user_pages return -EHWPOISON for HWPOISON page only if > > FOLL_HWPOISON is specified. With this patch, the interested callers > > can distinguish HWPOISON page from general FAULT page, while other > > callers will still get -EFAULT for pages, so the user space interface > > need not to be changed. > > > > get_user_pages_hwpoison is added as a variant of get_user_pages that > > can return -EHWPOISON for HWPOISON page. > > > > This feature is needed by KVM, where UCR MCE should be relayed to > > guest for HWPOISON page, while instruction emulation and MMIO will be > > tried for general FAULT page. > > > > The idea comes from Andrew Morton. > > > > Signed-off-by: Huang Ying > > Cc: Andrew Morton > > > > +#ifdef CONFIG_MEMORY_FAILURE > > +int get_user_pages_hwpoison(struct task_struct *tsk, struct mm_struct *mm, > > + unsigned long start, int nr_pages, int write, > > + int force, struct page **pages, > > + struct vm_area_struct **vmas); > > +#else > > Since we'd also like to add get_user_pages_noio(), perhaps adding a > flags field to get_user_pages() is better. Or export __get_user_pages()? Best Regards, Huang Ying