rpms/kernel-xen-2.6/devel Makefile, 1.10, 1.11 Makefile.config, 1.10, 1.11 kernel.spec, 1.27, 1.28 linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch, 1.3, 1.4 linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch, 1.3, 1.4 linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch, 1.3, 1.4 linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch, 1.2, 1.3 linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch, 1.4, 1.5 linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch, 1.5, 1.6 linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch, 1.5, 1.6 linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch, 1.5, 1.6 linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch, 1.4, 1.5 linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch, 1.4, 1.5 linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch, 1.4, 1.5 linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch, 1.4, 1.5 linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch, 1.4, 1.5 linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch, 1.4, 1.5 linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch, 1.4, 1.5 linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch, 1.4, 1.5 linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch, 1.5, 1.6 linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch, 1.2, 1.3 linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch, 1.4, 1.5

Mark McLoughlin (markmc) fedora-extras-commits at redhat.com
Thu Apr 3 09:49:52 UTC 2008


Author: markmc

Update of /cvs/pkgs/rpms/kernel-xen-2.6/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27604

Modified Files:
	Makefile Makefile.config kernel.spec 
	linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch 
	linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch 
	linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch 
	linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch 
	linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch 
	linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch 
	linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch 
	linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch 
	linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch 
	linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch 
	linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch 
	linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch 
	linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch 
	linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch 
	linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch 
	linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch 
	linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch 
	linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch 
	linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch 
Log Message:
* Thu Apr  3 2008 Mark McLoughlin <markmc at redhat.com>
- x86_64 updates







Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/kernel.spec,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- kernel.spec	2 Apr 2008 08:55:25 -0000	1.27
+++ kernel.spec	3 Apr 2008 09:48:58 -0000	1.28
@@ -1853,6 +1853,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Thu Apr  3 2008 Mark McLoughlin <markmc at redhat.com>
+- x86_64 updates
+
 * Wed Apr  2 2008 Mark McLoughlin <markmc at redhat.com>
 - Update to kernel-2.6.25-0.187.rc8.fc9
 - Use ".xen" suffix for some files instead of just "xen" (jwilson)

linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch:

Index: linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch	2 Apr 2008 08:55:25 -0000	1.3
+++ linux-2.6-xen-0001-squashfs-Fix-build-without-CONFIG_SMP.patch	3 Apr 2008 09:48:58 -0000	1.4
@@ -1,4 +1,4 @@
-From 1d5b5063535d9dea4f8d6e1187307340e5cb3f18 Mon Sep 17 00:00:00 2001
+From 1b166290057a8c0d66917da0023351c322487806 Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Wed, 5 Mar 2008 12:50:50 +0000
 Subject: [PATCH] squashfs: Fix build without CONFIG_SMP

linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch:

Index: linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch	2 Apr 2008 08:55:25 -0000	1.3
+++ linux-2.6-xen-0002-xen-execshield-Add-xen-specific-load_user_cs_desc.patch	3 Apr 2008 09:48:58 -0000	1.4
@@ -1,4 +1,4 @@
-From de1c16fdd748780230528b4e37016e7a4b61a5c1 Mon Sep 17 00:00:00 2001
+From 5de016b6e9392c72f90a8fcce66930dbfa7dc56f Mon Sep 17 00:00:00 2001
 From: Stephen Tweedie <sct at redhat.com>
 Date: Tue, 11 Mar 2008 18:05:30 +0000
 Subject: [PATCH] xen execshield: Add xen-specific load_user_cs_desc()

linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch:

Index: linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch	2 Apr 2008 08:55:25 -0000	1.3
+++ linux-2.6-xen-0003-xen-execshield-fix-endless-GPF-fault-loop.patch	3 Apr 2008 09:48:58 -0000	1.4
@@ -1,4 +1,4 @@
-From b79077414e4f8f32d6418cacebc48043d5abc2ab Mon Sep 17 00:00:00 2001
+From 800ccaf3f4fbe02b3c23ce3f9220b401e4867551 Mon Sep 17 00:00:00 2001
 From: Stephen Tweedie <sct at redhat.com>
 Date: Tue, 11 Mar 2008 18:07:31 +0000
 Subject: [PATCH] xen execshield: fix endless GPF fault loop

linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch:

Index: linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch	2 Apr 2008 08:55:25 -0000	1.2
+++ linux-2.6-xen-0004-xen-Do-not-pin-unpin-PMD-pages.patch	3 Apr 2008 09:48:58 -0000	1.3
@@ -1,4 +1,4 @@
-From a0c0ff369a88be71c0e5d416a4f50c744bd45fda Mon Sep 17 00:00:00 2001
+From 62df44b6eb5cea410392b34199be1f21f4c2f063 Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Fri, 28 Mar 2008 14:40:38 +0000
 Subject: [PATCH] xen: Do not pin/unpin PMD pages

linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch:

Index: linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0005-xen-Make-xen-blkfront-write-its-protocol-ABI-to-xen.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From 778865b54156e114c42b212f59e44f19babf1dff Mon Sep 17 00:00:00 2001
+From 8143aef5c46822f1d0640e4fdcb159060a8aa145 Mon Sep 17 00:00:00 2001
 From: Markus Armbruster <armbru at redhat.com>
 Date: Mon, 25 Feb 2008 14:02:24 +0100
 Subject: [PATCH] xen: Make xen-blkfront write its protocol ABI to xenstore

linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch:

Index: linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch	2 Apr 2008 08:55:25 -0000	1.5
+++ linux-2.6-xen-0006-xen-pvfb-Para-virtual-framebuffer-keyboard-and-poi.patch	3 Apr 2008 09:48:58 -0000	1.6
@@ -1,4 +1,4 @@
-From cc4334d03d4cb924236d4fd24c670ee8c81484ce Mon Sep 17 00:00:00 2001
+From 8a4eece4bacb6111d8f670d59d3d2cdacfa0b588 Mon Sep 17 00:00:00 2001
 From: Markus Armbruster <armbru at redhat.com>
 Date: Mon, 25 Feb 2008 14:06:46 +0100
 Subject: [PATCH] xen pvfb: Para-virtual framebuffer, keyboard and pointer driver

linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch:

Index: linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch	2 Apr 2008 08:55:25 -0000	1.5
+++ linux-2.6-xen-0007-xen-Module-autoprobing-support-for-frontend-drivers.patch	3 Apr 2008 09:48:58 -0000	1.6
@@ -1,4 +1,4 @@
-From 3af0d72f7141cb75ae0fa37e95482453f2a6b914 Mon Sep 17 00:00:00 2001
+From 216b6f748d9a9bf8cc6aa5d7be92c71f07665dd3 Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Fri, 22 Feb 2008 12:42:52 +0000
 Subject: [PATCH] xen: Module autoprobing support for frontend drivers

linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch:

Index: linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch	2 Apr 2008 08:55:25 -0000	1.5
+++ linux-2.6-xen-0008-xen-Add-compatibility-aliases-for-frontend-drivers.patch	3 Apr 2008 09:48:58 -0000	1.6
@@ -1,4 +1,4 @@
-From 0d332af75e539e7653d6e27f7ded7785c90f2f69 Mon Sep 17 00:00:00 2001
+From 8e09f1b79d8b2f6466a80b8a2ca47d24a5d7d75d Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Thu, 21 Feb 2008 11:13:12 +0000
 Subject: [PATCH] xen: Add compatibility aliases for frontend drivers

linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch:

Index: linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0009-xen-blkfront-Delay-wait-for-block-devices-until-aft.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From 085b2e96519e97bea75b871f6aada13362b9933e Mon Sep 17 00:00:00 2001
+From 980d538291695b9b994a758e07a37d1553c3cecb Mon Sep 17 00:00:00 2001
 From: Christian Limpach <Christian.Limpach at xensource.com>
 Date: Wed, 19 Mar 2008 15:54:48 +0000
 Subject: [PATCH] xen blkfront: Delay wait for block devices until after the disk is added.

linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch:

Index: linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0010-xen-Add-a-vmlinuz-target.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From c587b35bc656098a23057bed9997b1d29037b971 Mon Sep 17 00:00:00 2001
+From a018c0f30806c06c3a29ade20af47ec1d70507df Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Tue, 19 Feb 2008 15:34:32 +0000
 Subject: [PATCH] xen: Add a vmlinuz target

linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch:

Index: linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0011-xen-Add-empty-xenctrl-module.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From 247e9cfd3c13c68e0ff177bcb3706d7c6feb749b Mon Sep 17 00:00:00 2001
+From 20b27e7c8d410823c3cf2ca109290591a9e2eef7 Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Mon, 4 Feb 2008 08:30:37 +0000
 Subject: [PATCH] xen: Add empty xenctrl module

linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch:

Index: linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0012-xen-Add-proc-xen-capabilities.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From e9b105d24bde9e175f6ec288af8483376a1451ae Mon Sep 17 00:00:00 2001
+From c722a6496585c6cbdf74e80a4b557e5c7f03b65e Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Mon, 4 Feb 2008 09:16:51 +0000
 Subject: [PATCH] xen: Add /proc/xen/capabilities

linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch:

Index: linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0013-xen-Add-proc-xen-privcmd.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From 92154c47c81fcb8b5d5dcd17d2bdac5fe7db558a Mon Sep 17 00:00:00 2001
+From c208dc40c7e4324dce80ed0e4354e864f8d376bc Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Mon, 4 Feb 2008 08:24:57 +0000
 Subject: [PATCH] xen: Add /proc/xen/privcmd

linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch:

Index: linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0014-xen-Add-proc-xen-xenbus.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From 4470f9c801ea8817f9fadd40f7179e5d05722a33 Mon Sep 17 00:00:00 2001
+From 079481d161412e3d82f9fd3b51ab15ec890ce6a5 Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Mon, 4 Feb 2008 22:04:36 +0000
 Subject: [PATCH] xen: Add /proc/xen/xenbus

linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch:

Index: linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0015-xen-Add-Xen-s-sys-hypervisor-interface.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From b1bfe3ddf28433a48502b432ed613d9dc0fb02a7 Mon Sep 17 00:00:00 2001
+From 8968e78bf8c27f3b6cba372eae83519cd58e5d3c Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Thu, 7 Feb 2008 15:32:28 +0000
 Subject: [PATCH] xen: Add Xen's /sys/hypervisor interface

linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch:

