Re: KVM Test result, kernel ff5bdac.., userspace eb2fd67.. -- One New Issue

Marcelo Tosatti
2008-06-09T21:23:48Z

On Fri, Jun 06, 2008 at 11:11:12AM +0800, Yunfeng Zhao wrote:
> Hi All,
>
> This is today's KVM test result against kvm.git
> ff5bdac4be0230e0bb33e4208ac0a91343c72929 and kvm-userspace.git
> eb2fd67cbecdb573f908697ed41b81ee312372bd.
>
> One New Issue:
> ================================================
> 1. Guests crash while rebooting
> https://sourceforge.net/tracker/?func=detail&atid=893831&aid=1976075&group_id=180599
>
>
> Five Old Issues:
> ================================================
> 2. Fail to save restore and live migrate
> https://sourceforge.net/tracker/?func=detail&atid=893831&aid=1976075&group_id=180599
> 3. netperf causes linux guest with virtnet kernel panic
> https://sourceforge.net/tracker/?func=detail&atid=893831&aid=1972449&group_id=180599
> 4. XP crashes while rebooting
> https://sourceforge.net/tracker/?func=detail&atid=893831&aid=1959452&group_id=180599
> 5.Cannot boot guests with hugetlbfs
> https://sourceforge.net/tracker/?func=detail&atid=893831&aid=1941302&group_id=180599

This is a get_user_pages() with hugetlb-vma's bug, not KVM's problem,
fixed by:

commit 5b23dbe8173c212d6a326e35347b038705603d39
Author: Adam Litke <agl@us.ibm.com>
Date: Wed Nov 14 16:59:33 2007 -0800

hugetlb: follow_hugetlb_page() for write access

When calling get_user_pages(), a write flag is passed in by the caller to
indicate if write access is required on the faulted-in pages.

Currently, follow_hugetlb_page() ignores this flag and always faults pages for
read-only access. This can cause data corruption because a device driver
that calls get_user_pages() with write set will not expect COW faults to
occur on the returned pages.

This patch passes the write flag down to follow_hugetlb_page() and makes
sure hugetlb_fault() is called with the right write_access parameter.

Can you please upgrade your test hosts to 2.6.25 or newer?

Perhaps kvm-userspace should check for kernel version and disable
hugetlb backed memory. Nasty.

Thanks John for help in tracking this down.