https://github.com/torvalds/linux
Revision d3cb8bf6081b8b7a2dabb1264fe968fd870fa595 authored by Mel Gorman on 02 October 2014, 18:47:41 UTC, committed by Linus Torvalds on 02 October 2014, 18:57:18 UTC
A migration entry is marked as write if pte_write was true at the time the
entry was created. The VMA protections are not double checked when migration
entries are being removed as mprotect marks write-migration-entries as
read. It means that potentially we take a spurious fault to mark PTEs write
again but it's straight-forward. However, there is a race between write
migrations being marked read and migrations finishing. This potentially
allows a PTE to be write that should have been read. Close this race by
double checking the VMA permissions using maybe_mkwrite when migration
completes.

[torvalds@linux-foundation.org: use maybe_mkwrite]
Cc: stable@vger.kernel.org
Signed-off-by: Mel Gorman <mgorman@suse.de>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 50dddff
Raw File
Tip revision: d3cb8bf6081b8b7a2dabb1264fe968fd870fa595 authored by Mel Gorman on 02 October 2014, 18:47:41 UTC
mm: migrate: Close race between migration completion and mprotect
Tip revision: d3cb8bf
kvm.txt
Currently, kvm module is in EXPERIMENTAL stage on IA64. This means that
interfaces are not stable enough to use. So, please don't run critical
applications in virtual machine.
We will try our best to improve it in future versions!

				Guide: How to boot up guests on kvm/ia64

This guide is to describe how to enable kvm support for IA-64 systems.

1. Get the kvm source from git.kernel.org.
	Userspace source:
		git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-userspace.git
	Kernel Source:
		git clone git://git.kernel.org/pub/scm/linux/kernel/git/xiantao/kvm-ia64.git

2. Compile the source code.
	2.1 Compile userspace code:
		(1)cd ./kvm-userspace
		(2)./configure
		(3)cd kernel
		(4)make sync LINUX= $kernel_dir (kernel_dir is the directory of kernel source.)
		(5)cd ..
		(6)make qemu
		(7)cd qemu; make install

	2.2 Compile kernel source code:
		(1) cd ./$kernel_dir
		(2) Make menuconfig
		(3) Enter into virtualization option, and choose kvm.
		(4) make
		(5) Once (4) done, make modules_install
		(6) Make initrd, and use new kernel to reboot up host machine.
		(7) Once (6) done, cd $kernel_dir/arch/ia64/kvm
		(8) insmod kvm.ko; insmod kvm-intel.ko

Note: For step 2, please make sure that host page size == TARGET_PAGE_SIZE of qemu, otherwise, may fail.

3. Get Guest Firmware named as Flash.fd, and put it under right place:
	(1) If you have the guest firmware (binary) released by Intel Corp for Xen, use it directly.

	(2) If you have no firmware at hand, Please download its source from
		hg clone http://xenbits.xensource.com/ext/efi-vfirmware.hg
	    you can get the firmware's binary in the directory of efi-vfirmware.hg/binaries.

	(3) Rename the firmware you owned to Flash.fd, and copy it to /usr/local/share/qemu

4. Boot up Linux or Windows guests:
	4.1 Create or install a image for guest boot. If you have xen experience, it should be easy.

	4.2 Boot up guests use the following command.
		/usr/local/bin/qemu-system-ia64 -smp xx -m 512 -hda $your_image
		(xx is the number of virtual processors for the guest, now the maximum value is 4)

5. Known possible issue on some platforms with old Firmware.

In the event of strange host crash issues, try to solve it through either of the following ways:

(1): Upgrade your Firmware to the latest one.

(2): Applying the below patch to kernel source.
diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S
index 0b53344..f02b0f7 100644
--- a/arch/ia64/kernel/pal.S
+++ b/arch/ia64/kernel/pal.S
@@ -84,7 +84,8 @@ GLOBAL_ENTRY(ia64_pal_call_static)
	mov ar.pfs = loc1
	mov rp = loc0
	;;
-	srlz.d				// serialize restoration of psr.l
+	srlz.i			// serialize restoration of psr.l
+	;;
	br.ret.sptk.many b0
 END(ia64_pal_call_static)

6. Bug report:
	If you found any issues when use kvm/ia64, Please post the bug info to kvm-ia64-devel mailing list.
	https://lists.sourceforge.net/lists/listinfo/kvm-ia64-devel/

Thanks for your interest! Let's work together, and make kvm/ia64 stronger and stronger!


								Xiantao Zhang <xiantao.zhang@intel.com>
											2008.3.10
back to top