Index: linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0016-xen-debug-Add-xprintk-to-log-directly-via-hypercall.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,4 +1,4 @@
-From f3113ec69963f768828100d404942b85377c30f1 Mon Sep 17 00:00:00 2001
+From d50b24e5a21b461d064f2925a9b6bbb26fe25acb Mon Sep 17 00:00:00 2001
 From: Stephen Tweedie <sct at redhat.com>
 Date: Wed, 21 Nov 2007 18:40:31 +0000
 Subject: [PATCH] xen debug: Add xprintk to log directly via hypercall

linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch:

Index: linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch	2 Apr 2008 08:55:25 -0000	1.5
+++ linux-2.6-xen-0017-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch	3 Apr 2008 09:48:58 -0000	1.6
@@ -1,4 +1,4 @@
-From 6fcfadcc705139925597308fb5269fa90436c7c0 Mon Sep 17 00:00:00 2001
+From ae2222fe980061c94d218b8250061484cc8fa10b Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Thu, 6 Mar 2008 11:10:59 +0000
 Subject: [PATCH] xen x86_64: Add 64 bit version of privcmd_hypercall()

linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch:

Index: linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch	2 Apr 2008 08:55:25 -0000	1.2
+++ linux-2.6-xen-0018-xen-x86_64-Only-define-load_user_cs_desc-on-32-bi.patch	3 Apr 2008 09:48:58 -0000	1.3
@@ -1,4 +1,4 @@
-From 16e89fea775d56f283b50c17e877a410b08e2cf0 Mon Sep 17 00:00:00 2001
+From 28ab3704d91f763b1a4b123ce682c4982a43bd9a Mon Sep 17 00:00:00 2001
 From: Mark McLoughlin <markmc at redhat.com>
 Date: Tue, 25 Mar 2008 11:56:43 +0000
 Subject: [PATCH] xen x86_64: Only define load_user_cs_desc() on 32 bit

linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch:

Index: linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch	2 Apr 2008 08:55:25 -0000	1.4
+++ linux-2.6-xen-0019-xen-x86_64-Initial-x86_64-support-for-Xen-paravirt_.patch	3 Apr 2008 09:48:58 -0000	1.5
@@ -1,94 +1,82 @@
-From 3cee1d0011cc4736580b143163d579dffa43866c Mon Sep 17 00:00:00 2001
+From 0da71ea5a68f5b9742b907ec71fe89408525a30b Mon Sep 17 00:00:00 2001
 From: Eduardo Habkost <ehabkost at redhat.com>
-Date: Thu, 28 Feb 2008 12:16:04 -0300
+Date: Wed, 2 Apr 2008 18:17:24 +0100
 Subject: [PATCH] xen x86_64: Initial x86_64 support for Xen paravirt_ops
 
-Taken from the xen-64-2008-03-07 tag
+Taken from a rebase of the xen-64-2008-03-07-0.2 tag
+to v2.6.25-rc8
 
 Signed-off-by: Eduardo Habkost <ehabkost at redhat.com>
 Signed-off-by: Mark McLoughlin <markmc at redhat.com>
 ---
- arch/x86/Kconfig                     |    3 +-
- arch/x86/kernel/acpi/boot.c          |    4 +-
- arch/x86/kernel/apic_32.c            |    4 +-
- arch/x86/kernel/apic_64.c            |    2 +-
- arch/x86/kernel/asm-offsets_64.c     |   15 +
- arch/x86/kernel/early_printk.c       |    5 +-
- arch/x86/kernel/efi_64.c             |    4 +-
- arch/x86/kernel/entry_32.S           |   83 +-----
- arch/x86/kernel/entry_64.S           |   72 ++++-
- arch/x86/kernel/genapic_64.c         |   12 +
- arch/x86/kernel/head64.c             |    4 +
- arch/x86/kernel/head_64.S            |   23 ++
- arch/x86/kernel/hpet.c               |    4 +-
- arch/x86/kernel/io_apic_64.c         |    2 +-
- arch/x86/kernel/irq_64.c             |    5 +
- arch/x86/kernel/mpparse_32.c         |    4 +-
- arch/x86/kernel/mpparse_64.c         |    4 +-
- arch/x86/kernel/paravirt.c           |    3 +
- arch/x86/kernel/process_64.c         |    9 +
- arch/x86/kernel/setup64.c            |    5 +
- arch/x86/kernel/setup_64.c           |   41 +++-
- arch/x86/kernel/smpboot_64.c         |    4 +-
- arch/x86/kernel/vsyscall_64.c        |   31 ++-
- arch/x86/mach-visws/traps.c          |   10 +-
- arch/x86/mm/init_32.c                |    2 +-
- arch/x86/mm/init_64.c                |  558 ++++++++++++++++++++++++++++++++--
- arch/x86/mm/ioremap.c                |    4 +-
- arch/x86/mm/pgtable_32.c             |   25 ++-
- arch/x86/pci/mmconfig_32.c           |    2 +-
- arch/x86/vdso/vdso32-setup.c         |    6 +-
- arch/x86/xen/Kconfig                 |    1 -
- arch/x86/xen/Makefile                |    6 +
- arch/x86/xen/enlighten.c             |  268 +++++++++++------
- arch/x86/xen/entry.S                 |    5 +
- arch/x86/xen/entry_32.S              |   81 +++++
- arch/x86/xen/entry_64.S              |   68 ++++
- arch/x86/xen/events.c                |   13 +-
- arch/x86/xen/genapic.c               |  190 ++++++++++++
- arch/x86/xen/init.h                  |   20 ++
- arch/x86/xen/init_32.c               |    3 +
- arch/x86/xen/init_64.c               |  181 +++++++++++
- arch/x86/xen/mmu.c                   |  417 ++++++++++++++++++-------
- arch/x86/xen/mmu.h                   |   47 ++--
- arch/x86/xen/multicalls.c            |    9 +-
- arch/x86/xen/setup.c                 |   22 ++
- arch/x86/xen/smp.c                   |   16 +
- arch/x86/xen/xen-asm.S               |  224 +++-----------
- arch/x86/xen/xen-asm_32.S            |  184 +++++++++++
- arch/x86/xen/xen-asm_64.S            |   75 +++++
- arch/x86/xen/xen-head.S              |   21 +-
- arch/x86/xen/xen-ops.h               |   11 +
- drivers/acpi/thermal.c               |    5 +
- drivers/char/hvc_xen.c               |    6 +
- drivers/ieee1394/init_ohci1394_dma.c |    2 +-
- drivers/serial/8250_early.c          |    2 +-
- include/asm-x86/asm-hack.h           |   27 ++
- include/asm-x86/cmpxchg_64.h         |   36 +++
- include/asm-x86/desc_defs.h          |    4 +
- include/asm-x86/fixmap_32.h          |   22 +-
- include/asm-x86/fixmap_64.h          |   31 ++-
- include/asm-x86/mmu_context_64.h     |    6 +-
- include/asm-x86/page_64.h            |    2 +-
- include/asm-x86/paravirt.h           |   46 ++-
- include/asm-x86/percpu.h             |   32 ++
- include/asm-x86/pgalloc_64.h         |   69 ++++-
- include/asm-x86/pgtable.h            |   15 +-
- include/asm-x86/pgtable_64.h         |    3 +-
- include/asm-x86/proto.h              |    1 +
- include/asm-x86/smp_64.h             |    3 +
- include/asm-x86/system.h             |    3 +-
- include/asm-x86/xen/hypercall.h      |  205 ++++++++++---
- include/asm-x86/xen/hypervisor.h     |    3 -
- include/asm-x86/xen/interface.h      |   35 ++-
- include/linux/dmi.h                  |    1 +
- include/linux/elfnote.h              |    2 +-
- include/xen/events.h                 |    2 +
- include/xen/interface/elfnote.h      |   16 +
- include/xen/page.h                   |   34 ++-
- init/main.c                          |   10 +
- mm/slab.c                            |    8 +-
- 80 files changed, 2769 insertions(+), 674 deletions(-)
+ arch/x86/Kconfig                 |    3 +-
+ arch/x86/kernel/asm-offsets_64.c |   15 +
+ arch/x86/kernel/early_printk.c   |    5 +-
+ arch/x86/kernel/entry_32.S       |   83 +------
+ arch/x86/kernel/entry_64.S       |   72 +++++-
+ arch/x86/kernel/genapic_64.c     |   12 +
+ arch/x86/kernel/head64.c         |    4 +
+ arch/x86/kernel/head_64.S        |   23 ++
+ arch/x86/kernel/irq_64.c         |    5 +
+ arch/x86/kernel/paravirt.c       |    5 +
+ arch/x86/kernel/process_64.c     |    9 +
+ arch/x86/kernel/setup64.c        |    5 +
+ arch/x86/kernel/setup_64.c       |   41 +++-
+ arch/x86/kernel/smpboot_64.c     |    4 +-
+ arch/x86/kernel/vsyscall_64.c    |   29 ++-
+ arch/x86/mm/init_64.c            |  561 ++++++++++++++++++++++++++++++++++++--
+ arch/x86/mm/pgtable_32.c         |   15 +-
+ arch/x86/vdso/vdso32-setup.c     |    4 +
+ arch/x86/xen/Kconfig             |    1 -
+ arch/x86/xen/Makefile            |    6 +
+ arch/x86/xen/enlighten.c         |  306 +++++++++++++++-------
+ arch/x86/xen/entry.S             |    5 +
+ arch/x86/xen/entry_32.S          |   81 ++++++
+ arch/x86/xen/entry_64.S          |   68 +++++
+ arch/x86/xen/events.c            |   13 +-
+ arch/x86/xen/genapic.c           |  190 +++++++++++++
+ arch/x86/xen/init.h              |   20 ++
+ arch/x86/xen/init_32.c           |    3 +
+ arch/x86/xen/init_64.c           |  181 ++++++++++++
+ arch/x86/xen/mmu.c               |  447 +++++++++++++++++++++----------
+ arch/x86/xen/mmu.h               |   47 ++--
+ arch/x86/xen/multicalls.c        |    9 +-
+ arch/x86/xen/setup.c             |   22 ++
+ arch/x86/xen/smp.c               |   16 +
+ arch/x86/xen/xen-asm.S           |  224 +++-------------
+ arch/x86/xen/xen-asm_32.S        |  184 +++++++++++++
+ arch/x86/xen/xen-asm_64.S        |   75 +++++
+ arch/x86/xen/xen-head.S          |   21 ++-
+ arch/x86/xen/xen-ops.h           |   11 +
+ drivers/acpi/thermal.c           |    5 +
+ drivers/char/hvc_xen.c           |    6 +
+ include/asm-x86/asm-hack.h       |   27 ++
+ include/asm-x86/cmpxchg_64.h     |   36 +++
+ include/asm-x86/desc_defs.h      |    4 +
+ include/asm-x86/fixmap_32.h      |   18 +-
+ include/asm-x86/fixmap_64.h      |   27 ++-
+ include/asm-x86/mmu_context_64.h |    6 +-
+ include/asm-x86/page_64.h        |    2 +-
+ include/asm-x86/paravirt.h       |   59 ++++-
+ include/asm-x86/percpu.h         |   32 +++
+ include/asm-x86/pgalloc_64.h     |   69 ++++-
+ include/asm-x86/pgtable.h        |   15 +-
+ include/asm-x86/pgtable_32.h     |    3 +
+ include/asm-x86/pgtable_64.h     |    7 +-
+ include/asm-x86/proto.h          |    1 +
+ include/asm-x86/smp_64.h         |    3 +
+ include/asm-x86/system.h         |    3 +-
+ include/asm-x86/xen/hypercall.h  |  205 ++++++++++++---
+ include/asm-x86/xen/hypervisor.h |    3 -
+ include/asm-x86/xen/interface.h  |   35 ++-
+ include/linux/dmi.h              |    1 +
+ include/linux/elfnote.h          |    2 +-
+ include/xen/events.h             |    2 +
+ include/xen/interface/elfnote.h  |   16 +
+ include/xen/page.h               |   34 ++-
+ init/main.c                      |   10 +
+ mm/slab.c                        |    8 +-
+ 67 files changed, 2788 insertions(+), 676 deletions(-)
  create mode 100644 arch/x86/xen/entry.S
  create mode 100644 arch/x86/xen/entry_32.S
  create mode 100644 arch/x86/xen/entry_64.S
