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