@@ -121,63 +109,6 @@
  	depends on X86_64 && PCI
  	 help
  	  Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
-diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 2cdc9de..cfc79ac 100644
---- a/arch/x86/kernel/acpi/boot.c
-+++ b/arch/x86/kernel/acpi/boot.c
-@@ -141,7 +141,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
- 
- 	offset = phys & (PAGE_SIZE - 1);
- 	mapped_size = PAGE_SIZE - offset;
--	set_fixmap(FIX_ACPI_END, phys);
-+	set_fixmap_ma(FIX_ACPI_END, phys);
- 	base = fix_to_virt(FIX_ACPI_END);
- 
- 	/*
-@@ -152,7 +152,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
- 		if (--idx < FIX_ACPI_BEGIN)
- 			return NULL;	/* cannot handle this */
- 		phys += PAGE_SIZE;
--		set_fixmap(idx, phys);
-+		set_fixmap_ma(idx, phys);
- 		mapped_size += PAGE_SIZE;
- 	}
- 
-diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c
-index 35a568e..40fc1b3 100644
---- a/arch/x86/kernel/apic_32.c
-+++ b/arch/x86/kernel/apic_32.c
-@@ -1138,7 +1138,7 @@ void __init init_apic_mappings(void)
- 	} else
- 		apic_phys = mp_lapic_addr;
- 
--	set_fixmap_nocache(FIX_APIC_BASE, apic_phys);
-+	set_fixmap_ma_nocache(FIX_APIC_BASE, apic_phys);
- 	printk(KERN_DEBUG "mapped APIC to %08lx (%08lx)\n", APIC_BASE,
- 	       apic_phys);
- 
-@@ -1172,7 +1172,7 @@ fake_ioapic_page:
- 					      alloc_bootmem_pages(PAGE_SIZE);
- 				ioapic_phys = __pa(ioapic_phys);
- 			}
--			set_fixmap_nocache(idx, ioapic_phys);
-+			set_fixmap_ma_nocache(idx, ioapic_phys);
- 			printk(KERN_DEBUG "mapped IOAPIC to %08lx (%08lx)\n",
- 			       __fix_to_virt(idx), ioapic_phys);
- 			idx++;
-diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
-index d8d03e0..a611520 100644
---- a/arch/x86/kernel/apic_64.c
-+++ b/arch/x86/kernel/apic_64.c
-@@ -877,7 +877,7 @@ void __init init_apic_mappings(void)
- 	} else
- 		apic_phys = mp_lapic_addr;
- 
--	set_fixmap_nocache(FIX_APIC_BASE, apic_phys);
-+	set_fixmap_ma_nocache(FIX_APIC_BASE, apic_phys);
- 	apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
- 				APIC_BASE, apic_phys);
- 
 diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c
 index 494e1e0..d0fabfd 100644
 --- a/arch/x86/kernel/asm-offsets_64.c
@@ -241,21 +172,6 @@
  	va_end(ap);
  }
  
-diff --git a/arch/x86/kernel/efi_64.c b/arch/x86/kernel/efi_64.c
-index d143a1e..7960cde 100644
---- a/arch/x86/kernel/efi_64.c
-+++ b/arch/x86/kernel/efi_64.c
-@@ -117,8 +117,8 @@ void __iomem * __init efi_ioremap(unsigned long phys_addr, unsigned long size)
- 		return NULL;
- 
- 	for (i = 0; i < pages; i++) {
--		__set_fixmap(FIX_EFI_IO_MAP_FIRST_PAGE - pages_mapped,
--			     phys_addr, PAGE_KERNEL);
-+		__set_fixmap_ma(FIX_EFI_IO_MAP_FIRST_PAGE - pages_mapped,
-+                                phys_addr, PAGE_KERNEL);
- 		phys_addr += PAGE_SIZE;
- 		pages_mapped++;
- 	}
 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
 index 4b87c32..4ef3881 100644
 --- a/arch/x86/kernel/entry_32.S
@@ -641,34 +557,6 @@
  /* We need valid kernel segments for data and code in long mode too
   * IRET will check the segment types  kkeil 2000/10/28
   * Also sysret mandates a special GDT layout 
-diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
-index 235fd6c..377d4e6 100644
---- a/arch/x86/kernel/hpet.c
-+++ b/arch/x86/kernel/hpet.c
-@@ -41,8 +41,8 @@ static inline void hpet_writel(unsigned long d, unsigned long a)
- 
- static inline void hpet_set_mapping(void)
- {
--	set_fixmap_nocache(FIX_HPET_BASE, hpet_address);
--	__set_fixmap(VSYSCALL_HPET, hpet_address, PAGE_KERNEL_VSYSCALL_NOCACHE);
-+	set_fixmap_ma_nocache(FIX_HPET_BASE, hpet_address);
-+	__set_fixmap_ma(VSYSCALL_HPET, hpet_address, PAGE_KERNEL_VSYSCALL_NOCACHE);
- 	hpet_virt_address = (void __iomem *)fix_to_virt(FIX_HPET_BASE);
- }
- 
-diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
-index 1627c0d..34a4459 100644
---- a/arch/x86/kernel/io_apic_64.c
-+++ b/arch/x86/kernel/io_apic_64.c
-@@ -2345,7 +2345,7 @@ void __init ioapic_init_mappings(void)
- 				alloc_bootmem_pages(PAGE_SIZE);
- 			ioapic_phys = __pa(ioapic_phys);
- 		}
--		set_fixmap_nocache(idx, ioapic_phys);
-+		set_fixmap_ma_nocache(idx, ioapic_phys);
- 		apic_printk(APIC_VERBOSE,
- 			    "mapped IOAPIC to %016lx (%016lx)\n",
- 			    __fix_to_virt(idx), ioapic_phys);
 diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
 index 3aac154..f5e486c 100644
 --- a/arch/x86/kernel/irq_64.c
@@ -686,52 +574,8 @@
  
  #ifdef CONFIG_DEBUG_STACKOVERFLOW
  	stack_overflow_check(regs);
-diff --git a/arch/x86/kernel/mpparse_32.c b/arch/x86/kernel/mpparse_32.c
-index f349e68..7edb0e2 100644
---- a/arch/x86/kernel/mpparse_32.c
-+++ b/arch/x86/kernel/mpparse_32.c
-@@ -815,7 +815,7 @@ void __init mp_register_lapic_address(u64 address)
- {
- 	mp_lapic_addr = (unsigned long) address;
- 
--	set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
-+	set_fixmap_ma_nocache(FIX_APIC_BASE, mp_lapic_addr);
- 
- 	if (boot_cpu_physical_apicid == -1U)
- 		boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
-@@ -901,7 +901,7 @@ void __init mp_register_ioapic(u8 id, u32 address, u32 gsi_base)
- 	mp_ioapics[idx].mpc_flags = MPC_APIC_USABLE;
- 	mp_ioapics[idx].mpc_apicaddr = address;
- 
--	set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
-+	set_fixmap_ma_nocache(FIX_IO_APIC_BASE_0 + idx, address);
- 	if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
- 		&& !APIC_XAPIC(apic_version[boot_cpu_physical_apicid]))
- 		tmpid = io_apic_get_unique_id(idx, id);
-diff --git a/arch/x86/kernel/mpparse_64.c b/arch/x86/kernel/mpparse_64.c
-index 72ab140..9a57263 100644
---- a/arch/x86/kernel/mpparse_64.c
-+++ b/arch/x86/kernel/mpparse_64.c
-@@ -612,7 +612,7 @@ void __init find_smp_config(void)
- void __init mp_register_lapic_address(u64 address)
- {
- 	mp_lapic_addr = (unsigned long) address;
--	set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
-+	set_fixmap_ma_nocache(FIX_APIC_BASE, mp_lapic_addr);
- 	if (boot_cpu_id == -1U)
- 		boot_cpu_id = GET_APIC_ID(apic_read(APIC_ID));
- }
-@@ -690,7 +690,7 @@ void __init mp_register_ioapic(u8 id, u32 address, u32 gsi_base)
- 	mp_ioapics[idx].mpc_flags = MPC_APIC_USABLE;
- 	mp_ioapics[idx].mpc_apicaddr = address;
- 
--	set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
-+	set_fixmap_ma_nocache(FIX_IO_APIC_BASE_0 + idx, address);
- 	mp_ioapics[idx].mpc_apicid = uniq_ioapic_id(id);
- 	mp_ioapics[idx].mpc_apicver = 0;
- 	
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index c845947..a8fce34 100644
+index c845947..3f75e88 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
 @@ -340,6 +340,9 @@ struct pv_cpu_ops pv_cpu_ops = {
@@ -744,6 +588,15 @@
  	.write_ldt_entry = native_write_ldt_entry,
  	.write_gdt_entry = native_write_gdt_entry,
  	.write_idt_entry = native_write_idt_entry,
+@@ -433,6 +436,8 @@ struct pv_mmu_ops pv_mmu_ops = {
+ 		.enter = paravirt_nop,
+ 		.leave = paravirt_nop,
+ 	},
++
++	.set_fixmap = native_set_fixmap,
+ };
+ 
+ EXPORT_SYMBOL_GPL(pv_time_ops);
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
 index 3baf9b9..ea2c47e 100644
 --- a/arch/x86/kernel/process_64.c
@@ -911,7 +764,7 @@
  	int i;
  	struct cpuinfo_x86 *c = &cpu_data(cpu);
 diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
-index edff4c9..0a95bb0 100644
+index edff4c9..49273b9 100644
 --- a/arch/x86/kernel/vsyscall_64.c
 +++ b/arch/x86/kernel/vsyscall_64.c
 @@ -249,7 +249,8 @@ static ctl_table kernel_root_table2[] = {
@@ -957,63 +810,8 @@
  }
  
  static void __cpuinit cpu_vsyscall_init(void *arg)
-@@ -288,7 +305,7 @@ void __init map_vsyscall(void)
- 	unsigned long physaddr_page0 = __pa_symbol(&__vsyscall_0);
- 
- 	/* Note that VSYSCALL_MAPPED_PAGES must agree with the code below. */
--	__set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_page0, PAGE_KERNEL_VSYSCALL);
-+	__set_fixmap_phys(VSYSCALL_FIRST_PAGE, physaddr_page0, PAGE_KERNEL_VSYSCALL);
- }
- 
- static int __init vsyscall_init(void)
-diff --git a/arch/x86/mach-visws/traps.c b/arch/x86/mach-visws/traps.c
-index bfac6ba..23f17fa 100644
---- a/arch/x86/mach-visws/traps.c
-+++ b/arch/x86/mach-visws/traps.c
-@@ -19,8 +19,8 @@
- 
- static __init void lithium_init(void)
- {
--	set_fixmap(FIX_LI_PCIA, LI_PCI_A_PHYS);
--	set_fixmap(FIX_LI_PCIB, LI_PCI_B_PHYS);
-+	set_fixmap_ma(FIX_LI_PCIA, LI_PCI_A_PHYS);
-+	set_fixmap_ma(FIX_LI_PCIB, LI_PCI_B_PHYS);
- 
- 	if ((li_pcia_read16(PCI_VENDOR_ID) != PCI_VENDOR_ID_SGI) ||
- 	    (li_pcia_read16(PCI_DEVICE_ID) != PCI_DEVICE_ID_SGI_LITHIUM)) {
-@@ -44,14 +44,14 @@ static __init void cobalt_init(void)
- 	 * On normal SMP PC this is used only with SMP, but we have to
- 	 * use it and set it up here to start the Cobalt clock
- 	 */
--	set_fixmap(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE);
-+	set_fixmap_ma(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE);
- 	setup_local_APIC();
- 	printk(KERN_INFO "Local APIC Version %#x, ID %#x\n",
- 		(unsigned int)apic_read(APIC_LVR),
- 		(unsigned int)apic_read(APIC_ID));
- 
--	set_fixmap(FIX_CO_CPU, CO_CPU_PHYS);
--	set_fixmap(FIX_CO_APIC, CO_APIC_PHYS);
-+	set_fixmap_ma(FIX_CO_CPU, CO_CPU_PHYS);
-+	set_fixmap_ma(FIX_CO_APIC, CO_APIC_PHYS);
- 	printk(KERN_INFO "Cobalt Revision %#lx, APIC ID %#lx\n",
- 		co_cpu_read(CO_CPU_REV), co_apic_read(CO_APIC_ID));
- 
-diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
-index f5926ae..a50ab25 100644
---- a/arch/x86/mm/init_32.c
-+++ b/arch/x86/mm/init_32.c
-@@ -551,7 +551,7 @@ static void __init test_wp_bit(void)
-   "Checking if this processor honours the WP bit even in supervisor mode...");
- 
- 	/* Any page-aligned address will do, the test is non-destructive */
--	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
-+	__set_fixmap_phys(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
- 	boot_cpu_data.wp_works_ok = do_test_wp_bit();
- 	clear_fixmap(FIX_WP_TEST);
- 
 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
-index 954a6d6..8194032 100644
+index 954a6d6..e663bdd 100644
 --- a/arch/x86/mm/init_64.c
 +++ b/arch/x86/mm/init_64.c
 @@ -47,6 +47,23 @@
@@ -1022,6 +820,9 @@
  
 +#ifdef CONFIG_XEN
 +/*FIXME: ouch. */
++#include <xen/features.h>
++#include <xen/page.h>
++#include <xen/hvc-console.h>
 +#include <asm/xen/hypercall.h>
 +#include <asm/xen/hypervisor.h>
 +#include "../xen/init.h"
@@ -1034,9 +835,6 @@
 +#else
 +#endif
 +
-+/*FIXME: do something to move mfn_pte() & friends outside of common code */
-+#include <xen/page.h>
-+
  const struct dma_mapping_ops *dma_ops;
  EXPORT_SYMBOL(dma_ops);
  
@@ -1221,15 +1019,16 @@
  
  static __init void
 -set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
-+__set_pte_ma(pud_t *pud_page, unsigned long vaddr, unsigned long phys, pgprot_t prot)
++set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte)
  {
 -	pgd_t *pgd;
  	pud_t *pud;
  	pmd_t *pmd;
- 	pte_t *pte, new_pte;
- 
--	pr_debug("set_pte_phys %lx to %lx\n", vaddr, phys);
+-	pte_t *pte, new_pte;
 -
+-	pr_debug("set_pte_phys %lx to %lx\n", vaddr, phys);
++	pte_t *pte;
+ 
 -	pgd = pgd_offset_k(vaddr);
 -	if (pgd_none(*pgd)) {
 -		printk(KERN_ERR
@@ -1244,7 +1043,7 @@
  		set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE | _PAGE_USER));
  		if (pmd != pmd_offset(pud, 0)) {
  			printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n",
-@@ -150,13 +313,14 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
+@@ -150,13 +313,13 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
  	pmd = pmd_offset(pud, vaddr);
  	if (pmd_none(*pmd)) {
  		pte = (pte_t *) spp_getpage();
@@ -1256,21 +1055,20 @@
  		}
  	}
 -	new_pte = pfn_pte(phys >> PAGE_SHIFT, prot);
-+	new_pte = mfn_pte(phys >> PAGE_SHIFT, prot);
  
  	pte = pte_offset_kernel(pmd, vaddr);
  	if (!pte_none(*pte) &&
-@@ -171,6 +335,25 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
+@@ -171,6 +334,24 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
  	__flush_tlb_one(vaddr);
  }
  
-+static __init void set_pte_ma(unsigned long vaddr,
-+			 unsigned long phys, pgprot_t prot)
++__init void
++set_pte_vaddr(unsigned long vaddr, pte_t new_pte)
 +{
 +	pgd_t *pgd;
 +	pud_t *pud_page;
 +
-+	pr_debug("set_pte_phys %lx to %lx\n", vaddr, phys);
++	pr_debug("set_pte_vaddr %lx to %lx\n", vaddr, native_pte_val(new_pte));
 +
 +	pgd = pgd_offset_k(vaddr);
 +	if (pgd_none(*pgd)) {
@@ -1278,47 +1076,48 @@
 +			"PGD FIXMAP MISSING, it should be setup in head.S!\n");
 +		return;
 +	}
-+
 +	pud_page = (pud_t*)pgd_page_vaddr(*pgd);
-+	__set_pte_ma(pud_page, vaddr, phys, prot);
++	set_pte_vaddr_pud(pud_page, vaddr, new_pte);
 +}
 +
  /*
   * The head.S code sets up the kernel high mapping:
   *
-@@ -201,7 +384,7 @@ void __init cleanup_highmap(void)
+@@ -199,9 +380,8 @@ void __init cleanup_highmap(void)
+ 	}
+ }
  
- /* NOTE: this is meant to be run only at boot */
- void __init
+-/* NOTE: this is meant to be run only at boot */
+-void __init
 -__set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
-+__set_fixmap_ma(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
++void __init 
++__native_set_fixmap(enum fixed_addresses idx, pte_t pte)
  {
  	unsigned long address = __fix_to_virt(idx);
  
-@@ -209,11 +392,232 @@ __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
+@@ -209,11 +389,232 @@ __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
  		printk(KERN_ERR "Invalid __set_fixmap\n");
  		return;
  	}
 -	set_pte_phys(address, phys, prot);
-+	set_pte_ma(address, phys, prot);
++	set_pte_vaddr(address, pte);
 +
 +#ifdef CONFIG_XEN
-+	/*FIXME: do this using pvops, somehow */
++	/*FIXME: move this to xen_set_pte() */
 +	if (idx == VSYSCALL_FIRST_PAGE)
-+		__set_pte_ma(level3_user_pgt, address, phys, prot);
++		set_pte_vaddr_pud(level3_user_pgt, address, pte);
 +#endif
  }
  
 -static unsigned long __initdata table_start;
 -static unsigned long __meminitdata table_end;
-+void __init __set_fixmap_phys (enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
-+{
-+	__set_fixmap_ma(idx, phys_to_machine(XPADDR(phys)).maddr, prot);
-+}
-+
-+void __init __clear_fixmap (enum fixed_addresses idx)
-+{
-+	__set_fixmap_ma(idx, 0, __pgprot(0));
++/* NOTE: this is meant to be run only at boot */
++void __init
++native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
++{
++	pte_t new_pte;
++	new_pte = pfn_pte(phys >> PAGE_SHIFT, prot);
++	__native_set_fixmap(idx, new_pte);
 +}
 +
 +
@@ -1443,7 +1242,7 @@
 +	 * boot-time allocator is online, so allocate-on-demand would fail.
 +	 */
 +	for (i = FIX_BTMAP_END; i <= FIX_BTMAP_BEGIN; i++)
-+		__clear_fixmap(i);
++		clear_fixmap(i);
 +
 +	xprintk("btmap end.\n");
 +
@@ -1459,12 +1258,13 @@
 +	/* Set up mapping of lowest 1MB of physical memory. */
 +	for (i = 0; i < NR_FIX_ISAMAPS; i++)
 +		if (is_initial_xendomain())
-+			set_fixmap_ma(FIX_ISAMAP_BEGIN - i, i * PAGE_SIZE);
++			__native_set_fixmap(FIX_ISAMAP_BEGIN - i,
++					    mfn_pte(i * PAGE_SIZE, PAGE_KERNEL));
 +		else
-+			__set_fixmap_phys(FIX_ISAMAP_BEGIN - i,
-+				     __pa(empty_zero_page),
-+				     PAGE_KERNEL_RO);
-+
++			__native_set_fixmap(FIX_ISAMAP_BEGIN - i,
++					    pfn_pte(__pa(empty_zero_page)
++					        >> PAGE_SHIFT,
++					    PAGE_KERNEL_RO));
 +
 +	/* Disable the 'xen_alloc_pfn' allocator. */
 +	table_end = xen_alloc_pfn;
@@ -1531,7 +1331,7 @@
  
  static __meminit void *alloc_low_page(unsigned long *phys)
  {
-@@ -236,12 +640,18 @@ static __meminit void *alloc_low_page(unsigned long *phys)
+@@ -236,12 +637,18 @@ static __meminit void *alloc_low_page(unsigned long *phys)
  	return adr;
  }
  
@@ -1550,7 +1350,7 @@
  }
  
  /* Must run before zap_low_mappings */
-@@ -264,8 +674,9 @@ __meminit void *early_ioremap(unsigned long addr, unsigned long size)
+@@ -264,8 +671,9 @@ __meminit void *early_ioremap(unsigned long addr, unsigned long size)
  		vaddr += addr & ~PMD_MASK;
  		addr &= PMD_MASK;
  
@@ -1561,7 +1361,7 @@
  		__flush_tlb_all();
  
  		return (void *)vaddr;
-@@ -301,7 +712,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
+@@ -301,7 +709,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
  {
  	int i = pmd_index(address);
  
@@ -1570,7 +1370,7 @@
  		pmd_t *pmd = pmd_page + pmd_index(address);
  
  		if (address >= end) {
-@@ -315,8 +726,47 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
+@@ -315,8 +723,47 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
  		if (pmd_val(*pmd))
  			continue;
  
@@ -1620,7 +1420,7 @@
  	}
  }
  
-@@ -343,11 +793,14 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
+@@ -343,11 +790,14 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
  		if (addr >= end)
  			break;
  
@@ -1635,7 +1435,7 @@
  
  		if (pud_val(*pud)) {
  			phys_pmd_update(pud, addr, end);
-@@ -355,6 +808,8 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
+@@ -355,6 +805,8 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
  		}
  
  		pmd = alloc_low_page(&pmd_phys);
@@ -1644,7 +1444,7 @@
  
  		spin_lock(&init_mm.page_table_lock);
  		set_pud(pud, __pud(pmd_phys | _KERNPG_TABLE));
-@@ -366,6 +821,35 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
+@@ -366,6 +818,35 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
  	__flush_tlb_all();
  }
  
@@ -1680,7 +1480,7 @@
  static void __init find_early_table_space(unsigned long end)
  {
  	unsigned long puds, pmds, tables, start;
-@@ -389,6 +873,8 @@ static void __init find_early_table_space(unsigned long end)
+@@ -389,6 +870,8 @@ static void __init find_early_table_space(unsigned long end)
  	table_end = table_start;
  }
  
@@ -1689,7 +1489,7 @@
  /*
   * Setup the direct mapping of the physical memory at PAGE_OFFSET.
   * This runs before bootmem is initialized and gets pages directly from
-@@ -420,8 +906,11 @@ void __init_refok init_memory_mapping(unsigned long start, unsigned long end)
+@@ -420,8 +903,11 @@ void __init_refok init_memory_mapping(unsigned long start, unsigned long end)
  
  		if (after_bootmem)
  			pud = pud_offset(pgd, start & PGDIR_MASK);
@@ -1702,7 +1502,7 @@
  
  		next = start + PGDIR_SIZE;
  		if (next > end)
-@@ -432,10 +921,33 @@ void __init_refok init_memory_mapping(unsigned long start, unsigned long end)
+@@ -432,10 +918,33 @@ void __init_refok init_memory_mapping(unsigned long start, unsigned long end)
  		unmap_low_page(pud);
  	}
  
@@ -1737,110 +1537,58 @@
  	if (!after_bootmem)
  		reserve_early(table_start << PAGE_SHIFT,
  				 table_end << PAGE_SHIFT, "PGTABLE");
-diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
-index 3188588..5006c83 100644
---- a/arch/x86/mm/ioremap.c
-+++ b/arch/x86/mm/ioremap.c
-@@ -347,7 +347,7 @@ void __init early_ioremap_reset(void)
- 		pte = early_ioremap_pte(addr);
- 		if (pte_present(*pte)) {
- 			phys = pte_val(*pte) & PAGE_MASK;
--			set_fixmap(idx, phys);
-+			set_fixmap_phys(idx, phys);
- 		}
- 	}
- }
-@@ -374,7 +374,7 @@ static inline void __init early_set_fixmap(enum fixed_addresses idx,
- 					unsigned long phys)
- {
- 	if (after_paging_init)
--		set_fixmap(idx, phys);
-+		set_fixmap_phys(idx, phys);
- 	else
- 		__early_set_fixmap(idx, phys, PAGE_KERNEL);
- }
 diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
-index 2f9e9af..fca715d 100644
+index 2f9e9af..c1c7c36 100644
 --- a/arch/x86/mm/pgtable_32.c
 +++ b/arch/x86/mm/pgtable_32.c
-@@ -24,6 +24,10 @@
- #include <asm/tlb.h>
- #include <asm/tlbflush.h>
- 
-+
-+/*FIXME: do something to move mfn_pte() & friends outside of common code */
-+#include <xen/page.h>
-+
- void show_mem(void)
- {
- 	int total = 0, reserved = 0;
-@@ -76,7 +80,8 @@ void show_mem(void)
+@@ -76,7 +76,7 @@ void show_mem(void)
   * Associate a virtual page frame with a given physical page frame 
   * and protection flags for that frame.
   */ 
 -static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags)
-+static __init void set_pte_mfn(unsigned long vaddr,
-+			unsigned long mfn, pgprot_t flags)
++void set_pte_vaddr(unsigned long vaddr, pte_t pteval)
  {
  	pgd_t *pgd;
  	pud_t *pud;
-@@ -100,7 +105,7 @@ static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags)
+@@ -99,8 +99,8 @@ static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags)
+ 		return;
  	}
  	pte = pte_offset_kernel(pmd, vaddr);
- 	if (pgprot_val(flags))
+-	if (pgprot_val(flags))
 -		set_pte_present(&init_mm, vaddr, pte, pfn_pte(pfn, flags));
-+		set_pte_present(&init_mm, vaddr, pte, mfn_pte(mfn, flags));
++	if (pte_val(pteval))
++		set_pte_present(&init_mm, vaddr, pte, pteval);
  	else
  		pte_clear(&init_mm, vaddr, pte);
  
-@@ -150,7 +155,7 @@ static int fixmaps;
+@@ -150,7 +150,7 @@ static int fixmaps;
  unsigned long __FIXADDR_TOP = 0xfffff000;
  EXPORT_SYMBOL(__FIXADDR_TOP);
  
 -void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
-+void __set_fixmap_ma (enum fixed_addresses idx, unsigned long ma, pgprot_t flags)
++void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
  {
  	unsigned long address = __fix_to_virt(idx);
  
-@@ -158,10 +163,22 @@ void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
+@@ -158,10 +158,15 @@ void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
  		BUG();
  		return;
  	}
 -	set_pte_pfn(address, phys >> PAGE_SHIFT, flags);
-+	set_pte_mfn(address, ma >> PAGE_SHIFT, flags);
++	set_pte_vaddr(address, pte);
  	fixmaps++;
  }
  
-+
-+void __init __set_fixmap_phys (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
++void native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
 +{
-+	__set_fixmap_ma(idx, phys_to_machine(XPADDR(phys)).maddr, flags);
++	__native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
 +}
 +
-+void __init __clear_fixmap (enum fixed_addresses idx)
-+{
-+	__set_fixmap_ma(idx, 0, __pgprot(0));
-+}
-+
-+
  /**
   * reserve_top_address - reserves a hole in the top of kernel address space
   * @reserve - size of hole to reserve
-diff --git a/arch/x86/pci/mmconfig_32.c b/arch/x86/pci/mmconfig_32.c
-index 081816a..3df4c92 100644
---- a/arch/x86/pci/mmconfig_32.c
-+++ b/arch/x86/pci/mmconfig_32.c
-@@ -53,7 +53,7 @@ static void pci_exp_set_dev_base(unsigned int base, int bus, int devfn)
- 	    cpu != mmcfg_last_accessed_cpu) {
- 		mmcfg_last_accessed_device = dev_base;
- 		mmcfg_last_accessed_cpu = cpu;
--		set_fixmap_nocache(FIX_PCIE_MCFG, dev_base);
-+		set_fixmap_ma_nocache(FIX_PCIE_MCFG, dev_base);
- 	}
- }
- 
 diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
-index 0bd5f44..64822a5 100644
+index 0bd5f44..4a0ae65 100644
 --- a/arch/x86/vdso/vdso32-setup.c
 +++ b/arch/x86/vdso/vdso32-setup.c
 @@ -210,6 +210,9 @@ static int use_sysenter __read_mostly = -1;
@@ -1861,15 +1609,6 @@
  }
  
  #define compat_uses_vma		1
-@@ -280,7 +284,7 @@ static void map_compat_vdso(int map)
- 
- 	vdso_mapped = map;
- 
--	__set_fixmap(FIX_VDSO, page_to_pfn(vdso32_pages[0]) << PAGE_SHIFT,
-+	__set_fixmap_phys(FIX_VDSO, page_to_pfn(vdso32_pages[0]) << PAGE_SHIFT,
- 		     map ? PAGE_READONLY_EXEC : PAGE_NONE);
- 
- 	/* flush stray tlbs */
 diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
 index ff6a56a..ef1aaf2 100644
 --- a/arch/x86/xen/Kconfig
@@ -1898,7 +1637,7 @@
 +
  obj-$(CONFIG_SMP)	+= smp.o
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 5c91ae7..eff8aae 100644
+index 5c91ae7..0a32bbc 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -36,6 +36,7 @@
@@ -1932,27 +1671,54 @@
  	/* Check to see if the hypervisor will put the vcpu_info
  	   structure where we want it, which allows direct access via
  	   a percpu-variable. */
-@@ -134,6 +140,10 @@ static void __init xen_vcpu_setup(int cpu)
+@@ -134,17 +140,15 @@ static void __init xen_vcpu_setup(int cpu)
  		printk(KERN_DEBUG "cpu %d using vcpu_info at %p\n",
  		       cpu, vcpup);
  	}
+-}
 +#else
 +	have_vcpu_info_placement = 0;
 +#endif
-+
- }
  
- static void __init xen_banner(void)
-@@ -143,7 +153,7 @@ static void __init xen_banner(void)
- 	printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic);
+-static void __init xen_banner(void)
+-{
+-	printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
+-	       pv_info.name);
+-	printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic);
  }
  
 -static void kcons_write_dom0(const char *s, unsigned int count)
 +void kcons_write_dom0(const char *s, unsigned int count)
  {
++#if 0
         int rc;
  
-@@ -388,6 +398,7 @@ static void xen_load_tls(struct thread_struct *t, unsigned int cpu)
+        while ((count > 0) &&
+@@ -153,6 +157,9 @@ static void kcons_write_dom0(const char *s, unsigned int count)
+                count -= rc;
+                s += rc;
+        }
++#else
++	HYPERVISOR_console_io(CONSOLEIO_write, count, (char *)s);
++#endif
+ }
+ 
+ 
+@@ -174,6 +181,13 @@ asmlinkage int xprintk(const char *fmt, ...)
+        return 0;
+ }
+ 
++static void __init xen_banner(void)
++{
++	printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
++	       pv_info.name);
++	printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic);
++}
++
+ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
+ 		      unsigned int *cx, unsigned int *dx)
+ {
+@@ -388,6 +402,7 @@ static void xen_load_tls(struct thread_struct *t, unsigned int cpu)
  
  	xen_mc_issue(PARAVIRT_LAZY_CPU);
  
@@ -1960,7 +1726,7 @@
  	/*
  	 * XXX sleazy hack: If we're being called in a lazy-cpu zone,
  	 * it means we're in a context switch, and %gs has just been
-@@ -396,10 +407,29 @@ static void xen_load_tls(struct thread_struct *t, unsigned int cpu)
+@@ -396,10 +411,29 @@ static void xen_load_tls(struct thread_struct *t, unsigned int cpu)
  	 * Either way, it has been saved, and the new value will get
  	 * loaded properly.  This will go away as soon as Xen has been
  	 * modified to not save/restore %gs for normal hypercalls.
@@ -1991,7 +1757,7 @@
  
  static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum,
  				const void *ptr)
-@@ -417,23 +447,18 @@ static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum,
+@@ -417,23 +451,18 @@ static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum,
  	preempt_enable();
  }
  
@@ -2021,7 +1787,7 @@
  		info->flags |= 4;
  
  	return 1;
-@@ -460,11 +485,10 @@ static void xen_write_idt_entry(gate_desc *dt, int entrynum, const gate_desc *g)
+@@ -460,11 +489,10 @@ static void xen_write_idt_entry(gate_desc *dt, int entrynum, const gate_desc *g)
  
  	if (p >= start && (p + 8) <= end) {
  		struct trap_info info[2];
@@ -2034,7 +1800,7 @@
  			if (HYPERVISOR_set_trap_table(info))
  				BUG();
  	}
-@@ -477,13 +501,13 @@ static void xen_convert_trap_info(const struct desc_ptr *desc,
+@@ -477,13 +505,13 @@ static void xen_convert_trap_info(const struct desc_ptr *desc,
  {
  	unsigned in, out, count;
  
@@ -2051,7 +1817,7 @@
  			out++;
  	}
  	traps[out].address = 0;
-@@ -656,7 +680,11 @@ static unsigned long xen_read_cr2(void)
+@@ -656,7 +684,11 @@ static unsigned long xen_read_cr2(void)
  
  static unsigned long xen_read_cr2_direct(void)
  {
@@ -2063,7 +1829,7 @@
  }
  
  static void xen_write_cr4(unsigned long cr4)
-@@ -683,7 +711,10 @@ static void xen_write_cr3(unsigned long cr3)
+@@ -683,7 +715,10 @@ static void xen_write_cr3(unsigned long cr3)
  
  	BUG_ON(preemptible());
  
@@ -2075,17 +1841,13 @@
  
  	/* Update while interrupts are disabled, so its atomic with
  	   respect to ipis */
-@@ -699,86 +730,66 @@ static void xen_write_cr3(unsigned long cr3)
+@@ -699,86 +734,66 @@ static void xen_write_cr3(unsigned long cr3)
  	   been submitted. */
  	xen_mc_callback(set_current_cr3, (void *)cr3);
  
 -	xen_mc_issue(PARAVIRT_LAZY_CPU);  /* interrupts restored */
 -}
-+#ifdef CONFIG_X86_64
-+	{
-+	pgd_t *pgd = __va(cr3);
-+	unsigned long user_mfn = virt_to_mfn(__user_pgd(pgd));
- 
+-
 -/* Early in boot, while setting up the initial pagetable, assume
 -   everything is pinned. */
 -static __init void xen_alloc_pt_init(struct mm_struct *mm, u32 pfn)
@@ -2093,7 +1855,10 @@
 -	BUG_ON(mem_map);	/* should only be used early */
 -	make_lowmem_page_readonly(__va(PFN_PHYS(pfn)));
 -}
-+	mcs = __xen_mc_entry(sizeof(*op));
++#ifdef CONFIG_X86_64
++	{
++	pgd_t *pgd = __va(cr3);
++	unsigned long user_mfn = virt_to_mfn(__user_pgd(pgd));
  
 -/* Early release_pt assumes that all pts are pinned, since there's
 -   only init_mm and anything attached to that is pinned. */
@@ -2101,7 +1866,8 @@
 -{
 -	make_lowmem_page_readwrite(__va(PFN_PHYS(pfn)));
 -}
--
++	mcs = __xen_mc_entry(sizeof(*op));
+ 
 -static void pin_pagetable_pfn(unsigned cmd, unsigned long pfn)
 -{
 -	struct mmuext_op op;
@@ -2206,7 +1972,7 @@
  }
  
  #ifdef CONFIG_HIGHPTE
-@@ -817,14 +828,25 @@ static __init void xen_set_pte_init(pte_t *ptep, pte_t pte)
+@@ -817,14 +832,25 @@ static __init void xen_set_pte_init(pte_t *ptep, pte_t pte)
  	xen_set_pte(ptep, pte);
  }
  
@@ -2232,7 +1998,7 @@
  	/*
  	 * copy top-level of Xen-supplied pagetable into place.	 For
  	 * !PAE we can use this as-is, but for PAE it is a stand-in
-@@ -863,6 +885,7 @@ static __init void xen_pagetable_setup_start(pgd_t *base)
+@@ -863,6 +889,7 @@ static __init void xen_pagetable_setup_start(pgd_t *base)
  	 * added to the table can be prepared properly for Xen.
  	 */
  	xen_write_cr3(__pa(base));
@@ -2240,35 +2006,17 @@
  
  	/* Unpin initial Xen pagetable */
  	pin_pagetable_pfn(MMUEXT_UNPIN_TABLE,
-@@ -879,9 +902,7 @@ static __init void setup_shared_info(void)
- 		 * Should be set_fixmap(), but shared_info is a machine
- 		 * address with no corresponding pseudo-phys address.
- 		 */
--		set_pte_mfn(addr,
--			    PFN_DOWN(xen_start_info->shared_info),
--			    PAGE_KERNEL);
-+		set_fixmap_ma(FIX_PARAVIRT_BOOTMAP, xen_start_info->shared_info);
- 
- 		HYPERVISOR_shared_info = (struct shared_info *)addr;
- 	} else
-@@ -906,6 +927,16 @@ static __init void xen_pagetable_setup_done(pgd_t *base)
+@@ -906,6 +933,9 @@ static __init void xen_pagetable_setup_done(pgd_t *base)
  
  	setup_shared_info();
  
-+	/* If we have NOT set up our own vcpu_info structs, we need
-+	 * to point to the vcpu_info on the real shared_info struct,
-+	 * now.
-+	 */
-+	if (!have_vcpu_info_placement)
-+		xen_setup_vcpu_info_placement();
-+
 +#ifdef CONFIG_X86_32
 +	/*FIXME: for x86_64, code needs to be pulled from mm/init_64.c */
 +
  	/* Actually pin the pagetable down, but we can't set PG_pinned
  	   yet because the page structures don't exist yet. */
  	{
-@@ -919,6 +950,7 @@ static __init void xen_pagetable_setup_done(pgd_t *base)
+@@ -919,6 +949,7 @@ static __init void xen_pagetable_setup_done(pgd_t *base)
  
  		pin_pagetable_pfn(level, PFN_DOWN(__pa(base)));
  	}
@@ -2276,7 +2024,7 @@
  }
  
  /* This is called once we have the cpu_possible_map */
-@@ -961,10 +993,12 @@ static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
+@@ -961,10 +992,12 @@ static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
  	goto patch_site
  
  	switch (type) {
@@ -2289,7 +2037,45 @@
  #undef SITE
  
  	patch_site:
-@@ -1043,8 +1077,13 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+@@ -996,6 +1029,37 @@ static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
+ 	return ret;
+ }
+ 
++static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot)
++{
++	pte_t pte;
++
++	phys >>= PAGE_SHIFT;
++
++	switch (idx) {
++#ifdef CONFIG_X86_F00F_BUG
++	case FIX_F00F_IDT:
++#endif
++	case FIX_WP_TEST:
++#ifndef CONFIG_X86_64
++	case FIX_VDSO:
++#endif
++#ifdef CONFIG_X86_LOCAL_APIC
++	case FIX_APIC_BASE:	/* maps dummy local APIC */
++#endif
++#ifdef CONFIG_X86_64
++	case VSYSCALL_FIRST_PAGE:
++#endif
++		pte = pfn_pte(phys, prot);
++		break;
++
++	default:
++		pte = mfn_pte(phys, prot);
++		break;
++	}
++
++	__native_set_fixmap(idx, pte);
++}
++
+ static const struct pv_info xen_info __initdata = {
+ 	.paravirt_enabled = 1,
+ 	.shared_kernel_pmd = 0,
+@@ -1043,8 +1107,13 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  	.read_tsc = native_read_tsc,
  	.read_pmc = native_read_pmc,
  
@@ -2303,7 +2089,7 @@
  
  	.load_tr_desc = paravirt_nop,
  	.set_ldt = xen_set_ldt,
-@@ -1054,6 +1093,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+@@ -1054,6 +1123,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  	.load_gdt = xen_load_gdt,
  	.load_idt = xen_load_idt,
  	.load_tls = xen_load_tls,
@@ -2313,7 +2099,7 @@
  
  	.store_gdt = native_store_gdt,
  	.store_idt = native_store_idt,
-@@ -1122,7 +1164,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
+@@ -1122,7 +1194,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
  	.kmap_atomic_pte = xen_kmap_atomic_pte,
  #endif
  
@@ -2322,7 +2108,7 @@
  	.set_pte_at = xen_set_pte_at,
  	.set_pmd = xen_set_pmd,
  
-@@ -1135,13 +1177,21 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
+@@ -1135,13 +1207,21 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
  #ifdef CONFIG_X86_PAE
  	.set_pte_atomic = xen_set_pte_atomic,
  	.set_pte_present = xen_set_pte_at,
@@ -2346,7 +2132,16 @@
  
  	.activate_mm = xen_activate_mm,
  	.dup_mmap = xen_dup_mmap,
-@@ -1206,6 +1256,7 @@ static const struct machine_ops __initdata xen_machine_ops = {
+@@ -1151,6 +1231,8 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
+ 		.enter = paravirt_enter_lazy_mmu,
+ 		.leave = xen_leave_lazy,
+ 	},
++
++	.set_fixmap = xen_set_fixmap,
+ };
+ 
+ #ifdef CONFIG_SMP
+@@ -1206,6 +1288,7 @@ static const struct machine_ops __initdata xen_machine_ops = {
  };
  
  
@@ -2354,7 +2149,7 @@
  static void __init xen_reserve_top(void)
  {
  	unsigned long top = HYPERVISOR_VIRT_START;
-@@ -1216,6 +1267,11 @@ static void __init xen_reserve_top(void)
+@@ -1216,6 +1299,11 @@ static void __init xen_reserve_top(void)
  
  	reserve_top_address(-top + 2 * PAGE_SIZE);
  }
@@ -2366,7 +2161,7 @@
  
  /* First C function to be called on Xen boot */
  asmlinkage void __init xen_start_kernel(void)
-@@ -1227,6 +1283,21 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1227,6 +1315,21 @@ asmlinkage void __init xen_start_kernel(void)
  
  	BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
  
@@ -2388,7 +2183,7 @@
  	/* Install Xen paravirt ops */
  	pv_info = xen_info;
  	pv_init_ops = xen_init_ops;
-@@ -1236,7 +1307,10 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1236,7 +1339,10 @@ asmlinkage void __init xen_start_kernel(void)
  	pv_apic_ops = xen_apic_ops;
  	pv_mmu_ops = xen_mmu_ops;
  
@@ -2399,7 +2194,7 @@
  
  #ifdef CONFIG_SMP
  	smp_ops = xen_smp_ops;
-@@ -1250,19 +1324,33 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1250,19 +1356,33 @@ asmlinkage void __init xen_start_kernel(void)
  
  	pgd = (pgd_t *)xen_start_info->pt_base;
  
@@ -2433,7 +2228,7 @@
  	pv_info.kernel_rpl = 1;
  	if (xen_feature(XENFEAT_supervisor_mode_kernel))
  		pv_info.kernel_rpl = 0;
-@@ -1270,10 +1358,12 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1270,10 +1390,12 @@ asmlinkage void __init xen_start_kernel(void)
  	/* set the limit of our address space */
  	xen_reserve_top();
  
@@ -3073,7 +2868,7 @@
 +
 +
 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
-index 2a054ef..b39f102 100644
+index 2a054ef..31f0f4a 100644
 --- a/arch/x86/xen/mmu.c
 +++ b/arch/x86/xen/mmu.c
 @@ -53,6 +53,8 @@
@@ -3085,7 +2880,44 @@
  #include "multicalls.h"
  #include "mmu.h"
  
-@@ -171,7 +173,64 @@ void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,
+@@ -122,35 +124,7 @@ void xen_set_pmd(pmd_t *ptr, pmd_t val)
+  */
+ void set_pte_mfn(unsigned long vaddr, unsigned long mfn, pgprot_t flags)
+ {
+-	pgd_t *pgd;
+-	pud_t *pud;
+-	pmd_t *pmd;
+-	pte_t *pte;
+-
+-	pgd = swapper_pg_dir + pgd_index(vaddr);
+-	if (pgd_none(*pgd)) {
+-		BUG();
+-		return;
+-	}
+-	pud = pud_offset(pgd, vaddr);
+-	if (pud_none(*pud)) {
+-		BUG();
+-		return;
+-	}
+-	pmd = pmd_offset(pud, vaddr);
+-	if (pmd_none(*pmd)) {
+-		BUG();
+-		return;
+-	}
+-	pte = pte_offset_kernel(pmd, vaddr);
+-	/* <mfn,flags> stored as-is, to permit clearing entries */
+-	xen_set_pte(pte, mfn_pte(mfn, flags));
+-
+-	/*
+-	 * It's enough to flush this one mapping.
+-	 * (PGE mappings get flushed as well)
+-	 */
+-	__flush_tlb_one(vaddr);
++	set_pte_vaddr(vaddr, mfn_pte(mfn, flags));
+ }
+ 
+ void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,
+@@ -171,7 +145,64 @@ void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,
  	xen_set_pte(ptep, pteval);
  }
  
@@ -3151,7 +2983,7 @@
  void xen_set_pud(pud_t *ptr, pud_t val)
  {
  	struct multicall_space mcs;
-@@ -190,125 +249,128 @@ void xen_set_pud(pud_t *ptr, pud_t val)
+@@ -190,125 +221,128 @@ void xen_set_pud(pud_t *ptr, pud_t val)
  	preempt_enable();
  }
  
@@ -3358,7 +3190,7 @@
  
  /*
    (Yet another) pagetable walker.  This one is intended for pinning a
-@@ -320,51 +382,53 @@ pgd_t xen_make_pgd(unsigned long pgd)
+@@ -320,51 +354,53 @@ pgd_t xen_make_pgd(unsigned long pgd)
    FIXADDR_TOP.  But the important bit is that we don't pin beyond
    there, because then we start getting into Xen's ptes.
  */
@@ -3433,7 +3265,7 @@
  
  			for (; addr != pmd_limit; pmd++) {
  				addr += (PAGE_SIZE * PTRS_PER_PTE);
-@@ -378,10 +442,19 @@ static int pgd_walk(pgd_t *pgd_base, int (*func)(struct page *, enum pt_level),
+@@ -378,10 +414,19 @@ static int pgd_walk(pgd_t *pgd_base, int (*func)(struct page *, enum pt_level),
  
  				flush |= (*func)(pmd_page(*pmd), PT_PTE);
  			}
@@ -3454,7 +3286,7 @@
  
  	return flush;
  }
-@@ -404,7 +477,7 @@ static void do_unlock(void *v)
+@@ -404,7 +449,7 @@ static void do_unlock(void *v)
  	spin_unlock(ptl);
  }
  
@@ -3463,7 +3295,7 @@
  {
  	struct mmuext_op *op;
  	struct multicall_space mcs;
-@@ -443,8 +516,14 @@ static int pin_page(struct page *page, enum pt_level level)
+@@ -443,8 +488,14 @@ static int pin_page(struct page *page, enum pt_level level)
  					pfn_pte(pfn, PAGE_KERNEL_RO),
  					level == PT_PGD ? UVMF_TLB_FLUSH : 0);
  
@@ -3480,7 +3312,7 @@
  
  		if (ptl) {
  			/* Queue a deferred unlock for when this batch
-@@ -465,20 +544,22 @@ void xen_pgd_pin(pgd_t *pgd)
+@@ -465,20 +516,22 @@ void xen_pgd_pin(pgd_t *pgd)
  
  	xen_mc_batch();
  
@@ -3506,7 +3338,7 @@
  
  	xen_mc_issue(0);
  }
-@@ -492,27 +573,48 @@ static __init int mark_pinned(struct page *page, enum pt_level level)
+@@ -492,27 +545,48 @@ static __init int mark_pinned(struct page *page, enum pt_level level)
  	return 0;
  }
  
@@ -3559,7 +3391,7 @@
  		mcs = __xen_mc_entry(0);
  
  		MULTI_update_va_mapping(mcs.mc, (unsigned long)pt,
-@@ -533,9 +635,15 @@ static void xen_pgd_unpin(pgd_t *pgd)
+@@ -533,9 +607,15 @@ static void xen_pgd_unpin(pgd_t *pgd)
  {
  	xen_mc_batch();
  
@@ -3577,7 +3409,7 @@
  
  	xen_mc_issue(0);
  }
-@@ -544,6 +652,9 @@ void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next)
+@@ -544,6 +624,9 @@ void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next)
  {
  	spin_lock(&next->page_table_lock);
  	xen_pgd_pin(next->pgd);
@@ -3587,7 +3419,7 @@
  	spin_unlock(&next->page_table_lock);
  }
  
-@@ -551,6 +662,9 @@ void xen_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
+@@ -551,6 +634,9 @@ void xen_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
  {
  	spin_lock(&mm->page_table_lock);
  	xen_pgd_pin(mm->pgd);
@@ -3597,7 +3429,7 @@
  	spin_unlock(&mm->page_table_lock);
  }
  
-@@ -562,7 +676,12 @@ static void drop_other_mm_ref(void *info)
+@@ -562,7 +648,12 @@ static void drop_other_mm_ref(void *info)
  {
  	struct mm_struct *mm = info;
  
@@ -3610,7 +3442,7 @@
  		leave_mm(smp_processor_id());
  
  	/* If this cpu still has a stale cr3 reference, then make sure
-@@ -638,3 +757,75 @@ void xen_exit_mmap(struct mm_struct *mm)
+@@ -638,3 +729,75 @@ void xen_exit_mmap(struct mm_struct *mm)
  
  	spin_unlock(&mm->page_table_lock);
  }
@@ -4623,32 +4455,6 @@
  	cons = intf->out_cons;
  	prod = intf->out_prod;
  	mb();			/* update queue values before going on */
-diff --git a/drivers/ieee1394/init_ohci1394_dma.c b/drivers/ieee1394/init_ohci1394_dma.c
-index ddaab6e..0f40413 100644
---- a/drivers/ieee1394/init_ohci1394_dma.c
-+++ b/drivers/ieee1394/init_ohci1394_dma.c
-@@ -233,7 +233,7 @@ static inline void __init init_ohci1394_controller(int num, int slot, int func)
- 	ohci_base = read_pci_config(num, slot, func, PCI_BASE_ADDRESS_0+(0<<2))
- 						   & PCI_BASE_ADDRESS_MEM_MASK;
- 
--	set_fixmap_nocache(FIX_OHCI1394_BASE, ohci_base);
-+	set_fixmap_ma_nocache(FIX_OHCI1394_BASE, ohci_base);
- 
- 	ohci.registers = (void *)fix_to_virt(FIX_OHCI1394_BASE);
- 
-diff --git a/drivers/serial/8250_early.c b/drivers/serial/8250_early.c
-index 38776e8..c72ef33 100644
---- a/drivers/serial/8250_early.c
-+++ b/drivers/serial/8250_early.c
-@@ -147,7 +147,7 @@ static int __init parse_options(struct early_serial8250_device *device,
- 		port->iotype = UPIO_MEM;
- 		port->mapbase = simple_strtoul(options + 5, &options, 0);
- #ifdef CONFIG_FIX_EARLYCON_MEM
--		set_fixmap_nocache(FIX_EARLYCON_MEM_BASE,
-+		set_fixmap_ma_nocache(FIX_EARLYCON_MEM_BASE,
- 					port->mapbase & PAGE_MASK);
- 		port->membase =
- 			(void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);
 diff --git a/include/asm-x86/asm-hack.h b/include/asm-x86/asm-hack.h
 new file mode 100644
 index 0000000..b7c2a66
@@ -4756,7 +4562,7 @@
  
  struct desc_ptr {
 diff --git a/include/asm-x86/fixmap_32.h b/include/asm-x86/fixmap_32.h
-index a7404d5..0cb5fb7 100644
+index a7404d5..db57312 100644
 --- a/include/asm-x86/fixmap_32.h
 +++ b/include/asm-x86/fixmap_32.h
 @@ -89,6 +89,9 @@ enum fixed_addresses {
@@ -4769,45 +4575,33 @@
  	__end_of_permanent_fixed_addresses,
  	/*
  	 * 256 temporary boot-time mappings, used by early_ioremap(),
-@@ -110,20 +113,27 @@ enum fixed_addresses {
+@@ -110,8 +113,19 @@ enum fixed_addresses {
  	__end_of_fixed_addresses
  };
  
 -extern void __set_fixmap (enum fixed_addresses idx,
-+extern void __set_fixmap_ma (enum fixed_addresses idx,
-+					unsigned long ma, pgprot_t flags);
-+#define set_fixmap_ma(idx, ma) \
-+		__set_fixmap_ma(idx, ma, PAGE_KERNEL)
-+
-+extern void __set_fixmap_phys (enum fixed_addresses idx,
- 					unsigned long phys, pgprot_t flags);
-+#define set_fixmap_phys(idx, phys) \
-+		__set_fixmap_phys(idx, phys, PAGE_KERNEL)
-+
+-					unsigned long phys, pgprot_t flags);
++void native_set_fixmap(enum fixed_addresses idx,
++		       unsigned long phys, pgprot_t flags);
++int native_ioremap_page_range(unsigned long addr, unsigned long end,
++			      unsigned long phys_addr, pgprot_t prot);
++
++#ifndef CONFIG_PARAVIRT
++static inline void __set_fixmap(enum fixed_addresses idx,
++				unsigned long phys, pgprot_t flags)
++{
++	native_set_fixmap(idx, phys, flags);
++}
++#endif
 +
  extern void reserve_top_address(unsigned long reserve);
  
--#define set_fixmap(idx, phys) \
--		__set_fixmap(idx, phys, PAGE_KERNEL)
- /*
-  * Some hardware wants to get fixmapped without caching.
-  */
--#define set_fixmap_nocache(idx, phys) \
--		__set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
-+#define set_fixmap_ma_nocache(idx, phys) \
-+		__set_fixmap_ma(idx, phys, PAGE_KERNEL_NOCACHE)
- 
- #define clear_fixmap(idx) \
--		__set_fixmap(idx, 0, __pgprot(0))
-+		__set_fixmap_ma(idx, 0, __pgprot(0))
- 
- #define FIXADDR_TOP	((unsigned long)__FIXADDR_TOP)
- 
+ #define set_fixmap(idx, phys) \
 diff --git a/include/asm-x86/fixmap_64.h b/include/asm-x86/fixmap_64.h
-index 70ddb21..075ad9f 100644
+index 70ddb21..3d5ea08 100644
 --- a/include/asm-x86/fixmap_64.h
 +++ b/include/asm-x86/fixmap_64.h
-@@ -44,22 +44,43 @@ enum fixed_addresses {
+@@ -44,14 +44,34 @@ enum fixed_addresses {
  	FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
  	FIX_EFI_IO_MAP_LAST_PAGE,
  	FIX_EFI_IO_MAP_FIRST_PAGE = FIX_EFI_IO_MAP_LAST_PAGE+MAX_EFI_IO_PAGES-1,
@@ -4830,32 +4624,30 @@
  };
  
 -extern void __set_fixmap (enum fixed_addresses idx,
-+extern void __set_fixmap_ma (enum fixed_addresses idx,
-+					unsigned long ma, pgprot_t flags);
-+#define set_fixmap_ma(idx, ma) \
-+		__set_fixmap_ma(idx, ma, PAGE_KERNEL)
-+
-+extern void __set_fixmap_phys (enum fixed_addresses idx,
- 					unsigned long phys, pgprot_t flags);
- 
--#define set_fixmap(idx, phys) \
--		__set_fixmap(idx, phys, PAGE_KERNEL)
-+#define set_fixmap_phys(idx, phys) \
-+		__set_fixmap_phys(idx, phys, PAGE_KERNEL)
-+
- /*
-  * Some hardware wants to get fixmapped without caching.
-  */
--#define set_fixmap_nocache(idx, phys) \
--		__set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
-+#define set_fixmap_ma_nocache(idx, phys) \
-+		__set_fixmap_ma(idx, phys, PAGE_KERNEL_NOCACHE)
-+
-+#define clear_fixmap(idx) \
-+		__set_fixmap_ma(idx, 0, __pgprot(0))
+-					unsigned long phys, pgprot_t flags);
++void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
++void native_set_fixmap(enum fixed_addresses idx,
++		       unsigned long phys, pgprot_t flags);
++#ifndef CONFIG_PARAVIRT
++static inline void __set_fixmap(enum fixed_addresses idx,
++				unsigned long phys, pgprot_t flags)
++{
++	native_set_fixmap(idx, phys, flags);
++}
++#endif
+ 
+ #define set_fixmap(idx, phys) \
+ 		__set_fixmap(idx, phys, PAGE_KERNEL)
+@@ -61,6 +81,9 @@ extern void __set_fixmap (enum fixed_addresses idx,
+ #define set_fixmap_nocache(idx, phys) \
+ 		__set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
  
++#define clear_fixmap(idx) \
++		__set_fixmap(idx, 0, __pgprot(0))
++
  #define FIXADDR_TOP	(VSYSCALL_END-PAGE_SIZE)
  #define FIXADDR_SIZE	(__end_of_fixed_addresses << PAGE_SHIFT)
+ #define FIXADDR_START	(FIXADDR_TOP - FIXADDR_SIZE)
 diff --git a/include/asm-x86/mmu_context_64.h b/include/asm-x86/mmu_context_64.h
 index ad6dc82..1327119 100644
 --- a/include/asm-x86/mmu_context_64.h
@@ -4886,7 +4678,7 @@
  #define __PHYSICAL_START	CONFIG_PHYSICAL_START
  #define __KERNEL_ALIGN		0x200000
 diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
-index 7d7070a..23bcf67 100644
+index 7d7070a..3fddadc 100644
 --- a/include/asm-x86/paravirt.h
 +++ b/include/asm-x86/paravirt.h
 @@ -118,6 +118,9 @@ struct pv_cpu_ops {
@@ -4933,7 +4725,21 @@
  
  	/* Pagetable manipulation functions */
  	void (*set_pte)(pte_t *ptep, pte_t pteval);
-@@ -781,7 +794,12 @@ static inline void load_TLS(struct thread_struct *t, unsigned cpu)
+@@ -272,6 +285,13 @@ struct pv_mmu_ops {
+ #endif
+ 
+ 	struct pv_lazy_ops lazy_mode;
++
++	/* dom0 ops */
++
++	/* Sometimes the physical address is a pfn, and sometimes its
++	   an mfn.  We can tell which is which from the index. */
++	void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
++			   unsigned long phys, pgprot_t flags);
+ };
+ 
+ /* This contains all the paravirt structures: we get a convenient
+@@ -781,7 +801,12 @@ static inline void load_TLS(struct thread_struct *t, unsigned cpu)
  {
  	PVOP_VCALL2(pv_cpu_ops.load_tls, t, cpu);
  }
@@ -4947,7 +4753,7 @@
  static inline void write_ldt_entry(struct desc_struct *dt, int entry,
  				   const void *desc)
  {
-@@ -904,11 +922,11 @@ static inline void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
+@@ -904,11 +929,11 @@ static inline void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
  	PVOP_VCALL3(pv_mmu_ops.flush_tlb_others, &cpumask, mm, va);
  }
  
@@ -4961,7 +4767,7 @@
  {
  	PVOP_VCALL1(pv_mmu_ops.release_pt, pfn);
  }
-@@ -918,8 +936,8 @@ static inline void paravirt_alloc_pd(struct mm_struct *mm, unsigned pfn)
+@@ -918,8 +943,8 @@ static inline void paravirt_alloc_pd(struct mm_struct *mm, unsigned pfn)
  	PVOP_VCALL2(pv_mmu_ops.alloc_pd, mm, pfn);
  }
  
@@ -4972,7 +4778,7 @@
  {
  	PVOP_VCALL4(pv_mmu_ops.alloc_pd_clone, pfn, clonepfn, start, count);
  }
-@@ -1121,6 +1139,10 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd)
+@@ -1121,6 +1146,10 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd)
  static inline void pgd_clear(pgd_t *pgdp)
  {
  	set_pgd(pgdp, __pgd(0));
@@ -4983,7 +4789,20 @@
  }
  
  static inline void pud_clear(pud_t *pudp)
-@@ -1260,8 +1282,8 @@ extern struct paravirt_patch_site __parainstructions[],
+@@ -1235,6 +1264,12 @@ static inline void arch_flush_lazy_mmu_mode(void)
+ 	}
+ }
+ 
++static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
++				unsigned long phys, pgprot_t flags)
++{
++	pv_mmu_ops.set_fixmap(idx, phys, flags);
++}
++
+ void _paravirt_nop(void);
+ #define paravirt_nop	((void *)_paravirt_nop)
+ 
+@@ -1260,8 +1295,8 @@ extern struct paravirt_patch_site __parainstructions[],
   * caller saved registers but the argument parameter */
  #define PV_SAVE_REGS "pushq %%rdi;"
  #define PV_RESTORE_REGS "popq %%rdi;"
@@ -5224,8 +5043,22 @@
  #endif	/* CONFIG_PARAVIRT */
  
  #endif	/* __ASSEMBLY__ */
+diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
+index 4e6a0fc..0c9fddb 100644
+--- a/include/asm-x86/pgtable_32.h
++++ b/include/asm-x86/pgtable_32.h
+@@ -209,6 +209,9 @@ do {									\
+ void native_pagetable_setup_start(pgd_t *base);
+ void native_pagetable_setup_done(pgd_t *base);
+ 
++/* Install a pte for a particular vaddr in kernel space. */
++void set_pte_vaddr(unsigned long vaddr, pte_t pte);
++
+ #ifndef CONFIG_PARAVIRT
+ static inline void paravirt_pagetable_setup_start(pgd_t *base)
+ {
 diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
-index 0a0b77b..f0663e6 100644
+index 0a0b77b..798449a 100644
 --- a/include/asm-x86/pgtable_64.h
 +++ b/include/asm-x86/pgtable_64.h
 @@ -11,6 +11,7 @@
@@ -5245,6 +5078,17 @@
  
  /* PUD - Level3 access */
  /* to find an entry in a page-table-directory. */
+@@ -267,6 +268,10 @@ extern void cleanup_highmap(void);
+    (((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o))
+ 
+ #define __HAVE_ARCH_PTE_SAME
++
++/* Install a pte for a particular vaddr in kernel space. */
++extern void set_pte_vaddr(unsigned long vaddr, pte_t pte);
++
+ #endif /* !__ASSEMBLY__ */
+ 
+ #endif /* _X86_64_PGTABLE_H */
 diff --git a/include/asm-x86/proto.h b/include/asm-x86/proto.h
 index 68563c0..b562df5 100644
 --- a/include/asm-x86/proto.h




More information about the scm-commits mailing list