aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastian Blank <waldi@debian.org>2006-12-03 14:47:28 +0000
committerBastian Blank <waldi@debian.org>2006-12-03 14:47:28 +0000
commit97baef61d9c83619585cbd5a87595a6374e72646 (patch)
tree2ad4b42cf30139f30a53ffa9f9d5078b03c06db0
parent62f2d13b4981c126cce6175e19e0c438d40850db (diff)
downloadkernel_replicant_linux-97baef61d9c83619585cbd5a87595a6374e72646.tar.gz
kernel_replicant_linux-97baef61d9c83619585cbd5a87595a6374e72646.tar.bz2
kernel_replicant_linux-97baef61d9c83619585cbd5a87595a6374e72646.zip
* debian/changelog: Update.
* debian/patches/features/all/xen/README: Add informations about patch source. * debian/patches/features/all/xen/fedora-2.6.18-36156.patch: Add. * debian/patches/features/all/xen/fedora-36252.patch: Remove. * debian/patches/series/7-extra: Update. svn path=/dists/sid/linux-2.6/; revision=7917
-rw-r--r--debian/changelog3
-rw-r--r--debian/patches/features/all/xen/README1
-rw-r--r--debian/patches/features/all/xen/fedora-2.6.18-36156.patch (renamed from debian/patches/features/all/xen/fedora-36252.patch)6214
-rw-r--r--debian/patches/series/7-extra2
4 files changed, 2175 insertions, 4045 deletions
diff --git a/debian/changelog b/debian/changelog
index e9ba838e1bf5..23a884bc945f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,7 @@ linux-2.6 (2.6.18-7) UNRELEASED; urgency=low
* Emit conflict lines for initramfs generators. (closes: #400305)
* Update vserver patch to 2.0.2.2-rc8.
* s390: Add patch to fix posix types.
+ * Update xen patch to changeset 36156 from fedora 2.6.18 branch.
[ Martin Michlmayr ]
* r8169: Add an option to ignore parity errors.
@@ -16,7 +17,7 @@ linux-2.6 (2.6.18-7) UNRELEASED; urgency=low
* sata: Avoid null pointer dereference in SATA Promise.
* cifs: Set CIFS preferred IO size.
- -- Bastian Blank <waldi@debian.org> Sat, 2 Dec 2006 10:40:12 +0100
+ -- Bastian Blank <waldi@debian.org> Sun, 3 Dec 2006 15:43:38 +0100
linux-2.6 (2.6.18-6) unstable; urgency=low
diff --git a/debian/patches/features/all/xen/README b/debian/patches/features/all/xen/README
new file mode 100644
index 000000000000..de2b7e88fa8e
--- /dev/null
+++ b/debian/patches/features/all/xen/README
@@ -0,0 +1 @@
+This patch is from http://hg.et.redhat.com/kernel/linux-2.6.18-xen.
diff --git a/debian/patches/features/all/xen/fedora-36252.patch b/debian/patches/features/all/xen/fedora-2.6.18-36156.patch
index bc168f50eefd..98a168ea0ed1 100644
--- a/debian/patches/features/all/xen/fedora-36252.patch
+++ b/debian/patches/features/all/xen/fedora-2.6.18-36156.patch
@@ -1,6 +1,6 @@
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/boot-xen/Makefile linux-2.6.18-xen/arch/i386/boot-xen/Makefile
---- linux-2.6.18.1/arch/i386/boot-xen/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/boot-xen/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/boot-xen/Makefile linux-2.6.18-xen/arch/i386/boot-xen/Makefile
+--- linux-2.6.18/arch/i386/boot-xen/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/boot-xen/Makefile 2006-11-19 14:26:21.000000000 +0100
@@ -0,0 +1,21 @@
+
+OBJCOPYFLAGS := -g --strip-unneeded
@@ -23,10 +23,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/boot-xen/Makefile linux-2.6
+ install -m0664 .config $(INSTALL_ROOT)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
+ install -m0664 System.map $(INSTALL_ROOT)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
+ ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL)$(XENGUEST)$(INSTALL_SUFFIX)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/arch/i386/Kconfig
---- linux-2.6.18.1/arch/i386/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/Kconfig 2006-09-22 16:38:35.000000000 +0200
-@@ -16,6 +16,7 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/Kconfig linux-2.6.18-xen/arch/i386/Kconfig
+--- linux-2.6.18/arch/i386/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/Kconfig 2006-11-19 14:26:21.000000000 +0100
+@@ -16,10 +16,12 @@
config GENERIC_TIME
bool
@@ -34,7 +34,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y
config LOCKDEP_SUPPORT
-@@ -103,6 +104,15 @@
+ bool
++ depends on !X86_XEN
+ default y
+
+ config STACKTRACE_SUPPORT
+@@ -103,6 +105,15 @@
help
Choose this option if your computer is a standard PC or compatible.
@@ -50,7 +55,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
config X86_ELAN
bool "AMD Elan"
help
-@@ -213,6 +223,7 @@
+@@ -213,6 +224,7 @@
config HPET_TIMER
bool "HPET Timer Support"
@@ -58,7 +63,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
This enables the use of the HPET for the kernel's internal timer.
HPET is the next generation timer replacing legacy 8254s.
-@@ -263,7 +274,7 @@
+@@ -263,7 +275,7 @@
config X86_UP_APIC
bool "Local APIC support on uniprocessors"
@@ -67,7 +72,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
A local APIC (Advanced Programmable Interrupt Controller) is an
integrated interrupt controller in the CPU. If you have a single-CPU
-@@ -288,12 +299,12 @@
+@@ -288,12 +300,12 @@
config X86_LOCAL_APIC
bool
@@ -82,7 +87,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y
config X86_VISWS_APIC
-@@ -303,7 +314,7 @@
+@@ -303,7 +315,7 @@
config X86_MCE
bool "Machine Check Exception"
@@ -91,7 +96,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
---help---
Machine Check Exception support allows the processor to notify the
kernel if it detects a problem (e.g. overheating, component failure).
-@@ -402,6 +413,7 @@
+@@ -402,6 +414,7 @@
config MICROCODE
tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
@@ -99,7 +104,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
---help---
If you say Y here and also to "/dev file system support" in the
'File systems' section, you will be able to update the microcode on
-@@ -419,6 +431,7 @@
+@@ -419,6 +432,7 @@
config X86_MSR
tristate "/dev/cpu/*/msr - Model-specific register support"
@@ -107,7 +112,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
This device gives privileged processes access to the x86
Model-Specific Registers (MSRs). It is a character device with
-@@ -434,6 +447,10 @@
+@@ -434,6 +448,10 @@
with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
/dev/cpu/31/cpuid.
@@ -118,7 +123,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
source "drivers/firmware/Kconfig"
choice
-@@ -607,7 +624,7 @@
+@@ -607,7 +625,7 @@
config HIGHPTE
bool "Allocate 3rd-level pagetables from highmem"
@@ -127,7 +132,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
The VM uses one page table entry for each page of physical memory.
For systems with a lot of RAM, this can be wasteful of precious
-@@ -616,6 +633,7 @@
+@@ -616,6 +634,7 @@
config MATH_EMULATION
bool "Math emulation"
@@ -135,7 +140,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
---help---
Linux can emulate a math coprocessor (used for floating point
operations) if you don't have one. 486DX and Pentium processors have
-@@ -641,6 +659,8 @@
+@@ -641,6 +660,8 @@
config MTRR
bool "MTRR (Memory Type Range Register) support"
@@ -144,7 +149,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
---help---
On Intel P6 family processors (Pentium Pro, Pentium II and later)
the Memory Type Range Registers (MTRRs) may be used to control
-@@ -675,7 +695,7 @@
+@@ -675,7 +696,7 @@
config EFI
bool "Boot from EFI support"
@@ -153,7 +158,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default n
---help---
This enables the the kernel to boot on EFI platforms using
-@@ -693,7 +713,7 @@
+@@ -693,7 +714,7 @@
config IRQBALANCE
bool "Enable kernel irq balancing"
@@ -162,7 +167,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y
help
The default yes will allow the kernel to do irq load balancing.
-@@ -741,7 +761,7 @@
+@@ -741,7 +762,7 @@
config KEXEC
bool "kexec system call (EXPERIMENTAL)"
@@ -171,7 +176,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
kexec is a system call that implements the ability to shutdown your
current kernel, and to start another kernel. It is like a reboot
-@@ -794,6 +814,7 @@
+@@ -794,6 +815,7 @@
config COMPAT_VDSO
bool "Compat VDSO support"
default y
@@ -179,7 +184,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
Map the VDSO to the predictable old-style address too.
---help---
-@@ -810,18 +831,20 @@
+@@ -810,18 +832,20 @@
depends on HIGHMEM
menu "Power management options (ACPI, APM)"
@@ -203,7 +208,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
---help---
APM is a BIOS specification for saving power using several different
techniques. This is mostly useful for battery powered laptops with
-@@ -1006,6 +1029,7 @@
+@@ -1006,6 +1030,7 @@
config PCI_GOBIOS
bool "BIOS"
@@ -211,7 +216,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
config PCI_GOMMCONFIG
bool "MMConfig"
-@@ -1013,6 +1037,13 @@
+@@ -1013,6 +1038,13 @@
config PCI_GODIRECT
bool "Direct"
@@ -225,7 +230,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
config PCI_GOANY
bool "Any"
-@@ -1020,7 +1051,7 @@
+@@ -1020,7 +1052,7 @@
config PCI_BIOS
bool
@@ -234,7 +239,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y
config PCI_DIRECT
-@@ -1033,6 +1064,18 @@
+@@ -1033,6 +1065,18 @@
depends on PCI && ACPI && (PCI_GOMMCONFIG || PCI_GOANY)
default y
@@ -253,7 +258,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
source "drivers/pci/pcie/Kconfig"
source "drivers/pci/Kconfig"
-@@ -1043,7 +1086,7 @@
+@@ -1043,7 +1087,7 @@
config ISA
bool "ISA support"
@@ -262,7 +267,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
help
Find out whether you have ISA slots on your motherboard. ISA is the
name of a bus system, i.e. the way the CPU talks to the other stuff
-@@ -1070,7 +1113,7 @@
+@@ -1070,7 +1114,7 @@
source "drivers/eisa/Kconfig"
config MCA
@@ -271,7 +276,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y if X86_VOYAGER
help
MicroChannel Architecture is found in some IBM PS/2 machines and
-@@ -1146,6 +1189,8 @@
+@@ -1146,6 +1190,8 @@
source "crypto/Kconfig"
@@ -280,7 +285,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
source "lib/Kconfig"
#
-@@ -1171,7 +1216,7 @@
+@@ -1171,7 +1217,7 @@
config X86_HT
bool
@@ -289,7 +294,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
default y
config X86_BIOS_REBOOT
-@@ -1184,6 +1229,16 @@
+@@ -1184,6 +1230,16 @@
depends on X86_SMP || (X86_VOYAGER && SMP)
default y
@@ -306,9 +311,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig linux-2.6.18-xen/ar
config KTIME_SCALAR
bool
default y
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig.cpu linux-2.6.18-xen/arch/i386/Kconfig.cpu
---- linux-2.6.18.1/arch/i386/Kconfig.cpu 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/Kconfig.cpu 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/Kconfig.cpu linux-2.6.18-xen/arch/i386/Kconfig.cpu
+--- linux-2.6.18/arch/i386/Kconfig.cpu 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/Kconfig.cpu 2006-11-19 14:26:21.000000000 +0100
@@ -251,7 +251,7 @@
config X86_F00F_BUG
@@ -325,10 +330,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig.cpu linux-2.6.18-xe
- depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1 || MGEODE_LX) && !X86_NUMAQ
+ depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1 || MGEODE_LX) && !X86_NUMAQ && !X86_XEN
default y
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig.debug linux-2.6.18-xen/arch/i386/Kconfig.debug
---- linux-2.6.18.1/arch/i386/Kconfig.debug 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/Kconfig.debug 2006-09-04 16:31:00.000000000 +0200
-@@ -79,6 +79,7 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/Kconfig.debug linux-2.6.18-xen/arch/i386/Kconfig.debug
+--- linux-2.6.18/arch/i386/Kconfig.debug 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/Kconfig.debug 2006-11-19 14:26:21.000000000 +0100
+@@ -2,6 +2,7 @@
+
+ config TRACE_IRQFLAGS_SUPPORT
+ bool
++ depends on !X86_XEN
+ default y
+
+ source "lib/Kconfig.debug"
+@@ -79,6 +80,7 @@
config DOUBLEFAULT
default y
bool "Enable doublefault exception handler" if EMBEDDED
@@ -336,9 +349,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Kconfig.debug linux-2.6.18-
help
This option allows trapping of rare doublefault exceptions that
would otherwise cause a system to silently reboot. Disabling this
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c linux-2.6.18-xen/arch/i386/kernel/acpi/boot-xen.c
---- linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/acpi/boot-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/acpi/boot-xen.c linux-2.6.18-xen/arch/i386/kernel/acpi/boot-xen.c
+--- linux-2.6.18/arch/i386/kernel/acpi/boot-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/acpi/boot-xen.c 2006-11-19 14:26:21.000000000 +0100
@@ -0,0 +1,1168 @@
+/*
+ * boot.c - Architecture-Specific Low-Level ACPI Boot Support
@@ -511,7 +524,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c linu
+ unsigned long i;
+ int config_size;
+
-+ if (!phys_addr || !size)
++ if (!phys_addr || !size || !cpu_has_apic)
+ return -EINVAL;
+
+ mcfg = (struct acpi_table_mcfg *)__acpi_map_table(phys_addr, size);
@@ -560,7 +573,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c linu
+{
+ struct acpi_table_madt *madt = NULL;
+
-+ if (!phys_addr || !size || !cpu_has_apic)
++ if (!phys_addr || !size)
+ return -EINVAL;
+
+ madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
@@ -1100,7 +1113,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c linu
+ return -ENODEV;
+ }
+
-+ if (!cpu_has_apic)
++ if (!cpu_has_apic)
+ return -ENODEV;
+
+ /*
@@ -1508,9 +1521,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/boot-xen.c linu
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/Makefile linux-2.6.18-xen/arch/i386/kernel/acpi/Makefile
---- linux-2.6.18.1/arch/i386/kernel/acpi/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/acpi/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/acpi/Makefile linux-2.6.18-xen/arch/i386/kernel/acpi/Makefile
+--- linux-2.6.18/arch/i386/kernel/acpi/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/acpi/Makefile 2006-11-19 14:26:21.000000000 +0100
@@ -6,3 +6,7 @@
obj-y += cstate.o processor.o
endif
@@ -1519,9 +1532,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/acpi/Makefile linux-
+include $(srctree)/scripts/Makefile.xen
+obj-y := $(call cherrypickxen, $(obj-y), $(src))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/alternative.c linux-2.6.18-xen/arch/i386/kernel/alternative.c
---- linux-2.6.18.1/arch/i386/kernel/alternative.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/alternative.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/alternative.c linux-2.6.18-xen/arch/i386/kernel/alternative.c
+--- linux-2.6.18/arch/i386/kernel/alternative.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/alternative.c 2006-11-19 14:26:21.000000000 +0100
@@ -4,7 +4,11 @@
#include <asm/alternative.h>
#include <asm/sections.h>
@@ -1546,9 +1559,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/alternative.c linux-
DPRINTK("%s: vsyscall fixup: %p => %p\n",
__FUNCTION__, a->instr, instr);
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/apic-xen.c linux-2.6.18-xen/arch/i386/kernel/apic-xen.c
---- linux-2.6.18.1/arch/i386/kernel/apic-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/apic-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/apic-xen.c linux-2.6.18-xen/arch/i386/kernel/apic-xen.c
+--- linux-2.6.18/arch/i386/kernel/apic-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/apic-xen.c 2006-11-19 14:26:21.000000000 +0100
@@ -0,0 +1,160 @@
+/*
+ * Local APIC handling, local APIC timers
@@ -1710,9 +1723,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/apic-xen.c linux-2.6
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/asm-offsets.c linux-2.6.18-xen/arch/i386/kernel/asm-offsets.c
---- linux-2.6.18.1/arch/i386/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/asm-offsets.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/asm-offsets.c linux-2.6.18-xen/arch/i386/kernel/asm-offsets.c
+--- linux-2.6.18/arch/i386/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/asm-offsets.c 2006-11-19 14:26:21.000000000 +0100
@@ -66,9 +66,14 @@
OFFSET(pbe_orig_address, pbe, orig_address);
OFFSET(pbe_next, pbe, next);
@@ -1729,10 +1742,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/asm-offsets.c linux-
DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
DEFINE(VDSO_PRELINK, VDSO_PRELINK);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c linux-2.6.18-xen/arch/i386/kernel/cpu/common-xen.c
---- linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/cpu/common-xen.c 2006-09-04 16:31:00.000000000 +0200
-@@ -0,0 +1,739 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/cpu/common-xen.c linux-2.6.18-xen/arch/i386/kernel/cpu/common-xen.c
+--- linux-2.6.18/arch/i386/kernel/cpu/common-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/cpu/common-xen.c 2006-11-19 14:26:21.000000000 +0100
+@@ -0,0 +1,740 @@
+#include <linux/init.h>
+#include <linux/string.h>
+#include <linux/delay.h>
@@ -2032,7 +2045,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c lin
+ if (c->x86 >= 0x6)
+ c->x86_model += ((tfms >> 16) & 0xF) << 4;
+ c->x86_mask = tfms & 15;
-+#ifdef CONFIG_X86_HT
++#if defined(CONFIG_X86_HT)
+ c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0);
+#else
+ c->apicid = (ebx >> 24) & 0xFF;
@@ -2229,7 +2242,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c lin
+
+ if (smp_num_siblings > NR_CPUS) {
+ printk(KERN_WARNING "CPU: Unsupported number of the "
-+ "siblings %d", smp_num_siblings);
++ "siblings %d", smp_num_siblings);
+ smp_num_siblings = 1;
+ return;
+ }
@@ -2360,7 +2373,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c lin
+ }
+ printk(KERN_INFO "Initializing CPU#%d\n", cpu);
+
-+ if (cpu_has_vme || cpu_has_tsc || cpu_has_de)
++ if (cpu_has_vme || cpu_has_de)
+ clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE);
+ if (tsc_disable && cpu_has_tsc) {
+ printk(KERN_NOTICE "Disabling TSC...\n");
@@ -2394,6 +2407,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c lin
+ local_irq_enable();
+ }
+ }
++
+old_gdt:
+ /*
+ * Initialize the per-CPU GDT with the boot GDT,
@@ -2472,9 +2486,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/common-xen.c lin
+ per_cpu(cpu_tlbstate, cpu).active_mm = &init_mm;
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/Makefile linux-2.6.18-xen/arch/i386/kernel/cpu/Makefile
---- linux-2.6.18.1/arch/i386/kernel/cpu/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/cpu/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/cpu/Makefile linux-2.6.18-xen/arch/i386/kernel/cpu/Makefile
+--- linux-2.6.18/arch/i386/kernel/cpu/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/cpu/Makefile 2006-11-19 14:26:21.000000000 +0100
@@ -17,3 +17,8 @@
obj-$(CONFIG_MTRR) += mtrr/
@@ -2484,9 +2498,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/Makefile linux-2
+include $(srctree)/scripts/Makefile.xen
+obj-y := $(call cherrypickxen, $(obj-y), $(src))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/main-xen.c linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/main-xen.c
---- linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/main-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/main-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/cpu/mtrr/main-xen.c linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/main-xen.c
+--- linux-2.6.18/arch/i386/kernel/cpu/mtrr/main-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/main-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,197 @@
+#include <linux/init.h>
+#include <linux/proc_fs.h>
@@ -2685,9 +2699,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/main-xen.c
+}
+
+subsys_initcall(mtrr_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/Makefile linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/Makefile
---- linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/cpu/mtrr/Makefile linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/Makefile
+--- linux-2.6.18/arch/i386/kernel/cpu/mtrr/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/cpu/mtrr/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -3,3 +3,10 @@
obj-y += cyrix.o
obj-y += centaur.o
@@ -2699,15 +2713,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/cpu/mtrr/Makefile li
+obj-y := $(call filterxen, $(obj-y), $(n-obj-xen))
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/early_printk-xen.c linux-2.6.18-xen/arch/i386/kernel/early_printk-xen.c
---- linux-2.6.18.1/arch/i386/kernel/early_printk-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/early_printk-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/early_printk-xen.c linux-2.6.18-xen/arch/i386/kernel/early_printk-xen.c
+--- linux-2.6.18/arch/i386/kernel/early_printk-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/early_printk-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,2 @@
+
+#include "../../x86_64/kernel/early_printk-xen.c"
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/entry.S linux-2.6.18-xen/arch/i386/kernel/entry.S
---- linux-2.6.18.1/arch/i386/kernel/entry.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/entry.S 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/entry.S linux-2.6.18-xen/arch/i386/kernel/entry.S
+--- linux-2.6.18/arch/i386/kernel/entry.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/entry.S 2006-11-19 14:26:22.000000000 +0100
@@ -269,7 +269,7 @@
CFI_STARTPROC simple
CFI_DEF_CFA esp, 0
@@ -2735,9 +2749,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/entry.S linux-2.6.18
pushfl; \
pushl $__KERNEL_CS; \
pushl $sysenter_past_esp
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/entry-xen.S linux-2.6.18-xen/arch/i386/kernel/entry-xen.S
---- linux-2.6.18.1/arch/i386/kernel/entry-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/entry-xen.S 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/entry-xen.S linux-2.6.18-xen/arch/i386/kernel/entry-xen.S
+--- linux-2.6.18/arch/i386/kernel/entry-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/entry-xen.S 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,1213 @@
+/*
+ * linux/arch/i386/entry.S
@@ -3952,9 +3966,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/entry-xen.S linux-2.
+#include "syscall_table.S"
+
+syscall_table_size=(.-sys_call_table)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/fixup.c linux-2.6.18-xen/arch/i386/kernel/fixup.c
---- linux-2.6.18.1/arch/i386/kernel/fixup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/fixup.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/fixup.c linux-2.6.18-xen/arch/i386/kernel/fixup.c
+--- linux-2.6.18/arch/i386/kernel/fixup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/fixup.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,92 @@
+/******************************************************************************
+ * fixup.c
@@ -4048,9 +4062,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/fixup.c linux-2.6.18
+ return 0;
+}
+__initcall(fixup_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/head-xen.S linux-2.6.18-xen/arch/i386/kernel/head-xen.S
---- linux-2.6.18.1/arch/i386/kernel/head-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/head-xen.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/head-xen.S linux-2.6.18-xen/arch/i386/kernel/head-xen.S
+--- linux-2.6.18/arch/i386/kernel/head-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/head-xen.S 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,200 @@
+
+
@@ -4252,9 +4266,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/head-xen.S linux-2.6
+ ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz, "no")
+#endif
+ ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic")
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/init_task-xen.c linux-2.6.18-xen/arch/i386/kernel/init_task-xen.c
---- linux-2.6.18.1/arch/i386/kernel/init_task-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/init_task-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/init_task-xen.c linux-2.6.18-xen/arch/i386/kernel/init_task-xen.c
+--- linux-2.6.18/arch/i386/kernel/init_task-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/init_task-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,51 @@
+#include <linux/mm.h>
+#include <linux/module.h>
@@ -4307,10 +4321,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/init_task-xen.c linu
+DEFINE_PER_CPU(struct tss_struct, init_tss) ____cacheline_internodealigned_in_smp = INIT_TSS;
+#endif
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/io_apic-xen.c linux-2.6.18-xen/arch/i386/kernel/io_apic-xen.c
---- linux-2.6.18.1/arch/i386/kernel/io_apic-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/io_apic-xen.c 2006-09-04 16:31:00.000000000 +0200
-@@ -0,0 +1,2771 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/io_apic-xen.c linux-2.6.18-xen/arch/i386/kernel/io_apic-xen.c
+--- linux-2.6.18/arch/i386/kernel/io_apic-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/io_apic-xen.c 2006-11-19 14:26:22.000000000 +0100
+@@ -0,0 +1,2772 @@
+/*
+ * Intel IO-APIC support for multi-Pentium hosts.
+ *
@@ -6628,9 +6642,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/io_apic-xen.c linux-
+ io_apic_write(apic, 0x10 + 2 * pin, *(((int *)&entry0) + 0));
+ spin_unlock_irqrestore(&ioapic_lock, flags);
+}
-+#endif /* CONFIG_XEN */
++
+int timer_uses_ioapic_pin_0;
-+#ifdef CONFI_XEN
++
+/*
+ * This code may look a bit paranoid, but it's supposed to cooperate with
+ * a wide range of boards and BIOS bugs. Fortunately only the timer IRQ
@@ -6755,6 +6769,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/io_apic-xen.c linux-
+ "report. Then try booting with the 'noapic' option");
+}
+#else
++int timer_uses_ioapic_pin_0;
+#define check_timer() ((void)0)
+#endif
+
@@ -7082,9 +7097,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/io_apic-xen.c linux-
+}
+
+#endif /* CONFIG_ACPI */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/ioport-xen.c linux-2.6.18-xen/arch/i386/kernel/ioport-xen.c
---- linux-2.6.18.1/arch/i386/kernel/ioport-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/ioport-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/ioport-xen.c linux-2.6.18-xen/arch/i386/kernel/ioport-xen.c
+--- linux-2.6.18/arch/i386/kernel/ioport-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/ioport-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,121 @@
+/*
+ * linux/arch/i386/kernel/ioport.c
@@ -7207,9 +7222,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/ioport-xen.c linux-2
+ set_iopl_mask(t->iopl);
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/irq-xen.c linux-2.6.18-xen/arch/i386/kernel/irq-xen.c
---- linux-2.6.18.1/arch/i386/kernel/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/irq-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/irq-xen.c linux-2.6.18-xen/arch/i386/kernel/irq-xen.c
+--- linux-2.6.18/arch/i386/kernel/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/irq-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,324 @@
+/*
+ * linux/arch/i386/kernel/irq.c
@@ -7535,9 +7550,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/irq-xen.c linux-2.6.
+}
+#endif
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/ldt-xen.c linux-2.6.18-xen/arch/i386/kernel/ldt-xen.c
---- linux-2.6.18.1/arch/i386/kernel/ldt-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/ldt-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/ldt-xen.c linux-2.6.18-xen/arch/i386/kernel/ldt-xen.c
+--- linux-2.6.18/arch/i386/kernel/ldt-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/ldt-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,270 @@
+/*
+ * linux/kernel/ldt.c
@@ -7809,9 +7824,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/ldt-xen.c linux-2.6.
+ }
+ return ret;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/Makefile linux-2.6.18-xen/arch/i386/kernel/Makefile
---- linux-2.6.18.1/arch/i386/kernel/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/Makefile 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/Makefile linux-2.6.18-xen/arch/i386/kernel/Makefile
+--- linux-2.6.18/arch/i386/kernel/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/Makefile 2006-11-19 14:26:21.000000000 +0100
@@ -44,6 +44,12 @@
obj-$(CONFIG_SCx200) += scx200.o
@@ -7855,9 +7870,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/Makefile linux-2.6.1
+obj-y := $(call cherrypickxen, $(obj-y))
+extra-y := $(call cherrypickxen, $(extra-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/microcode-xen.c linux-2.6.18-xen/arch/i386/kernel/microcode-xen.c
---- linux-2.6.18.1/arch/i386/kernel/microcode-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/microcode-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/microcode-xen.c linux-2.6.18-xen/arch/i386/kernel/microcode-xen.c
+--- linux-2.6.18/arch/i386/kernel/microcode-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/microcode-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,147 @@
+/*
+ * Intel CPU Microcode Update Driver for Linux
@@ -8006,9 +8021,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/microcode-xen.c linu
+module_init(microcode_init)
+module_exit(microcode_exit)
+MODULE_ALIAS_MISCDEV(MICROCODE_MINOR);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/mpparse-xen.c linux-2.6.18-xen/arch/i386/kernel/mpparse-xen.c
---- linux-2.6.18.1/arch/i386/kernel/mpparse-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/mpparse-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/mpparse-xen.c linux-2.6.18-xen/arch/i386/kernel/mpparse-xen.c
+--- linux-2.6.18/arch/i386/kernel/mpparse-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/mpparse-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,1185 @@
+/*
+ * Intel Multiprocessor Specification 1.1 and 1.4
@@ -9195,9 +9210,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/mpparse-xen.c linux-
+
+#endif /* CONFIG_X86_IO_APIC */
+#endif /* CONFIG_ACPI */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/pci-dma-xen.c linux-2.6.18-xen/arch/i386/kernel/pci-dma-xen.c
---- linux-2.6.18.1/arch/i386/kernel/pci-dma-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/pci-dma-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/pci-dma-xen.c linux-2.6.18-xen/arch/i386/kernel/pci-dma-xen.c
+--- linux-2.6.18/arch/i386/kernel/pci-dma-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/pci-dma-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,379 @@
+/*
+ * Dynamic DMA mapping support.
@@ -9578,10 +9593,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/pci-dma-xen.c linux-
+ swiotlb_sync_single_for_device(dev, dma_handle, size, direction);
+}
+EXPORT_SYMBOL(dma_sync_single_for_device);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/process-xen.c linux-2.6.18-xen/arch/i386/kernel/process-xen.c
---- linux-2.6.18.1/arch/i386/kernel/process-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/process-xen.c 2006-09-04 16:31:00.000000000 +0200
-@@ -0,0 +1,812 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/process-xen.c linux-2.6.18-xen/arch/i386/kernel/process-xen.c
+--- linux-2.6.18/arch/i386/kernel/process-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/process-xen.c 2006-11-19 14:26:22.000000000 +0100
+@@ -0,0 +1,815 @@
+/*
+ * linux/arch/i386/kernel/process.c
+ *
@@ -9644,6 +9659,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/process-xen.c linux-
+#include <asm/tlbflush.h>
+#include <asm/cpu.h>
+
++#include <asm/tlbflush.h>
++#include <asm/cpu.h>
++
+asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
+
+static int hlt_counter;
@@ -10394,9 +10412,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/process-xen.c linux-
+ sp -= get_random_int() % 8192;
+ return sp & ~0xf;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/quirks-xen.c linux-2.6.18-xen/arch/i386/kernel/quirks-xen.c
---- linux-2.6.18.1/arch/i386/kernel/quirks-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/quirks-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/quirks-xen.c linux-2.6.18-xen/arch/i386/kernel/quirks-xen.c
+--- linux-2.6.18/arch/i386/kernel/quirks-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/quirks-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,47 @@
+/*
+ * This file contains work-arounds for x86 and x86_64 platform bugs.
@@ -10445,10 +10463,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/quirks-xen.c linux-2
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_intel_irqbalance);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quirk_intel_irqbalance);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/setup-xen.c linux-2.6.18-xen/arch/i386/kernel/setup-xen.c
---- linux-2.6.18.1/arch/i386/kernel/setup-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/setup-xen.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,1832 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/setup-xen.c linux-2.6.18-xen/arch/i386/kernel/setup-xen.c
+--- linux-2.6.18/arch/i386/kernel/setup-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/setup-xen.c 2006-11-19 14:26:22.000000000 +0100
+@@ -0,0 +1,1836 @@
+/*
+ * linux/arch/i386/kernel/setup.c
+ *
@@ -10494,6 +10512,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/setup-xen.c linux-2.
+#include <linux/init.h>
+#include <linux/edd.h>
+#include <linux/nodemask.h>
++#include <linux/kernel.h>
++#include <linux/percpu.h>
++#include <linux/notifier.h>
+#include <linux/kexec.h>
+#include <linux/crash_dump.h>
+#include <linux/dmi.h>
@@ -11837,15 +11858,13 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/setup-xen.c linux-2.
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+ struct xen_memory_map memmap;
+
-+ map = machine_e820.map;
-+ memmap.nr_entries = E820MAX;
++ map = (struct e820entry *)__get_free_page(GFP_ATOMIC);
++ nr_map = E820MAX;
+
++ memmap.nr_entries = E820MAX;
+ set_xen_guest_handle(memmap.buffer, map);
+
-+ if(HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap))
-+ BUG();
-+ machine_e820.nr_map = memmap.nr_entries;
-+ nr_map = memmap.nr_entries;
++ BUG_ON(HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap));
+ e820_setup_gap(map, memmap.nr_entries);
+#endif
+
@@ -11884,6 +11903,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/setup-xen.c linux-2.
+#endif
+ }
+ }
++#ifdef CONFIG_XEN
++ free_page((unsigned long)map);
++#endif
+}
+
+/*
@@ -12281,9 +12303,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/setup-xen.c linux-2.
+ * c-basic-offset:8
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/smp-xen.c linux-2.6.18-xen/arch/i386/kernel/smp-xen.c
---- linux-2.6.18.1/arch/i386/kernel/smp-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/smp-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/smp-xen.c linux-2.6.18-xen/arch/i386/kernel/smp-xen.c
+--- linux-2.6.18/arch/i386/kernel/smp-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/smp-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,624 @@
+/*
+ * Intel SMP support routines.
@@ -12909,9 +12931,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/smp-xen.c linux-2.6.
+ return IRQ_HANDLED;
+}
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/swiotlb.c linux-2.6.18-xen/arch/i386/kernel/swiotlb.c
---- linux-2.6.18.1/arch/i386/kernel/swiotlb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/swiotlb.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/swiotlb.c linux-2.6.18-xen/arch/i386/kernel/swiotlb.c
+--- linux-2.6.18/arch/i386/kernel/swiotlb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/swiotlb.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,672 @@
+/*
+ * Dynamic DMA mapping support.
@@ -13585,9 +13607,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/swiotlb.c linux-2.6.
+EXPORT_SYMBOL(swiotlb_unmap_page);
+EXPORT_SYMBOL(swiotlb_dma_mapping_error);
+EXPORT_SYMBOL(swiotlb_dma_supported);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/sysenter.c linux-2.6.18-xen/arch/i386/kernel/sysenter.c
---- linux-2.6.18.1/arch/i386/kernel/sysenter.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/sysenter.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/sysenter.c linux-2.6.18-xen/arch/i386/kernel/sysenter.c
+--- linux-2.6.18/arch/i386/kernel/sysenter.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/sysenter.c 2006-11-19 14:26:22.000000000 +0100
@@ -23,6 +23,10 @@
#include <asm/pgtable.h>
#include <asm/unistd.h>
@@ -13647,9 +13669,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/sysenter.c linux-2.6
if (!boot_cpu_has(X86_FEATURE_SEP)) {
memcpy(syscall_page,
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/time-xen.c linux-2.6.18-xen/arch/i386/kernel/time-xen.c
---- linux-2.6.18.1/arch/i386/kernel/time-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/time-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/time-xen.c linux-2.6.18-xen/arch/i386/kernel/time-xen.c
+--- linux-2.6.18/arch/i386/kernel/time-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/time-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,1101 @@
+/*
+ * linux/arch/i386/kernel/time.c
@@ -14649,14 +14671,14 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/time-xen.c linux-2.6
+ cpu_clear(smp_processor_id(), nohz_cpu_mask);
+}
+
-+void raw_safe_halt(void)
++void safe_halt(void)
+{
+ stop_hz_timer();
+ /* Blocking includes an implicit local_irq_enable(). */
+ HYPERVISOR_block();
+ start_hz_timer();
+}
-+EXPORT_SYMBOL(raw_safe_halt);
++EXPORT_SYMBOL(safe_halt);
+
+void halt(void)
+{
@@ -14752,9 +14774,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/time-xen.c linux-2.6
+ return 0;
+}
+__initcall(xen_sysctl_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/traps.c linux-2.6.18-xen/arch/i386/kernel/traps.c
---- linux-2.6.18.1/arch/i386/kernel/traps.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/traps.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/traps.c linux-2.6.18-xen/arch/i386/kernel/traps.c
+--- linux-2.6.18/arch/i386/kernel/traps.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/traps.c 2006-11-19 14:26:22.000000000 +0100
@@ -642,18 +642,11 @@
static void io_check_error(unsigned char reason, struct pt_regs * regs)
@@ -14775,10 +14797,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/traps.c linux-2.6.18
}
static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/traps-xen.c linux-2.6.18-xen/arch/i386/kernel/traps-xen.c
---- linux-2.6.18.1/arch/i386/kernel/traps-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/traps-xen.c 2006-09-04 16:31:00.000000000 +0200
-@@ -0,0 +1,1184 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/traps-xen.c linux-2.6.18-xen/arch/i386/kernel/traps-xen.c
+--- linux-2.6.18/arch/i386/kernel/traps-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/traps-xen.c 2006-11-19 14:26:22.000000000 +0100
+@@ -0,0 +1,1186 @@
+/*
+ * linux/arch/i386/traps.c
+ *
@@ -14989,8 +15011,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/traps-xen.c linux-2.
+ printk("Full inexact backtrace again:\n");
+ } else if (call_trace >= 1)
+ return;
-+ } else
++ else
+ printk("Full inexact backtrace again:\n");
++ } else
+ printk("Inexact backtrace:\n");
+ }
+
@@ -15963,9 +15986,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/traps-xen.c linux-2.
+}
+__setup("call_trace=", call_trace_setup);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/tsc.c linux-2.6.18-xen/arch/i386/kernel/tsc.c
---- linux-2.6.18.1/arch/i386/kernel/tsc.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/tsc.c 2006-09-04 16:31:00.000000000 +0200
++
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/tsc.c linux-2.6.18-xen/arch/i386/kernel/tsc.c
+--- linux-2.6.18/arch/i386/kernel/tsc.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/tsc.c 2006-11-19 14:26:22.000000000 +0100
@@ -101,6 +101,7 @@
return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR;
}
@@ -15982,9 +16006,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/tsc.c linux-2.6.18-x
static unsigned long calculate_cpu_khz(void)
{
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vm86.c linux-2.6.18-xen/arch/i386/kernel/vm86.c
---- linux-2.6.18.1/arch/i386/kernel/vm86.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/vm86.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/vm86.c linux-2.6.18-xen/arch/i386/kernel/vm86.c
+--- linux-2.6.18/arch/i386/kernel/vm86.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/vm86.c 2006-11-19 14:26:22.000000000 +0100
@@ -97,7 +97,9 @@
struct pt_regs * FASTCALL(save_v86_state(struct kernel_vm86_regs * regs));
struct pt_regs * fastcall save_v86_state(struct kernel_vm86_regs * regs)
@@ -16039,9 +16063,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vm86.c linux-2.6.18-
tsk->thread.screen_bitmap = info->screen_bitmap;
if (info->flags & VM86_SCREEN_BITMAP)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vmlinux.lds.S linux-2.6.18-xen/arch/i386/kernel/vmlinux.lds.S
---- linux-2.6.18.1/arch/i386/kernel/vmlinux.lds.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/kernel/vmlinux.lds.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/vmlinux.lds.S linux-2.6.18-xen/arch/i386/kernel/vmlinux.lds.S
+--- linux-2.6.18/arch/i386/kernel/vmlinux.lds.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/kernel/vmlinux.lds.S 2006-11-19 14:26:22.000000000 +0100
@@ -13,6 +13,12 @@
OUTPUT_ARCH(i386)
ENTRY(phys_startup_32)
@@ -16080,9 +16104,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vmlinux.lds.S linux-
+
+ NOTES
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vsyscall-note-xen.S linux-2.6.18-xen/arch/i386/kernel/vsyscall-note-xen.S
---- linux-2.6.18.1/arch/i386/kernel/vsyscall-note-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/kernel/vsyscall-note-xen.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/kernel/vsyscall-note-xen.S linux-2.6.18-xen/arch/i386/kernel/vsyscall-note-xen.S
+--- linux-2.6.18/arch/i386/kernel/vsyscall-note-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/kernel/vsyscall-note-xen.S 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,32 @@
+/*
+ * This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
@@ -16116,9 +16140,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/kernel/vsyscall-note-xen.S
+NOTE_KERNELCAP_BEGIN(1, 1)
+NOTE_KERNELCAP(1, "nosegneg") /* Change 1 back to 0 when glibc is fixed! */
+NOTE_KERNELCAP_END
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/lib/delay.c linux-2.6.18-xen/arch/i386/lib/delay.c
---- linux-2.6.18.1/arch/i386/lib/delay.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/lib/delay.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/lib/delay.c linux-2.6.18-xen/arch/i386/lib/delay.c
+--- linux-2.6.18/arch/i386/lib/delay.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/lib/delay.c 2006-11-19 14:26:22.000000000 +0100
@@ -61,6 +61,7 @@
delay_fn = delay_tsc;
}
@@ -16136,122 +16160,19 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/lib/delay.c linux-2.6.18-xe
void __delay(unsigned long loops)
{
delay_fn(loops);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mach-xen/irqflags.c linux-2.6.18-xen/arch/i386/mach-xen/irqflags.c
---- linux-2.6.18.1/arch/i386/mach-xen/irqflags.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mach-xen/irqflags.c 2006-09-04 16:31:00.000000000 +0200
-@@ -0,0 +1,99 @@
-+#include <linux/module.h>
-+#include <linux/smp.h>
-+#include <asm/irqflags.h>
-+#include <asm/hypervisor.h>
-+
-+/* interrupt control.. */
-+
-+/*
-+ * The use of 'barrier' in the following reflects their use as local-lock
-+ * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
-+ * critical operations are executed. All critical operations must complete
-+ * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
-+ * includes these barriers, for example.
-+ */
-+
-+unsigned long __raw_local_save_flags(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ unsigned long flags;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ flags = _vcpu->evtchn_upcall_mask;
-+ preempt_enable();
-+
-+ return flags;
-+}
-+EXPORT_SYMBOL(__raw_local_save_flags);
-+
-+void raw_local_irq_restore(unsigned long flags)
-+{
-+ struct vcpu_info *_vcpu;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ if ((_vcpu->evtchn_upcall_mask = flags) == 0) {
-+ barrier(); /* unmask then check (avoid races) */
-+ if (unlikely(_vcpu->evtchn_upcall_pending))
-+ force_evtchn_callback();
-+ preempt_enable();
-+ } else
-+ preempt_enable_no_resched();
-+
-+}
-+EXPORT_SYMBOL(raw_local_irq_restore);
-+
-+void raw_local_irq_disable(void)
-+{
-+ struct vcpu_info *_vcpu;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ _vcpu->evtchn_upcall_mask = 1;
-+ preempt_enable_no_resched();
-+}
-+EXPORT_SYMBOL(raw_local_irq_disable);
-+
-+void raw_local_irq_enable(void)
-+{
-+ struct vcpu_info *_vcpu;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ _vcpu->evtchn_upcall_mask = 0;
-+ barrier(); /* unmask then check (avoid races) */
-+ if (unlikely(_vcpu->evtchn_upcall_pending))
-+ force_evtchn_callback();
-+ preempt_enable();
-+}
-+EXPORT_SYMBOL(raw_local_irq_enable);
-+
-+/* Cannot use preempt_enable() here as we would recurse in preempt_sched(). */
-+int raw_irqs_disabled(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ int disabled;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ disabled = (_vcpu->evtchn_upcall_mask != 0);
-+ preempt_enable_no_resched();
-+ return disabled;
-+}
-+EXPORT_SYMBOL(raw_irqs_disabled);
-+
-+unsigned long __raw_local_irq_save(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ unsigned long flags;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ flags = _vcpu->evtchn_upcall_mask;
-+ _vcpu->evtchn_upcall_mask = 1;
-+ preempt_enable_no_resched();
-+
-+ return flags;
-+}
-+EXPORT_SYMBOL(__raw_local_irq_save);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mach-xen/Makefile linux-2.6.18-xen/arch/i386/mach-xen/Makefile
---- linux-2.6.18.1/arch/i386/mach-xen/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mach-xen/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mach-xen/Makefile linux-2.6.18-xen/arch/i386/mach-xen/Makefile
+--- linux-2.6.18/arch/i386/mach-xen/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mach-xen/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# Makefile for the linux kernel.
+#
+
-+obj-y := setup.o irqflags.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mach-xen/setup.c linux-2.6.18-xen/arch/i386/mach-xen/setup.c
---- linux-2.6.18.1/arch/i386/mach-xen/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mach-xen/setup.c 2006-09-21 01:33:31.000000000 +0200
-@@ -0,0 +1,154 @@
++obj-y := setup.o
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mach-xen/setup.c linux-2.6.18-xen/arch/i386/mach-xen/setup.c
+--- linux-2.6.18/arch/i386/mach-xen/setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mach-xen/setup.c 2006-11-19 14:26:22.000000000 +0100
+@@ -0,0 +1,153 @@
+/*
+ * Machine specific setup for generic
+ */
@@ -16264,7 +16185,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mach-xen/setup.c linux-2.6.
+#include <asm/arch_hooks.h>
+#include <asm/e820.h>
+#include <asm/setup.h>
-+#include <asm/fixmap.h>
+
+#include <xen/interface/callback.h>
+#include <xen/interface/memory.h>
@@ -16406,9 +16326,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mach-xen/setup.c linux-2.6.
+void __init pre_setup_arch_hook(void)
+{
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Makefile linux-2.6.18-xen/arch/i386/Makefile
---- linux-2.6.18.1/arch/i386/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/Makefile linux-2.6.18-xen/arch/i386/Makefile
+--- linux-2.6.18/arch/i386/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/Makefile 2006-11-19 14:26:21.000000000 +0100
@@ -48,6 +48,11 @@
CFLAGS += $(cflags-y)
@@ -16465,9 +16385,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/Makefile linux-2.6.18-xen/a
arch/$(ARCH)/boot/image.iso \
arch/$(ARCH)/boot/mtools.conf
+CLEAN_FILES += vmlinuz vmlinux-stripped
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/fault-xen.c linux-2.6.18-xen/arch/i386/mm/fault-xen.c
---- linux-2.6.18.1/arch/i386/mm/fault-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/fault-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/fault-xen.c linux-2.6.18-xen/arch/i386/mm/fault-xen.c
+--- linux-2.6.18/arch/i386/mm/fault-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/fault-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,770 @@
+/*
+ * linux/arch/i386/mm/fault.c
@@ -17239,9 +17159,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/fault-xen.c linux-2.6.18
+ }
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/highmem-xen.c linux-2.6.18-xen/arch/i386/mm/highmem-xen.c
---- linux-2.6.18.1/arch/i386/mm/highmem-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/highmem-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/highmem-xen.c linux-2.6.18-xen/arch/i386/mm/highmem-xen.c
+--- linux-2.6.18/arch/i386/mm/highmem-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/highmem-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,133 @@
+#include <linux/highmem.h>
+#include <linux/module.h>
@@ -17376,9 +17296,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/highmem-xen.c linux-2.6.
+EXPORT_SYMBOL(kmap_atomic);
+EXPORT_SYMBOL(kunmap_atomic);
+EXPORT_SYMBOL(kmap_atomic_to_page);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/hypervisor.c linux-2.6.18-xen/arch/i386/mm/hypervisor.c
---- linux-2.6.18.1/arch/i386/mm/hypervisor.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/hypervisor.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/hypervisor.c linux-2.6.18-xen/arch/i386/mm/hypervisor.c
+--- linux-2.6.18/arch/i386/mm/hypervisor.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/hypervisor.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,457 @@
+/******************************************************************************
+ * mm/hypervisor.c
@@ -17837,9 +17757,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/hypervisor.c linux-2.6.1
+ mach_lp, (u64)entry_a | ((u64)entry_b<<32));
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/init-xen.c linux-2.6.18-xen/arch/i386/mm/init-xen.c
---- linux-2.6.18.1/arch/i386/mm/init-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/init-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/init-xen.c linux-2.6.18-xen/arch/i386/mm/init-xen.c
+--- linux-2.6.18/arch/i386/mm/init-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/init-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,851 @@
+/*
+ * linux/arch/i386/mm/init.c
@@ -18692,9 +18612,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/init-xen.c linux-2.6.18-
+}
+#endif
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/ioremap-xen.c linux-2.6.18-xen/arch/i386/mm/ioremap-xen.c
---- linux-2.6.18.1/arch/i386/mm/ioremap-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/ioremap-xen.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/ioremap-xen.c linux-2.6.18-xen/arch/i386/mm/ioremap-xen.c
+--- linux-2.6.18/arch/i386/mm/ioremap-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/ioremap-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,443 @@
+/*
+ * arch/i386/mm/ioremap.c
@@ -19139,9 +19059,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/ioremap-xen.c linux-2.6.
+ --nrpages;
+ }
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/Makefile linux-2.6.18-xen/arch/i386/mm/Makefile
---- linux-2.6.18.1/arch/i386/mm/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/mm/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/Makefile linux-2.6.18-xen/arch/i386/mm/Makefile
+--- linux-2.6.18/arch/i386/mm/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/mm/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -8,3 +8,11 @@
obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
obj-$(CONFIG_HIGHMEM) += highmem.o
@@ -19154,9 +19074,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/Makefile linux-2.6.18-xe
+
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/pageattr.c linux-2.6.18-xen/arch/i386/mm/pageattr.c
---- linux-2.6.18.1/arch/i386/mm/pageattr.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/mm/pageattr.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/pageattr.c linux-2.6.18-xen/arch/i386/mm/pageattr.c
+--- linux-2.6.18/arch/i386/mm/pageattr.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/mm/pageattr.c 2006-11-19 14:26:22.000000000 +0100
@@ -84,7 +84,7 @@
unsigned long flags;
@@ -19166,9 +19086,45 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/pageattr.c linux-2.6.18-
return;
spin_lock_irqsave(&pgd_lock, flags);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/pgtable-xen.c linux-2.6.18-xen/arch/i386/mm/pgtable-xen.c
---- linux-2.6.18.1/arch/i386/mm/pgtable-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/mm/pgtable-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/pgtable.c linux-2.6.18-xen/arch/i386/mm/pgtable.c
+--- linux-2.6.18/arch/i386/mm/pgtable.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/mm/pgtable.c 2006-11-19 14:26:22.000000000 +0100
+@@ -12,6 +12,7 @@
+ #include <linux/slab.h>
+ #include <linux/pagemap.h>
+ #include <linux/spinlock.h>
++#include <linux/module.h>
+
+ #include <asm/system.h>
+ #include <asm/pgtable.h>
+@@ -137,6 +138,10 @@
+ __flush_tlb_one(vaddr);
+ }
+
++static int nr_fixmaps = 0;
++unsigned long __FIXADDR_TOP = 0xfffff000;
++EXPORT_SYMBOL(__FIXADDR_TOP);
++
+ void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
+ {
+ unsigned long address = __fix_to_virt(idx);
+@@ -146,6 +151,13 @@
+ return;
+ }
+ set_pte_pfn(address, phys >> PAGE_SHIFT, flags);
++ nr_fixmaps++;
++}
++
++void set_fixaddr_top(unsigned long top)
++{
++ BUG_ON(nr_fixmaps > 0);
++ __FIXADDR_TOP = top - PAGE_SIZE;
+ }
+
+ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/mm/pgtable-xen.c linux-2.6.18-xen/arch/i386/mm/pgtable-xen.c
+--- linux-2.6.18/arch/i386/mm/pgtable-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/mm/pgtable-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,699 @@
+/*
+ * linux/arch/i386/mm/pgtable.c
@@ -19869,9 +19825,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/mm/pgtable-xen.c linux-2.6.
+ !mm->context.has_foreign_mappings)
+ mm_unpin(mm);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/oprofile/Makefile linux-2.6.18-xen/arch/i386/oprofile/Makefile
---- linux-2.6.18.1/arch/i386/oprofile/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/oprofile/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/oprofile/Makefile linux-2.6.18-xen/arch/i386/oprofile/Makefile
+--- linux-2.6.18/arch/i386/oprofile/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/oprofile/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -6,7 +6,11 @@
oprofilefs.o oprofile_stats.o \
timer_int.o )
@@ -19884,9 +19840,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/oprofile/Makefile linux-2.6
op_model_ppro.o op_model_p4.o
oprofile-$(CONFIG_X86_IO_APIC) += nmi_timer_int.o
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/oprofile/xenoprof.c linux-2.6.18-xen/arch/i386/oprofile/xenoprof.c
---- linux-2.6.18.1/arch/i386/oprofile/xenoprof.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/oprofile/xenoprof.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/oprofile/xenoprof.c linux-2.6.18-xen/arch/i386/oprofile/xenoprof.c
+--- linux-2.6.18/arch/i386/oprofile/xenoprof.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/oprofile/xenoprof.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,584 @@
+/**
+ * @file xenoprof.c
@@ -20472,9 +20428,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/oprofile/xenoprof.c linux-2
+ }
+
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/irq-xen.c linux-2.6.18-xen/arch/i386/pci/irq-xen.c
---- linux-2.6.18.1/arch/i386/pci/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/pci/irq-xen.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/pci/irq-xen.c linux-2.6.18-xen/arch/i386/pci/irq-xen.c
+--- linux-2.6.18/arch/i386/pci/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/pci/irq-xen.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,1206 @@
+/*
+ * Low-Level PCI Support for PC -- Routing of Interrupts
@@ -21682,9 +21638,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/irq-xen.c linux-2.6.18-
+
+ return count;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/Makefile linux-2.6.18-xen/arch/i386/pci/Makefile
---- linux-2.6.18.1/arch/i386/pci/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/pci/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/pci/Makefile linux-2.6.18-xen/arch/i386/pci/Makefile
+--- linux-2.6.18/arch/i386/pci/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/pci/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -4,6 +4,10 @@
obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o
obj-$(CONFIG_PCI_DIRECT) += direct.o
@@ -21705,9 +21661,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/Makefile linux-2.6.18-x
+include $(srctree)/scripts/Makefile.xen
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/pcifront.c linux-2.6.18-xen/arch/i386/pci/pcifront.c
---- linux-2.6.18.1/arch/i386/pci/pcifront.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/i386/pci/pcifront.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/pci/pcifront.c linux-2.6.18-xen/arch/i386/pci/pcifront.c
+--- linux-2.6.18/arch/i386/pci/pcifront.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/i386/pci/pcifront.c 2006-11-19 14:26:22.000000000 +0100
@@ -0,0 +1,55 @@
+/*
+ * PCI Frontend Stub - puts some "dummy" functions in to the Linux x86 PCI core
@@ -21764,18 +21720,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/pci/pcifront.c linux-2.6.18
+}
+
+arch_initcall(pcifront_x86_stub_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/i386/power/Makefile linux-2.6.18-xen/arch/i386/power/Makefile
---- linux-2.6.18.1/arch/i386/power/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/i386/power/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/i386/power/Makefile linux-2.6.18-xen/arch/i386/power/Makefile
+--- linux-2.6.18/arch/i386/power/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/i386/power/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -1,2 +1,4 @@
-obj-$(CONFIG_PM) += cpu.o
+obj-$(CONFIG_PM_LEGACY) += cpu.o
+obj-$(CONFIG_SOFTWARE_SUSPEND) += cpu.o
+obj-$(CONFIG_ACPI_SLEEP) += cpu.o
obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/dig/setup.c linux-2.6.18-xen/arch/ia64/dig/setup.c
---- linux-2.6.18.1/arch/ia64/dig/setup.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/dig/setup.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/dig/setup.c linux-2.6.18-xen/arch/ia64/dig/setup.c
+--- linux-2.6.18/arch/ia64/dig/setup.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/dig/setup.c 2006-11-19 14:26:22.000000000 +0100
@@ -24,6 +24,8 @@
#include <asm/machvec.h>
#include <asm/system.h>
@@ -21805,19 +21761,19 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/dig/setup.c linux-2.6.18-xe
+ xen_start_info->console.domU.evtchn = 0;
+#endif
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/hp/sim/Makefile linux-2.6.18-xen/arch/ia64/hp/sim/Makefile
---- linux-2.6.18.1/arch/ia64/hp/sim/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/hp/sim/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/hp/sim/Makefile linux-2.6.18-xen/arch/ia64/hp/sim/Makefile
+--- linux-2.6.18/arch/ia64/hp/sim/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/hp/sim/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -14,3 +14,5 @@
obj-$(CONFIG_HP_SIMSERIAL) += simserial.o
obj-$(CONFIG_HP_SIMSERIAL_CONSOLE) += hpsim_console.o
obj-$(CONFIG_HP_SIMSCSI) += simscsi.o
+obj-$(CONFIG_XEN) += simserial.o
+obj-$(CONFIG_XEN) += hpsim_console.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Kconfig linux-2.6.18-xen/arch/ia64/Kconfig
---- linux-2.6.18.1/arch/ia64/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/Kconfig 2006-10-17 15:01:58.000000000 +0200
-@@ -58,6 +58,34 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/Kconfig linux-2.6.18-xen/arch/ia64/Kconfig
+--- linux-2.6.18/arch/ia64/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/Kconfig 2006-11-19 14:26:22.000000000 +0100
+@@ -58,6 +58,20 @@
bool
default y
@@ -21835,24 +21791,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Kconfig linux-2.6.18-xen/ar
+ help
+ vDSO paravirtualization
+
-+config XEN_IA64_EXPOSE_P2M
-+ bool "Xen/IA64 exposure p2m table"
-+ depends on XEN
-+ default y
-+ help
-+ expose p2m from xen
-+
-+config XEN_IA64_EXPOSE_P2M_USE_DTR
-+ bool "Xen/IA64 map p2m table with dtr"
-+ depends on XEN_IA64_EXPOSE_P2M
-+ default y
-+ help
-+ use dtr to map the exposed p2m table
-+
config SCHED_NO_NO_OMIT_FRAME_POINTER
bool
default y
-@@ -465,6 +493,21 @@
+@@ -465,6 +479,21 @@
bool
default PCI
@@ -21874,7 +21816,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Kconfig linux-2.6.18-xen/ar
source "drivers/pci/pcie/Kconfig"
source "drivers/pci/Kconfig"
-@@ -528,3 +571,34 @@
+@@ -528,3 +557,34 @@
source "security/Kconfig"
source "crypto/Kconfig"
@@ -21909,9 +21851,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Kconfig linux-2.6.18-xen/ar
+endif
+
+source "drivers/xen/Kconfig"
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/asm-offsets.c linux-2.6.18-xen/arch/ia64/kernel/asm-offsets.c
---- linux-2.6.18.1/arch/ia64/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/asm-offsets.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/asm-offsets.c linux-2.6.18-xen/arch/ia64/kernel/asm-offsets.c
+--- linux-2.6.18/arch/ia64/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/asm-offsets.c 2006-11-19 14:26:22.000000000 +0100
@@ -268,4 +268,29 @@
DEFINE(IA64_TIME_SOURCE_MMIO64, TIME_SOURCE_MMIO64);
DEFINE(IA64_TIME_SOURCE_MMIO32, TIME_SOURCE_MMIO32);
@@ -21942,9 +21884,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/asm-offsets.c linux-
+ DEFINE_MAPPED_REG_OFS(XSI_BANK1_R16_OFS, bank1_regs[0]);
+#endif /* CONFIG_XEN */
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/entry.S linux-2.6.18-xen/arch/ia64/kernel/entry.S
---- linux-2.6.18.1/arch/ia64/kernel/entry.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/entry.S 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/entry.S linux-2.6.18-xen/arch/ia64/kernel/entry.S
+--- linux-2.6.18/arch/ia64/kernel/entry.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/entry.S 2006-11-19 14:26:22.000000000 +0100
@@ -180,7 +180,7 @@
* called. The code starting at .map relies on this. The rest of the code
* doesn't care about the interrupt masking status.
@@ -22064,9 +22006,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/entry.S linux-2.6.18
;;
mov ar.unat=r9
br.many b7
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/gate.lds.S linux-2.6.18-xen/arch/ia64/kernel/gate.lds.S
---- linux-2.6.18.1/arch/ia64/kernel/gate.lds.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/gate.lds.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/gate.lds.S linux-2.6.18-xen/arch/ia64/kernel/gate.lds.S
+--- linux-2.6.18/arch/ia64/kernel/gate.lds.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/gate.lds.S 2006-11-19 14:26:22.000000000 +0100
@@ -43,6 +43,28 @@
__start_gate_brl_fsys_bubble_down_patchlist = .;
*(.data.patch.brl_fsys_bubble_down)
@@ -22096,9 +22038,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/gate.lds.S linux-2.6
} :readable
.IA_64.unwind_info : { *(.IA_64.unwind_info*) }
.IA_64.unwind : { *(.IA_64.unwind*) } :readable :unwind
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/gate.S linux-2.6.18-xen/arch/ia64/kernel/gate.S
---- linux-2.6.18.1/arch/ia64/kernel/gate.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/gate.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/gate.S linux-2.6.18-xen/arch/ia64/kernel/gate.S
+--- linux-2.6.18/arch/ia64/kernel/gate.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/gate.S 2006-11-19 14:26:22.000000000 +0100
@@ -6,13 +6,15 @@
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
@@ -22268,9 +22210,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/gate.S linux-2.6.18-
(p9) mov r8=ENOSYS
FSYS_RETURN
END(__kernel_syscall_via_epc)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/head.S linux-2.6.18-xen/arch/ia64/kernel/head.S
---- linux-2.6.18.1/arch/ia64/kernel/head.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/head.S 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/head.S linux-2.6.18-xen/arch/ia64/kernel/head.S
+--- linux-2.6.18/arch/ia64/kernel/head.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/head.S 2006-11-19 14:26:22.000000000 +0100
@@ -367,6 +367,12 @@
;;
(isBP) st8 [r2]=r28 // save the address of the boot param area passed by the bootloader
@@ -22284,9 +22226,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/head.S linux-2.6.18-
#ifdef CONFIG_SMP
(isAP) br.call.sptk.many rp=start_secondary
.ret0:
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/iosapic.c linux-2.6.18-xen/arch/ia64/kernel/iosapic.c
---- linux-2.6.18.1/arch/ia64/kernel/iosapic.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/iosapic.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/iosapic.c linux-2.6.18-xen/arch/ia64/kernel/iosapic.c
+--- linux-2.6.18/arch/ia64/kernel/iosapic.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/iosapic.c 2006-11-19 14:26:22.000000000 +0100
@@ -159,6 +159,65 @@
static int iosapic_kmalloc_ok;
static LIST_HEAD(free_rte_list);
@@ -22373,9 +22315,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/iosapic.c linux-2.6.
if (pcat_compat) {
/*
* Disable the compatibility mode interrupts (8259 style),
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/irq_ia64.c linux-2.6.18-xen/arch/ia64/kernel/irq_ia64.c
---- linux-2.6.18.1/arch/ia64/kernel/irq_ia64.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/irq_ia64.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/irq_ia64.c linux-2.6.18-xen/arch/ia64/kernel/irq_ia64.c
+--- linux-2.6.18/arch/ia64/kernel/irq_ia64.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/irq_ia64.c 2006-11-19 14:26:22.000000000 +0100
@@ -30,6 +30,9 @@
#include <linux/smp_lock.h>
#include <linux/threads.h>
@@ -22678,9 +22620,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/irq_ia64.c linux-2.6
#ifdef CONFIG_SMP
phys_cpu_id = cpu_physical_id(cpu);
#else
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/pal.S linux-2.6.18-xen/arch/ia64/kernel/pal.S
---- linux-2.6.18.1/arch/ia64/kernel/pal.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/pal.S 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/pal.S linux-2.6.18-xen/arch/ia64/kernel/pal.S
+--- linux-2.6.18/arch/ia64/kernel/pal.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/pal.S 2006-11-19 14:26:23.000000000 +0100
@@ -16,6 +16,7 @@
#include <asm/processor.h>
@@ -22707,9 +22649,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/pal.S linux-2.6.18-x
/*
* Make a PAL call using the stacked registers calling convention.
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/patch.c linux-2.6.18-xen/arch/ia64/kernel/patch.c
---- linux-2.6.18.1/arch/ia64/kernel/patch.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/patch.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/patch.c linux-2.6.18-xen/arch/ia64/kernel/patch.c
+--- linux-2.6.18/arch/ia64/kernel/patch.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/patch.c 2006-11-19 14:26:23.000000000 +0100
@@ -184,6 +184,73 @@
ia64_srlz_i();
}
@@ -22795,9 +22737,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/patch.c linux-2.6.18
ia64_patch_vtop(START(vtop), END(vtop));
ia64_patch_mckinley_e9(START(mckinley_e9), END(mckinley_e9));
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18-xen/arch/ia64/kernel/setup.c
---- linux-2.6.18.1/arch/ia64/kernel/setup.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/kernel/setup.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/kernel/setup.c linux-2.6.18-xen/arch/ia64/kernel/setup.c
+--- linux-2.6.18/arch/ia64/kernel/setup.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/kernel/setup.c 2006-11-19 14:26:23.000000000 +0100
@@ -60,6 +60,10 @@
#include <asm/system.h>
#include <asm/unistd.h>
@@ -22809,13 +22751,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
#if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE)
# error "struct cpuinfo_ia64 too big!"
-@@ -70,6 +74,24 @@
+@@ -70,6 +74,22 @@
EXPORT_SYMBOL(__per_cpu_offset);
#endif
+#ifdef CONFIG_XEN
-+unsigned long kernel_start_pa;
-+
+static int
+xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
+{
@@ -22834,7 +22774,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
extern void ia64_setup_printk_clock(void);
DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info);
-@@ -176,15 +198,33 @@
+@@ -176,15 +196,33 @@
return 0;
}
@@ -22869,7 +22809,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
struct rsvd_region tmp;
tmp = rsvd_region[j];
rsvd_region[j] = rsvd_region[j + 1];
-@@ -192,6 +232,36 @@
+@@ -192,6 +230,36 @@
}
}
}
@@ -22906,7 +22846,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
}
/*
-@@ -242,6 +312,14 @@
+@@ -242,6 +310,14 @@
rsvd_region[n].end = (unsigned long) ia64_imva(_end);
n++;
@@ -22921,7 +22861,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
#ifdef CONFIG_BLK_DEV_INITRD
if (ia64_boot_param->initrd_start) {
rsvd_region[n].start = (unsigned long)__va(ia64_boot_param->initrd_start);
-@@ -333,6 +411,16 @@
+@@ -333,6 +409,16 @@
{
int earlycons = 0;
@@ -22938,13 +22878,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
#ifdef CONFIG_SERIAL_SGI_L1_CONSOLE
{
extern int sn_serial_console_early_setup(void);
-@@ -402,6 +490,15 @@
+@@ -402,6 +488,14 @@
{
unw_init();
+#ifdef CONFIG_XEN
+ if (is_running_on_xen()) {
-+ kernel_start_pa = KERNEL_START - ia64_tpa(KERNEL_START);
+ setup_xen_features();
+ /* Register a call for panic conditions. */
+ atomic_notifier_chain_register(&panic_notifier_list, &xen_panic_block);
@@ -22954,7 +22893,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist);
*cmdline_p = __va(ia64_boot_param->command_line);
-@@ -478,6 +575,23 @@
+@@ -478,6 +572,23 @@
conswitchp = &vga_con;
# endif
}
@@ -22978,7 +22917,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
#endif
/* enable IA-64 Machine Check Abort Handling unless disabled */
-@@ -486,6 +600,9 @@
+@@ -486,6 +597,9 @@
platform_setup(cmdline_p);
paging_init();
@@ -22988,7 +22927,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
}
/*
-@@ -870,6 +987,15 @@
+@@ -870,6 +984,15 @@
/* size of physical stacked register partition plus 8 bytes: */
__get_cpu_var(ia64_phys_stacked_size_p8) = num_phys_stacked*8 + 8;
platform_cpu_init();
@@ -23004,9 +22943,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/kernel/setup.c linux-2.6.18
pm_idle = default_idle;
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Makefile linux-2.6.18-xen/arch/ia64/Makefile
---- linux-2.6.18.1/arch/ia64/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/Makefile 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/Makefile linux-2.6.18-xen/arch/ia64/Makefile
+--- linux-2.6.18/arch/ia64/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/Makefile 2006-11-19 14:26:22.000000000 +0100
@@ -45,6 +45,12 @@
endif
@@ -23047,9 +22986,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/Makefile linux-2.6.18-xen/a
define archhelp
echo '* compressed - Build compressed kernel image'
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/mm/ioremap.c linux-2.6.18-xen/arch/ia64/mm/ioremap.c
---- linux-2.6.18.1/arch/ia64/mm/ioremap.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/ia64/mm/ioremap.c 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/mm/ioremap.c linux-2.6.18-xen/arch/ia64/mm/ioremap.c
+--- linux-2.6.18/arch/ia64/mm/ioremap.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/ia64/mm/ioremap.c 2006-11-19 14:26:23.000000000 +0100
@@ -16,6 +16,9 @@
static inline void __iomem *
__ioremap (unsigned long offset, unsigned long size)
@@ -23060,15 +22999,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/mm/ioremap.c linux-2.6.18-x
return (void __iomem *) (__IA64_UNCACHED_OFFSET | offset);
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/drivers/README linux-2.6.18-xen/arch/ia64/xen/drivers/README
---- linux-2.6.18.1/arch/ia64/xen/drivers/README 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/drivers/README 2006-09-04 16:31:00.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/drivers/README linux-2.6.18-xen/arch/ia64/xen/drivers/README
+--- linux-2.6.18/arch/ia64/xen/drivers/README 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/drivers/README 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,2 @@
+This is a temporary location for source/Makefiles that need to be
+patched/reworked in drivers/xen to work with xenlinux/ia64.
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypercall.S linux-2.6.18-xen/arch/ia64/xen/hypercall.S
---- linux-2.6.18.1/arch/ia64/xen/hypercall.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/hypercall.S 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/hypercall.S linux-2.6.18-xen/arch/ia64/xen/hypercall.S
+--- linux-2.6.18/arch/ia64/xen/hypercall.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/hypercall.S 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,413 @@
+/*
+ * Support routines for Xen hypercalls
@@ -23483,10 +23422,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypercall.S linux-2.6.1
+ ;;
+END(xen_ssm_i_1)
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.18-xen/arch/ia64/xen/hypervisor.c
---- linux-2.6.18.1/arch/ia64/xen/hypervisor.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/hypervisor.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,1052 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/hypervisor.c linux-2.6.18-xen/arch/ia64/xen/hypervisor.c
+--- linux-2.6.18/arch/ia64/xen/hypervisor.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/hypervisor.c 2006-11-19 14:26:23.000000000 +0100
+@@ -0,0 +1,833 @@
+/******************************************************************************
+ * include/asm-ia64/shadow.h
+ *
@@ -23529,11 +23468,59 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+int running_on_xen;
+EXPORT_SYMBOL(running_on_xen);
+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M
-+static int p2m_expose_init(void);
-+#else
-+#define p2m_expose_init() (-ENOSYS)
-+#endif
++//XXX xen/ia64 copy_from_guest() is broken.
++// This is a temporal work around until it is fixed.
++// used by balloon.c netfront.c
++
++// get_xen_guest_handle is defined only when __XEN_TOOLS__ is defined
++// if the definition in arch-ia64.h is changed, this must be updated.
++#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
++
++int
++ia64_xenmem_reservation_op(unsigned long op,
++ struct xen_memory_reservation* reservation__)
++{
++ struct xen_memory_reservation reservation = *reservation__;
++ unsigned long* frame_list;
++ unsigned long nr_extents = reservation__->nr_extents;
++ int ret = 0;
++ get_xen_guest_handle(frame_list, reservation__->extent_start);
++
++ BUG_ON(op != XENMEM_increase_reservation &&
++ op != XENMEM_decrease_reservation &&
++ op != XENMEM_populate_physmap);
++
++ while (nr_extents > 0) {
++ int tmp_ret;
++ volatile unsigned long dummy;
++
++ set_xen_guest_handle(reservation.extent_start, frame_list);
++ reservation.nr_extents = nr_extents;
++
++ dummy = frame_list[0];// re-install tlb entry before hypercall
++ tmp_ret = ____HYPERVISOR_memory_op(op, &reservation);
++ if (tmp_ret < 0) {
++ if (ret == 0) {
++ ret = tmp_ret;
++ }
++ break;
++ }
++ if (tmp_ret == 0) {
++ //XXX dirty work around for skbuff_ctor()
++ // of a non-privileged domain,
++ if ((op == XENMEM_increase_reservation ||
++ op == XENMEM_populate_physmap) &&
++ !is_initial_xendomain() &&
++ reservation.extent_order > 0)
++ return ret;
++ }
++ frame_list += tmp_ret;
++ nr_extents -= tmp_ret;
++ ret += tmp_ret;
++ }
++ return ret;
++}
++EXPORT_SYMBOL(ia64_xenmem_reservation_op);
+
+//XXX same as i386, x86_64 contiguous_bitmap_set(), contiguous_bitmap_clear()
+// move those to lib/contiguous_bitmap?
@@ -23812,6 +23799,8 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+int
+HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count)
+{
++ __u64 va1, va2, pa1, pa2;
++
+ if (cmd == GNTTABOP_map_grant_ref) {
+ unsigned int i;
+ for (i = 0; i < count; i++) {
@@ -23819,7 +23808,29 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+ (struct gnttab_map_grant_ref*)uop + i);
+ }
+ }
-+ return xencomm_mini_hypercall_grant_table_op(cmd, uop, count);
++ va1 = (__u64)uop & PAGE_MASK;
++ pa1 = pa2 = 0;
++ if ((REGION_NUMBER(va1) == 5) &&
++ ((va1 - KERNEL_START) >= KERNEL_TR_PAGE_SIZE)) {
++ pa1 = ia64_tpa(va1);
++ if (cmd <= GNTTABOP_transfer) {
++ static uint32_t uop_size[GNTTABOP_transfer + 1] = {
++ sizeof(struct gnttab_map_grant_ref),
++ sizeof(struct gnttab_unmap_grant_ref),
++ sizeof(struct gnttab_setup_table),
++ sizeof(struct gnttab_dump_table),
++ sizeof(struct gnttab_transfer),
++ };
++ va2 = (__u64)uop + (uop_size[cmd] * count) - 1;
++ va2 &= PAGE_MASK;
++ if (va1 != va2) {
++ /* maximum size of uop is 2pages */
++ BUG_ON(va2 > va1 + PAGE_SIZE);
++ pa2 = ia64_tpa(va2);
++ }
++ }
++ }
++ return ____HYPERVISOR_grant_table_op(cmd, uop, count, pa1, pa2);
+}
+EXPORT_SYMBOL(HYPERVISOR_grant_table_op);
+
@@ -23943,10 +23954,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+ privcmd_resource_min, privcmd_resource_max,
+ (privcmd_resource_max - privcmd_resource_min) >> 20);
+ BUG_ON(privcmd_resource_min >= privcmd_resource_max);
-+
-+ // XXX this should be somewhere appropriate
-+ (void)p2m_expose_init();
-+
+ return 0;
+}
+late_initcall(xen_ia64_privcmd_init);
@@ -23967,7 +23974,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+};
+
+struct xen_ia64_privcmd_vma {
-+ int is_privcmd_mmapped;
+ struct xen_ia64_privcmd_range* range;
+
+ unsigned long num_entries;
@@ -24106,15 +24112,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+static void
+xen_ia64_privcmd_vma_open(struct vm_area_struct* vma)
+{
-+ struct xen_ia64_privcmd_vma* old_privcmd_vma = (struct xen_ia64_privcmd_vma*)vma->vm_private_data;
+ struct xen_ia64_privcmd_vma* privcmd_vma = (struct xen_ia64_privcmd_vma*)vma->vm_private_data;
+ struct xen_ia64_privcmd_range* privcmd_range = privcmd_vma->range;
+
+ atomic_inc(&privcmd_range->ref_count);
+ // vm_op->open() can't fail.
+ privcmd_vma = kmalloc(sizeof(*privcmd_vma), GFP_KERNEL | __GFP_NOFAIL);
-+ // copy original value if necessary
-+ privcmd_vma->is_privcmd_mmapped = old_privcmd_vma->is_privcmd_mmapped;
+
+ __xen_ia64_privcmd_vma_open(vma, privcmd_vma, privcmd_range);
+}
@@ -24150,14 +24153,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+}
+
+int
-+privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma)
-+{
-+ struct xen_ia64_privcmd_vma* privcmd_vma =
-+ (struct xen_ia64_privcmd_vma *)vma->vm_private_data;
-+ return (xchg(&privcmd_vma->is_privcmd_mmapped, 1) == 0);
-+}
-+
-+int
+privcmd_mmap(struct file * file, struct vm_area_struct * vma)
+{
+ int error;
@@ -24182,8 +24177,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+ if (privcmd_vma == NULL) {
+ goto out_enomem1;
+ }
-+ privcmd_vma->is_privcmd_mmapped = 0;
-+
+ res = kzalloc(sizeof(*res), GFP_KERNEL);
+ if (res == NULL) {
+ goto out_enomem1;
@@ -24266,296 +24259,22 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/hypervisor.c linux-2.6.
+ /* Just trigger a tick. */
+ ia64_cpu_local_tick();
+}
-+
-+///////////////////////////////////////////////////////////////////////////
-+// expose p2m table
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M
-+#include <linux/cpu.h>
-+#include <asm/uaccess.h>
-+
-+int p2m_initialized __read_mostly = 0;
-+
-+unsigned long p2m_min_low_pfn __read_mostly;
-+unsigned long p2m_max_low_pfn __read_mostly;
-+unsigned long p2m_convert_min_pfn __read_mostly;
-+unsigned long p2m_convert_max_pfn __read_mostly;
-+
-+static struct resource p2m_resource = {
-+ .name = "Xen p2m table",
-+ .flags = IORESOURCE_MEM,
-+};
-+static unsigned long p2m_assign_start_pfn __read_mostly;
-+static unsigned long p2m_assign_end_pfn __read_mostly;
-+volatile const pte_t* p2m_pte __read_mostly;
-+
-+#define GRNULE_PFN PTRS_PER_PTE
-+static unsigned long p2m_granule_pfn __read_mostly = GRNULE_PFN;
-+
-+#define ROUNDDOWN(x, y) ((x) & ~((y) - 1))
-+#define ROUNDUP(x, y) (((x) + (y) - 1) & ~((y) - 1))
-+
-+#define P2M_PREFIX "Xen p2m: "
-+
-+static int xen_ia64_p2m_expose __read_mostly = 1;
-+module_param(xen_ia64_p2m_expose, int, 0);
-+MODULE_PARM_DESC(xen_ia64_p2m_expose,
-+ "enable/disable xen/ia64 p2m exposure optimization\n");
-+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+static int xen_ia64_p2m_expose_use_dtr __read_mostly = 1;
-+module_param(xen_ia64_p2m_expose_use_dtr, int, 0);
-+MODULE_PARM_DESC(xen_ia64_p2m_expose_use_dtr,
-+ "use/unuse dtr to map exposed p2m table\n");
-+
-+static const int p2m_page_shifts[] = {
-+ _PAGE_SIZE_4K,
-+ _PAGE_SIZE_8K,
-+ _PAGE_SIZE_16K,
-+ _PAGE_SIZE_64K,
-+ _PAGE_SIZE_256K,
-+ _PAGE_SIZE_1M,
-+ _PAGE_SIZE_4M,
-+ _PAGE_SIZE_16M,
-+ _PAGE_SIZE_64M,
-+ _PAGE_SIZE_256M,
-+};
-+
-+struct p2m_itr_arg {
-+ unsigned long vaddr;
-+ unsigned long pteval;
-+ unsigned long log_page_size;
-+};
-+static struct p2m_itr_arg p2m_itr_arg __read_mostly;
-+
-+// This should be in asm-ia64/kregs.h
-+#define IA64_TR_P2M_TABLE 3
-+
-+static void
-+p2m_itr(void* info)
-+{
-+ struct p2m_itr_arg* arg = (struct p2m_itr_arg*)info;
-+ ia64_itr(0x2, IA64_TR_P2M_TABLE,
-+ arg->vaddr, arg->pteval, arg->log_page_size);
-+ ia64_srlz_d();
-+}
-+
-+static int
-+p2m_expose_dtr_call(struct notifier_block *self,
-+ unsigned long event, void* ptr)
-+{
-+ unsigned int cpu = (unsigned int)(long)ptr;
-+ if (event != CPU_ONLINE)
-+ return 0;
-+ if (!(p2m_initialized && xen_ia64_p2m_expose_use_dtr))
-+ smp_call_function_single(cpu, &p2m_itr, &p2m_itr_arg, 1, 1);
-+ return 0;
-+}
-+
-+static struct notifier_block p2m_expose_dtr_hotplug_notifier = {
-+ .notifier_call = p2m_expose_dtr_call,
-+ .next = NULL,
-+ .priority = 0
-+};
-+#endif
-+
-+static int
-+p2m_expose_init(void)
-+{
-+ unsigned long num_pfn;
-+ unsigned long size = 0;
-+ unsigned long p2m_size = 0;
-+ unsigned long align = ~0UL;
-+ int error = 0;
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+ int i;
-+ unsigned long page_size;
-+ unsigned long log_page_size = 0;
-+#endif
-+
-+ if (!xen_ia64_p2m_expose)
-+ return -ENOSYS;
-+ if (p2m_initialized)
-+ return 0;
-+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+ error = register_cpu_notifier(&p2m_expose_dtr_hotplug_notifier);
-+ if (error < 0)
-+ return error;
-+#endif
-+
-+ lock_cpu_hotplug();
-+ if (p2m_initialized)
-+ goto out;
-+
-+#ifdef CONFIG_DISCONTIGMEM
-+ p2m_min_low_pfn = min_low_pfn;
-+ p2m_max_low_pfn = max_low_pfn;
-+#else
-+ p2m_min_low_pfn = 0;
-+ p2m_max_low_pfn = max_pfn;
-+#endif
-+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+ if (xen_ia64_p2m_expose_use_dtr) {
-+ unsigned long granule_pfn = 0;
-+ p2m_size = p2m_max_low_pfn - p2m_min_low_pfn;
-+ for (i = 0;
-+ i < sizeof(p2m_page_shifts)/sizeof(p2m_page_shifts[0]);
-+ i++) {
-+ log_page_size = p2m_page_shifts[i];
-+ page_size = 1UL << log_page_size;
-+ if (page_size < p2m_size)
-+ continue;
-+
-+ granule_pfn = max(page_size >> PAGE_SHIFT,
-+ p2m_granule_pfn);
-+ p2m_convert_min_pfn = ROUNDDOWN(p2m_min_low_pfn,
-+ granule_pfn);
-+ p2m_convert_max_pfn = ROUNDUP(p2m_max_low_pfn,
-+ granule_pfn);
-+ num_pfn = p2m_convert_max_pfn - p2m_convert_min_pfn;
-+ size = num_pfn << PAGE_SHIFT;
-+ p2m_size = num_pfn / PTRS_PER_PTE;
-+ p2m_size = ROUNDUP(p2m_size, granule_pfn << PAGE_SHIFT);
-+ if (p2m_size == page_size)
-+ break;
-+ }
-+ if (p2m_size != page_size) {
-+ printk(KERN_ERR "p2m_size != page_size\n");
-+ error = -EINVAL;
-+ goto out;
-+ }
-+ align = max(privcmd_resource_align, granule_pfn << PAGE_SHIFT);
-+ } else
-+#endif
-+ {
-+ BUG_ON(p2m_granule_pfn & (p2m_granule_pfn - 1));
-+ p2m_convert_min_pfn = ROUNDDOWN(p2m_min_low_pfn,
-+ p2m_granule_pfn);
-+ p2m_convert_max_pfn = ROUNDUP(p2m_max_low_pfn, p2m_granule_pfn);
-+ num_pfn = p2m_convert_max_pfn - p2m_convert_min_pfn;
-+ size = num_pfn << PAGE_SHIFT;
-+ p2m_size = num_pfn / PTRS_PER_PTE;
-+ p2m_size = ROUNDUP(p2m_size, p2m_granule_pfn << PAGE_SHIFT);
-+ align = max(privcmd_resource_align,
-+ p2m_granule_pfn << PAGE_SHIFT);
-+ }
-+
-+ // use privcmd region
-+ error = allocate_resource(&iomem_resource, &p2m_resource, p2m_size,
-+ privcmd_resource_min, privcmd_resource_max,
-+ align, NULL, NULL);
-+ if (error) {
-+ printk(KERN_ERR P2M_PREFIX
-+ "can't allocate region for p2m exposure "
-+ "[0x%016lx, 0x%016lx) 0x%016lx\n",
-+ p2m_convert_min_pfn, p2m_convert_max_pfn, p2m_size);
-+ goto out;
-+ }
-+
-+ p2m_assign_start_pfn = p2m_resource.start >> PAGE_SHIFT;
-+ p2m_assign_end_pfn = p2m_resource.end >> PAGE_SHIFT;
-+
-+ error = HYPERVISOR_expose_p2m(p2m_convert_min_pfn,
-+ p2m_assign_start_pfn,
-+ size, p2m_granule_pfn);
-+ if (error) {
-+ printk(KERN_ERR P2M_PREFIX "failed expose p2m hypercall %d\n",
-+ error);
-+ printk(KERN_ERR P2M_PREFIX "conv 0x%016lx assign 0x%016lx "
-+ "size 0x%016lx granule 0x%016lx\n",
-+ p2m_convert_min_pfn, p2m_assign_start_pfn,
-+ size, p2m_granule_pfn);;
-+ release_resource(&p2m_resource);
-+ goto out;
-+ }
-+ p2m_pte = (volatile const pte_t*)pfn_to_kaddr(p2m_assign_start_pfn);
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+ if (xen_ia64_p2m_expose_use_dtr) {
-+ p2m_itr_arg.vaddr = (unsigned long)__va(p2m_assign_start_pfn
-+ << PAGE_SHIFT);
-+ p2m_itr_arg.pteval = pte_val(pfn_pte(p2m_assign_start_pfn,
-+ PAGE_KERNEL));
-+ p2m_itr_arg.log_page_size = log_page_size;
-+ smp_mb();
-+ smp_call_function(&p2m_itr, &p2m_itr_arg, 1, 1);
-+ p2m_itr(&p2m_itr_arg);
-+ }
-+#endif
-+ smp_mb();
-+ p2m_initialized = 1;
-+ printk(P2M_PREFIX "assign p2m table of [0x%016lx, 0x%016lx)\n",
-+ p2m_convert_min_pfn << PAGE_SHIFT,
-+ p2m_convert_max_pfn << PAGE_SHIFT);
-+ printk(P2M_PREFIX "to [0x%016lx, 0x%016lx) (%ld KBytes)\n",
-+ p2m_assign_start_pfn << PAGE_SHIFT,
-+ p2m_assign_end_pfn << PAGE_SHIFT,
-+ p2m_size / 1024);
-+out:
-+ unlock_cpu_hotplug();
-+ return error;
-+}
-+
-+#ifdef notyet
-+void
-+p2m_expose_cleanup(void)
-+{
-+ BUG_ON(!p2m_initialized);
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR
-+ unregister_cpu_notifier(&p2m_expose_dtr_hotplug_notifier);
-+#endif
-+ release_resource(&p2m_resource);
-+}
-+#endif
-+
-+//XXX inlinize?
-+unsigned long
-+p2m_phystomach(unsigned long gpfn)
-+{
-+ volatile const pte_t* pte;
-+ unsigned long mfn;
-+ unsigned long pteval;
-+
-+ if (!p2m_initialized ||
-+ gpfn < p2m_min_low_pfn || gpfn > p2m_max_low_pfn
-+ /* || !pfn_valid(gpfn) */)
-+ return INVALID_MFN;
-+ pte = p2m_pte + (gpfn - p2m_convert_min_pfn);
-+
-+ mfn = INVALID_MFN;
-+ if (likely(__get_user(pteval, (unsigned long __user *)pte) == 0 &&
-+ pte_present(__pte(pteval)) &&
-+ pte_pfn(__pte(pteval)) != (INVALID_MFN >> PAGE_SHIFT)))
-+ mfn = (pteval & _PFN_MASK) >> PAGE_SHIFT;
-+
-+ return mfn;
-+}
-+
-+EXPORT_SYMBOL_GPL(p2m_initialized);
-+EXPORT_SYMBOL_GPL(p2m_min_low_pfn);
-+EXPORT_SYMBOL_GPL(p2m_max_low_pfn);
-+EXPORT_SYMBOL_GPL(p2m_convert_min_pfn);
-+EXPORT_SYMBOL_GPL(p2m_convert_max_pfn);
-+EXPORT_SYMBOL_GPL(p2m_pte);
-+EXPORT_SYMBOL_GPL(p2m_phystomach);
-+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/Makefile linux-2.6.18-xen/arch/ia64/xen/Makefile
---- linux-2.6.18.1/arch/ia64/xen/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/Makefile 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,9 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/Makefile linux-2.6.18-xen/arch/ia64/xen/Makefile
+--- linux-2.6.18/arch/ia64/xen/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/Makefile 2006-11-19 14:26:23.000000000 +0100
+@@ -0,0 +1,8 @@
+#
+# Makefile for Xen components
+#
+
+obj-y := hypercall.o xenivt.o xenentry.o xensetup.o xenpal.o xenhpski.o \
-+ hypervisor.o pci-dma-xen.o util.o xencomm.o xcom_hcall.o \
-+ xcom_privcmd.o
++ hypervisor.o pci-dma-xen.o util.o
+
+pci-dma-xen-y := ../../i386/kernel/pci-dma-xen.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/util.c linux-2.6.18-xen/arch/ia64/xen/util.c
---- linux-2.6.18.1/arch/ia64/xen/util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/util.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,117 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/util.c linux-2.6.18-xen/arch/ia64/xen/util.c
+--- linux-2.6.18/arch/ia64/xen/util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/util.c 2006-11-19 14:26:23.000000000 +0100
+@@ -0,0 +1,115 @@
+/******************************************************************************
+ * arch/ia64/xen/util.c
+ * This file is the ia64 counterpart of drivers/xen/util.c
@@ -24585,8 +24304,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/util.c linux-2.6.18-xen
+#include <linux/vmalloc.h>
+#include <asm/uaccess.h>
+#include <xen/driver_util.h>
-+#include <xen/interface/memory.h>
-+#include <asm/hypercall.h>
+
+struct vm_struct *alloc_vm_area(unsigned long size)
+{
@@ -24673,1334 +24390,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/util.c linux-2.6.18-xen
+ * tab-width: 8
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xcom_hcall.c linux-2.6.18-xen/arch/ia64/xen/xcom_hcall.c
---- linux-2.6.18.1/arch/ia64/xen/xcom_hcall.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xcom_hcall.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,469 @@
-+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+ *
-+ * Tristan Gingold <tristan.gingold@bull.net>
-+ */
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/gfp.h>
-+#include <linux/module.h>
-+#include <xen/interface/xen.h>
-+#include <xen/interface/dom0_ops.h>
-+#include <xen/interface/memory.h>
-+#include <xen/interface/xencomm.h>
-+#include <xen/interface/version.h>
-+#include <xen/interface/sched.h>
-+#include <xen/interface/event_channel.h>
-+#include <xen/interface/physdev.h>
-+#include <xen/interface/grant_table.h>
-+#include <xen/interface/callback.h>
-+#include <xen/interface/acm_ops.h>
-+#include <xen/interface/hvm/params.h>
-+#include <xen/public/privcmd.h>
-+#include <asm/hypercall.h>
-+#include <asm/page.h>
-+#include <asm/uaccess.h>
-+#include <asm/xen/xencomm.h>
-+
-+/* Xencomm notes:
-+ * This file defines hypercalls to be used by xencomm. The hypercalls simply
-+ * create inlines descriptors for pointers and then call the raw arch hypercall
-+ * xencomm_arch_hypercall_XXX
-+ *
-+ * If the arch wants to directly use these hypercalls, simply define macros
-+ * in asm/hypercall.h, eg:
-+ * #define HYPERVISOR_sched_op xencomm_hypercall_sched_op
-+ *
-+ * The arch may also define HYPERVISOR_xxx as a function and do more operations
-+ * before/after doing the hypercall.
-+ *
-+ * Note: because only inline descriptors are created these functions must only
-+ * be called with in kernel memory parameters.
-+ */
-+
-+int
-+xencomm_hypercall_console_io(int cmd, int count, char *str)
-+{
-+ return xencomm_arch_hypercall_console_io
-+ (cmd, count, xencomm_create_inline(str));
-+}
-+
-+int
-+xencomm_hypercall_event_channel_op(int cmd, void *op)
-+{
-+ return xencomm_arch_hypercall_event_channel_op
-+ (cmd, xencomm_create_inline(op));
-+}
-+
-+int
-+xencomm_hypercall_xen_version(int cmd, void *arg)
-+{
-+ switch (cmd) {
-+ case XENVER_version:
-+ case XENVER_extraversion:
-+ case XENVER_compile_info:
-+ case XENVER_capabilities:
-+ case XENVER_changeset:
-+ case XENVER_platform_parameters:
-+ case XENVER_pagesize:
-+ case XENVER_get_features:
-+ break;
-+ default:
-+ printk("%s: unknown version cmd %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return xencomm_arch_hypercall_xen_version
-+ (cmd, xencomm_create_inline(arg));
-+}
-+
-+int
-+xencomm_hypercall_physdev_op(int cmd, void *op)
-+{
-+ return xencomm_arch_hypercall_physdev_op
-+ (cmd, xencomm_create_inline(op));
-+}
-+
-+static void *
-+xencommize_grant_table_op(unsigned int cmd, void *op, unsigned int count)
-+{
-+ switch (cmd) {
-+ case GNTTABOP_map_grant_ref:
-+ case GNTTABOP_unmap_grant_ref:
-+ break;
-+ case GNTTABOP_setup_table:
-+ {
-+ struct gnttab_setup_table *setup = op;
-+ struct xencomm_handle *frame_list;
-+
-+ frame_list = xencomm_create_inline
-+ (xen_guest_handle(setup->frame_list));
-+
-+ set_xen_guest_handle(setup->frame_list, (void *)frame_list);
-+ break;
-+ }
-+ case GNTTABOP_dump_table:
-+ case GNTTABOP_transfer:
-+ case GNTTABOP_copy:
-+ break;
-+ default:
-+ printk("%s: unknown grant table op %d\n", __func__, cmd);
-+ BUG();
-+ }
-+
-+ return xencomm_create_inline(op);
-+}
-+
-+int
-+xencomm_hypercall_grant_table_op(unsigned int cmd, void *op, unsigned int count)
-+{
-+ void *desc = xencommize_grant_table_op (cmd, op, count);
-+
-+ return xencomm_arch_hypercall_grant_table_op(cmd, desc, count);
-+}
-+
-+int
-+xencomm_hypercall_sched_op(int cmd, void *arg)
-+{
-+ switch (cmd) {
-+ case SCHEDOP_yield:
-+ case SCHEDOP_block:
-+ case SCHEDOP_shutdown:
-+ case SCHEDOP_poll:
-+ case SCHEDOP_remote_shutdown:
-+ break;
-+ default:
-+ printk("%s: unknown sched op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return xencomm_arch_hypercall_sched_op(cmd, xencomm_create_inline(arg));
-+}
-+
-+int
-+xencomm_hypercall_multicall(void *call_list, int nr_calls)
-+{
-+ int i;
-+ multicall_entry_t *mce;
-+
-+ for (i = 0; i < nr_calls; i++) {
-+ mce = (multicall_entry_t *)call_list + i;
-+
-+ switch (mce->op) {
-+ case __HYPERVISOR_update_va_mapping:
-+ case __HYPERVISOR_mmu_update:
-+ /* No-op on ia64. */
-+ break;
-+ case __HYPERVISOR_grant_table_op:
-+ mce->args[1] = (unsigned long)xencommize_grant_table_op
-+ (mce->args[0], (void *)mce->args[1],
-+ mce->args[2]);
-+ break;
-+ case __HYPERVISOR_memory_op:
-+ default:
-+ printk("%s: unhandled multicall op entry op %lu\n",
-+ __func__, mce->op);
-+ return -ENOSYS;
-+ }
-+ }
-+
-+ return xencomm_arch_hypercall_multicall
-+ (xencomm_create_inline(call_list), nr_calls);
-+}
-+
-+int
-+xencomm_hypercall_callback_op(int cmd, void *arg)
-+{
-+ switch (cmd)
-+ {
-+ case CALLBACKOP_register:
-+ case CALLBACKOP_unregister:
-+ break;
-+ default:
-+ printk("%s: unknown callback op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return xencomm_arch_hypercall_callback_op
-+ (cmd, xencomm_create_inline(arg));
-+}
-+
-+static void
-+xencommize_memory_reservation (xen_memory_reservation_t *mop)
-+{
-+ struct xencomm_handle *desc;
-+
-+ desc = xencomm_create_inline(xen_guest_handle(mop->extent_start));
-+ set_xen_guest_handle(mop->extent_start, (void *)desc);
-+}
-+
-+int
-+xencomm_hypercall_memory_op(unsigned int cmd, void *arg)
-+{
-+ switch (cmd) {
-+ case XENMEM_increase_reservation:
-+ case XENMEM_decrease_reservation:
-+ case XENMEM_populate_physmap:
-+ xencommize_memory_reservation((xen_memory_reservation_t *)arg);
-+ break;
-+
-+ case XENMEM_maximum_ram_page:
-+ break;
-+
-+ case XENMEM_exchange:
-+ xencommize_memory_reservation
-+ (&((xen_memory_exchange_t *)arg)->in);
-+ xencommize_memory_reservation
-+ (&((xen_memory_exchange_t *)arg)->out);
-+ break;
-+
-+ default:
-+ printk("%s: unknown memory op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return xencomm_arch_hypercall_memory_op
-+ (cmd, xencomm_create_inline(arg));
-+}
-+
-+unsigned long
-+xencomm_hypercall_hvm_op(int cmd, void *arg)
-+{
-+ switch (cmd) {
-+ case HVMOP_set_param:
-+ case HVMOP_get_param:
-+ break;
-+ default:
-+ printk("%s: unknown hvm op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return xencomm_arch_hypercall_hvm_op(cmd, xencomm_create_inline(arg));
-+}
-+
-+int
-+xencomm_hypercall_suspend(unsigned long srec)
-+{
-+ struct sched_shutdown arg;
-+
-+ arg.reason = SHUTDOWN_suspend;
-+
-+ return xencomm_arch_hypercall_suspend(xencomm_create_inline(&arg));
-+}
-+
-+int
-+xencomm_mini_hypercall_event_channel_op(int cmd, void *op)
-+{
-+ struct xencomm_mini xc_area[2];
-+ int nbr_area = 2;
-+ struct xencomm_handle *desc;
-+ int rc;
-+
-+ rc = xencomm_create_mini(xc_area, &nbr_area,
-+ op, sizeof(evtchn_op_t), &desc);
-+ if (rc)
-+ return rc;
-+
-+ return xencomm_arch_hypercall_event_channel_op(cmd, desc);
-+}
-+EXPORT_SYMBOL(xencomm_mini_hypercall_event_channel_op);
-+
-+static int
-+xencommize_mini_grant_table_op(struct xencomm_mini *xc_area, int *nbr_area,
-+ unsigned int cmd, void *op, unsigned int count,
-+ struct xencomm_handle **desc)
-+{
-+ struct xencomm_handle *desc1;
-+ unsigned int argsize;
-+ int rc;
-+
-+ switch (cmd) {
-+ case GNTTABOP_map_grant_ref:
-+ argsize = sizeof(struct gnttab_map_grant_ref);
-+ break;
-+ case GNTTABOP_unmap_grant_ref:
-+ argsize = sizeof(struct gnttab_unmap_grant_ref);
-+ break;
-+ case GNTTABOP_setup_table:
-+ {
-+ struct gnttab_setup_table *setup = op;
-+
-+ argsize = sizeof(*setup);
-+
-+ if (count != 1)
-+ return -EINVAL;
-+ rc = xencomm_create_mini
-+ (xc_area, nbr_area,
-+ xen_guest_handle(setup->frame_list),
-+ setup->nr_frames
-+ * sizeof(*xen_guest_handle(setup->frame_list)),
-+ &desc1);
-+ if (rc)
-+ return rc;
-+ set_xen_guest_handle(setup->frame_list, (void *)desc1);
-+ break;
-+ }
-+ case GNTTABOP_dump_table:
-+ argsize = sizeof(struct gnttab_dump_table);
-+ break;
-+ case GNTTABOP_transfer:
-+ argsize = sizeof(struct gnttab_transfer);
-+ break;
-+ default:
-+ printk("%s: unknown mini grant table op %d\n", __func__, cmd);
-+ BUG();
-+ }
-+
-+ rc = xencomm_create_mini(xc_area, nbr_area, op, count * argsize, desc);
-+ if (rc)
-+ return rc;
-+
-+ return 0;
-+}
-+
-+int
-+xencomm_mini_hypercall_grant_table_op(unsigned int cmd, void *op,
-+ unsigned int count)
-+{
-+ int rc;
-+ struct xencomm_handle *desc;
-+ int nbr_area = 2;
-+ struct xencomm_mini xc_area[2];
-+
-+ rc = xencommize_mini_grant_table_op(xc_area, &nbr_area,
-+ cmd, op, count, &desc);
-+ if (rc)
-+ return rc;
-+
-+ return xencomm_arch_hypercall_grant_table_op(cmd, desc, count);
-+}
-+EXPORT_SYMBOL(xencomm_mini_hypercall_grant_table_op);
-+
-+int
-+xencomm_mini_hypercall_multicall(void *call_list, int nr_calls)
-+{
-+ int i;
-+ multicall_entry_t *mce;
-+ int nbr_area = 2 + nr_calls * 3;
-+ struct xencomm_mini xc_area[nbr_area];
-+ struct xencomm_handle *desc;
-+ int rc;
-+
-+ for (i = 0; i < nr_calls; i++) {
-+ mce = (multicall_entry_t *)call_list + i;
-+
-+ switch (mce->op) {
-+ case __HYPERVISOR_update_va_mapping:
-+ case __HYPERVISOR_mmu_update:
-+ /* No-op on ia64. */
-+ break;
-+ case __HYPERVISOR_grant_table_op:
-+ rc = xencommize_mini_grant_table_op
-+ (xc_area, &nbr_area,
-+ mce->args[0], (void *)mce->args[1],
-+ mce->args[2], &desc);
-+ if (rc)
-+ return rc;
-+ mce->args[1] = (unsigned long)desc;
-+ break;
-+ case __HYPERVISOR_memory_op:
-+ default:
-+ printk("%s: unhandled multicall op entry op %lu\n",
-+ __func__, mce->op);
-+ return -ENOSYS;
-+ }
-+ }
-+
-+ rc = xencomm_create_mini(xc_area, &nbr_area, call_list,
-+ nr_calls * sizeof(multicall_entry_t), &desc);
-+ if (rc)
-+ return rc;
-+
-+ return xencomm_arch_hypercall_multicall(desc, nr_calls);
-+}
-+EXPORT_SYMBOL(xencomm_mini_hypercall_multicall);
-+
-+static int
-+xencommize_mini_memory_reservation(struct xencomm_mini *area, int *nbr_area,
-+ xen_memory_reservation_t *mop)
-+{
-+ struct xencomm_handle *desc;
-+ int rc;
-+
-+ rc = xencomm_create_mini
-+ (area, nbr_area,
-+ xen_guest_handle(mop->extent_start),
-+ mop->nr_extents
-+ * sizeof(*xen_guest_handle(mop->extent_start)),
-+ &desc);
-+ if (rc)
-+ return rc;
-+
-+ set_xen_guest_handle(mop->extent_start, (void *)desc);
-+
-+ return 0;
-+}
-+
-+int
-+xencomm_mini_hypercall_memory_op(unsigned int cmd, void *arg)
-+{
-+ int nbr_area = 4;
-+ struct xencomm_mini xc_area[4];
-+ struct xencomm_handle *desc;
-+ int rc;
-+ unsigned int argsize;
-+
-+ switch (cmd) {
-+ case XENMEM_increase_reservation:
-+ case XENMEM_decrease_reservation:
-+ case XENMEM_populate_physmap:
-+ argsize = sizeof(xen_memory_reservation_t);
-+ rc = xencommize_mini_memory_reservation
-+ (xc_area, &nbr_area, (xen_memory_reservation_t *)arg);
-+ if (rc)
-+ return rc;
-+ break;
-+
-+ case XENMEM_maximum_ram_page:
-+ argsize = 0;
-+ break;
-+
-+ case XENMEM_exchange:
-+ argsize = sizeof(xen_memory_exchange_t);
-+ rc = xencommize_mini_memory_reservation
-+ (xc_area, &nbr_area,
-+ &((xen_memory_exchange_t *)arg)->in);
-+ if (rc)
-+ return rc;
-+ rc = xencommize_mini_memory_reservation
-+ (xc_area, &nbr_area,
-+ &((xen_memory_exchange_t *)arg)->out);
-+ if (rc)
-+ return rc;
-+ break;
-+
-+ default:
-+ printk("%s: unknown mini memory op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ rc = xencomm_create_mini(xc_area, &nbr_area, arg, argsize, &desc);
-+ if (rc)
-+ return rc;
-+
-+ return xencomm_arch_hypercall_memory_op(cmd, desc);
-+}
-+EXPORT_SYMBOL(xencomm_mini_hypercall_memory_op);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xcom_privcmd.c linux-2.6.18-xen/arch/ia64/xen/xcom_privcmd.c
---- linux-2.6.18.1/arch/ia64/xen/xcom_privcmd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xcom_privcmd.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,600 @@
-+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+ *
-+ * Authors: Hollis Blanchard <hollisb@us.ibm.com>
-+ * Tristan Gingold <tristan.gingold@bull.net>
-+ */
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/gfp.h>
-+#include <linux/module.h>
-+#include <xen/interface/xen.h>
-+#include <xen/interface/dom0_ops.h>
-+#define __XEN__
-+#include <xen/interface/domctl.h>
-+#include <xen/interface/sysctl.h>
-+#include <xen/interface/memory.h>
-+#include <xen/interface/version.h>
-+#include <xen/interface/event_channel.h>
-+#include <xen/interface/acm_ops.h>
-+#include <xen/interface/hvm/params.h>
-+#include <xen/public/privcmd.h>
-+#include <asm/hypercall.h>
-+#include <asm/page.h>
-+#include <asm/uaccess.h>
-+#include <asm/xen/xencomm.h>
-+
-+#define ROUND_DIV(v,s) (((v) + (s) - 1) / (s))
-+
-+static int
-+xencomm_privcmd_dom0_op(privcmd_hypercall_t *hypercall)
-+{
-+ dom0_op_t kern_op;
-+ dom0_op_t __user *user_op = (dom0_op_t __user *)hypercall->arg[0];
-+ struct xencomm_handle *op_desc;
-+ struct xencomm_handle *desc = NULL;
-+ int ret = 0;
-+
-+ if (copy_from_user(&kern_op, user_op, sizeof(dom0_op_t)))
-+ return -EFAULT;
-+
-+ if (kern_op.interface_version != DOM0_INTERFACE_VERSION)
-+ return -EACCES;
-+
-+ op_desc = xencomm_create_inline(&kern_op);
-+
-+ switch (kern_op.cmd) {
-+ default:
-+ printk("%s: unknown dom0 cmd %d\n", __func__, kern_op.cmd);
-+ return -ENOSYS;
-+ }
-+
-+ if (ret) {
-+ /* error mapping the nested pointer */
-+ return ret;
-+ }
-+
-+ ret = xencomm_arch_hypercall_dom0_op(op_desc);
-+
-+ /* FIXME: should we restore the handle? */
-+ if (copy_to_user(user_op, &kern_op, sizeof(dom0_op_t)))
-+ ret = -EFAULT;
-+
-+ if (desc)
-+ xencomm_free(desc);
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_sysctl(privcmd_hypercall_t *hypercall)
-+{
-+ xen_sysctl_t kern_op;
-+ xen_sysctl_t __user *user_op;
-+ struct xencomm_handle *op_desc;
-+ struct xencomm_handle *desc = NULL;
-+ struct xencomm_handle *desc1 = NULL;
-+ int ret = 0;
-+
-+ user_op = (xen_sysctl_t __user *)hypercall->arg[0];
-+
-+ if (copy_from_user(&kern_op, user_op, sizeof(xen_sysctl_t)))
-+ return -EFAULT;
-+
-+ if (kern_op.interface_version != XEN_SYSCTL_INTERFACE_VERSION)
-+ return -EACCES;
-+
-+ op_desc = xencomm_create_inline(&kern_op);
-+
-+ switch (kern_op.cmd) {
-+ case XEN_SYSCTL_readconsole:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.readconsole.buffer),
-+ kern_op.u.readconsole.count,
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.readconsole.buffer,
-+ (void *)desc);
-+ break;
-+ case XEN_SYSCTL_tbuf_op:
-+ case XEN_SYSCTL_physinfo:
-+ case XEN_SYSCTL_sched_id:
-+ break;
-+ case XEN_SYSCTL_perfc_op:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.perfc_op.desc),
-+ kern_op.u.perfc_op.nr_counters *
-+ sizeof(xen_sysctl_perfc_desc_t),
-+ &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+ set_xen_guest_handle(kern_op.u.perfc_op.val,
-+ (void *)desc);
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.perfc_op.val),
-+ kern_op.u.perfc_op.nr_vals *
-+ sizeof(xen_sysctl_perfc_desc_t),
-+ &desc1, GFP_KERNEL);
-+ if (ret)
-+ xencomm_free(desc);
-+ set_xen_guest_handle(kern_op.u.perfc_op.val,
-+ (void *)desc1);
-+ break;
-+ case XEN_SYSCTL_getdomaininfolist:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.getdomaininfolist.buffer),
-+ kern_op.u.getdomaininfolist.max_domains *
-+ sizeof(xen_domctl_getdomaininfo_t),
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.getdomaininfolist.buffer,
-+ (void *)desc);
-+ break;
-+ default:
-+ printk("%s: unknown sysctl cmd %d\n", __func__, kern_op.cmd);
-+ return -ENOSYS;
-+ }
-+
-+ if (ret) {
-+ /* error mapping the nested pointer */
-+ return ret;
-+ }
-+
-+ ret = xencomm_arch_hypercall_sysctl(op_desc);
-+
-+ /* FIXME: should we restore the handle? */
-+ if (copy_to_user(user_op, &kern_op, sizeof(xen_sysctl_t)))
-+ ret = -EFAULT;
-+
-+ if (desc)
-+ xencomm_free(desc);
-+ if (desc1)
-+ xencomm_free(desc1);
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_domctl(privcmd_hypercall_t *hypercall)
-+{
-+ xen_domctl_t kern_op;
-+ xen_domctl_t __user *user_op;
-+ struct xencomm_handle *op_desc;
-+ struct xencomm_handle *desc = NULL;
-+ int ret = 0;
-+
-+ user_op = (xen_domctl_t __user *)hypercall->arg[0];
-+
-+ if (copy_from_user(&kern_op, user_op, sizeof(xen_domctl_t)))
-+ return -EFAULT;
-+
-+ if (kern_op.interface_version != XEN_DOMCTL_INTERFACE_VERSION)
-+ return -EACCES;
-+
-+ op_desc = xencomm_create_inline(&kern_op);
-+
-+ switch (kern_op.cmd) {
-+ case XEN_DOMCTL_createdomain:
-+ case XEN_DOMCTL_destroydomain:
-+ case XEN_DOMCTL_pausedomain:
-+ case XEN_DOMCTL_unpausedomain:
-+ case XEN_DOMCTL_getdomaininfo:
-+ break;
-+ case XEN_DOMCTL_getmemlist:
-+ {
-+ unsigned long nr_pages = kern_op.u.getmemlist.max_pfns;
-+
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.getmemlist.buffer),
-+ nr_pages * sizeof(unsigned long),
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.getmemlist.buffer,
-+ (void *)desc);
-+ break;
-+ }
-+ case XEN_DOMCTL_getpageframeinfo:
-+ break;
-+ case XEN_DOMCTL_getpageframeinfo2:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.getpageframeinfo2.array),
-+ kern_op.u.getpageframeinfo2.num,
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.getpageframeinfo2.array,
-+ (void *)desc);
-+ break;
-+ case XEN_DOMCTL_shadow_op:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.shadow_op.dirty_bitmap),
-+ ROUND_DIV(kern_op.u.shadow_op.pages, 8),
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.shadow_op.dirty_bitmap,
-+ (void *)desc);
-+ break;
-+ case XEN_DOMCTL_max_mem:
-+ break;
-+ case XEN_DOMCTL_setvcpucontext:
-+ case XEN_DOMCTL_getvcpucontext:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.vcpucontext.ctxt),
-+ sizeof(vcpu_guest_context_t),
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.vcpucontext.ctxt, (void *)desc);
-+ break;
-+ case XEN_DOMCTL_getvcpuinfo:
-+ break;
-+ case XEN_DOMCTL_setvcpuaffinity:
-+ case XEN_DOMCTL_getvcpuaffinity:
-+ ret = xencomm_create(
-+ xen_guest_handle(kern_op.u.vcpuaffinity.cpumap.bitmap),
-+ ROUND_DIV(kern_op.u.vcpuaffinity.cpumap.nr_cpus, 8),
-+ &desc, GFP_KERNEL);
-+ set_xen_guest_handle(kern_op.u.vcpuaffinity.cpumap.bitmap,
-+ (void *)desc);
-+ break;
-+ case XEN_DOMCTL_max_vcpus:
-+ case XEN_DOMCTL_scheduler_op:
-+ case XEN_DOMCTL_setdomainhandle:
-+ case XEN_DOMCTL_setdebugging:
-+ case XEN_DOMCTL_irq_permission:
-+ case XEN_DOMCTL_iomem_permission:
-+ case XEN_DOMCTL_ioport_permission:
-+ case XEN_DOMCTL_hypercall_init:
-+ case XEN_DOMCTL_arch_setup:
-+ case XEN_DOMCTL_settimeoffset:
-+ break;
-+ default:
-+ printk("%s: unknown domctl cmd %d\n", __func__, kern_op.cmd);
-+ return -ENOSYS;
-+ }
-+
-+ if (ret) {
-+ /* error mapping the nested pointer */
-+ return ret;
-+ }
-+
-+ ret = xencomm_arch_hypercall_domctl (op_desc);
-+
-+ /* FIXME: should we restore the handle? */
-+ if (copy_to_user(user_op, &kern_op, sizeof(xen_domctl_t)))
-+ ret = -EFAULT;
-+
-+ if (desc)
-+ xencomm_free(desc);
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_acm_op(privcmd_hypercall_t *hypercall)
-+{
-+ int cmd = hypercall->arg[0];
-+ void __user *arg = (void __user *)hypercall->arg[1];
-+ struct xencomm_handle *op_desc;
-+ struct xencomm_handle *desc = NULL;
-+ int ret;
-+
-+ switch (cmd) {
-+ case ACMOP_getssid:
-+ {
-+ struct acm_getssid kern_arg;
-+
-+ if (copy_from_user(&kern_arg, arg, sizeof (kern_arg)))
-+ return -EFAULT;
-+
-+ op_desc = xencomm_create_inline(&kern_arg);
-+
-+ ret = xencomm_create(xen_guest_handle(kern_arg.ssidbuf),
-+ kern_arg.ssidbuf_size, &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+
-+ set_xen_guest_handle(kern_arg.ssidbuf, (void *)desc);
-+
-+ ret = xencomm_arch_hypercall_acm_op(cmd, op_desc);
-+
-+ xencomm_free(desc);
-+
-+ if (copy_to_user(arg, &kern_arg, sizeof (kern_arg)))
-+ return -EFAULT;
-+
-+ return ret;
-+ }
-+ default:
-+ printk("%s: unknown acm_op cmd %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_memory_op(privcmd_hypercall_t *hypercall)
-+{
-+ const unsigned long cmd = hypercall->arg[0];
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case XENMEM_increase_reservation:
-+ case XENMEM_decrease_reservation:
-+ case XENMEM_populate_physmap:
-+ {
-+ xen_memory_reservation_t kern_op;
-+ xen_memory_reservation_t __user *user_op;
-+ struct xencomm_handle *desc = NULL;
-+ struct xencomm_handle *desc_op;
-+
-+ user_op = (xen_memory_reservation_t __user *)hypercall->arg[1];
-+ if (copy_from_user(&kern_op, user_op,
-+ sizeof(xen_memory_reservation_t)))
-+ return -EFAULT;
-+ desc_op = xencomm_create_inline(&kern_op);
-+
-+ if (xen_guest_handle(kern_op.extent_start)) {
-+ void * addr;
-+
-+ addr = xen_guest_handle(kern_op.extent_start);
-+ ret = xencomm_create
-+ (addr,
-+ kern_op.nr_extents *
-+ sizeof(*xen_guest_handle
-+ (kern_op.extent_start)),
-+ &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+ set_xen_guest_handle(kern_op.extent_start,
-+ (void *)desc);
-+ }
-+
-+ ret = xencomm_arch_hypercall_memory_op(cmd, desc_op);
-+
-+ if (desc)
-+ xencomm_free(desc);
-+
-+ if (ret != 0)
-+ return ret;
-+
-+ if (copy_to_user(user_op, &kern_op,
-+ sizeof(xen_memory_reservation_t)))
-+ return -EFAULT;
-+
-+ return ret;
-+ }
-+ case XENMEM_translate_gpfn_list:
-+ {
-+ xen_translate_gpfn_list_t kern_op;
-+ xen_translate_gpfn_list_t __user *user_op;
-+ struct xencomm_handle *desc_gpfn = NULL;
-+ struct xencomm_handle *desc_mfn = NULL;
-+ struct xencomm_handle *desc_op;
-+ void *addr;
-+
-+ user_op = (xen_translate_gpfn_list_t __user *)
-+ hypercall->arg[1];
-+ if (copy_from_user(&kern_op, user_op,
-+ sizeof(xen_translate_gpfn_list_t)))
-+ return -EFAULT;
-+ desc_op = xencomm_create_inline(&kern_op);
-+
-+ if (kern_op.nr_gpfns) {
-+ /* gpfn_list. */
-+ addr = xen_guest_handle(kern_op.gpfn_list);
-+
-+ ret = xencomm_create(addr, kern_op.nr_gpfns *
-+ sizeof(*xen_guest_handle
-+ (kern_op.gpfn_list)),
-+ &desc_gpfn, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+ set_xen_guest_handle(kern_op.gpfn_list,
-+ (void *)desc_gpfn);
-+
-+ /* mfn_list. */
-+ addr = xen_guest_handle(kern_op.mfn_list);
-+
-+ ret = xencomm_create(addr, kern_op.nr_gpfns *
-+ sizeof(*xen_guest_handle
-+ (kern_op.mfn_list)),
-+ &desc_mfn, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+ set_xen_guest_handle(kern_op.mfn_list,
-+ (void *)desc_mfn);
-+ }
-+
-+ ret = xencomm_arch_hypercall_memory_op(cmd, desc_op);
-+
-+ if (desc_gpfn)
-+ xencomm_free(desc_gpfn);
-+
-+ if (desc_mfn)
-+ xencomm_free(desc_mfn);
-+
-+ if (ret != 0)
-+ return ret;
-+
-+ return ret;
-+ }
-+ default:
-+ printk("%s: unknown memory op %lu\n", __func__, cmd);
-+ ret = -ENOSYS;
-+ }
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_xen_version(privcmd_hypercall_t *hypercall)
-+{
-+ int cmd = hypercall->arg[0];
-+ void __user *arg = (void __user *)hypercall->arg[1];
-+ struct xencomm_handle *desc;
-+ size_t argsize;
-+ int rc;
-+
-+ switch (cmd) {
-+ case XENVER_version:
-+ /* do not actually pass an argument */
-+ return xencomm_arch_hypercall_xen_version(cmd, 0);
-+ case XENVER_extraversion:
-+ argsize = sizeof(xen_extraversion_t);
-+ break;
-+ case XENVER_compile_info:
-+ argsize = sizeof(xen_compile_info_t);
-+ break;
-+ case XENVER_capabilities:
-+ argsize = sizeof(xen_capabilities_info_t);
-+ break;
-+ case XENVER_changeset:
-+ argsize = sizeof(xen_changeset_info_t);
-+ break;
-+ case XENVER_platform_parameters:
-+ argsize = sizeof(xen_platform_parameters_t);
-+ break;
-+ case XENVER_pagesize:
-+ argsize = (arg == NULL) ? 0 : sizeof(void *);
-+ break;
-+ case XENVER_get_features:
-+ argsize = (arg == NULL) ? 0 : sizeof(xen_feature_info_t);
-+ break;
-+
-+ default:
-+ printk("%s: unknown version op %d\n", __func__, cmd);
-+ return -ENOSYS;
-+ }
-+
-+ rc = xencomm_create(arg, argsize, &desc, GFP_KERNEL);
-+ if (rc)
-+ return rc;
-+
-+ rc = xencomm_arch_hypercall_xen_version(cmd, desc);
-+
-+ xencomm_free(desc);
-+
-+ return rc;
-+}
-+
-+static int
-+xencomm_privcmd_event_channel_op(privcmd_hypercall_t *hypercall)
-+{
-+ int cmd = hypercall->arg[0];
-+ struct xencomm_handle *desc;
-+ unsigned int argsize;
-+ int ret;
-+
-+ switch (cmd) {
-+ case EVTCHNOP_alloc_unbound:
-+ argsize = sizeof(evtchn_alloc_unbound_t);
-+ break;
-+
-+ case EVTCHNOP_status:
-+ argsize = sizeof(evtchn_status_t);
-+ break;
-+
-+ default:
-+ printk("%s: unknown EVTCHNOP %d\n", __func__, cmd);
-+ return -EINVAL;
-+ }
-+
-+ ret = xencomm_create((void *)hypercall->arg[1], argsize,
-+ &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+
-+ ret = xencomm_arch_hypercall_event_channel_op(cmd, desc);
-+
-+ xencomm_free(desc);
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_hvm_op(privcmd_hypercall_t *hypercall)
-+{
-+ int cmd = hypercall->arg[0];
-+ struct xencomm_handle *desc;
-+ unsigned int argsize;
-+ int ret;
-+
-+ switch (cmd) {
-+ case HVMOP_get_param:
-+ case HVMOP_set_param:
-+ argsize = sizeof(xen_hvm_param_t);
-+ break;
-+ default:
-+ printk("%s: unknown HVMOP %d\n", __func__, cmd);
-+ return -EINVAL;
-+ }
-+
-+ ret = xencomm_create((void *)hypercall->arg[1], argsize,
-+ &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+
-+ ret = xencomm_arch_hypercall_hvm_op(cmd, desc);
-+
-+ xencomm_free(desc);
-+ return ret;
-+}
-+
-+static int
-+xencomm_privcmd_sched_op(privcmd_hypercall_t *hypercall)
-+{
-+ int cmd = hypercall->arg[0];
-+ struct xencomm_handle *desc;
-+ unsigned int argsize;
-+ int ret;
-+
-+ switch (cmd) {
-+ case SCHEDOP_remote_shutdown:
-+ argsize = sizeof(sched_remote_shutdown_t);
-+ break;
-+ default:
-+ printk("%s: unknown SCHEDOP %d\n", __func__, cmd);
-+ return -EINVAL;
-+ }
-+
-+ ret = xencomm_create((void *)hypercall->arg[1], argsize,
-+ &desc, GFP_KERNEL);
-+ if (ret)
-+ return ret;
-+
-+ ret = xencomm_arch_hypercall_sched_op(cmd, desc);
-+
-+ xencomm_free(desc);
-+ return ret;
-+}
-+
-+int
-+privcmd_hypercall(privcmd_hypercall_t *hypercall)
-+{
-+ switch (hypercall->op) {
-+ case __HYPERVISOR_dom0_op:
-+ return xencomm_privcmd_dom0_op(hypercall);
-+ case __HYPERVISOR_domctl:
-+ return xencomm_privcmd_domctl(hypercall);
-+ case __HYPERVISOR_sysctl:
-+ return xencomm_privcmd_sysctl(hypercall);
-+ case __HYPERVISOR_acm_op:
-+ return xencomm_privcmd_acm_op(hypercall);
-+ case __HYPERVISOR_xen_version:
-+ return xencomm_privcmd_xen_version(hypercall);
-+ case __HYPERVISOR_memory_op:
-+ return xencomm_privcmd_memory_op(hypercall);
-+ case __HYPERVISOR_event_channel_op:
-+ return xencomm_privcmd_event_channel_op(hypercall);
-+ case __HYPERVISOR_hvm_op:
-+ return xencomm_privcmd_hvm_op(hypercall);
-+ case __HYPERVISOR_sched_op:
-+ return xencomm_privcmd_sched_op(hypercall);
-+ default:
-+ printk("%s: unknown hcall (%ld)\n", __func__, hypercall->op);
-+ return -ENOSYS;
-+ }
-+}
-+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xencomm.c linux-2.6.18-xen/arch/ia64/xen/xencomm.c
---- linux-2.6.18.1/arch/ia64/xen/xencomm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xencomm.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,244 @@
-+/*
-+ * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#include <linux/gfp.h>
-+#include <linux/mm.h>
-+#include <asm/page.h>
-+#include <asm/xen/xencomm.h>
-+#include <xen/interface/xen.h>
-+
-+static int xencomm_debug = 0;
-+
-+/* Translate virtual address to physical address. */
-+unsigned long
-+xencomm_vaddr_to_paddr(unsigned long vaddr)
-+{
-+ struct page *page;
-+ struct vm_area_struct *vma;
-+
-+ if (vaddr == 0)
-+ return 0;
-+
-+#ifdef __ia64__
-+ if (REGION_NUMBER(vaddr) == 5) {
-+ pgd_t *pgd;
-+ pud_t *pud;
-+ pmd_t *pmd;
-+ pte_t *ptep;
-+
-+ /* On ia64, TASK_SIZE refers to current. It is not initialized
-+ during boot.
-+ Furthermore the kernel is relocatable and __pa() doesn't
-+ work on addresses. */
-+ if (vaddr >= KERNEL_START
-+ && vaddr < (KERNEL_START + KERNEL_TR_PAGE_SIZE)) {
-+ extern unsigned long kernel_start_pa;
-+
-+ return vaddr - kernel_start_pa;
-+ }
-+
-+ /* In kernel area -- virtually mapped. */
-+ pgd = pgd_offset_k(vaddr);
-+ if (pgd_none(*pgd) || pgd_bad(*pgd))
-+ return ~0UL;
-+
-+ pud = pud_offset(pgd, vaddr);
-+ if (pud_none(*pud) || pud_bad(*pud))
-+ return ~0UL;
-+
-+ pmd = pmd_offset(pud, vaddr);
-+ if (pmd_none(*pmd) || pmd_bad(*pmd))
-+ return ~0UL;
-+
-+ ptep = pte_offset_kernel(pmd, vaddr);
-+ if (!ptep)
-+ return ~0UL;
-+
-+ return (pte_val(*ptep) & _PFN_MASK) | (vaddr & ~PAGE_MASK);
-+ }
-+#endif
-+
-+ if (vaddr > TASK_SIZE) {
-+ /* kernel address */
-+ return __pa(vaddr);
-+ }
-+
-+ /* XXX double-check (lack of) locking */
-+ vma = find_extend_vma(current->mm, vaddr);
-+ if (!vma)
-+ return ~0UL;
-+
-+ /* We assume the page is modified. */
-+ page = follow_page(vma, vaddr, FOLL_WRITE | FOLL_TOUCH);
-+ if (!page)
-+ return ~0UL;
-+
-+ return (page_to_pfn(page) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK);
-+}
-+
-+static int
-+xencomm_init(struct xencomm_desc *desc, void *buffer, unsigned long bytes)
-+{
-+ unsigned long recorded = 0;
-+ int i = 0;
-+
-+ BUG_ON((buffer == NULL) && (bytes > 0));
-+
-+ /* record the physical pages used */
-+ if (buffer == NULL)
-+ desc->nr_addrs = 0;
-+
-+ while ((recorded < bytes) && (i < desc->nr_addrs)) {
-+ unsigned long vaddr = (unsigned long)buffer + recorded;
-+ unsigned long paddr;
-+ int offset;
-+ int chunksz;
-+
-+ offset = vaddr % PAGE_SIZE; /* handle partial pages */
-+ chunksz = min(PAGE_SIZE - offset, bytes - recorded);
-+
-+ paddr = xencomm_vaddr_to_paddr(vaddr);
-+ if (paddr == ~0UL) {
-+ printk("%s: couldn't translate vaddr %lx\n",
-+ __func__, vaddr);
-+ return -EINVAL;
-+ }
-+
-+ desc->address[i++] = paddr;
-+ recorded += chunksz;
-+ }
-+
-+ if (recorded < bytes) {
-+ printk("%s: could only translate %ld of %ld bytes\n",
-+ __func__, recorded, bytes);
-+ return -ENOSPC;
-+ }
-+
-+ /* mark remaining addresses invalid (just for safety) */
-+ while (i < desc->nr_addrs)
-+ desc->address[i++] = XENCOMM_INVALID;
-+
-+ desc->magic = XENCOMM_MAGIC;
-+
-+ return 0;
-+}
-+
-+static struct xencomm_desc *
-+xencomm_alloc(gfp_t gfp_mask)
-+{
-+ struct xencomm_desc *desc;
-+
-+ desc = (struct xencomm_desc *)__get_free_page(gfp_mask);
-+ if (desc == NULL)
-+ panic("%s: page allocation failed\n", __func__);
-+
-+ desc->nr_addrs = (PAGE_SIZE - sizeof(struct xencomm_desc)) /
-+ sizeof(*desc->address);
-+
-+ return desc;
-+}
-+
-+void
-+xencomm_free(struct xencomm_handle *desc)
-+{
-+ if (desc)
-+ free_page((unsigned long)__va(desc));
-+}
-+
-+int
-+xencomm_create(void *buffer, unsigned long bytes,
-+ struct xencomm_handle **ret, gfp_t gfp_mask)
-+{
-+ struct xencomm_desc *desc;
-+ struct xencomm_handle *handle;
-+ int rc;
-+
-+ if (xencomm_debug)
-+ printk("%s: %p[%ld]\n", __func__, buffer, bytes);
-+
-+ if (buffer == NULL || bytes == 0) {
-+ *ret = (struct xencomm_handle *)NULL;
-+ return 0;
-+ }
-+
-+ desc = xencomm_alloc(gfp_mask);
-+ if (!desc) {
-+ printk("%s failure\n", "xencomm_alloc");
-+ return -ENOMEM;
-+ }
-+ handle = (struct xencomm_handle *)__pa(desc);
-+
-+ rc = xencomm_init(desc, buffer, bytes);
-+ if (rc) {
-+ printk("%s failure: %d\n", "xencomm_init", rc);
-+ xencomm_free(handle);
-+ return rc;
-+ }
-+
-+ *ret = handle;
-+ return 0;
-+}
-+
-+/* "mini" routines, for stack-based communications: */
-+
-+static void *
-+xencomm_alloc_mini(struct xencomm_mini *area, int *nbr_area)
-+{
-+ unsigned long base;
-+ unsigned int pageoffset;
-+
-+ while (*nbr_area >= 0) {
-+ /* Allocate an area. */
-+ (*nbr_area)--;
-+
-+ base = (unsigned long)(area + *nbr_area);
-+ pageoffset = base % PAGE_SIZE;
-+
-+ /* If the area does not cross a page, use it. */
-+ if ((PAGE_SIZE - pageoffset) >= sizeof(struct xencomm_mini))
-+ return &area[*nbr_area];
-+ }
-+ /* No more area. */
-+ return NULL;
-+}
-+
-+int
-+xencomm_create_mini(struct xencomm_mini *area, int *nbr_area,
-+ void *buffer, unsigned long bytes,
-+ struct xencomm_handle **ret)
-+{
-+ struct xencomm_desc *desc;
-+ int rc;
-+ unsigned long res;
-+
-+ desc = xencomm_alloc_mini(area, nbr_area);
-+ if (!desc)
-+ return -ENOMEM;
-+ desc->nr_addrs = XENCOMM_MINI_ADDRS;
-+
-+ rc = xencomm_init(desc, buffer, bytes);
-+ if (rc)
-+ return rc;
-+
-+ res = xencomm_vaddr_to_paddr((unsigned long)desc);
-+ if (res == ~0UL)
-+ return -EINVAL;
-+
-+ *ret = (struct xencomm_handle*)res;
-+ return 0;
-+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenentry.S linux-2.6.18-xen/arch/ia64/xen/xenentry.S
---- linux-2.6.18.1/arch/ia64/xen/xenentry.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xenentry.S 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xenentry.S linux-2.6.18-xen/arch/ia64/xen/xenentry.S
+--- linux-2.6.18/arch/ia64/xen/xenentry.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xenentry.S 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,867 @@
+/*
+ * ia64/xen/entry.S
@@ -26869,9 +25261,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenentry.S linux-2.6.18
+#else
+END(ia64_leave_kernel)
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenhpski.c linux-2.6.18-xen/arch/ia64/xen/xenhpski.c
---- linux-2.6.18.1/arch/ia64/xen/xenhpski.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xenhpski.c 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xenhpski.c linux-2.6.18-xen/arch/ia64/xen/xenhpski.c
+--- linux-2.6.18/arch/ia64/xen/xenhpski.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xenhpski.c 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,19 @@
+
+extern unsigned long xen_get_cpuid(int);
@@ -26892,9 +25284,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenhpski.c linux-2.6.18
+ return 1;
+}
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenivt.S linux-2.6.18-xen/arch/ia64/xen/xenivt.S
---- linux-2.6.18.1/arch/ia64/xen/xenivt.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xenivt.S 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xenivt.S linux-2.6.18-xen/arch/ia64/xen/xenivt.S
+--- linux-2.6.18/arch/ia64/xen/xenivt.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xenivt.S 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,2169 @@
+/*
+ * arch/ia64/xen/ivt.S
@@ -29065,9 +27457,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenivt.S linux-2.6.18-x
+ br.call.sptk.many b6=evtchn_do_upcall
+END(xen_event_callback)
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenminstate.h linux-2.6.18-xen/arch/ia64/xen/xenminstate.h
---- linux-2.6.18.1/arch/ia64/xen/xenminstate.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xenminstate.h 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xenminstate.h linux-2.6.18-xen/arch/ia64/xen/xenminstate.h
+--- linux-2.6.18/arch/ia64/xen/xenminstate.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xenminstate.h 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,368 @@
+
+#include <asm/cache.h>
@@ -29437,9 +27829,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenminstate.h linux-2.6
+#else
+#define SAVE_MIN DO_SAVE_MIN( , mov r30=r0, )
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenpal.S linux-2.6.18-xen/arch/ia64/xen/xenpal.S
---- linux-2.6.18.1/arch/ia64/xen/xenpal.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xenpal.S 2006-09-04 16:31:01.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xenpal.S linux-2.6.18-xen/arch/ia64/xen/xenpal.S
+--- linux-2.6.18/arch/ia64/xen/xenpal.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xenpal.S 2006-11-19 14:26:23.000000000 +0100
@@ -0,0 +1,76 @@
+/*
+ * ia64/xen/xenpal.S
@@ -29517,10 +27909,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xenpal.S linux-2.6.18-x
+ srlz.d // seralize restoration of psr.l
+ br.ret.sptk.many b0
+END(xen_pal_call_static)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xensetup.S linux-2.6.18-xen/arch/ia64/xen/xensetup.S
---- linux-2.6.18.1/arch/ia64/xen/xensetup.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/ia64/xen/xensetup.S 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,53 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/ia64/xen/xensetup.S linux-2.6.18-xen/arch/ia64/xen/xensetup.S
+--- linux-2.6.18/arch/ia64/xen/xensetup.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/ia64/xen/xensetup.S 2006-11-19 14:26:23.000000000 +0100
+@@ -0,0 +1,54 @@
+/*
+ * Support routines for Xen
+ *
@@ -29545,11 +27937,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xensetup.S linux-2.6.18
+
+ mov cr.iva=r10
+
-+ /* Set xsi base. */
-+#define FW_HYPERCALL_SET_SHARED_INFO_VA 0x600
-+(isBP) mov r2=FW_HYPERCALL_SET_SHARED_INFO_VA
++#if XSI_BASE != 0xf100000000000000UL
++ /* Backward compatibility. */
++(isBP) mov r2=0x600
+(isBP) movl r28=XSI_BASE;;
+(isBP) break 0x1000;;
++#endif
+
+ br.ret.sptk.many rp
+ ;;
@@ -29559,24 +27952,24 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/ia64/xen/xensetup.S linux-2.6.18
+
+/* Stub for suspend.
+ Just force the stacked registers to be written in memory. */
-+GLOBAL_ENTRY(xencomm_arch_hypercall_suspend)
-+ mov r15=r32
-+ ;;
++GLOBAL_ENTRY(HYPERVISOR_suspend)
+ alloc r20=ar.pfs,0,0,0,0
-+ mov r2=__HYPERVISOR_sched_op
-+ ;;
++ mov r14=2
++ mov r15=r12
++ ;;
+ /* We don't want to deal with RSE. */
+ flushrs
-+ mov r14=2 // SCHEDOP_shutdown
++ mov r2=__HYPERVISOR_sched_op
++ st4 [r12]=r14
+ ;;
+ break 0x1000
+ ;;
+ mov ar.pfs=r20
+ br.ret.sptk.many b0
-+END(xencomm_arch_hypercall_suspend)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/um/kernel/physmem.c linux-2.6.18-xen/arch/um/kernel/physmem.c
---- linux-2.6.18.1/arch/um/kernel/physmem.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/um/kernel/physmem.c 2006-09-04 16:31:02.000000000 +0200
++END(HYPERVISOR_suspend)
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/um/kernel/physmem.c linux-2.6.18-xen/arch/um/kernel/physmem.c
+--- linux-2.6.18/arch/um/kernel/physmem.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/um/kernel/physmem.c 2006-11-19 14:26:32.000000000 +0100
@@ -226,7 +226,7 @@
EXPORT_SYMBOL(physmem_remove_mapping);
EXPORT_SYMBOL(physmem_subst_mapping);
@@ -29595,9 +27988,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/um/kernel/physmem.c linux-2.6.18
}
int is_remapped(void *virt)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/ia32entry-xen.S linux-2.6.18-xen/arch/x86_64/ia32/ia32entry-xen.S
---- linux-2.6.18.1/arch/x86_64/ia32/ia32entry-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/ia32/ia32entry-xen.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/ia32entry-xen.S linux-2.6.18-xen/arch/x86_64/ia32/ia32entry-xen.S
+--- linux-2.6.18/arch/x86_64/ia32/ia32entry-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/ia32/ia32entry-xen.S 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,743 @@
+/*
+ * Compatibility mode system call entry point for x86-64.
@@ -30342,9 +28735,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/ia32entry-xen.S linu
+ .quad compat_sys_vmsplice
+ .quad compat_sys_move_pages
+ia32_syscall_end:
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/Makefile linux-2.6.18-xen/arch/x86_64/ia32/Makefile
---- linux-2.6.18.1/arch/x86_64/ia32/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/ia32/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/Makefile linux-2.6.18-xen/arch/x86_64/ia32/Makefile
+--- linux-2.6.18/arch/x86_64/ia32/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/ia32/Makefile 2006-11-19 14:26:33.000000000 +0100
@@ -27,9 +27,25 @@
-Wl,-soname=linux-gate.so.1 -o $@ \
-Wl,-T,$(filter-out FORCE,$^)
@@ -30373,9 +28766,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/Makefile linux-2.6.1
+
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/syscall32_syscall-xen.S linux-2.6.18-xen/arch/x86_64/ia32/syscall32_syscall-xen.S
---- linux-2.6.18.1/arch/x86_64/ia32/syscall32_syscall-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/ia32/syscall32_syscall-xen.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/syscall32_syscall-xen.S linux-2.6.18-xen/arch/x86_64/ia32/syscall32_syscall-xen.S
+--- linux-2.6.18/arch/x86_64/ia32/syscall32_syscall-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/ia32/syscall32_syscall-xen.S 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,28 @@
+/* 32bit VDSOs mapped into user space. */
+
@@ -30405,9 +28798,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/syscall32_syscall-xe
+syscall32_sysenter:
+ .incbin "arch/x86_64/ia32/vsyscall-sysenter.so"
+syscall32_sysenter_end:
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/syscall32-xen.c linux-2.6.18-xen/arch/x86_64/ia32/syscall32-xen.c
---- linux-2.6.18.1/arch/x86_64/ia32/syscall32-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/ia32/syscall32-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/syscall32-xen.c linux-2.6.18-xen/arch/x86_64/ia32/syscall32-xen.c
+--- linux-2.6.18/arch/x86_64/ia32/syscall32-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/ia32/syscall32-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,128 @@
+/* Copyright 2002,2003 Andi Kleen, SuSE Labs */
+
@@ -30537,9 +28930,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/syscall32-xen.c linu
+ wrmsrl(MSR_CSTAR, ia32_cstar_target);
+#endif
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/vsyscall-int80.S linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-int80.S
---- linux-2.6.18.1/arch/x86_64/ia32/vsyscall-int80.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-int80.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/vsyscall-int80.S linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-int80.S
+--- linux-2.6.18/arch/x86_64/ia32/vsyscall-int80.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-int80.S 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,58 @@
+/*
+ * Code for the vsyscall page. This version uses the old int $0x80 method.
@@ -30599,9 +28992,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/vsyscall-int80.S lin
+ */
+#define SYSCALL_ENTER_KERNEL int $0x80
+#include "vsyscall-sigreturn.S"
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/vsyscall-sigreturn.S linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-sigreturn.S
---- linux-2.6.18.1/arch/x86_64/ia32/vsyscall-sigreturn.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-sigreturn.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/ia32/vsyscall-sigreturn.S linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-sigreturn.S
+--- linux-2.6.18/arch/x86_64/ia32/vsyscall-sigreturn.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/ia32/vsyscall-sigreturn.S 2006-11-19 14:26:33.000000000 +0100
@@ -139,5 +139,5 @@
.align 4
.LENDFDE3:
@@ -30609,17 +29002,17 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/ia32/vsyscall-sigreturn.S
-#include "../../i386/kernel/vsyscall-note.S"
+#include <vsyscall-note.S>
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/Kconfig linux-2.6.18-xen/arch/x86_64/Kconfig
---- linux-2.6.18.1/arch/x86_64/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/Kconfig 2006-09-22 16:38:35.000000000 +0200
-@@ -30,6 +30,7 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/Kconfig linux-2.6.18-xen/arch/x86_64/Kconfig
+--- linux-2.6.18/arch/x86_64/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/Kconfig 2006-11-19 14:26:33.000000000 +0100
+@@ -26,6 +26,7 @@
- config STACKTRACE_SUPPORT
+ config LOCKDEP_SUPPORT
bool
+ depends on !X86_64_XEN
default y
- config SEMAPHORE_SLEEPERS
+ config STACKTRACE_SUPPORT
@@ -135,6 +136,22 @@
endchoice
@@ -30802,17 +29195,28 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/Kconfig linux-2.6.18-xen/
+source "drivers/xen/Kconfig"
+
source "lib/Kconfig"
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/acpi/Makefile linux-2.6.18-xen/arch/x86_64/kernel/acpi/Makefile
---- linux-2.6.18.1/arch/x86_64/kernel/acpi/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/kernel/acpi/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/Kconfig.debug linux-2.6.18-xen/arch/x86_64/Kconfig.debug
+--- linux-2.6.18/arch/x86_64/Kconfig.debug 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/Kconfig.debug 2006-11-19 14:26:33.000000000 +0100
+@@ -2,6 +2,7 @@
+
+ config TRACE_IRQFLAGS_SUPPORT
+ bool
++ depends on !X86_64_XEN
+ default y
+
+ source "lib/Kconfig.debug"
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/acpi/Makefile linux-2.6.18-xen/arch/x86_64/kernel/acpi/Makefile
+--- linux-2.6.18/arch/x86_64/kernel/acpi/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/kernel/acpi/Makefile 2006-11-19 14:26:33.000000000 +0100
@@ -7,3 +7,4 @@
processor-y := ../../../i386/kernel/acpi/processor.o ../../../i386/kernel/acpi/cstate.o
endif
+boot-$(CONFIG_XEN) := ../../../i386/kernel/acpi/boot-xen.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/apic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/apic-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/apic-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/apic-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/apic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/apic-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/apic-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/apic-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,197 @@
+/*
+ * Local APIC handling, local APIC timers
@@ -31011,9 +29415,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/apic-xen.c linux-2
+
+ return 1;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/asm-offsets.c linux-2.6.18-xen/arch/x86_64/kernel/asm-offsets.c
---- linux-2.6.18.1/arch/x86_64/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/kernel/asm-offsets.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/asm-offsets.c linux-2.6.18-xen/arch/x86_64/kernel/asm-offsets.c
+--- linux-2.6.18/arch/x86_64/kernel/asm-offsets.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/kernel/asm-offsets.c 2006-11-19 14:26:33.000000000 +0100
@@ -67,8 +67,10 @@
DEFINE(pbe_address, offsetof(struct pbe, address));
DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
@@ -31025,10 +29429,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/asm-offsets.c linu
BLANK();
DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
return 0;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/e820-xen.c linux-2.6.18-xen/arch/x86_64/kernel/e820-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/e820-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/e820-xen.c 2006-09-21 01:33:31.000000000 +0200
-@@ -0,0 +1,757 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/e820-xen.c linux-2.6.18-xen/arch/x86_64/kernel/e820-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/e820-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/e820-xen.c 2006-11-19 14:26:33.000000000 +0100
+@@ -0,0 +1,758 @@
+/*
+ * Handle the memory map.
+ * The functions here do the job until bootmem takes over.
@@ -31078,6 +29482,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/e820-xen.c linux-2
+
+/* Check for some hardcoded bad areas that early boot is not allowed to touch */
+static inline int bad_addr(unsigned long *addrp, unsigned long size)
++
+{
+ unsigned long addr = *addrp, last = addr + size;
+
@@ -31786,9 +30191,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/e820-xen.c linux-2
+ printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n",
+ pci_mem_start, gapstart, gapsize);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/early_printk-xen.c linux-2.6.18-xen/arch/x86_64/kernel/early_printk-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/early_printk-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/early_printk-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/early_printk-xen.c linux-2.6.18-xen/arch/x86_64/kernel/early_printk-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/early_printk-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/early_printk-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,304 @@
+
+#include <linux/console.h>
@@ -32094,10 +30499,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/early_printk-xen.c
+}
+
+__setup("earlyprintk=", setup_early_printk);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/entry-xen.S linux-2.6.18-xen/arch/x86_64/kernel/entry-xen.S
---- linux-2.6.18.1/arch/x86_64/kernel/entry-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/entry-xen.S 2006-09-22 16:38:35.000000000 +0200
-@@ -0,0 +1,1213 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/entry-xen.S linux-2.6.18-xen/arch/x86_64/kernel/entry-xen.S
+--- linux-2.6.18/arch/x86_64/kernel/entry-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/entry-xen.S 2006-11-19 14:26:33.000000000 +0100
+@@ -0,0 +1,1212 @@
+/*
+ * linux/arch/x86_64/entry.S
+ *
@@ -32440,8 +30845,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/entry-xen.S linux-
+ movq %r10,%rcx /* fixup for C */
+ call *sys_call_table(,%rax,8)
+1: movq %rax,RAX-ARGOFFSET(%rsp)
-+ /* Use IRET because user could have changed frame */
-+ jmp int_ret_from_sys_call
++ jmp ret_from_sys_call
+ CFI_ENDPROC
+END(system_call)
+
@@ -33311,10 +31715,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/entry-xen.S linux-
+ CFI_ENDPROC
+ENDPROC(arch_unwind_init_running)
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/genapic_xen.c linux-2.6.18-xen/arch/x86_64/kernel/genapic_xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/genapic_xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/genapic_xen.c 2006-09-04 16:31:03.000000000 +0200
-@@ -0,0 +1,176 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/genapic_xen.c linux-2.6.18-xen/arch/x86_64/kernel/genapic_xen.c
+--- linux-2.6.18/arch/x86_64/kernel/genapic_xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/genapic_xen.c 2006-11-19 14:26:33.000000000 +0100
+@@ -0,0 +1,174 @@
+/*
+ * Copyright 2004 James Cleverdon, IBM.
+ * Subject to the GNU Public License, v.2
@@ -33450,14 +31854,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/genapic_xen.c linu
+ xen_send_IPI_shortcut(APIC_DEST_ALLINC, vector, APIC_DEST_LOGICAL);
+}
+
-+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+static int xen_apic_id_registered(void)
+{
+ /* better be set */
+ Dprintk("%s\n", __FUNCTION__);
+ return physid_isset(smp_processor_id(), phys_cpu_present_map);
+}
-+#endif
+
+static unsigned int xen_cpu_mask_to_apicid(cpumask_t cpumask)
+{
@@ -33491,9 +31893,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/genapic_xen.c linu
+ .cpu_mask_to_apicid = xen_cpu_mask_to_apicid,
+ .phys_pkg_id = phys_pkg_id,
+};
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/genapic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/genapic-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/genapic-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/genapic-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/genapic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/genapic-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/genapic-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/genapic-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2004 James Cleverdon, IBM.
@@ -33638,9 +32040,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/genapic-xen.c linu
+ xen_send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
+#endif
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/head64-xen.c linux-2.6.18-xen/arch/x86_64/kernel/head64-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/head64-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/head64-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/head64-xen.c linux-2.6.18-xen/arch/x86_64/kernel/head64-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/head64-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/head64-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,161 @@
+/*
+ * linux/arch/x86_64/kernel/head64.c -- prepare to run common code
@@ -33803,9 +32205,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/head64-xen.c linux
+ setup_boot_cpu_data();
+ start_kernel();
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/head-xen.S linux-2.6.18-xen/arch/x86_64/kernel/head-xen.S
---- linux-2.6.18.1/arch/x86_64/kernel/head-xen.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/head-xen.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/head-xen.S linux-2.6.18-xen/arch/x86_64/kernel/head-xen.S
+--- linux-2.6.18/arch/x86_64/kernel/head-xen.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/head-xen.S 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,191 @@
+/*
+ * linux/arch/x86_64/kernel/head.S -- start in 32bit and switch to 64bit
@@ -33998,9 +32400,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/head-xen.S linux-2
+ ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad, hypercall_page)
+ ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|pae_pgdir_above_4gb|supervisor_mode_kernel")
+ ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic")
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/init_task.c linux-2.6.18-xen/arch/x86_64/kernel/init_task.c
---- linux-2.6.18.1/arch/x86_64/kernel/init_task.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/kernel/init_task.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/init_task.c linux-2.6.18-xen/arch/x86_64/kernel/init_task.c
+--- linux-2.6.18/arch/x86_64/kernel/init_task.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/kernel/init_task.c 2006-11-19 14:26:33.000000000 +0100
@@ -37,6 +37,8 @@
struct task_struct init_task = INIT_TASK(init_task);
@@ -34018,9 +32420,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/init_task.c linux-
/* Copies of the original ist values from the tss are only accessed during
* debugging, no special alignment required.
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/io_apic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/io_apic-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/io_apic-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/io_apic-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/io_apic-xen.c linux-2.6.18-xen/arch/x86_64/kernel/io_apic-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/io_apic-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/io_apic-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,2263 @@
+/*
+ * Intel IO-APIC support for multi-Pentium hosts.
@@ -36285,9 +34687,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/io_apic-xen.c linu
+}
+#endif
+#endif /* !CONFIG_XEN */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/ioport-xen.c linux-2.6.18-xen/arch/x86_64/kernel/ioport-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/ioport-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/ioport-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/ioport-xen.c linux-2.6.18-xen/arch/x86_64/kernel/ioport-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/ioport-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/ioport-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,99 @@
+/*
+ * linux/arch/x86_64/kernel/ioport.c
@@ -36388,113 +34790,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/ioport-xen.c linux
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/irqflags-xen.c linux-2.6.18-xen/arch/x86_64/kernel/irqflags-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/irqflags-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/irqflags-xen.c 2006-09-04 16:31:03.000000000 +0200
-@@ -0,0 +1,100 @@
-+#include <linux/module.h>
-+#include <linux/smp.h>
-+#include <asm/irqflags.h>
-+#include <asm/hypervisor.h>
-+
-+/*
-+ * The use of 'barrier' in the following reflects their use as local-lock
-+ * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
-+ * critical operations are executed. All critical operations must complete
-+ * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
-+ * includes these barriers, for example.
-+ */
-+
-+unsigned long __raw_local_save_flags(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ unsigned long flags;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ flags = _vcpu->evtchn_upcall_mask;
-+ preempt_enable();
-+
-+ return flags;
-+}
-+EXPORT_SYMBOL(__raw_local_save_flags);
-+
-+void raw_local_irq_restore(unsigned long flags)
-+{
-+ struct vcpu_info *_vcpu;
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ if ((_vcpu->evtchn_upcall_mask = flags) == 0) {
-+ barrier(); /* unmask then check (avoid races) */
-+ if ( unlikely(_vcpu->evtchn_upcall_pending) )
-+ force_evtchn_callback();
-+ preempt_enable();
-+ } else
-+ preempt_enable_no_resched();
-+}
-+EXPORT_SYMBOL(raw_local_irq_restore);
-+
-+void raw_local_irq_disable(void)
-+{
-+ struct vcpu_info *_vcpu;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ _vcpu->evtchn_upcall_mask = 1;
-+ preempt_enable_no_resched();
-+}
-+EXPORT_SYMBOL(raw_local_irq_disable);
-+
-+void raw_local_irq_enable(void)
-+{
-+ struct vcpu_info *_vcpu;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ _vcpu->evtchn_upcall_mask = 0;
-+ barrier(); /* unmask then check (avoid races) */
-+ if ( unlikely(_vcpu->evtchn_upcall_pending) )
-+ force_evtchn_callback();
-+ preempt_enable();
-+}
-+EXPORT_SYMBOL(raw_local_irq_enable);
-+
-+/*
-+ * For spinlocks, etc.:
-+ */
-+
-+unsigned long __raw_local_irq_save(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ unsigned long flags;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ flags = _vcpu->evtchn_upcall_mask;
-+ _vcpu->evtchn_upcall_mask = 1;
-+ preempt_enable_no_resched();
-+
-+ return flags;
-+}
-+EXPORT_SYMBOL(__raw_local_irq_save);
-+
-+/* Cannot use preempt_enable() here as we would recurse in preempt_sched(). */
-+int raw_irqs_disabled(void)
-+{
-+ struct vcpu_info *_vcpu;
-+ int disabled;
-+
-+ preempt_disable();
-+ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id];
-+ disabled = (_vcpu->evtchn_upcall_mask != 0);
-+ preempt_enable_no_resched();
-+
-+ return disabled;
-+}
-+EXPORT_SYMBOL(raw_irqs_disabled);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/irq-xen.c linux-2.6.18-xen/arch/x86_64/kernel/irq-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/irq-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/irq-xen.c linux-2.6.18-xen/arch/x86_64/kernel/irq-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/irq-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/irq-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,198 @@
+/*
+ * linux/arch/x86_64/kernel/irq.c
@@ -36694,9 +34992,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/irq-xen.c linux-2.
+ printk("unexpected IRQ trap at vector %02x\n", irq);
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/ldt-xen.c linux-2.6.18-xen/arch/x86_64/kernel/ldt-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/ldt-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/ldt-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/ldt-xen.c linux-2.6.18-xen/arch/x86_64/kernel/ldt-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/ldt-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/ldt-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,282 @@
+/*
+ * linux/arch/x86_64/kernel/ldt.c
@@ -36980,9 +35278,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/ldt-xen.c linux-2.
+ }
+ return ret;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/Makefile linux-2.6.18-xen/arch/x86_64/kernel/Makefile
---- linux-2.6.18.1/arch/x86_64/kernel/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/kernel/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/Makefile linux-2.6.18-xen/arch/x86_64/kernel/Makefile
+--- linux-2.6.18/arch/x86_64/kernel/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/kernel/Makefile 2006-11-19 14:26:33.000000000 +0100
@@ -21,11 +21,13 @@
obj-$(CONFIG_X86_CPUID) += cpuid.o
obj-$(CONFIG_SMP) += smp.o smpboot.o trampoline.o
@@ -36998,12 +35296,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/Makefile linux-2.6
obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o
obj-$(CONFIG_CPU_FREQ) += cpufreq/
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-@@ -55,3 +57,18 @@
+@@ -55,3 +57,17 @@
msr-$(subst m,y,$(CONFIG_X86_MSR)) += ../../i386/kernel/msr.o
alternative-y += ../../i386/kernel/alternative.o
+ifdef CONFIG_XEN
-+obj-y += irqflags.o
+time-y += ../../i386/kernel/time-xen.o
+pci-dma-y += ../../i386/kernel/pci-dma-xen.o
+microcode-$(subst m,y,$(CONFIG_MICROCODE)) := ../../i386/kernel/microcode-xen.o
@@ -37017,9 +35314,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/Makefile linux-2.6
+obj-y := $(call cherrypickxen, $(obj-y))
+extra-y := $(call cherrypickxen, $(extra-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/mpparse-xen.c linux-2.6.18-xen/arch/x86_64/kernel/mpparse-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/mpparse-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/mpparse-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/mpparse-xen.c linux-2.6.18-xen/arch/x86_64/kernel/mpparse-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/mpparse-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/mpparse-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,1011 @@
+/*
+ * Intel Multiprocessor Specification 1.1 and 1.4
@@ -38032,9 +36329,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/mpparse-xen.c linu
+
+#endif /*CONFIG_X86_IO_APIC*/
+#endif /*CONFIG_ACPI*/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/pci-swiotlb-xen.c linux-2.6.18-xen/arch/x86_64/kernel/pci-swiotlb-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/pci-swiotlb-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/pci-swiotlb-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/pci-swiotlb-xen.c linux-2.6.18-xen/arch/x86_64/kernel/pci-swiotlb-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/pci-swiotlb-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/pci-swiotlb-xen.c 2006-11-19 14:26:33.000000000 +0100
@@ -0,0 +1,54 @@
+/* Glue code to lib/swiotlb.c */
+
@@ -38090,10 +36387,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/pci-swiotlb-xen.c
+ }
+#endif
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/process-xen.c linux-2.6.18-xen/arch/x86_64/kernel/process-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/process-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/process-xen.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,793 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/process-xen.c linux-2.6.18-xen/arch/x86_64/kernel/process-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/process-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/process-xen.c 2006-11-19 14:26:33.000000000 +0100
+@@ -0,0 +1,792 @@
+/*
+ * linux/arch/x86-64/kernel/process.c
+ *
@@ -38557,6 +36854,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/process-xen.c linu
+ multicall_entry_t _mcl[8], *mcl = _mcl;
+
+ /*
++ * This is basically '__unlazy_fpu', except that we queue a
++ * multicall to indicate FPU task switch, rather than
++ * synchronously trapping to Xen.
++ */
++ if (prev_p->thread_info->status & TS_USEDFPU) {
++ __save_init_fpu(prev_p); /* _not_ save_init_fpu() */
++ mcl->op = __HYPERVISOR_fpu_taskswitch;
++ mcl->args[0] = 1;
++ mcl++;
++ }
++
++ /*
+ * Reload esp0, LDT and the page table pointer:
+ */
+ mcl->op = __HYPERVISOR_stack_switch;
@@ -38624,24 +36933,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/process-xen.c linu
+ HYPERVISOR_set_segment_base(SEGBASE_GS_USER, next->gs);
+
+ /*
-+ * Switch the PDA and FPU context.
++ * Switch the PDA.
+ */
+ prev->userrsp = read_pda(oldrsp);
+ write_pda(oldrsp, next->userrsp);
+ write_pda(pcurrent, next_p);
-+
-+ /* This must be here to ensure both math_state_restore() and
-+ kernel_fpu_begin() work consistently.
-+ And the AMD workaround requires it to be after DS reload. */
-+ /*
-+ * This is basically '__unlazy_fpu', except that we queue a
-+ * multicall to indicate FPU task switch, rather than
-+ * synchronously trapping to Xen.
-+ */
-+ if (prev_p->thread_info->status & TS_USEDFPU) {
-+ __save_init_fpu(prev_p); /* _not_ save_init_fpu() */
-+ HYPERVISOR_fpu_taskswitch(1);
-+ }
+ write_pda(kernelstack,
+ task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET);
+
@@ -38887,9 +37183,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/process-xen.c linu
+{
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/setup64-xen.c linux-2.6.18-xen/arch/x86_64/kernel/setup64-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/setup64-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/setup64-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/setup64-xen.c linux-2.6.18-xen/arch/x86_64/kernel/setup64-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/setup64-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/setup64-xen.c 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,361 @@
+/*
+ * X86-64 specific CPU setup.
@@ -39252,10 +37548,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/setup64-xen.c linu
+
+ fpu_init();
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/setup-xen.c linux-2.6.18-xen/arch/x86_64/kernel/setup-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/setup-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/setup-xen.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,1637 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/setup-xen.c linux-2.6.18-xen/arch/x86_64/kernel/setup-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/setup-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/setup-xen.c 2006-11-19 14:26:33.000000000 +0100
+@@ -0,0 +1,1638 @@
+/*
+ * linux/arch/x86-64/kernel/setup.c
+ *
@@ -39324,13 +37620,14 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/setup-xen.c linux-
+#include <asm/dmi.h>
+#ifdef CONFIG_XEN
+#include <linux/percpu.h>
-+#include <linux/pfn.h>
+#include <xen/interface/physdev.h>
+#include "setup_arch_pre.h"
+#include <asm/hypervisor.h>
+#include <xen/interface/nmi.h>
+#include <xen/features.h>
+#include <xen/xencons.h>
++#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
++#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
+#include <asm/mach-xen/setup_arch_post.h>
+#include <xen/interface/memory.h>
+
@@ -40893,9 +39190,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/setup-xen.c linux-
+}
+device_initcall(add_pcspkr);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/smp-xen.c linux-2.6.18-xen/arch/x86_64/kernel/smp-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/smp-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/smp-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/smp-xen.c linux-2.6.18-xen/arch/x86_64/kernel/smp-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/smp-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/smp-xen.c 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,600 @@
+/*
+ * Intel SMP support routines.
@@ -41497,10 +39794,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/smp-xen.c linux-2.
+ return 0; /* Should not happen */
+#endif
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/traps-xen.c linux-2.6.18-xen/arch/x86_64/kernel/traps-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/traps-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/traps-xen.c 2006-09-22 16:38:35.000000000 +0200
-@@ -0,0 +1,1173 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/traps-xen.c linux-2.6.18-xen/arch/x86_64/kernel/traps-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/traps-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/traps-xen.c 2006-11-19 14:26:34.000000000 +0100
+@@ -0,0 +1,1172 @@
+/*
+ * linux/arch/x86-64/traps.c
+ *
@@ -41615,7 +39912,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/traps-xen.c linux-
+#define call_trace (-1)
+#endif
+
-+
+#ifdef CONFIG_KALLSYMS
+# include <linux/kallsyms.h>
+void printk_address(unsigned long address)
@@ -41682,7 +39978,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/traps-xen.c linux-
+ break;
+#endif
+ default:
-+ end = per_cpu(orig_tss, cpu).ist[k];
++ end = per_cpu(orig_ist, cpu).ist[k];
+ break;
+ }
+ /*
@@ -42674,9 +40970,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/traps-xen.c linux-
+}
+__setup("call_trace=", call_trace_setup);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/vmlinux.lds.S linux-2.6.18-xen/arch/x86_64/kernel/vmlinux.lds.S
---- linux-2.6.18.1/arch/x86_64/kernel/vmlinux.lds.S 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/kernel/vmlinux.lds.S 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/vmlinux.lds.S linux-2.6.18-xen/arch/x86_64/kernel/vmlinux.lds.S
+--- linux-2.6.18/arch/x86_64/kernel/vmlinux.lds.S 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/kernel/vmlinux.lds.S 2006-11-19 14:26:34.000000000 +0100
@@ -13,6 +13,12 @@
OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64)
@@ -42758,9 +41054,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/vmlinux.lds.S linu
+
+ NOTES
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/vsyscall-xen.c linux-2.6.18-xen/arch/x86_64/kernel/vsyscall-xen.c
---- linux-2.6.18.1/arch/x86_64/kernel/vsyscall-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/vsyscall-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/vsyscall-xen.c linux-2.6.18-xen/arch/x86_64/kernel/vsyscall-xen.c
+--- linux-2.6.18/arch/x86_64/kernel/vsyscall-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/vsyscall-xen.c 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,239 @@
+/*
+ * linux/arch/x86_64/kernel/vsyscall.c
@@ -43001,9 +41297,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/vsyscall-xen.c lin
+}
+
+__initcall(vsyscall_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/xen_entry.S linux-2.6.18-xen/arch/x86_64/kernel/xen_entry.S
---- linux-2.6.18.1/arch/x86_64/kernel/xen_entry.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/kernel/xen_entry.S 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/kernel/xen_entry.S linux-2.6.18-xen/arch/x86_64/kernel/xen_entry.S
+--- linux-2.6.18/arch/x86_64/kernel/xen_entry.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/kernel/xen_entry.S 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+ * Copied from arch/xen/i386/kernel/entry.S
@@ -43045,9 +41341,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/kernel/xen_entry.S linux-
+VGCF_IN_SYSCALL = (1<<8)
+
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/Makefile linux-2.6.18-xen/arch/x86_64/Makefile
---- linux-2.6.18.1/arch/x86_64/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/Makefile 2006-09-04 16:31:02.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/Makefile linux-2.6.18-xen/arch/x86_64/Makefile
+--- linux-2.6.18/arch/x86_64/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/Makefile 2006-11-19 14:26:33.000000000 +0100
@@ -32,6 +32,10 @@
cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
@@ -43089,9 +41385,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/Makefile linux-2.6.18-xen
archclean:
$(Q)$(MAKE) $(clean)=$(boot)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/fault-xen.c linux-2.6.18-xen/arch/x86_64/mm/fault-xen.c
---- linux-2.6.18.1/arch/x86_64/mm/fault-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/mm/fault-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/mm/fault-xen.c linux-2.6.18-xen/arch/x86_64/mm/fault-xen.c
+--- linux-2.6.18/arch/x86_64/mm/fault-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/mm/fault-xen.c 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,723 @@
+/*
+ * linux/arch/x86-64/mm/fault.c
@@ -43816,9 +42112,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/fault-xen.c linux-2.6.
+ return 1;
+}
+__setup("pagefaulttrace", enable_pagefaulttrace);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/init-xen.c linux-2.6.18-xen/arch/x86_64/mm/init-xen.c
---- linux-2.6.18.1/arch/x86_64/mm/init-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/mm/init-xen.c 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/mm/init-xen.c linux-2.6.18-xen/arch/x86_64/mm/init-xen.c
+--- linux-2.6.18/arch/x86_64/mm/init-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/mm/init-xen.c 2006-11-19 14:26:34.000000000 +0100
@@ -0,0 +1,1200 @@
+/*
+ * linux/arch/x86_64/mm/init.c
@@ -45020,9 +43316,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/init-xen.c linux-2.6.1
+{
+ return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/Makefile linux-2.6.18-xen/arch/x86_64/mm/Makefile
---- linux-2.6.18.1/arch/x86_64/mm/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/mm/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/mm/Makefile linux-2.6.18-xen/arch/x86_64/mm/Makefile
+--- linux-2.6.18/arch/x86_64/mm/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/mm/Makefile 2006-11-19 14:26:34.000000000 +0100
@@ -9,3 +9,13 @@
obj-$(CONFIG_ACPI_NUMA) += srat.o
@@ -45037,10 +43333,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/Makefile linux-2.6.18-
+
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/pageattr-xen.c linux-2.6.18-xen/arch/x86_64/mm/pageattr-xen.c
---- linux-2.6.18.1/arch/x86_64/mm/pageattr-xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/arch/x86_64/mm/pageattr-xen.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,398 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/mm/pageattr-xen.c linux-2.6.18-xen/arch/x86_64/mm/pageattr-xen.c
+--- linux-2.6.18/arch/x86_64/mm/pageattr-xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/arch/x86_64/mm/pageattr-xen.c 2006-11-19 14:26:34.000000000 +0100
+@@ -0,0 +1,396 @@
+/*
+ * Copyright 2002 Andi Kleen, SuSE Labs.
+ * Thanks to Ben LaHaise for precious feedback.
@@ -45364,13 +43660,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/pageattr-xen.c linux-2
+ */
+#ifndef CONFIG_XEN
+ BUG_ON(PageReserved(kpte_page));
-+#else
-+ if(!PageReserved(kpte_page))
+#endif
-+ if (page_private(kpte_page) == 0) {
-+ save_page(kpte_page);
-+ revert_page(address, ref_prot);
-+ }
++ if (page_private(kpte_page) == 0) {
++ save_page(kpte_page);
++ revert_page(address, ref_prot);
++ }
+ return 0;
+}
+
@@ -45439,9 +43733,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/mm/pageattr-xen.c linux-2
+
+EXPORT_SYMBOL(change_page_attr);
+EXPORT_SYMBOL(global_flush_tlb);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/oprofile/Makefile linux-2.6.18-xen/arch/x86_64/oprofile/Makefile
---- linux-2.6.18.1/arch/x86_64/oprofile/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/oprofile/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/oprofile/Makefile linux-2.6.18-xen/arch/x86_64/oprofile/Makefile
+--- linux-2.6.18/arch/x86_64/oprofile/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/oprofile/Makefile 2006-11-19 14:26:34.000000000 +0100
@@ -11,9 +11,12 @@
oprofilefs.o oprofile_stats.o \
timer_int.o )
@@ -45456,9 +43750,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/oprofile/Makefile linux-2
-
+endif
oprofile-y = $(DRIVER_OBJS) $(addprefix ../../i386/oprofile/, $(OPROFILE-y))
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/pci/Makefile linux-2.6.18-xen/arch/x86_64/pci/Makefile
---- linux-2.6.18.1/arch/x86_64/pci/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/arch/x86_64/pci/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/arch/x86_64/pci/Makefile linux-2.6.18-xen/arch/x86_64/pci/Makefile
+--- linux-2.6.18/arch/x86_64/pci/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/arch/x86_64/pci/Makefile 2006-11-19 14:26:34.000000000 +0100
@@ -15,11 +15,23 @@
obj-$(CONFIG_NUMA) += k8-bus.o
@@ -45483,9 +43777,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/arch/x86_64/pci/Makefile linux-2.6.18
+
+obj-y := $(call cherrypickxen, $(obj-y))
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/acpi/Kconfig linux-2.6.18-xen/drivers/acpi/Kconfig
---- linux-2.6.18.1/drivers/acpi/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/acpi/Kconfig 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/acpi/Kconfig linux-2.6.18-xen/drivers/acpi/Kconfig
+--- linux-2.6.18/drivers/acpi/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/acpi/Kconfig 2006-11-19 14:26:34.000000000 +0100
@@ -45,7 +45,7 @@
config ACPI_SLEEP
@@ -45503,9 +43797,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/acpi/Kconfig linux-2.6.18-xen
default y
help
The Power Management Timer is available on all ACPI-capable,
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/hangcheck-timer.c linux-2.6.18-xen/drivers/char/hangcheck-timer.c
---- linux-2.6.18.1/drivers/char/hangcheck-timer.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/hangcheck-timer.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/hangcheck-timer.c linux-2.6.18-xen/drivers/char/hangcheck-timer.c
+--- linux-2.6.18/drivers/char/hangcheck-timer.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/hangcheck-timer.c 2006-11-19 14:26:36.000000000 +0100
@@ -117,7 +117,7 @@
__setup("hcheck_dump_tasks", hangcheck_parse_dump_tasks);
#endif /* not MODULE */
@@ -45515,9 +43809,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/hangcheck-timer.c linux-
# define HAVE_MONOTONIC
# define TIMER_FREQ 1000000000ULL
#elif defined(CONFIG_IA64)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/mem.c linux-2.6.18-xen/drivers/char/mem.c
---- linux-2.6.18.1/drivers/char/mem.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/mem.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/mem.c linux-2.6.18-xen/drivers/char/mem.c
+--- linux-2.6.18/drivers/char/mem.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/mem.c 2006-11-19 14:26:36.000000000 +0100
@@ -101,6 +101,7 @@
}
#endif
@@ -45552,9 +43846,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/mem.c linux-2.6.18-xen/d
static const struct file_operations kmem_fops = {
.llseek = memory_lseek,
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/Kconfig linux-2.6.18-xen/drivers/char/tpm/Kconfig
---- linux-2.6.18.1/drivers/char/tpm/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/tpm/Kconfig 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/Kconfig linux-2.6.18-xen/drivers/char/tpm/Kconfig
+--- linux-2.6.18/drivers/char/tpm/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/tpm/Kconfig 2006-11-19 14:26:36.000000000 +0100
@@ -31,7 +31,7 @@
config TCG_NSC
@@ -45579,18 +43873,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/Kconfig linux-2.6.18
+ will be called tpm_xenu.
+endmenu
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/Makefile linux-2.6.18-xen/drivers/char/tpm/Makefile
---- linux-2.6.18.1/drivers/char/tpm/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/tpm/Makefile 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/Makefile linux-2.6.18-xen/drivers/char/tpm/Makefile
+--- linux-2.6.18/drivers/char/tpm/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/tpm/Makefile 2006-11-19 14:26:36.000000000 +0100
@@ -9,3 +9,5 @@
obj-$(CONFIG_TCG_NSC) += tpm_nsc.o
obj-$(CONFIG_TCG_ATMEL) += tpm_atmel.o
obj-$(CONFIG_TCG_INFINEON) += tpm_infineon.o
+obj-$(CONFIG_TCG_XEN) += tpm_xenu.o
+tpm_xenu-y = tpm_xen.o tpm_vtpm.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm.c linux-2.6.18-xen/drivers/char/tpm/tpm.c
---- linux-2.6.18.1/drivers/char/tpm/tpm.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/tpm/tpm.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/tpm.c linux-2.6.18-xen/drivers/char/tpm/tpm.c
+--- linux-2.6.18/drivers/char/tpm/tpm.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/tpm/tpm.c 2006-11-19 14:26:36.000000000 +0100
@@ -30,7 +30,9 @@
enum tpm_const {
@@ -45711,9 +44005,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm.c linux-2.6.18-x
return ret_size;
}
EXPORT_SYMBOL_GPL(tpm_read);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm.h linux-2.6.18-xen/drivers/char/tpm/tpm.h
---- linux-2.6.18.1/drivers/char/tpm/tpm.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/tpm/tpm.h 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/tpm.h linux-2.6.18-xen/drivers/char/tpm/tpm.h
+--- linux-2.6.18/drivers/char/tpm/tpm.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/tpm/tpm.h 2006-11-19 14:26:36.000000000 +0100
@@ -61,6 +61,7 @@
const u8 req_complete_mask;
const u8 req_complete_val;
@@ -45736,15 +44030,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm.h linux-2.6.18-x
+static inline u32 get_chip_buffersize(struct tpm_chip *chip)
+{
-+ return chip->vendor.buffersize;
++ return chip->vendor->buffersize;
+}
+
extern void tpm_get_timeouts(struct tpm_chip *);
extern void tpm_gen_interrupt(struct tpm_chip *);
extern void tpm_continue_selftest(struct tpm_chip *);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.c linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.c
---- linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/tpm_vtpm.c linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.c
+--- linux-2.6.18/drivers/char/tpm/tpm_vtpm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.c 2006-11-19 14:26:36.000000000 +0100
@@ -0,0 +1,547 @@
+/*
+ * Copyright (C) 2006 IBM Corporation
@@ -46293,9 +44587,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.c linux-2.6
+ tpm_remove_hardware(dev);
+ kfree(vtpms);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.h linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.h
---- linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.h 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/tpm_vtpm.h linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.h
+--- linux-2.6.18/drivers/char/tpm/tpm_vtpm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/char/tpm/tpm_vtpm.h 2006-11-19 14:26:36.000000000 +0100
@@ -0,0 +1,68 @@
+#ifndef TPM_VTPM_H
+#define TPM_VTPM_H
@@ -46365,9 +44659,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_vtpm.h linux-2.6
+}
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_xen.c linux-2.6.18-xen/drivers/char/tpm/tpm_xen.c
---- linux-2.6.18.1/drivers/char/tpm/tpm_xen.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/char/tpm/tpm_xen.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tpm/tpm_xen.c linux-2.6.18-xen/drivers/char/tpm/tpm_xen.c
+--- linux-2.6.18/drivers/char/tpm/tpm_xen.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/char/tpm/tpm_xen.c 2006-11-19 14:26:36.000000000 +0100
@@ -0,0 +1,756 @@
+/*
+ * Copyright (c) 2005, IBM Corporation
@@ -47125,9 +45419,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tpm/tpm_xen.c linux-2.6.
+module_init(tpmif_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tty_io.c linux-2.6.18-xen/drivers/char/tty_io.c
---- linux-2.6.18.1/drivers/char/tty_io.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/char/tty_io.c 2006-09-22 16:38:35.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/char/tty_io.c linux-2.6.18-xen/drivers/char/tty_io.c
+--- linux-2.6.18/drivers/char/tty_io.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/char/tty_io.c 2006-11-19 14:26:36.000000000 +0100
@@ -130,6 +130,8 @@
vt.c for deeply disgusting hack reasons */
DEFINE_MUTEX(tty_mutex);
@@ -47163,9 +45457,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/char/tty_io.c linux-2.6.18-xe
#endif
return 0;
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/firmware/Kconfig linux-2.6.18-xen/drivers/firmware/Kconfig
---- linux-2.6.18.1/drivers/firmware/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/firmware/Kconfig 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/firmware/Kconfig linux-2.6.18-xen/drivers/firmware/Kconfig
+--- linux-2.6.18/drivers/firmware/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/firmware/Kconfig 2006-11-19 14:26:37.000000000 +0100
@@ -7,7 +7,7 @@
config EDD
@@ -47175,9 +45469,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/firmware/Kconfig linux-2.6.18
help
Say Y or M here if you want to enable BIOS Enhanced Disk Drive
Services real mode BIOS calls to determine which disk
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/ide/ide-lib.c linux-2.6.18-xen/drivers/ide/ide-lib.c
---- linux-2.6.18.1/drivers/ide/ide-lib.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/ide/ide-lib.c 2006-09-04 16:31:04.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/ide/ide-lib.c linux-2.6.18-xen/drivers/ide/ide-lib.c
+--- linux-2.6.18/drivers/ide/ide-lib.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/ide/ide-lib.c 2006-11-19 14:26:39.000000000 +0100
@@ -408,10 +408,10 @@
{
u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */
@@ -47193,9 +45487,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/ide/ide-lib.c linux-2.6.18-xe
addr = HWIF(drive)->pci_dev->dma_mask;
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/Makefile linux-2.6.18-xen/drivers/Makefile
---- linux-2.6.18.1/drivers/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/Makefile 2006-09-04 16:31:03.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/Makefile linux-2.6.18-xen/drivers/Makefile
+--- linux-2.6.18/drivers/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/Makefile 2006-11-19 14:26:34.000000000 +0100
@@ -31,6 +31,7 @@
obj-$(CONFIG_NUBUS) += nubus/
obj-$(CONFIG_ATM) += atm/
@@ -47204,9 +45498,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/Makefile linux-2.6.18-xen/dri
obj-$(CONFIG_IDE) += ide/
obj-$(CONFIG_FC4) += fc4/
obj-$(CONFIG_SCSI) += scsi/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/buffer_sync.c linux-2.6.18-xen/drivers/oprofile/buffer_sync.c
---- linux-2.6.18.1/drivers/oprofile/buffer_sync.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/buffer_sync.c 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/buffer_sync.c linux-2.6.18-xen/drivers/oprofile/buffer_sync.c
+--- linux-2.6.18/drivers/oprofile/buffer_sync.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/buffer_sync.c 2006-11-19 14:26:47.000000000 +0100
@@ -6,6 +6,10 @@
*
* @author John Levon <levon@movementarian.org>
@@ -47327,9 +45621,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/buffer_sync.c linux-
}
}
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/cpu_buffer.c linux-2.6.18-xen/drivers/oprofile/cpu_buffer.c
---- linux-2.6.18.1/drivers/oprofile/cpu_buffer.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/cpu_buffer.c 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/cpu_buffer.c linux-2.6.18-xen/drivers/oprofile/cpu_buffer.c
+--- linux-2.6.18/drivers/oprofile/cpu_buffer.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/cpu_buffer.c 2006-11-19 14:26:47.000000000 +0100
@@ -6,6 +6,10 @@
*
* @author John Levon <levon@movementarian.org>
@@ -47439,9 +45733,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/cpu_buffer.c linux-2
/*
* This serves to avoid cpu buffer overflow, and makes sure
* the task mortuary progresses
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/cpu_buffer.h linux-2.6.18-xen/drivers/oprofile/cpu_buffer.h
---- linux-2.6.18.1/drivers/oprofile/cpu_buffer.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/cpu_buffer.h 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/cpu_buffer.h linux-2.6.18-xen/drivers/oprofile/cpu_buffer.h
+--- linux-2.6.18/drivers/oprofile/cpu_buffer.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/cpu_buffer.h 2006-11-19 14:26:47.000000000 +0100
@@ -36,7 +36,7 @@
volatile unsigned long tail_pos;
unsigned long buffer_size;
@@ -47464,9 +45758,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/cpu_buffer.h linux-2
+#define CPU_DOMAIN_SWITCH 4
#endif /* OPROFILE_CPU_BUFFER_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/event_buffer.h linux-2.6.18-xen/drivers/oprofile/event_buffer.h
---- linux-2.6.18.1/drivers/oprofile/event_buffer.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/event_buffer.h 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/event_buffer.h linux-2.6.18-xen/drivers/oprofile/event_buffer.h
+--- linux-2.6.18/drivers/oprofile/event_buffer.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/event_buffer.h 2006-11-19 14:26:47.000000000 +0100
@@ -29,15 +29,20 @@
#define CPU_SWITCH_CODE 2
#define COOKIE_SWITCH_CODE 3
@@ -47489,9 +45783,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/event_buffer.h linux
/* add data to the event buffer */
void add_event_entry(unsigned long data);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprof.c linux-2.6.18-xen/drivers/oprofile/oprof.c
---- linux-2.6.18.1/drivers/oprofile/oprof.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/oprof.c 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/oprof.c linux-2.6.18-xen/drivers/oprofile/oprof.c
+--- linux-2.6.18/drivers/oprofile/oprof.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/oprof.c 2006-11-19 14:26:47.000000000 +0100
@@ -5,6 +5,10 @@
* @remark Read the file COPYING
*
@@ -47545,9 +45839,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprof.c linux-2.6.18
int oprofile_setup(void)
{
int err;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprof.h linux-2.6.18-xen/drivers/oprofile/oprof.h
---- linux-2.6.18.1/drivers/oprofile/oprof.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/oprof.h 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/oprof.h linux-2.6.18-xen/drivers/oprofile/oprof.h
+--- linux-2.6.18/drivers/oprofile/oprof.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/oprof.h 2006-11-19 14:26:47.000000000 +0100
@@ -35,5 +35,8 @@
void oprofile_timer_init(struct oprofile_operations * ops);
@@ -47557,9 +45851,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprof.h linux-2.6.18
+int oprofile_set_passive(int passive_domains[], unsigned int pdomains);
#endif /* OPROF_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprofile_files.c linux-2.6.18-xen/drivers/oprofile/oprofile_files.c
---- linux-2.6.18.1/drivers/oprofile/oprofile_files.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/oprofile/oprofile_files.c 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/oprofile/oprofile_files.c linux-2.6.18-xen/drivers/oprofile/oprofile_files.c
+--- linux-2.6.18/drivers/oprofile/oprofile_files.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/oprofile/oprofile_files.c 2006-11-19 14:26:47.000000000 +0100
@@ -5,15 +5,21 @@
* @remark Read the file COPYING
*
@@ -47793,9 +46087,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/oprofile/oprofile_files.c lin
oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
oprofilefs_create_ulong(sb, root, "buffer_size", &fs_buffer_size);
oprofilefs_create_ulong(sb, root, "buffer_watershed", &fs_buffer_watershed);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/pci/Kconfig linux-2.6.18-xen/drivers/pci/Kconfig
---- linux-2.6.18.1/drivers/pci/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/pci/Kconfig 2006-09-04 16:31:08.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/pci/Kconfig linux-2.6.18-xen/drivers/pci/Kconfig
+--- linux-2.6.18/drivers/pci/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/pci/Kconfig 2006-11-19 14:26:47.000000000 +0100
@@ -5,6 +5,7 @@
bool "Message Signaled Interrupts (MSI and MSI-X)"
depends on PCI
@@ -47804,9 +46098,31 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/pci/Kconfig linux-2.6.18-xen/
help
This allows device drivers to enable MSI (Message Signaled
Interrupts). Message Signaled Interrupts enable a device to
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/serial/Kconfig linux-2.6.18-xen/drivers/serial/Kconfig
---- linux-2.6.18.1/drivers/serial/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/drivers/serial/Kconfig 2006-09-22 16:38:35.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/scsi/scsi_error.c linux-2.6.18-xen/drivers/scsi/scsi_error.c
+--- linux-2.6.18/drivers/scsi/scsi_error.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/scsi/scsi_error.c 2006-11-19 14:26:51.000000000 +0100
+@@ -56,6 +56,7 @@
+ printk("Waking error handler thread\n"));
+ }
+ }
++EXPORT_SYMBOL_GPL(scsi_eh_wakeup);
+
+ /**
+ * scsi_schedule_eh - schedule EH for SCSI host
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/scsi/scsi_priv.h linux-2.6.18-xen/drivers/scsi/scsi_priv.h
+--- linux-2.6.18/drivers/scsi/scsi_priv.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/scsi/scsi_priv.h 2006-11-19 14:26:51.000000000 +0100
+@@ -52,7 +52,6 @@
+ extern void scsi_times_out(struct scsi_cmnd *cmd);
+ extern int scsi_error_handler(void *host);
+ extern int scsi_decide_disposition(struct scsi_cmnd *cmd);
+-extern void scsi_eh_wakeup(struct Scsi_Host *shost);
+ extern int scsi_eh_scmd_add(struct scsi_cmnd *, int);
+
+ /* scsi_lib.c */
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/serial/Kconfig linux-2.6.18-xen/drivers/serial/Kconfig
+--- linux-2.6.18/drivers/serial/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/drivers/serial/Kconfig 2006-11-19 14:26:51.000000000 +0100
@@ -11,6 +11,7 @@
config SERIAL_8250
tristate "8250/16550 and compatible serial support"
@@ -47815,9 +46131,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/serial/Kconfig linux-2.6.18-x
select SERIAL_CORE
---help---
This selects whether you want to include the driver for the standard
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/balloon/balloon.c linux-2.6.18-xen/drivers/xen/balloon/balloon.c
---- linux-2.6.18.1/drivers/xen/balloon/balloon.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/balloon/balloon.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/balloon/balloon.c linux-2.6.18-xen/drivers/xen/balloon/balloon.c
+--- linux-2.6.18/drivers/xen/balloon/balloon.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/balloon/balloon.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,637 @@
+/******************************************************************************
+ * balloon.c
@@ -48456,15 +46772,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/balloon/balloon.c linux-2
+EXPORT_SYMBOL_GPL(balloon_release_driver_page);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/balloon/Makefile linux-2.6.18-xen/drivers/xen/balloon/Makefile
---- linux-2.6.18.1/drivers/xen/balloon/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/balloon/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/balloon/Makefile linux-2.6.18-xen/drivers/xen/balloon/Makefile
+--- linux-2.6.18/drivers/xen/balloon/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/balloon/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,2 @@
+
+obj-y += balloon.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/blkback.c linux-2.6.18-xen/drivers/xen/blkback/blkback.c
---- linux-2.6.18.1/drivers/xen/blkback/blkback.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/blkback.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/blkback.c linux-2.6.18-xen/drivers/xen/blkback/blkback.c
+--- linux-2.6.18/drivers/xen/blkback/blkback.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/blkback.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,549 @@
+/******************************************************************************
+ * arch/xen/drivers/blkif/backend/main.c
@@ -48978,7 +47294,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/blkback.c linux-2
+ if (!is_running_on_xen())
+ return -ENODEV;
+
-+ mmap_pages = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST;
++ mmap_pages = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST;
+
+ pending_reqs = kmalloc(sizeof(pending_reqs[0]) *
+ blkif_reqs, GFP_KERNEL);
@@ -49015,9 +47331,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/blkback.c linux-2
+module_init(blkif_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/common.h linux-2.6.18-xen/drivers/xen/blkback/common.h
---- linux-2.6.18.1/drivers/xen/blkback/common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/common.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/common.h linux-2.6.18-xen/drivers/xen/blkback/common.h
+--- linux-2.6.18/drivers/xen/blkback/common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/common.h 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,133 @@
+/*
+ * This program is free software; you can redistribute it and/or
@@ -49152,9 +47468,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/common.h linux-2.
+int blkif_schedule(void *arg);
+
+#endif /* __BLKIF__BACKEND__COMMON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/interface.c linux-2.6.18-xen/drivers/xen/blkback/interface.c
---- linux-2.6.18.1/drivers/xen/blkback/interface.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/interface.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/interface.c linux-2.6.18-xen/drivers/xen/blkback/interface.c
+--- linux-2.6.18/drivers/xen/blkback/interface.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/interface.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,171 @@
+/******************************************************************************
+ * arch/xen/drivers/blkif/backend/interface.c
@@ -49327,16 +47643,16 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/interface.c linux
+ blkif_cachep = kmem_cache_create("blkif_cache", sizeof(blkif_t),
+ 0, 0, NULL, NULL);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/Makefile linux-2.6.18-xen/drivers/xen/blkback/Makefile
---- linux-2.6.18.1/drivers/xen/blkback/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/Makefile linux-2.6.18-xen/drivers/xen/blkback/Makefile
+--- linux-2.6.18/drivers/xen/blkback/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,3 @@
+obj-$(CONFIG_XEN_BLKDEV_BACKEND) := blkbk.o
+
+blkbk-y := blkback.o xenbus.o interface.o vbd.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/vbd.c linux-2.6.18-xen/drivers/xen/blkback/vbd.c
---- linux-2.6.18.1/drivers/xen/blkback/vbd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/vbd.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/vbd.c linux-2.6.18-xen/drivers/xen/blkback/vbd.c
+--- linux-2.6.18/drivers/xen/blkback/vbd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/vbd.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,119 @@
+/******************************************************************************
+ * blkback/vbd.c
@@ -49457,9 +47773,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/vbd.c linux-2.6.1
+ out:
+ return rc;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/xenbus.c linux-2.6.18-xen/drivers/xen/blkback/xenbus.c
---- linux-2.6.18.1/drivers/xen/blkback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkback/xenbus.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkback/xenbus.c linux-2.6.18-xen/drivers/xen/blkback/xenbus.c
+--- linux-2.6.18/drivers/xen/blkback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkback/xenbus.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,468 @@
+/* Xenbus code for blkif backend
+ Copyright (C) 2005 Rusty Russell <rusty@rustcorp.com.au>
@@ -49929,9 +48245,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkback/xenbus.c linux-2.
+{
+ xenbus_register_backend(&blkback);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/blkfront.c linux-2.6.18-xen/drivers/xen/blkfront/blkfront.c
---- linux-2.6.18.1/drivers/xen/blkfront/blkfront.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkfront/blkfront.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkfront/blkfront.c linux-2.6.18-xen/drivers/xen/blkfront/blkfront.c
+--- linux-2.6.18/drivers/xen/blkfront/blkfront.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkfront/blkfront.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,846 @@
+/******************************************************************************
+ * blkfront.c
@@ -50208,7 +48524,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/blkfront.c linux
+ xenbus_dev_fatal(dev, -ENODEV, "bdget failed");
+
+ mutex_lock(&bd->bd_mutex);
-+ if (info->users > 0)
++ if (info->users > 0 && system_state == SYSTEM_RUNNING)
+ xenbus_dev_error(dev, -EBUSY,
+ "Device in use; refusing to close");
+ else
@@ -50779,9 +49095,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/blkfront.c linux
+module_exit(xlblk_exit);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/block.h linux-2.6.18-xen/drivers/xen/blkfront/block.h
---- linux-2.6.18.1/drivers/xen/blkfront/block.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkfront/block.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkfront/block.h linux-2.6.18-xen/drivers/xen/blkfront/block.h
+--- linux-2.6.18/drivers/xen/blkfront/block.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkfront/block.h 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,154 @@
+/******************************************************************************
+ * block.h
@@ -50937,9 +49253,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/block.h linux-2.
+void xlvbd_del(struct blkfront_info *info);
+
+#endif /* __XEN_DRIVERS_BLOCK_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/Kconfig linux-2.6.18-xen/drivers/xen/blkfront/Kconfig
---- linux-2.6.18.1/drivers/xen/blkfront/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkfront/Kconfig 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkfront/Kconfig linux-2.6.18-xen/drivers/xen/blkfront/Kconfig
+--- linux-2.6.18/drivers/xen/blkfront/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkfront/Kconfig 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,6 @@
+
+config XENBLOCK
@@ -50947,18 +49263,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/Kconfig linux-2.
+ depends on ARCH_XEN
+ help
+ Block device driver for Xen
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/Makefile linux-2.6.18-xen/drivers/xen/blkfront/Makefile
---- linux-2.6.18.1/drivers/xen/blkfront/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkfront/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkfront/Makefile linux-2.6.18-xen/drivers/xen/blkfront/Makefile
+--- linux-2.6.18/drivers/xen/blkfront/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkfront/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,5 @@
+
+obj-$(CONFIG_XEN_BLKDEV_FRONTEND) := xenblk.o
+
+xenblk-objs := blkfront.o vbd.o
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/vbd.c linux-2.6.18-xen/drivers/xen/blkfront/vbd.c
---- linux-2.6.18.1/drivers/xen/blkfront/vbd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blkfront/vbd.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blkfront/vbd.c linux-2.6.18-xen/drivers/xen/blkfront/vbd.c
+--- linux-2.6.18/drivers/xen/blkfront/vbd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blkfront/vbd.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,318 @@
+/******************************************************************************
+ * vbd.c
@@ -51278,9 +49594,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blkfront/vbd.c linux-2.6.
+ blk_cleanup_queue(info->rq);
+ info->rq = NULL;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/blktapmain.c linux-2.6.18-xen/drivers/xen/blktap/blktapmain.c
---- linux-2.6.18.1/drivers/xen/blktap/blktapmain.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blktap/blktapmain.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blktap/blktap.c linux-2.6.18-xen/drivers/xen/blktap/blktap.c
+--- linux-2.6.18/drivers/xen/blktap/blktap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blktap/blktap.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,1393 @@
+/******************************************************************************
+ * drivers/xen/blktap/blktap.c
@@ -52675,9 +50991,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/blktapmain.c linux
+module_init(blkif_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/common.h linux-2.6.18-xen/drivers/xen/blktap/common.h
---- linux-2.6.18.1/drivers/xen/blktap/common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blktap/common.h 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blktap/common.h linux-2.6.18-xen/drivers/xen/blktap/common.h
+--- linux-2.6.18/drivers/xen/blktap/common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blktap/common.h 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,120 @@
+/*
+ * This program is free software; you can redistribute it and/or
@@ -52799,9 +51115,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/common.h linux-2.6
+void signal_tapdisk(int idx);
+
+#endif /* __BLKIF__BACKEND__COMMON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/interface.c linux-2.6.18-xen/drivers/xen/blktap/interface.c
---- linux-2.6.18.1/drivers/xen/blktap/interface.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blktap/interface.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blktap/interface.c linux-2.6.18-xen/drivers/xen/blktap/interface.c
+--- linux-2.6.18/drivers/xen/blktap/interface.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blktap/interface.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,164 @@
+/******************************************************************************
+ * drivers/xen/blktap/interface.c
@@ -52967,19 +51283,16 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/interface.c linux-
+ blkif_cachep = kmem_cache_create("blktapif_cache", sizeof(blkif_t),
+ 0, 0, NULL, NULL);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/Makefile linux-2.6.18-xen/drivers/xen/blktap/Makefile
---- linux-2.6.18.1/drivers/xen/blktap/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blktap/Makefile 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,6 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blktap/Makefile linux-2.6.18-xen/drivers/xen/blktap/Makefile
+--- linux-2.6.18/drivers/xen/blktap/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blktap/Makefile 2006-11-19 14:26:55.000000000 +0100
+@@ -0,0 +1,3 @@
+LINUXINCLUDE += -I../xen/include/public/io
++obj-y := xenbus.o interface.o blktap.o
+
-+obj-$(CONFIG_XEN_BLKDEV_TAP) := blktap.o
-+
-+blktap-y := xenbus.o interface.o blktapmain.o
-+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/xenbus.c linux-2.6.18-xen/drivers/xen/blktap/xenbus.c
---- linux-2.6.18.1/drivers/xen/blktap/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/blktap/xenbus.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/blktap/xenbus.c linux-2.6.18-xen/drivers/xen/blktap/xenbus.c
+--- linux-2.6.18/drivers/xen/blktap/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/blktap/xenbus.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,366 @@
+/* drivers/xen/blktap/xenbus.c
+ *
@@ -53347,15 +51660,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/blktap/xenbus.c linux-2.6
+{
+ xenbus_register_backend(&blktap);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/char/Makefile linux-2.6.18-xen/drivers/xen/char/Makefile
---- linux-2.6.18.1/drivers/xen/char/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/char/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/char/Makefile linux-2.6.18-xen/drivers/xen/char/Makefile
+--- linux-2.6.18/drivers/xen/char/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/char/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,2 @@
+
+obj-y := mem.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/char/mem.c linux-2.6.18-xen/drivers/xen/char/mem.c
---- linux-2.6.18.1/drivers/xen/char/mem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/char/mem.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/char/mem.c linux-2.6.18-xen/drivers/xen/char/mem.c
+--- linux-2.6.18/drivers/xen/char/mem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/char/mem.c 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,180 @@
+/*
+ * Originally from linux/drivers/char/mem.c
@@ -53537,9 +51850,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/char/mem.c linux-2.6.18-x
+ .mmap = mmap_mem,
+ .open = open_mem,
+};
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/console/console.c linux-2.6.18-xen/drivers/xen/console/console.c
---- linux-2.6.18.1/drivers/xen/console/console.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/console/console.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/console/console.c linux-2.6.18-xen/drivers/xen/console/console.c
+--- linux-2.6.18/drivers/xen/console/console.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/console/console.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,688 @@
+/******************************************************************************
+ * console.c
@@ -54229,15 +52542,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/console/console.c linux-2
+module_init(xencons_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/console/Makefile linux-2.6.18-xen/drivers/xen/console/Makefile
---- linux-2.6.18.1/drivers/xen/console/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/console/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/console/Makefile linux-2.6.18-xen/drivers/xen/console/Makefile
+--- linux-2.6.18/drivers/xen/console/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/console/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,2 @@
+
+obj-y := console.o xencons_ring.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/console/xencons_ring.c linux-2.6.18-xen/drivers/xen/console/xencons_ring.c
---- linux-2.6.18.1/drivers/xen/console/xencons_ring.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/console/xencons_ring.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/console/xencons_ring.c linux-2.6.18-xen/drivers/xen/console/xencons_ring.c
+--- linux-2.6.18/drivers/xen/console/xencons_ring.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/console/xencons_ring.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,143 @@
+/*
+ * This program is free software; you can redistribute it and/or
@@ -54382,9 +52695,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/console/xencons_ring.c li
+{
+ (void)xencons_ring_init();
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/cpu_hotplug.c linux-2.6.18-xen/drivers/xen/core/cpu_hotplug.c
---- linux-2.6.18.1/drivers/xen/core/cpu_hotplug.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/cpu_hotplug.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/cpu_hotplug.c linux-2.6.18-xen/drivers/xen/core/cpu_hotplug.c
+--- linux-2.6.18/drivers/xen/core/cpu_hotplug.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/cpu_hotplug.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,188 @@
+
+#include <linux/init.h>
@@ -54574,9 +52887,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/cpu_hotplug.c linux-
+{
+ xenbus_allowed_cpumask = cpu_present_map;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/evtchn.c linux-2.6.18-xen/drivers/xen/core/evtchn.c
---- linux-2.6.18.1/drivers/xen/core/evtchn.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/evtchn.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/evtchn.c linux-2.6.18-xen/drivers/xen/core/evtchn.c
+--- linux-2.6.18/drivers/xen/core/evtchn.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/evtchn.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,868 @@
+/******************************************************************************
+ * evtchn.c
@@ -55446,9 +53759,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/evtchn.c linux-2.6.1
+ irq_desc[pirq_to_irq(i)].chip = &pirq_type;
+ }
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/features.c linux-2.6.18-xen/drivers/xen/core/features.c
---- linux-2.6.18.1/drivers/xen/core/features.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/features.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/features.c linux-2.6.18-xen/drivers/xen/core/features.c
+--- linux-2.6.18/drivers/xen/core/features.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/features.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,30 @@
+/******************************************************************************
+ * features.c
@@ -55480,9 +53793,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/features.c linux-2.6
+ xen_features[i*32+j] = !!(fi.submap & 1<<j);
+ }
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/gnttab.c linux-2.6.18-xen/drivers/xen/core/gnttab.c
---- linux-2.6.18.1/drivers/xen/core/gnttab.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/gnttab.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/gnttab.c linux-2.6.18-xen/drivers/xen/core/gnttab.c
+--- linux-2.6.18/drivers/xen/core/gnttab.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/gnttab.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,483 @@
+/******************************************************************************
+ * gnttab.c
@@ -55967,9 +54280,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/gnttab.c linux-2.6.1
+#ifdef CONFIG_XEN
+core_initcall(gnttab_init);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/hypervisor_sysfs.c linux-2.6.18-xen/drivers/xen/core/hypervisor_sysfs.c
---- linux-2.6.18.1/drivers/xen/core/hypervisor_sysfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/hypervisor_sysfs.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/hypervisor_sysfs.c linux-2.6.18-xen/drivers/xen/core/hypervisor_sysfs.c
+--- linux-2.6.18/drivers/xen/core/hypervisor_sysfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/hypervisor_sysfs.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,59 @@
+/*
+ * copyright (c) 2006 IBM Corporation
@@ -56030,9 +54343,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/hypervisor_sysfs.c l
+
+device_initcall(hypervisor_subsys_init);
+EXPORT_SYMBOL_GPL(hypervisor_subsys);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/Makefile linux-2.6.18-xen/drivers/xen/core/Makefile
---- linux-2.6.18.1/drivers/xen/core/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/Makefile linux-2.6.18-xen/drivers/xen/core/Makefile
+--- linux-2.6.18/drivers/xen/core/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,13 @@
+#
+# Makefile for the linux kernel.
@@ -56047,9 +54360,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/Makefile linux-2.6.1
+obj-$(CONFIG_XEN_SKBUFF) += skbuff.o
+obj-$(CONFIG_XEN_REBOOT) += reboot.o
+obj-$(CONFIG_XEN_SMPBOOT) += smpboot.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/reboot.c linux-2.6.18-xen/drivers/xen/core/reboot.c
---- linux-2.6.18.1/drivers/xen/core/reboot.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/reboot.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/reboot.c linux-2.6.18-xen/drivers/xen/core/reboot.c
+--- linux-2.6.18/drivers/xen/core/reboot.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/reboot.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,384 @@
+#define __KERNEL_SYSCALLS__
+#include <linux/version.h>
@@ -56435,9 +54748,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/reboot.c linux-2.6.1
+}
+
+subsys_initcall(setup_shutdown_event);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/skbuff.c linux-2.6.18-xen/drivers/xen/core/skbuff.c
---- linux-2.6.18.1/drivers/xen/core/skbuff.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/skbuff.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/skbuff.c linux-2.6.18-xen/drivers/xen/core/skbuff.c
+--- linux-2.6.18/drivers/xen/core/skbuff.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/skbuff.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,144 @@
+
+#include <linux/module.h>
@@ -56583,9 +54896,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/skbuff.c linux-2.6.1
+core_initcall(skbuff_init);
+
+EXPORT_SYMBOL(__dev_alloc_skb);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/smpboot.c linux-2.6.18-xen/drivers/xen/core/smpboot.c
---- linux-2.6.18.1/drivers/xen/core/smpboot.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/smpboot.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/smpboot.c linux-2.6.18-xen/drivers/xen/core/smpboot.c
+--- linux-2.6.18/drivers/xen/core/smpboot.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/smpboot.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,429 @@
+/*
+ * Xen SMP booting functions
@@ -57016,9 +55329,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/smpboot.c linux-2.6.
+ return -EINVAL;
+}
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/xen_proc.c linux-2.6.18-xen/drivers/xen/core/xen_proc.c
---- linux-2.6.18.1/drivers/xen/core/xen_proc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/xen_proc.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/xen_proc.c linux-2.6.18-xen/drivers/xen/core/xen_proc.c
+--- linux-2.6.18/drivers/xen/core/xen_proc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/xen_proc.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,18 @@
+
+#include <linux/proc_fs.h>
@@ -57038,9 +55351,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/xen_proc.c linux-2.6
+{
+ remove_proc_entry(name, xen_base);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/xen_sysfs.c linux-2.6.18-xen/drivers/xen/core/xen_sysfs.c
---- linux-2.6.18.1/drivers/xen/core/xen_sysfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/core/xen_sysfs.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/core/xen_sysfs.c linux-2.6.18-xen/drivers/xen/core/xen_sysfs.c
+--- linux-2.6.18/drivers/xen/core/xen_sysfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/core/xen_sysfs.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,378 @@
+/*
+ * copyright (c) 2006 IBM Corporation
@@ -57420,9 +55733,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/core/xen_sysfs.c linux-2.
+
+module_init(hyper_sysfs_init);
+module_exit(hyper_sysfs_exit);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/evtchn/evtchn.c linux-2.6.18-xen/drivers/xen/evtchn/evtchn.c
---- linux-2.6.18.1/drivers/xen/evtchn/evtchn.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/evtchn/evtchn.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/evtchn/evtchn.c linux-2.6.18-xen/drivers/xen/evtchn/evtchn.c
+--- linux-2.6.18/drivers/xen/evtchn/evtchn.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/evtchn/evtchn.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,456 @@
+/******************************************************************************
+ * evtchn.c
@@ -57880,15 +56193,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/evtchn/evtchn.c linux-2.6
+module_exit(evtchn_cleanup);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/evtchn/Makefile linux-2.6.18-xen/drivers/xen/evtchn/Makefile
---- linux-2.6.18.1/drivers/xen/evtchn/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/evtchn/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/evtchn/Makefile linux-2.6.18-xen/drivers/xen/evtchn/Makefile
+--- linux-2.6.18/drivers/xen/evtchn/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/evtchn/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,2 @@
+
+obj-y := evtchn.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/Kconfig linux-2.6.18-xen/drivers/xen/Kconfig
---- linux-2.6.18.1/drivers/xen/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/Kconfig 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/Kconfig linux-2.6.18-xen/drivers/xen/Kconfig
+--- linux-2.6.18/drivers/xen/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/Kconfig 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,260 @@
+#
+# This Kconfig describe xen options
@@ -58150,9 +56463,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/Kconfig linux-2.6.18-xen/
+ depends on SMP
+
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/Makefile linux-2.6.18-xen/drivers/xen/Makefile
---- linux-2.6.18.1/drivers/xen/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/Makefile linux-2.6.18-xen/drivers/xen/Makefile
+--- linux-2.6.18/drivers/xen/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/Makefile 2006-11-19 14:26:55.000000000 +0100
@@ -0,0 +1,17 @@
+obj-y += core/
+obj-y += console/
@@ -58171,9 +56484,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/Makefile linux-2.6.18-xen
+obj-$(CONFIG_XEN_NETDEV_FRONTEND) += netfront/
+obj-$(CONFIG_XEN_PCIDEV_BACKEND) += pciback/
+obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += pcifront/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/common.h linux-2.6.18-xen/drivers/xen/netback/common.h
---- linux-2.6.18.1/drivers/xen/netback/common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/common.h 2006-10-19 11:01:25.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/common.h linux-2.6.18-xen/drivers/xen/netback/common.h
+--- linux-2.6.18/drivers/xen/netback/common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/common.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,141 @@
+/******************************************************************************
+ * arch/xen/drivers/netif/backend/common.h
@@ -58283,7 +56596,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/common.h linux-2.
+
+void netif_disconnect(netif_t *netif);
+
-+netif_t *netif_alloc(domid_t domid, unsigned int handle);
++netif_t *netif_alloc(domid_t domid, unsigned int handle, u8 be_mac[ETH_ALEN]);
+int netif_map(netif_t *netif, unsigned long tx_ring_ref,
+ unsigned long rx_ring_ref, unsigned int evtchn);
+
@@ -58316,10 +56629,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/common.h linux-2.
+}
+
+#endif /* __NETIF__BACKEND__COMMON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/interface.c linux-2.6.18-xen/drivers/xen/netback/interface.c
---- linux-2.6.18.1/drivers/xen/netback/interface.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/interface.c 2006-10-19 11:01:25.000000000 +0200
-@@ -0,0 +1,352 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/interface.c linux-2.6.18-xen/drivers/xen/netback/interface.c
+--- linux-2.6.18/drivers/xen/netback/interface.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/interface.c 2006-11-19 14:26:56.000000000 +0100
+@@ -0,0 +1,357 @@
+/******************************************************************************
+ * arch/xen/drivers/netif/backend/interface.c
+ *
@@ -58448,7 +56761,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/interface.c linux
+ .get_link = ethtool_op_get_link,
+};
+
-+netif_t *netif_alloc(domid_t domid, unsigned int handle)
++netif_t *netif_alloc(domid_t domid, unsigned int handle, u8 be_mac[ETH_ALEN])
+{
+ int err = 0, i;
+ struct net_device *dev;
@@ -58475,7 +56788,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/interface.c linux
+ netif->credit_bytes = netif->remaining_credit = ~0UL;
+ netif->credit_usec = 0UL;
+ init_timer(&netif->credit_timeout);
-+ netif->credit_timeout.expires = jiffies;
+
+ dev->hard_start_xmit = netif_be_start_xmit;
+ dev->get_stats = netif_be_get_stats;
@@ -58491,14 +56803,20 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/interface.c linux
+ printk(KERN_WARNING "netbk: WARNING: device '%s' has non-zero "
+ "queue length (%lu)!\n", dev->name, dev->tx_queue_len);
+
-+ /*
-+ * Initialise a dummy MAC address. We choose the numerically
-+ * largest non-broadcast address to prevent the address getting
-+ * stolen by an Ethernet bridge for STP purposes.
-+ * (FE:FF:FF:FF:FF:FF)
-+ */
-+ memset(dev->dev_addr, 0xFF, ETH_ALEN);
-+ dev->dev_addr[0] &= ~0x01;
++ for (i = 0; i < ETH_ALEN; i++)
++ if (be_mac[i] != 0)
++ break;
++ if (i == ETH_ALEN) {
++ /*
++ * Initialise a dummy MAC address. We choose the numerically
++ * largest non-broadcast address to prevent the address getting
++ * stolen by an Ethernet bridge for STP purposes.
++ * (FE:FF:FF:FF:FF:FF)
++ */
++ memset(dev->dev_addr, 0xFF, ETH_ALEN);
++ dev->dev_addr[0] &= ~0x01;
++ } else
++ memcpy(dev->dev_addr, be_mac, ETH_ALEN);
+
+ rtnl_lock();
+ err = register_netdevice(dev);
@@ -58672,9 +56990,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/interface.c linux
+ }
+ netif_free(netif);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/loopback.c linux-2.6.18-xen/drivers/xen/netback/loopback.c
---- linux-2.6.18.1/drivers/xen/netback/loopback.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/loopback.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/loopback.c linux-2.6.18-xen/drivers/xen/netback/loopback.c
+--- linux-2.6.18/drivers/xen/netback/loopback.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/loopback.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,320 @@
+/******************************************************************************
+ * netback/loopback.c
@@ -58996,19 +57314,19 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/loopback.c linux-
+module_exit(loopback_exit);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/Makefile linux-2.6.18-xen/drivers/xen/netback/Makefile
---- linux-2.6.18.1/drivers/xen/netback/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/Makefile linux-2.6.18-xen/drivers/xen/netback/Makefile
+--- linux-2.6.18/drivers/xen/netback/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,5 @@
+obj-$(CONFIG_XEN_NETDEV_BACKEND) := netbk.o
+obj-$(CONFIG_XEN_NETDEV_LOOPBACK) += netloop.o
+
+netbk-y := netback.o xenbus.o interface.o
+netloop-y := loopback.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2.6.18-xen/drivers/xen/netback/netback.c
---- linux-2.6.18.1/drivers/xen/netback/netback.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/netback.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,1509 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/netback.c linux-2.6.18-xen/drivers/xen/netback/netback.c
+--- linux-2.6.18/drivers/xen/netback/netback.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/netback.c 2006-11-19 14:26:56.000000000 +0100
+@@ -0,0 +1,1485 @@
+/******************************************************************************
+ * drivers/xen/netback/netback.c
+ *
@@ -59090,7 +57408,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+
+#define PKT_PROT_LEN 64
+
-+static struct pending_tx_info {
++static struct {
+ netif_tx_request_t req;
+ netif_t *netif;
+} pending_tx_info[MAX_PENDING_REQS];
@@ -59386,22 +57704,14 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ flipped. */
+ meta->copy = 1;
+ copy_gop = npo->copy + npo->copy_prod++;
-+ copy_gop->flags = GNTCOPY_dest_gref;
-+ if (PageForeign(page)) {
-+ struct pending_tx_info *src_pend =
-+ &pending_tx_info[page->index];
-+ copy_gop->source.domid = src_pend->netif->domid;
-+ copy_gop->source.u.ref = src_pend->req.gref;
-+ copy_gop->flags |= GNTCOPY_source_gref;
-+ } else {
-+ copy_gop->source.domid = DOMID_SELF;
-+ copy_gop->source.u.gmfn = old_mfn;
-+ }
++ copy_gop->source.domid = DOMID_SELF;
+ copy_gop->source.offset = offset;
++ copy_gop->source.u.gmfn = old_mfn;
+ copy_gop->dest.domid = netif->domid;
+ copy_gop->dest.offset = 0;
+ copy_gop->dest.u.ref = req->gref;
+ copy_gop->len = size;
++ copy_gop->flags = GNTCOPY_dest_gref;
+ } else {
+ meta->copy = 0;
+ if (!xen_feature(XENFEAT_auto_translated_physmap)) {
@@ -59813,27 +58123,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+}
+
+
-+static void tx_add_credit(netif_t *netif)
-+{
-+ unsigned long max_burst;
-+
-+ /*
-+ * Allow a burst big enough to transmit a jumbo packet of up to 128kB.
-+ * Otherwise the interface can seize up due to insufficient credit.
-+ */
-+ max_burst = RING_GET_REQUEST(&netif->tx, netif->tx.req_cons)->size;
-+ max_burst = min(max_burst, 131072UL);
-+ max_burst = max(max_burst, netif->credit_bytes);
-+
-+ netif->remaining_credit = min(netif->remaining_credit +
-+ netif->credit_bytes,
-+ max_burst);
-+}
-+
+static void tx_credit_callback(unsigned long data)
+{
+ netif_t *netif = (netif_t *)data;
-+ tx_add_credit(netif);
++ netif->remaining_credit = netif->credit_bytes;
+ netif_schedule_work(netif);
+}
+
@@ -59895,28 +58188,20 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ netif_put(netif);
+}
+
-+static int netbk_count_requests(netif_t *netif, netif_tx_request_t *first,
-+ netif_tx_request_t *txp, int work_to_do)
++static int netbk_count_requests(netif_t *netif, netif_tx_request_t *txp,
++ int work_to_do)
+{
++ netif_tx_request_t *first = txp;
+ RING_IDX cons = netif->tx.req_cons;
+ int frags = 0;
+
-+ if (!(first->flags & NETTXF_more_data))
-+ return 0;
-+
-+ do {
++ while (txp->flags & NETTXF_more_data) {
+ if (frags >= work_to_do) {
+ DPRINTK("Need more frags\n");
+ return -frags;
+ }
+
-+ if (unlikely(frags >= MAX_SKB_FRAGS)) {
-+ DPRINTK("Too many frags\n");
-+ return -frags;
-+ }
-+
-+ memcpy(txp, RING_GET_REQUEST(&netif->tx, cons + frags),
-+ sizeof(*txp));
++ txp = RING_GET_REQUEST(&netif->tx, cons + frags);
+ if (txp->size > first->size) {
+ DPRINTK("Frags galore\n");
+ return -frags;
@@ -59930,25 +58215,27 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ txp->offset, txp->size);
+ return -frags;
+ }
-+ } while ((txp++)->flags & NETTXF_more_data);
++ }
+
+ return frags;
+}
+
+static gnttab_map_grant_ref_t *netbk_get_requests(netif_t *netif,
+ struct sk_buff *skb,
-+ netif_tx_request_t *txp,
+ gnttab_map_grant_ref_t *mop)
+{
+ struct skb_shared_info *shinfo = skb_shinfo(skb);
+ skb_frag_t *frags = shinfo->frags;
++ netif_tx_request_t *txp;
+ unsigned long pending_idx = *((u16 *)skb->data);
++ RING_IDX cons = netif->tx.req_cons;
+ int i, start;
+
+ /* Skip first skb fragment if it is on same page as header fragment. */
+ start = ((unsigned long)shinfo->frags[0].page == pending_idx);
+
-+ for (i = start; i < shinfo->nr_frags; i++, txp++) {
++ for (i = start; i < shinfo->nr_frags; i++) {
++ txp = RING_GET_REQUEST(&netif->tx, cons++);
+ pending_idx = pending_ring[MASK_PEND_IDX(pending_cons++)];
+
+ gnttab_set_map_op(mop++, idx_to_kaddr(pending_idx),
@@ -60062,7 +58349,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+int netbk_get_extras(netif_t *netif, struct netif_extra_info *extras,
+ int work_to_do)
+{
-+ struct netif_extra_info extra;
++ struct netif_extra_info *extra;
+ RING_IDX cons = netif->tx.req_cons;
+
+ do {
@@ -60071,18 +58358,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ return -EBADR;
+ }
+
-+ memcpy(&extra, RING_GET_REQUEST(&netif->tx, cons),
-+ sizeof(extra));
-+ if (unlikely(!extra.type ||
-+ extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) {
++ extra = (struct netif_extra_info *)
++ RING_GET_REQUEST(&netif->tx, cons);
++ if (unlikely(!extra->type ||
++ extra->type >= XEN_NETIF_EXTRA_TYPE_MAX)) {
+ netif->tx.req_cons = ++cons;
-+ DPRINTK("Invalid extra type: %d\n", extra.type);
++ DPRINTK("Invalid extra type: %d\n", extra->type);
+ return -EINVAL;
+ }
+
-+ memcpy(&extras[extra.type - 1], &extra, sizeof(extra));
++ memcpy(&extras[extra->type - 1], extra, sizeof(*extra));
+ netif->tx.req_cons = ++cons;
-+ } while (extra.flags & XEN_NETIF_EXTRA_FLAG_MORE);
++ } while (extra->flags & XEN_NETIF_EXTRA_FLAG_MORE);
+
+ return work_to_do;
+}
@@ -60117,7 +58404,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ struct sk_buff *skb;
+ netif_t *netif;
+ netif_tx_request_t txreq;
-+ netif_tx_request_t txfrags[MAX_SKB_FRAGS];
+ struct netif_extra_info extras[XEN_NETIF_EXTRA_TYPE_MAX - 1];
+ u16 pending_idx;
+ RING_IDX i;
@@ -60163,11 +58449,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ /* Passed the point where we can replenish credit? */
+ if (time_after_eq(now, next_credit)) {
+ netif->credit_timeout.expires = now;
-+ tx_add_credit(netif);
++ netif->remaining_credit = netif->credit_bytes;
+ }
+
+ /* Still too big to send right now? Set a callback. */
+ if (txreq.size > netif->remaining_credit) {
++ netif->remaining_credit = 0;
+ netif->credit_timeout.data =
+ (unsigned long)netif;
+ netif->credit_timeout.function =
@@ -60194,13 +58481,19 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+ }
+ }
+
-+ ret = netbk_count_requests(netif, &txreq, txfrags, work_to_do);
++ ret = netbk_count_requests(netif, &txreq, work_to_do);
+ if (unlikely(ret < 0)) {
+ netbk_tx_err(netif, &txreq, i - ret);
+ continue;
+ }
+ i += ret;
+
++ if (unlikely(ret > MAX_SKB_FRAGS)) {
++ DPRINTK("Too many frags\n");
++ netbk_tx_err(netif, &txreq, i);
++ continue;
++ }
++
+ if (unlikely(txreq.size < ETH_HLEN)) {
+ DPRINTK("Bad packet size: %d\n", txreq.size);
+ netbk_tx_err(netif, &txreq, i);
@@ -60269,7 +58562,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+
+ pending_cons++;
+
-+ mop = netbk_get_requests(netif, skb, txfrags, mop);
++ mop = netbk_get_requests(netif, skb, mop);
+
+ netif->tx.req_cons = i;
+ netif_schedule_work(netif);
@@ -60359,6 +58652,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+{
+ /* Ready for next use. */
+ init_page_count(page);
++
+ netif_idx_release(page->index);
+}
+
@@ -60518,10 +58812,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/netback.c linux-2
+module_init(netback_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.6.18-xen/drivers/xen/netback/xenbus.c
---- linux-2.6.18.1/drivers/xen/netback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netback/xenbus.c 2006-10-19 11:01:25.000000000 +0200
-@@ -0,0 +1,438 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netback/xenbus.c linux-2.6.18-xen/drivers/xen/netback/xenbus.c
+--- linux-2.6.18/drivers/xen/netback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netback/xenbus.c 2006-11-19 14:26:56.000000000 +0100
+@@ -0,0 +1,479 @@
+/* Xenbus code for netif backend
+ Copyright (C) 2005 Rusty Russell <rusty@rustcorp.com.au>
+ Copyright (C) 2005 XenSource Ltd
@@ -60552,20 +58846,29 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+ printk("netback/xenbus (%s:%d) " fmt ".\n", __FUNCTION__, __LINE__, ##args)
+#endif
+
-+struct backend_info {
++struct backend_info
++{
+ struct xenbus_device *dev;
+ netif_t *netif;
++ struct xenbus_watch backend_watch;
+ enum xenbus_state frontend_state;
+};
+
+static int connect_rings(struct backend_info *);
+static void connect(struct backend_info *);
-+static void backend_create_netif(struct backend_info *be);
++static void maybe_connect(struct backend_info *);
++static void backend_changed(struct xenbus_watch *, const char **,
++ unsigned int);
+
+static int netback_remove(struct xenbus_device *dev)
+{
+ struct backend_info *be = dev->dev.driver_data;
+
++ if (be->backend_watch.node) {
++ unregister_xenbus_watch(&be->backend_watch);
++ kfree(be->backend_watch.node);
++ be->backend_watch.node = NULL;
++ }
+ if (be->netif) {
+ netif_disconnect(be->netif);
+ be->netif = NULL;
@@ -60578,7 +58881,8 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+
+/**
+ * Entry point to this code when a new device is created. Allocate the basic
-+ * structures and switch to InitWait.
++ * structures, and watch the store waiting for the hotplug scripts to tell us
++ * the device's handle. Switch to InitWait.
+ */
+static int netback_probe(struct xenbus_device *dev,
+ const struct xenbus_device_id *id)
@@ -60597,6 +58901,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+ be->dev = dev;
+ dev->dev.driver_data = be;
+
++ err = xenbus_watch_path2(dev, dev->nodename, "handle",
++ &be->backend_watch, backend_changed);
++ if (err)
++ goto fail;
++
+ do {
+ err = xenbus_transaction_start(&xbt);
+ if (err) {
@@ -60617,8 +58926,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+ goto abort_transaction;
+ }
+
-+ err = xenbus_printf(xbt, dev->nodename,
-+ "feature-rx-copy", "%d", 1);
++ err = xenbus_printf(xbt, dev->nodename, "feature-rx-copy", "%d", 1);
+ if (err) {
+ message = "writing feature-copying";
+ goto abort_transaction;
@@ -60633,11 +58941,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+ }
+
+ err = xenbus_switch_state(dev, XenbusStateInitWait);
-+ if (err)
++ if (err) {
+ goto fail;
-+
-+ /* This kicks hotplug scripts, so do it immediately. */
-+ backend_create_netif(be);
++ }
+
+ return 0;
+
@@ -60687,30 +58993,48 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+}
+
+
-+static void backend_create_netif(struct backend_info *be)
++/**
++ * Callback received when the hotplug scripts have placed the handle node.
++ * Read it, and create a netif structure. If the frontend is ready, connect.
++ */
++static void backend_changed(struct xenbus_watch *watch,
++ const char **vec, unsigned int len)
+{
+ int err;
+ long handle;
++ struct backend_info *be
++ = container_of(watch, struct backend_info, backend_watch);
+ struct xenbus_device *dev = be->dev;
+
-+ if (be->netif != NULL)
-+ return;
++ DPRINTK("");
+
+ err = xenbus_scanf(XBT_NIL, dev->nodename, "handle", "%li", &handle);
++ if (XENBUS_EXIST_ERR(err)) {
++ /* Since this watch will fire once immediately after it is
++ registered, we expect this. Ignore it, and wait for the
++ hotplug scripts. */
++ return;
++ }
+ if (err != 1) {
+ xenbus_dev_fatal(dev, err, "reading handle");
+ return;
+ }
+
-+ be->netif = netif_alloc(dev->otherend_id, handle);
-+ if (IS_ERR(be->netif)) {
-+ err = PTR_ERR(be->netif);
-+ be->netif = NULL;
-+ xenbus_dev_fatal(dev, err, "creating interface");
-+ return;
-+ }
++ if (be->netif == NULL) {
++ u8 be_mac[ETH_ALEN] = { 0, 0, 0, 0, 0, 0 };
+
-+ kobject_uevent(&dev->dev.kobj, KOBJ_ONLINE);
++ be->netif = netif_alloc(dev->otherend_id, handle, be_mac);
++ if (IS_ERR(be->netif)) {
++ err = PTR_ERR(be->netif);
++ be->netif = NULL;
++ xenbus_dev_fatal(dev, err, "creating interface");
++ return;
++ }
++
++ kobject_uevent(&dev->dev.kobj, KOBJ_ONLINE);
++
++ maybe_connect(be);
++ }
+}
+
+
@@ -60743,9 +59067,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+ break;
+
+ case XenbusStateConnected:
-+ backend_create_netif(be);
-+ if (be->netif)
-+ connect(be);
++ if (!be->netif) {
++ /* reconnect: setup be->netif */
++ backend_changed(&be->backend_watch, NULL, 0);
++ }
++ maybe_connect(be);
+ break;
+
+ case XenbusStateClosing:
@@ -60771,6 +59097,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+}
+
+
++/* ** Connection ** */
++
++
++static void maybe_connect(struct backend_info *be)
++{
++ if (be->netif && (be->frontend_state == XenbusStateConnected))
++ connect(be);
++}
++
+static void xen_net_read_rate(struct xenbus_device *dev,
+ unsigned long *bytes, unsigned long *usec)
+{
@@ -60960,9 +59295,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netback/xenbus.c linux-2.
+{
+ xenbus_register_backend(&netback);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/Kconfig linux-2.6.18-xen/drivers/xen/netfront/Kconfig
---- linux-2.6.18.1/drivers/xen/netfront/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netfront/Kconfig 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netfront/Kconfig linux-2.6.18-xen/drivers/xen/netfront/Kconfig
+--- linux-2.6.18/drivers/xen/netfront/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netfront/Kconfig 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,6 @@
+
+config XENNET
@@ -60970,17 +59305,17 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/Kconfig linux-2.
+ depends on NETDEVICES && ARCH_XEN
+ help
+ Network driver for Xen
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/Makefile linux-2.6.18-xen/drivers/xen/netfront/Makefile
---- linux-2.6.18.1/drivers/xen/netfront/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netfront/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netfront/Makefile linux-2.6.18-xen/drivers/xen/netfront/Makefile
+--- linux-2.6.18/drivers/xen/netfront/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netfront/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,4 @@
+
+obj-$(CONFIG_XEN_NETDEV_FRONTEND) := xennet.o
+
+xennet-objs := netfront.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux-2.6.18-xen/drivers/xen/netfront/netfront.c
---- linux-2.6.18.1/drivers/xen/netfront/netfront.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/netfront/netfront.c 2006-10-19 11:01:25.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/netfront/netfront.c linux-2.6.18-xen/drivers/xen/netfront/netfront.c
+--- linux-2.6.18/drivers/xen/netfront/netfront.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/netfront/netfront.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,2138 @@
+/******************************************************************************
+ * Virtual network driver for conversing with remote driver backends.
@@ -61125,6 +59460,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ spinlock_t tx_lock;
+ spinlock_t rx_lock;
+
++ unsigned int handle;
+ unsigned int evtchn, irq;
+ unsigned int copying_receiver;
+
@@ -61213,8 +59549,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+#define WPRINTK(fmt, args...) \
+ printk(KERN_WARNING "netfront: " fmt, ##args)
+
++static int talk_to_backend(struct xenbus_device *, struct netfront_info *);
+static int setup_device(struct xenbus_device *, struct netfront_info *);
-+static struct net_device *create_netdev(struct xenbus_device *);
++static struct net_device *create_netdev(int, int, struct xenbus_device *);
+
+static void netfront_closing(struct xenbus_device *);
+
@@ -61224,7 +59561,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+static void close_netdev(struct netfront_info *);
+static void netif_free(struct netfront_info *);
+
-+static int network_connect(struct net_device *);
++static void network_connect(struct net_device *);
+static void network_tx_buf_gc(struct net_device *);
+static void network_alloc_rx_buffers(struct net_device *);
+static int send_fake_arp(struct net_device *);
@@ -61247,7 +59584,8 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+/**
+ * Entry point to this code when a new device is created. Allocate the basic
+ * structures and the ring buffers for communication with the backend, and
-+ * inform the backend of the appropriate details for those.
++ * inform the backend of the appropriate details for those. Switch to
++ * Connected state.
+ */
+static int __devinit netfront_probe(struct xenbus_device *dev,
+ const struct xenbus_device_id *id)
@@ -61255,8 +59593,32 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ int err;
+ struct net_device *netdev;
+ struct netfront_info *info;
++ unsigned int handle, feature_rx_copy, feature_rx_flip, use_copy;
++
++ err = xenbus_scanf(XBT_NIL, dev->nodename, "handle", "%u", &handle);
++ if (err != 1) {
++ xenbus_dev_fatal(dev, err, "reading handle");
++ return err;
++ }
++
++ err = xenbus_scanf(XBT_NIL, dev->otherend, "feature-rx-copy", "%u",
++ &feature_rx_copy);
++ if (err != 1)
++ feature_rx_copy = 0;
++ err = xenbus_scanf(XBT_NIL, dev->otherend, "feature-rx-flip", "%u",
++ &feature_rx_flip);
++ if (err != 1)
++ feature_rx_flip = 1;
++
++ /*
++ * Copy packets on receive path if:
++ * (a) This was requested by user, and the backend supports it; or
++ * (b) Flipping was requested, but this is unsupported by the backend.
++ */
++ use_copy = (MODPARM_rx_copy && feature_rx_copy) ||
++ (MODPARM_rx_flip && !feature_rx_flip);
+
-+ netdev = create_netdev(dev);
++ netdev = create_netdev(handle, use_copy, dev);
+ if (IS_ERR(netdev)) {
+ err = PTR_ERR(netdev);
+ xenbus_dev_fatal(dev, err, "creating netdev");
@@ -61266,13 +59628,23 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ info = netdev_priv(netdev);
+ dev->dev.driver_data = info;
+
++ err = talk_to_backend(dev, info);
++ if (err)
++ goto fail_backend;
++
+ err = open_netdev(info);
+ if (err)
-+ goto fail;
++ goto fail_open;
++
++ IPRINTK("Created netdev %s with %sing receive path.\n",
++ netdev->name, info->copying_receiver ? "copy" : "flipp");
+
+ return 0;
+
-+ fail:
++ fail_open:
++ xennet_sysfs_delif(info->netdev);
++ unregister_netdev(netdev);
++ fail_backend:
+ free_netdev(netdev);
+ dev->dev.driver_data = NULL;
+ return err;
@@ -61292,7 +59664,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ DPRINTK("%s\n", dev->nodename);
+
+ netif_disconnect_backend(info);
-+ return 0;
++ return talk_to_backend(dev, info);
+}
+
+static int xen_net_read_mac(struct xenbus_device *dev, u8 mac[])
@@ -61403,7 +59775,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ xenbus_transaction_end(xbt, 1);
+ xenbus_dev_fatal(dev, err, "%s", message);
+ destroy_ring:
-+ netif_disconnect_backend(info);
++ netif_free(info);
+ out:
+ return err;
+}
@@ -61493,10 +59865,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ break;
+
+ case XenbusStateInitWait:
-+ if (network_connect(netdev) != 0) {
-+ netif_free(np);
-+ break;
-+ }
++ network_connect(netdev);
+ xenbus_switch_state(dev, XenbusStateConnected);
+ (void)send_fake_arp(netdev);
+ break;
@@ -62070,7 +60439,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ if (net_ratelimit())
+ WPRINTK("rx->offset: %x, size: %u\n",
+ rx->offset, rx->status);
-+ xennet_move_rx_slot(np, skb, ref);
+ err = -EINVAL;
+ goto next;
+ }
@@ -62081,8 +60449,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ * situation to the system controller to reboot the backed.
+ */
+ if (ref == GRANT_INVALID_REF) {
-+ if (net_ratelimit())
-+ WPRINTK("Bad rx response id %d.\n", rx->id);
++ WPRINTK("Bad rx response id %d.\n", rx->id);
+ err = -EINVAL;
+ goto next;
+ }
@@ -62154,9 +60521,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ err = -E2BIG;
+ }
+
-+ if (unlikely(err))
-+ np->rx.rsp_cons = cons + frags;
-+
+ *pages_flipped_p = pages_flipped;
+
+ return err;
@@ -62261,9 +60625,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ rp = np->rx.sring->rsp_prod;
+ rmb(); /* Ensure we see queued responses up to 'rp'. */
+
-+ i = np->rx.rsp_cons;
-+ work_done = 0;
-+ while ((i != rp) && (work_done < budget)) {
++ for (i = np->rx.rsp_cons, work_done = 0;
++ (i != rp) && (work_done < budget);
++ np->rx.rsp_cons = ++i, work_done++) {
+ memcpy(rx, RING_GET_RESPONSE(&np->rx, i), sizeof(*rx));
+ memset(extras, 0, sizeof(extras));
+
@@ -62271,11 +60635,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ &pages_flipped);
+
+ if (unlikely(err)) {
-+err:
++err:
++ i = np->rx.rsp_cons + skb_queue_len(&tmpq) - 1;
++ work_done--;
+ while ((skb = __skb_dequeue(&tmpq)))
+ __skb_queue_tail(&errq, skb);
+ np->stats.rx_errors++;
-+ i = np->rx.rsp_cons;
+ continue;
+ }
+
@@ -62287,7 +60652,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+
+ if (unlikely(xennet_set_skb_gso(skb, gso))) {
+ __skb_queue_head(&tmpq, skb);
-+ np->rx.rsp_cons += skb_queue_len(&tmpq);
+ goto err;
+ }
+ }
@@ -62351,9 +60715,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ np->stats.rx_bytes += skb->len;
+
+ __skb_queue_tail(&rxq, skb);
-+
-+ np->rx.rsp_cons = ++i;
-+ work_done++;
+ }
+
+ if (pages_flipped) {
@@ -62601,41 +60962,16 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ xennet_set_tso(dev, 1);
+}
+
-+static int network_connect(struct net_device *dev)
++static void network_connect(struct net_device *dev)
+{
+ struct netfront_info *np = netdev_priv(dev);
-+ int i, requeue_idx, err;
++ int i, requeue_idx;
+ struct sk_buff *skb;
+ grant_ref_t ref;
+ netif_rx_request_t *req;
-+ unsigned int feature_rx_copy, feature_rx_flip;
-+
-+ err = xenbus_scanf(XBT_NIL, np->xbdev->otherend,
-+ "feature-rx-copy", "%u", &feature_rx_copy);
-+ if (err != 1)
-+ feature_rx_copy = 0;
-+ err = xenbus_scanf(XBT_NIL, np->xbdev->otherend,
-+ "feature-rx-flip", "%u", &feature_rx_flip);
-+ if (err != 1)
-+ feature_rx_flip = 1;
-+
-+ /*
-+ * Copy packets on receive path if:
-+ * (a) This was requested by user, and the backend supports it; or
-+ * (b) Flipping was requested, but this is unsupported by the backend.
-+ */
-+ np->copying_receiver = ((MODPARM_rx_copy && feature_rx_copy) ||
-+ (MODPARM_rx_flip && !feature_rx_flip));
-+
-+ err = talk_to_backend(np->xbdev, np);
-+ if (err)
-+ return err;
+
+ xennet_set_features(dev);
+
-+ IPRINTK("device %s has %sing receive path.\n",
-+ dev->name, np->copying_receiver ? "copy" : "flipp");
-+
+ spin_lock_irq(&np->tx_lock);
+ spin_lock(&np->rx_lock);
+
@@ -62691,8 +61027,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+
+ spin_unlock(&np->rx_lock);
+ spin_unlock_irq(&np->tx_lock);
-+
-+ return 0;
+}
+
+static void netif_uninit(struct net_device *dev)
@@ -62858,7 +61192,8 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+{
+}
+
-+static struct net_device * __devinit create_netdev(struct xenbus_device *dev)
++static struct net_device * __devinit
++create_netdev(int handle, int copying_receiver, struct xenbus_device *dev)
+{
+ int i, err = 0;
+ struct net_device *netdev = NULL;
@@ -62872,7 +61207,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+ }
+
+ np = netdev_priv(netdev);
++ np->handle = handle;
+ np->xbdev = dev;
++ np->copying_receiver = copying_receiver;
+
+ netif_carrier_off(netdev);
+
@@ -63003,12 +61340,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+
+ err = xennet_sysfs_addif(info->netdev);
+ if (err) {
-+ unregister_netdev(info->netdev);
++ /* This can be non-fatal: it only means no tuning parameters */
+ printk(KERN_WARNING "%s: add sysfs failed err=%d\n",
+ __FUNCTION__, err);
-+ return err;
+ }
-+
+ return 0;
+}
+
@@ -63120,9 +61455,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/netfront/netfront.c linux
+module_exit(netif_exit);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space.c linux-2.6.18-xen/drivers/xen/pciback/conf_space.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space.c linux-2.6.18-xen/drivers/xen/pciback/conf_space.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,425 @@
+/*
+ * PCI Backend - Functions for creating a virtual configuration space for
@@ -63549,9 +61884,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space.c linu
+{
+ return pciback_config_capability_init();
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capability.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_capability.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_capability.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space_capability.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,71 @@
+/*
+ * PCI Backend - Handles the virtual fields found on the capability lists
@@ -63624,9 +61959,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capabi
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capability.h linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.h
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_capability.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_capability.h linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.h
+--- linux-2.6.18/drivers/xen/pciback/conf_space_capability.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,23 @@
+/*
+ * PCI Backend - Data structures for special overlays for structures on
@@ -63651,9 +61986,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capabi
+};
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capability_pm.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_pm.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_capability_pm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_pm.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_capability_pm.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_pm.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space_capability_pm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_pm.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,113 @@
+/*
+ * PCI Backend - Configuration space overlay for power management
@@ -63768,9 +62103,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capabi
+ .capability = PCI_CAP_ID_PM,
+ .fields = caplist_pm,
+};
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capability_vpd.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_vpd.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_capability_vpd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_vpd.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_capability_vpd.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_vpd.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space_capability_vpd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_capability_vpd.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,42 @@
+/*
+ * PCI Backend - Configuration space overlay for Vital Product Data
@@ -63814,9 +62149,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_capabi
+ .capability = PCI_CAP_ID_VPD,
+ .fields = caplist_vpd,
+};
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space.h linux-2.6.18-xen/drivers/xen/pciback/conf_space.h
---- linux-2.6.18.1/drivers/xen/pciback/conf_space.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space.h linux-2.6.18-xen/drivers/xen/pciback/conf_space.h
+--- linux-2.6.18/drivers/xen/pciback/conf_space.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,126 @@
+/*
+ * PCI Backend - Common data structures for overriding the configuration space
@@ -63944,9 +62279,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space.h linu
+int pciback_config_capability_add_fields(struct pci_dev *dev);
+
+#endif /* __XEN_PCIBACK_CONF_SPACE_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_header.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_header.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_header.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_header.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_header.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_header.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space_header.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_header.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,299 @@
+/*
+ * PCI Backend - Handles the virtual fields in the configuration space headers.
@@ -64247,9 +62582,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_header
+ out:
+ return err;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.c
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_quirks.c linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.c
+--- linux-2.6.18/drivers/xen/pciback/conf_space_quirks.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,128 @@
+/*
+ * PCI Backend - Handle special overlays for broken devices.
@@ -64379,9 +62714,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks
+ out:
+ return ret;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks.h linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.h
---- linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/conf_space_quirks.h linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.h
+--- linux-2.6.18/drivers/xen/pciback/conf_space_quirks.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/conf_space_quirks.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,35 @@
+/*
+ * PCI Backend - Data structures for special overlays for broken devices.
@@ -64418,9 +62753,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/conf_space_quirks
+int pciback_field_is_dup(struct pci_dev *dev, int reg);
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/Makefile linux-2.6.18-xen/drivers/xen/pciback/Makefile
---- linux-2.6.18.1/drivers/xen/pciback/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/Makefile linux-2.6.18-xen/drivers/xen/pciback/Makefile
+--- linux-2.6.18/drivers/xen/pciback/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,15 @@
+obj-$(CONFIG_XEN_PCIDEV_BACKEND) += pciback.o
+
@@ -64437,9 +62772,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/Makefile linux-2.
+ifeq ($(CONFIG_XEN_PCIDEV_BE_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/passthrough.c linux-2.6.18-xen/drivers/xen/pciback/passthrough.c
---- linux-2.6.18.1/drivers/xen/pciback/passthrough.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/passthrough.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/passthrough.c linux-2.6.18-xen/drivers/xen/pciback/passthrough.c
+--- linux-2.6.18/drivers/xen/pciback/passthrough.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/passthrough.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,157 @@
+/*
+ * PCI Backend - Provides restricted access to the real PCI bus topology
@@ -64598,9 +62933,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/passthrough.c lin
+ kfree(dev_data);
+ pdev->pci_dev_data = NULL;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pciback.h linux-2.6.18-xen/drivers/xen/pciback/pciback.h
---- linux-2.6.18.1/drivers/xen/pciback/pciback.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/pciback.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/pciback.h linux-2.6.18-xen/drivers/xen/pciback/pciback.h
+--- linux-2.6.18/drivers/xen/pciback/pciback.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/pciback.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,93 @@
+/*
+ * PCI Backend Common Data Structures & Function Declarations
@@ -64695,9 +63030,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pciback.h linux-2
+
+extern int verbose_request;
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pciback_ops.c linux-2.6.18-xen/drivers/xen/pciback/pciback_ops.c
---- linux-2.6.18.1/drivers/xen/pciback/pciback_ops.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/pciback_ops.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/pciback_ops.c linux-2.6.18-xen/drivers/xen/pciback/pciback_ops.c
+--- linux-2.6.18/drivers/xen/pciback/pciback_ops.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/pciback_ops.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,95 @@
+/*
+ * PCI Backend Operations - respond to PCI requests from Frontend
@@ -64794,9 +63129,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pciback_ops.c lin
+
+ return IRQ_HANDLED;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pci_stub.c linux-2.6.18-xen/drivers/xen/pciback/pci_stub.c
---- linux-2.6.18.1/drivers/xen/pciback/pci_stub.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/pci_stub.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/pci_stub.c linux-2.6.18-xen/drivers/xen/pciback/pci_stub.c
+--- linux-2.6.18/drivers/xen/pciback/pci_stub.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/pci_stub.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,916 @@
+/*
+ * PCI Stub Driver - Grabs devices in backend to be exported later
@@ -65714,9 +64049,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/pci_stub.c linux-
+module_exit(pciback_cleanup);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/slot.c linux-2.6.18-xen/drivers/xen/pciback/slot.c
---- linux-2.6.18.1/drivers/xen/pciback/slot.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/slot.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/slot.c linux-2.6.18-xen/drivers/xen/pciback/slot.c
+--- linux-2.6.18/drivers/xen/pciback/slot.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/slot.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,151 @@
+/*
+ * PCI Backend - Provides a Virtual PCI bus (with real devices)
@@ -65869,9 +64204,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/slot.c linux-2.6.
+ kfree(slot_dev);
+ pdev->pci_dev_data = NULL;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/vpci.c linux-2.6.18-xen/drivers/xen/pciback/vpci.c
---- linux-2.6.18.1/drivers/xen/pciback/vpci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/vpci.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/vpci.c linux-2.6.18-xen/drivers/xen/pciback/vpci.c
+--- linux-2.6.18/drivers/xen/pciback/vpci.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/vpci.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,204 @@
+/*
+ * PCI Backend - Provides a Virtual PCI bus (with real devices)
@@ -66077,9 +64412,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/vpci.c linux-2.6.
+ kfree(vpci_dev);
+ pdev->pci_dev_data = NULL;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/xenbus.c linux-2.6.18-xen/drivers/xen/pciback/xenbus.c
---- linux-2.6.18.1/drivers/xen/pciback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pciback/xenbus.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pciback/xenbus.c linux-2.6.18-xen/drivers/xen/pciback/xenbus.c
+--- linux-2.6.18/drivers/xen/pciback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pciback/xenbus.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,458 @@
+/*
+ * PCI Backend Xenbus Setup - handles setup with frontend and xend
@@ -66539,9 +64874,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pciback/xenbus.c linux-2.
+{
+ xenbus_unregister_driver(&xenbus_pciback_driver);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/Makefile linux-2.6.18-xen/drivers/xen/pcifront/Makefile
---- linux-2.6.18.1/drivers/xen/pcifront/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pcifront/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pcifront/Makefile linux-2.6.18-xen/drivers/xen/pcifront/Makefile
+--- linux-2.6.18/drivers/xen/pcifront/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pcifront/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,7 @@
+obj-y += pcifront.o
+
@@ -66550,9 +64885,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/Makefile linux-2
+ifeq ($(CONFIG_XEN_PCIDEV_FE_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pci.c linux-2.6.18-xen/drivers/xen/pcifront/pci.c
---- linux-2.6.18.1/drivers/xen/pcifront/pci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pcifront/pci.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pcifront/pci.c linux-2.6.18-xen/drivers/xen/pcifront/pci.c
+--- linux-2.6.18/drivers/xen/pcifront/pci.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pcifront/pci.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,46 @@
+/*
+ * PCI Frontend Operations - ensure only one PCI frontend runs at a time
@@ -66600,9 +64935,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pci.c linux-2.6.
+
+ spin_unlock(&pcifront_dev_lock);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pcifront.h linux-2.6.18-xen/drivers/xen/pcifront/pcifront.h
---- linux-2.6.18.1/drivers/xen/pcifront/pcifront.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pcifront/pcifront.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pcifront/pcifront.h linux-2.6.18-xen/drivers/xen/pcifront/pcifront.h
+--- linux-2.6.18/drivers/xen/pcifront/pcifront.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pcifront/pcifront.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+ * PCI Frontend - Common data structures & function declarations
@@ -66644,9 +64979,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pcifront.h linux
+void pcifront_free_roots(struct pcifront_device *pdev);
+
+#endif /* __XEN_PCIFRONT_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pci_op.c linux-2.6.18-xen/drivers/xen/pcifront/pci_op.c
---- linux-2.6.18.1/drivers/xen/pcifront/pci_op.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pcifront/pci_op.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pcifront/pci_op.c linux-2.6.18-xen/drivers/xen/pcifront/pci_op.c
+--- linux-2.6.18/drivers/xen/pcifront/pci_op.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pcifront/pci_op.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,273 @@
+/*
+ * PCI Frontend Operations - Communicates with frontend
@@ -66921,9 +65256,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/pci_op.c linux-2
+ kfree(bus_entry);
+ }
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/xenbus.c linux-2.6.18-xen/drivers/xen/pcifront/xenbus.c
---- linux-2.6.18.1/drivers/xen/pcifront/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/pcifront/xenbus.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/pcifront/xenbus.c linux-2.6.18-xen/drivers/xen/pcifront/xenbus.c
+--- linux-2.6.18/drivers/xen/pcifront/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/pcifront/xenbus.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,295 @@
+/*
+ * PCI Frontend Xenbus Setup - handles setup with backend (imports page/evtchn)
@@ -67220,16 +65555,16 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/pcifront/xenbus.c linux-2
+
+/* Initialize after the Xen PCI Frontend Stub is initialized */
+subsys_initcall(pcifront_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/Makefile linux-2.6.18-xen/drivers/xen/privcmd/Makefile
---- linux-2.6.18.1/drivers/xen/privcmd/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/privcmd/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/privcmd/Makefile linux-2.6.18-xen/drivers/xen/privcmd/Makefile
+--- linux-2.6.18/drivers/xen/privcmd/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/privcmd/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,2 @@
+
+obj-$(CONFIG_XEN_PRIVCMD) := privcmd.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2.6.18-xen/drivers/xen/privcmd/privcmd.c
---- linux-2.6.18.1/drivers/xen/privcmd/privcmd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/privcmd/privcmd.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,283 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/privcmd/privcmd.c linux-2.6.18-xen/drivers/xen/privcmd/privcmd.c
+--- linux-2.6.18/drivers/xen/privcmd/privcmd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/privcmd/privcmd.c 2006-11-19 14:26:56.000000000 +0100
+@@ -0,0 +1,289 @@
+/******************************************************************************
+ * privcmd.c
+ *
@@ -67266,10 +65601,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+static struct proc_dir_entry *privcmd_intf;
+static struct proc_dir_entry *capabilities_intf;
+
-+#ifndef HAVE_ARCH_PRIVCMD_MMAP
-+static int privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma);
-+#endif
-+
+static int privcmd_ioctl(struct inode *inode, struct file *file,
+ unsigned int cmd, unsigned long data)
+{
@@ -67318,7 +65649,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+ : "r8", "r10", "memory" );
+ }
+#elif defined (__ia64__)
-+ ret = privcmd_hypercall(&hypercall);
++ __asm__ __volatile__ (
++ ";; mov r14=%2; mov r15=%3; "
++ "mov r16=%4; mov r17=%5; mov r18=%6;"
++ "mov r2=%1; break 0x1000;; mov %0=r8 ;;"
++ : "=r" (ret)
++ : "r" (hypercall.op),
++ "r" (hypercall.arg[0]),
++ "r" (hypercall.arg[1]),
++ "r" (hypercall.arg[2]),
++ "r" (hypercall.arg[3]),
++ "r" (hypercall.arg[4])
++ : "r14","r15","r16","r17","r18","r2","r8","memory");
+#endif
+ }
+ break;
@@ -67346,10 +65688,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+
+ vma = find_vma(mm, msg.va);
+ rc = -EINVAL;
-+ if (!vma || (msg.va != vma->vm_start) ||
-+ !privcmd_enforce_singleshot_mapping(vma))
++ if (!vma || (msg.va != vma->vm_start) || vma->vm_private_data)
+ goto mmap_out;
+
++ /* Mapping is a one-shot operation per vma. */
++ vma->vm_private_data = (void *)1;
++
+ va = vma->vm_start;
+
+ for (i = 0; i < mmapcmd.num; i++) {
@@ -67359,7 +65703,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+
+ /* Do not allow range to wrap the address space. */
+ rc = -EINVAL;
-+ if ((msg.npages > (LONG_MAX >> PAGE_SHIFT)) ||
++ if ((msg.npages > (INT_MAX >> PAGE_SHIFT)) ||
+ ((unsigned long)(msg.npages << PAGE_SHIFT) >= -va))
+ goto mmap_out;
+
@@ -67403,7 +65747,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+ if (copy_from_user(&m, udata, sizeof(m)))
+ return -EFAULT;
+
-+ if ((m.num <= 0) || (m.num > (LONG_MAX >> PAGE_SHIFT)))
++ if ((m.num <= 0) || (m.num > (INT_MAX >> PAGE_SHIFT)))
+ return -EINVAL;
+
+ down_read(&mm->mmap_sem);
@@ -67411,13 +65755,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+ vma = find_vma(mm, m.addr);
+ if (!vma ||
+ (m.addr != vma->vm_start) ||
-+ ((m.addr + ((unsigned long)m.num<<PAGE_SHIFT)) !=
-+ vma->vm_end) ||
-+ !privcmd_enforce_singleshot_mapping(vma)) {
++ ((m.addr + (m.num<<PAGE_SHIFT)) != vma->vm_end) ||
++ vma->vm_private_data) {
+ up_read(&mm->mmap_sem);
+ return -EINVAL;
+ }
+
++ /* Mapping is a one-shot operation per vma. */
++ vma->vm_private_data = (void *)1;
++
+ p = m.arr;
+ addr = m.addr;
+ for (i = 0; i < m.num; i++, addr += PAGE_SIZE, p++) {
@@ -67471,11 +65817,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+
+ return 0;
+}
-+
-+static int privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma)
-+{
-+ return (xchg(&vma->vm_private_data, (void *)1) == NULL);
-+}
+#endif
+
+static struct file_operations privcmd_file_ops = {
@@ -67513,9 +65854,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/privcmd/privcmd.c linux-2
+}
+
+__initcall(privcmd_init);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/common.h linux-2.6.18-xen/drivers/xen/tpmback/common.h
---- linux-2.6.18.1/drivers/xen/tpmback/common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/tpmback/common.h 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/tpmback/common.h linux-2.6.18-xen/drivers/xen/tpmback/common.h
+--- linux-2.6.18/drivers/xen/tpmback/common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/tpmback/common.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,86 @@
+/******************************************************************************
+ * drivers/xen/tpmback/common.h
@@ -67603,9 +65944,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/common.h linux-2.
+}
+
+#endif /* __TPMIF__BACKEND__COMMON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/interface.c linux-2.6.18-xen/drivers/xen/tpmback/interface.c
---- linux-2.6.18.1/drivers/xen/tpmback/interface.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/tpmback/interface.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/tpmback/interface.c linux-2.6.18-xen/drivers/xen/tpmback/interface.c
+--- linux-2.6.18/drivers/xen/tpmback/interface.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/tpmback/interface.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,182 @@
+ /*****************************************************************************
+ * drivers/xen/tpmback/interface.c
@@ -67789,17 +66130,17 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/interface.c linux
+{
+ kmem_cache_destroy(tpmif_cachep);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/Makefile linux-2.6.18-xen/drivers/xen/tpmback/Makefile
---- linux-2.6.18.1/drivers/xen/tpmback/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/tpmback/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/tpmback/Makefile linux-2.6.18-xen/drivers/xen/tpmback/Makefile
+--- linux-2.6.18/drivers/xen/tpmback/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/tpmback/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,4 @@
+
+obj-$(CONFIG_XEN_TPMDEV_BACKEND) += tpmbk.o
+
+tpmbk-y += tpmback.o interface.o xenbus.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/tpmback.c linux-2.6.18-xen/drivers/xen/tpmback/tpmback.c
---- linux-2.6.18.1/drivers/xen/tpmback/tpmback.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/tpmback/tpmback.c 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/tpmback/tpmback.c linux-2.6.18-xen/drivers/xen/tpmback/tpmback.c
+--- linux-2.6.18/drivers/xen/tpmback/tpmback.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/tpmback/tpmback.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,944 @@
+/******************************************************************************
+ * drivers/xen/tpmback/tpmback.c
@@ -68745,9 +67086,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/tpmback.c linux-2
+}
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/xenbus.c linux-2.6.18-xen/drivers/xen/tpmback/xenbus.c
---- linux-2.6.18.1/drivers/xen/tpmback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/tpmback/xenbus.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/tpmback/xenbus.c linux-2.6.18-xen/drivers/xen/tpmback/xenbus.c
+--- linux-2.6.18/drivers/xen/tpmback/xenbus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/tpmback/xenbus.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,287 @@
+/* Xenbus code for tpmif backend
+ Copyright (C) 2005 IBM Corporation
@@ -69036,9 +67377,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/tpmback/xenbus.c linux-2.
+{
+ xenbus_unregister_driver(&tpmback);
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/util.c linux-2.6.18-xen/drivers/xen/util.c
---- linux-2.6.18.1/drivers/xen/util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/util.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/util.c linux-2.6.18-xen/drivers/xen/util.c
+--- linux-2.6.18/drivers/xen/util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/util.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,70 @@
+
+#include <linux/mm.h>
@@ -69110,9 +67451,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/util.c linux-2.6.18-xen/d
+ preempt_enable();
+}
+EXPORT_SYMBOL_GPL(unlock_vm_area);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/Makefile linux-2.6.18-xen/drivers/xen/xenbus/Makefile
---- linux-2.6.18.1/drivers/xen/xenbus/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/Makefile 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/Makefile linux-2.6.18-xen/drivers/xen/xenbus/Makefile
+--- linux-2.6.18/drivers/xen/xenbus/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/Makefile 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,12 @@
+obj-y += xenbus.o
+obj-$(CONFIG_XEN_BACKEND) += xenbus_be.o
@@ -69126,9 +67467,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/Makefile linux-2.6
+xenbus-objs += xenbus_xs.o
+xenbus-objs += xenbus_probe.o
+obj-$(CONFIG_XEN_XENBUS_DEV) += xenbus_dev.o
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_backend_client.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_backend_client.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_backend_client.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_backend_client.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_backend_client.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_backend_client.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_backend_client.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_backend_client.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,147 @@
+/******************************************************************************
+ * Backend-client-facing interface for the Xenbus driver. In other words, the
@@ -69277,9 +67618,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_backend_cli
+EXPORT_SYMBOL_GPL(xenbus_dev_is_online);
+
+MODULE_LICENSE("Dual BSD/GPL");
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_client.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_client.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_client.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_client.c 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_client.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_client.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_client.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_client.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,299 @@
+/******************************************************************************
+ * Client-facing interface for the Xenbus driver. In other words, the
@@ -69580,9 +67921,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_client.c li
+ return result;
+}
+EXPORT_SYMBOL_GPL(xenbus_read_driver_state);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_comms.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_comms.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,203 @@
+/******************************************************************************
+ * xenbus_comms.c
@@ -69787,9 +68128,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.c lin
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.h linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.h
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.h 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_comms.h linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.h
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_comms.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_comms.h 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,45 @@
+/*
+ * Private include for xenbus communications.
@@ -69836,9 +68177,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_comms.h lin
+extern int xen_store_evtchn;
+
+#endif /* _XENBUS_COMMS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_dev.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_dev.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_dev.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_dev.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_dev.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_dev.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_dev.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_dev.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,356 @@
+/*
+ * xenbus_dev.c
@@ -70196,10 +68537,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_dev.c linux
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_probe.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_probe.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_probe.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_probe.c 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,1190 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_probe.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_probe.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_probe.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_probe.c 2006-11-19 14:26:56.000000000 +0100
+@@ -0,0 +1,1189 @@
+/******************************************************************************
+ * Talks to Xen Store to figure out what devices we have.
+ *
@@ -70250,7 +68591,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_probe.c lin
+#include <asm/maddr.h>
+#include <asm/pgtable.h>
+#include <asm/hypervisor.h>
-+#include <asm/hypercall.h>
+#include <xen/xenbus.h>
+#include <xen/xen_proc.h>
+#include <xen/evtchn.h>
@@ -71390,9 +69730,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_probe.c lin
+
+late_initcall(boot_wait_for_devices);
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_xs.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_xs.c
---- linux-2.6.18.1/drivers/xen/xenbus/xenbus_xs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_xs.c 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/drivers/xen/xenbus/xenbus_xs.c linux-2.6.18-xen/drivers/xen/xenbus/xenbus_xs.c
+--- linux-2.6.18/drivers/xen/xenbus/xenbus_xs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/drivers/xen/xenbus/xenbus_xs.c 2006-11-19 14:26:56.000000000 +0100
@@ -0,0 +1,853 @@
+/******************************************************************************
+ * xenbus_xs.c
@@ -72247,9 +70587,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/drivers/xen/xenbus/xenbus_xs.c linux-
+
+ return 0;
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/fs/Kconfig linux-2.6.18-xen/fs/Kconfig
---- linux-2.6.18.1/fs/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/fs/Kconfig 2006-09-04 16:31:13.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/fs/Kconfig linux-2.6.18-xen/fs/Kconfig
+--- linux-2.6.18/fs/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/fs/Kconfig 2006-11-19 14:26:56.000000000 +0100
@@ -865,6 +865,7 @@
config HUGETLBFS
bool "HugeTLB file system support"
@@ -72258,9 +70598,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/fs/Kconfig linux-2.6.18-xen/fs/Kconfi
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-generic/vmlinux.lds.h linux-2.6.18-xen/include/asm-generic/vmlinux.lds.h
---- linux-2.6.18.1/include/asm-generic/vmlinux.lds.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-generic/vmlinux.lds.h 2006-09-21 01:33:31.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-generic/vmlinux.lds.h linux-2.6.18-xen/include/asm-generic/vmlinux.lds.h
+--- linux-2.6.18/include/asm-generic/vmlinux.lds.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-generic/vmlinux.lds.h 2006-11-19 14:27:04.000000000 +0100
@@ -194,3 +194,6 @@
.stab.index 0 : { *(.stab.index) } \
.stab.indexstr 0 : { *(.stab.indexstr) } \
@@ -72268,9 +70608,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-generic/vmlinux.lds.h lin
+
+#define NOTES \
+ .notes : { *(.note.*) } :note
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/apic.h linux-2.6.18-xen/include/asm-i386/apic.h
---- linux-2.6.18.1/include/asm-i386/apic.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-i386/apic.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/apic.h linux-2.6.18-xen/include/asm-i386/apic.h
+--- linux-2.6.18/include/asm-i386/apic.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/apic.h 2006-11-19 14:27:04.000000000 +0100
@@ -119,10 +119,12 @@
extern int disable_timer_pin_1;
@@ -72284,20 +70624,30 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/apic.h linux-2.6.18-
extern int timer_over_8254;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/fixmap.h linux-2.6.18-xen/include/asm-i386/fixmap.h
---- linux-2.6.18.1/include/asm-i386/fixmap.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-i386/fixmap.h 2006-09-21 01:33:32.000000000 +0200
-@@ -19,6 +19,7 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/fixmap.h linux-2.6.18-xen/include/asm-i386/fixmap.h
+--- linux-2.6.18/include/asm-i386/fixmap.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/fixmap.h 2006-11-19 14:27:04.000000000 +0100
+@@ -19,7 +19,7 @@
* Leave one empty page between vmalloc'ed areas and
* the start of the fixmap.
*/
-+
- #define __FIXADDR_TOP 0xfffff000
+-#define __FIXADDR_TOP 0xfffff000
++extern unsigned long __FIXADDR_TOP;
#ifndef __ASSEMBLY__
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-default/mach_traps.h linux-2.6.18-xen/include/asm-i386/mach-default/mach_traps.h
---- linux-2.6.18.1/include/asm-i386/mach-default/mach_traps.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-i386/mach-default/mach_traps.h 2006-09-04 16:31:16.000000000 +0200
+ #include <linux/kernel.h>
+@@ -94,6 +94,8 @@
+ extern void __set_fixmap (enum fixed_addresses idx,
+ unsigned long phys, pgprot_t flags);
+
++extern void set_fixaddr_top(unsigned long top);
++
+ #define set_fixmap(idx, phys) \
+ __set_fixmap(idx, phys, PAGE_KERNEL)
+ /*
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-default/mach_traps.h linux-2.6.18-xen/include/asm-i386/mach-default/mach_traps.h
+--- linux-2.6.18/include/asm-i386/mach-default/mach_traps.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/mach-default/mach_traps.h 2006-11-19 14:27:04.000000000 +0100
@@ -15,6 +15,18 @@
outb(reason, 0x61);
}
@@ -72317,9 +70667,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-default/mach_tr
static inline unsigned char get_nmi_reason(void)
{
return inb(0x61);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/agp.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/agp.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/agp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/agp.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/agp.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/agp.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/agp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/agp.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,37 @@
+#ifndef AGP_H
+#define AGP_H 1
@@ -72358,9 +70708,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/agp.h l
+ dma_free_coherent(NULL,PAGE_SIZE<<(order),(table),virt_to_bus(table))
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/desc.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/desc.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/desc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/desc.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/desc.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/desc.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/desc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/desc.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,164 @@
+#ifndef __ARCH_DESC_H
+#define __ARCH_DESC_H
@@ -72526,9 +70876,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/desc.h
+#endif /* !__ASSEMBLY__ */
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/dma-mapping.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/dma-mapping.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/dma-mapping.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/dma-mapping.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/dma-mapping.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/dma-mapping.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/dma-mapping.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/dma-mapping.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,151 @@
+#ifndef _ASM_I386_DMA_MAPPING_H
+#define _ASM_I386_DMA_MAPPING_H
@@ -72681,9 +71031,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/dma-map
+ dma_addr_t device_addr, size_t size);
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/fixmap.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/fixmap.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/fixmap.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/fixmap.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/fixmap.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/fixmap.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/fixmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/fixmap.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,156 @@
+/*
+ * fixmap.h: compile-time virtual memory allocation
@@ -72841,9 +71191,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/fixmap.
+
+#endif /* !__ASSEMBLY__ */
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/floppy.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/floppy.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/floppy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/floppy.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/floppy.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/floppy.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/floppy.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/floppy.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,147 @@
+/*
+ * Architecture specific parts of the Floppy driver
@@ -72992,9 +71342,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/floppy.
+#define EXTRA_FLOPPY_PARAMS
+
+#endif /* __ASM_XEN_I386_FLOPPY_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/highmem.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/highmem.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/highmem.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/highmem.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/highmem.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/highmem.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/highmem.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/highmem.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,80 @@
+/*
+ * highmem.h: virtual kernel memory mappings for high memory
@@ -73076,85 +71426,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/highmem
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_HIGHMEM_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/hw_irq.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hw_irq.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/hw_irq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hw_irq.h 2006-09-04 16:31:16.000000000 +0200
-@@ -0,0 +1,72 @@
-+#ifndef _ASM_HW_IRQ_H
-+#define _ASM_HW_IRQ_H
-+
-+/*
-+ * linux/include/asm/hw_irq.h
-+ *
-+ * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
-+ *
-+ * moved some of the old arch/i386/kernel/irq.h to here. VY
-+ *
-+ * IRQ/IPI changes taken from work by Thomas Radke
-+ * <tomsoft@informatik.tu-chemnitz.de>
-+ */
-+
-+#include <linux/profile.h>
-+#include <asm/atomic.h>
-+#include <asm/irq.h>
-+#include <asm/sections.h>
-+
-+struct hw_interrupt_type;
-+
-+#define NMI_VECTOR 0x02
-+
-+/*
-+ * Various low-level irq details needed by irq.c, process.c,
-+ * time.c, io_apic.c and smp.c
-+ *
-+ * Interrupt entry/exit code at both C and assembly level
-+ */
-+
-+extern u8 irq_vector[NR_IRQ_VECTORS];
-+#define IO_APIC_VECTOR(irq) (irq_vector[irq])
-+#define AUTO_ASSIGN -1
-+
-+extern void (*interrupt[NR_IRQS])(void);
-+
-+#ifdef CONFIG_SMP
-+fastcall void reschedule_interrupt(void);
-+fastcall void invalidate_interrupt(void);
-+fastcall void call_function_interrupt(void);
-+#endif
-+
-+#ifdef CONFIG_X86_LOCAL_APIC
-+fastcall void apic_timer_interrupt(void);
-+fastcall void error_interrupt(void);
-+fastcall void spurious_interrupt(void);
-+fastcall void thermal_interrupt(struct pt_regs *);
-+#define platform_legacy_irq(irq) ((irq) < 16)
-+#endif
-+
-+void disable_8259A_irq(unsigned int irq);
-+void enable_8259A_irq(unsigned int irq);
-+int i8259A_irq_pending(unsigned int irq);
-+void make_8259A_irq(unsigned int irq);
-+void init_8259A(int aeoi);
-+void FASTCALL(send_IPI_self(int vector));
-+void init_VISWS_APIC_irqs(void);
-+void setup_IO_APIC(void);
-+void disable_IO_APIC(void);
-+void print_IO_APIC(void);
-+int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn);
-+void send_IPI(int dest, int vector);
-+void setup_ioapic_dest(void);
-+
-+extern unsigned long io_apic_irqs;
-+
-+extern atomic_t irq_err_count;
-+extern atomic_t irq_mis_count;
-+
-+#define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
-+
-+#endif /* _ASM_HW_IRQ_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/hypercall.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypercall.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/hypercall.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypercall.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/hypercall.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypercall.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/hypercall.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypercall.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,389 @@
+/******************************************************************************
+ * hypercall.h
@@ -73545,9 +71819,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/hyperca
+
+
+#endif /* __HYPERCALL_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/hypervisor.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypervisor.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypervisor.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/hypervisor.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypervisor.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/hypervisor.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,234 @@
+/******************************************************************************
+ * hypervisor.h
@@ -73783,9 +72057,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/hypervi
+}
+
+#endif /* __HYPERVISOR_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/io.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/io.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/io.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/io.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/io.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/io.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,389 @@
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
@@ -74176,93 +72450,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/io.h li
+#define ARCH_HAS_DEV_MEM
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/irqflags.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/irqflags.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/irqflags.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/irqflags.h 2006-09-04 16:31:16.000000000 +0200
-@@ -0,0 +1,80 @@
-+/*
-+ * include/asm-i386/irqflags.h
-+ *
-+ * IRQ flags handling
-+ *
-+ * This file gets included from lowlevel asm headers too, to provide
-+ * wrapped versions of the local_irq_*() APIs, based on the
-+ * raw_local_irq_*() functions from the lowlevel headers.
-+ */
-+#ifndef _ASM_IRQFLAGS_H
-+#define _ASM_IRQFLAGS_H
-+
-+#ifndef __ASSEMBLY__
-+
-+#define raw_local_save_flags(flags) \
-+ do { (flags) = __raw_local_save_flags(); } while (0)
-+
-+unsigned long __raw_local_save_flags(void);
-+void raw_local_irq_restore(unsigned long flags);
-+void raw_local_irq_disable(void);
-+void raw_local_irq_enable(void);
-+
-+/*
-+ * Used in the idle loop; sti takes one instruction cycle
-+ * to complete:
-+ */
-+void raw_safe_halt(void);
-+
-+/*
-+ * Used when interrupts are already enabled or to
-+ * shutdown the processor:
-+ */
-+void halt(void);
-+
-+static inline int raw_irqs_disabled_flags(unsigned long flags)
-+{
-+ return flags != 0;
-+}
-+
-+int raw_irqs_disabled(void);
-+
-+/*
-+ * For spinlocks, etc:
-+ */
-+unsigned long __raw_local_irq_save(void);
-+#define raw_local_irq_save(flags) \
-+ do { (flags) = __raw_local_irq_save(); } while (0)
-+
-+#endif /* __ASSEMBLY__ */
-+
-+/*
-+ * Do the CPU's IRQ-state tracing from assembly code. We call a
-+ * C function, so save all the C-clobbered registers:
-+ */
-+#ifdef CONFIG_TRACE_IRQFLAGS
-+
-+# define TRACE_IRQS_ON \
-+ pushl %eax; \
-+ pushl %ecx; \
-+ pushl %edx; \
-+ call trace_hardirqs_on; \
-+ popl %edx; \
-+ popl %ecx; \
-+ popl %eax;
-+
-+# define TRACE_IRQS_OFF \
-+ pushl %eax; \
-+ pushl %ecx; \
-+ pushl %edx; \
-+ call trace_hardirqs_off; \
-+ popl %edx; \
-+ popl %ecx; \
-+ popl %eax;
-+
-+#else
-+# define TRACE_IRQS_ON
-+# define TRACE_IRQS_OFF
-+#endif
-+
-+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/kmap_types.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/kmap_types.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/kmap_types.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/kmap_types.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/kmap_types.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/kmap_types.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/kmap_types.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/kmap_types.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,31 @@
+#ifndef _ASM_KMAP_TYPES_H
+#define _ASM_KMAP_TYPES_H
@@ -74295,9 +72485,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/kmap_ty
+#undef D
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/maddr.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/maddr.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/maddr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/maddr.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/maddr.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/maddr.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/maddr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/maddr.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,160 @@
+#ifndef _I386_MADDR_H
+#define _I386_MADDR_H
@@ -74459,9 +72649,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/maddr.h
+#define __pte_ma(x) ((pte_t) { (x) } )
+
+#endif /* _I386_MADDR_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu_context.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu_context.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu_context.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu_context.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/mmu_context.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu_context.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/mmu_context.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu_context.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,108 @@
+#ifndef __I386_SCHED_H
+#define __I386_SCHED_H
@@ -74571,9 +72761,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu_con
+}
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/mmu.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/mmu.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/mmu.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,29 @@
+#ifndef __i386_MMU_H
+#define __i386_MMU_H
@@ -74604,9 +72794,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/mmu.h l
+#define arch_dup_mmap(mm, oldmm) ((void)(oldmm), _arch_dup_mmap(mm))
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/page.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/page.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/page.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/page.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/page.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/page.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/page.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/page.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,220 @@
+#ifndef _I386_PAGE_H
+#define _I386_PAGE_H
@@ -74828,9 +73018,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/page.h
+#endif /* __KERNEL__ */
+
+#endif /* _I386_PAGE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/param.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/param.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/param.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/param.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/param.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/param.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/param.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/param.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,23 @@
+#ifndef _ASMi386_PARAM_H
+#define _ASMi386_PARAM_H
@@ -74855,9 +73045,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/param.h
+#define COMMAND_LINE_SIZE 256
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pci.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pci.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pci.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pci.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pci.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pci.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pci.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,153 @@
+#ifndef __i386_PCI_H
+#define __i386_PCI_H
@@ -75012,9 +73202,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pci.h l
+#define pcibios_scan_all_fns(a, b) 1
+
+#endif /* __i386_PCI_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgalloc.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgalloc.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgalloc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgalloc.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgalloc.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgalloc.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgalloc.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,63 @@
+#ifndef _I386_PGALLOC_H
+#define _I386_PGALLOC_H
@@ -75079,9 +73269,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgalloc
+#define check_pgt_cache() do { } while (0)
+
+#endif /* _I386_PGALLOC_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,21 @@
+#ifndef _I386_PGTABLE_2LEVEL_DEFS_H
+#define _I386_PGTABLE_2LEVEL_DEFS_H
@@ -75104,9 +73294,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable
+#define PTRS_PER_PTE 1024
+
+#endif /* _I386_PGTABLE_2LEVEL_DEFS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-2level.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-2level.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-2level.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-2level.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-2level.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,87 @@
+#ifndef _I386_PGTABLE_2LEVEL_H
+#define _I386_PGTABLE_2LEVEL_H
@@ -75195,9 +73385,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable
+void vmalloc_sync_all(void);
+
+#endif /* _I386_PGTABLE_2LEVEL_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,25 @@
+#ifndef _I386_PGTABLE_3LEVEL_DEFS_H
+#define _I386_PGTABLE_3LEVEL_DEFS_H
@@ -75224,9 +73414,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable
+#define PTRS_PER_PTE 512
+
+#endif /* _I386_PGTABLE_3LEVEL_DEFS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-3level.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable-3level.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-3level.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable-3level.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable-3level.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,185 @@
+#ifndef _I386_PGTABLE_3LEVEL_H
+#define _I386_PGTABLE_3LEVEL_H
@@ -75413,9 +73603,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable
+#define vmalloc_sync_all() ((void)0)
+
+#endif /* _I386_PGTABLE_3LEVEL_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/pgtable.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/pgtable.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,508 @@
+#ifndef _I386_PGTABLE_H
+#define _I386_PGTABLE_H
@@ -75925,9 +74115,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/pgtable
+#include <asm-generic/pgtable.h>
+
+#endif /* _I386_PGTABLE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/processor.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/processor.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/processor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/processor.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/processor.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/processor.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/processor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/processor.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,741 @@
+/*
+ * include/asm-i386/processor.h
@@ -76670,9 +74860,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/process
+extern int sysenter_setup(void);
+
+#endif /* __ASM_I386_PROCESSOR_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/ptrace.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/ptrace.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/ptrace.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/ptrace.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/ptrace.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/ptrace.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/ptrace.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/ptrace.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,90 @@
+#ifndef _I386_PTRACE_H
+#define _I386_PTRACE_H
@@ -76764,9 +74954,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/ptrace.
+#endif /* __KERNEL__ */
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/scatterlist.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/scatterlist.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/scatterlist.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/scatterlist.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/scatterlist.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/scatterlist.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/scatterlist.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/scatterlist.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,22 @@
+#ifndef _I386_SCATTERLIST_H
+#define _I386_SCATTERLIST_H
@@ -76790,9 +74980,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/scatter
+#define ISA_DMA_THRESHOLD (0x00ffffff)
+
+#endif /* !(_I386_SCATTERLIST_H) */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/segment.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/segment.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/segment.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/segment.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/segment.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/segment.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/segment.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/segment.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,117 @@
+#ifndef _ASM_SEGMENT_H
+#define _ASM_SEGMENT_H
@@ -76911,9 +75101,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/segment
+#define IDT_ENTRIES 256
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/setup.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/setup.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/setup.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/setup.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/setup.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/setup.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/setup.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/setup.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,81 @@
+/*
+ * Just a place holder. We don't want to have to test x86 before
@@ -76996,9 +75186,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/setup.h
+#endif /* __ASSEMBLY__ */
+
+#endif /* _i386_SETUP_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/smp.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/smp.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/smp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/smp.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/smp.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/smp.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/smp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/smp.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,103 @@
+#ifndef __ASM_SMP_H
+#define __ASM_SMP_H
@@ -77103,10 +75293,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/smp.h l
+
+#endif
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinlock.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/spinlock.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinlock.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/spinlock.h 2006-09-04 16:31:16.000000000 +0200
-@@ -0,0 +1,202 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/spinlock.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/spinlock.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/spinlock.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/spinlock.h 2006-11-19 14:27:04.000000000 +0100
+@@ -0,0 +1,190 @@
+#ifndef __ASM_SPINLOCK_H
+#define __ASM_SPINLOCK_H
+
@@ -77140,11 +75330,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinloc
+ "jmp 1b\n" \
+ "3:\n\t"
+
-+/*
-+ * NOTE: there's an irqs-on section here, which normally would have to be
-+ * irq-traced, but on CONFIG_TRACE_IRQFLAGS we never use
-+ * __raw_spin_lock_string_flags().
-+ */
+#define __raw_spin_lock_string_flags \
+ "\n1:\t" \
+ LOCK_PREFIX " ; decb %0\n\t" \
@@ -77171,24 +75356,17 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinloc
+ asm(__raw_spin_lock_string : "+m" (lock->slock) : : "memory");
+}
+
-+/*
-+ * It is easier for the lock validator if interrupts are not re-enabled
-+ * in the middle of a lock-acquire. This is a performance feature anyway
-+ * so we turn it off:
-+ */
-+#ifndef CONFIG_PROVE_LOCKING
+static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long flags)
+{
+ asm(__raw_spin_lock_string_flags : "+m" (lock->slock) : "r" (flags) : "memory");
+}
-+#endif
+
+static inline int __raw_spin_trylock(raw_spinlock_t *lock)
+{
+ char oldval;
+ __asm__ __volatile__(
+ "xchgb %b0,%1"
-+ :"=q" (oldval), "+m" (lock->slock)
++ :"=q" (oldval), "=m" (lock->slock)
+ :"0" (0) : "memory");
+ return oldval > 0;
+}
@@ -77204,7 +75382,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinloc
+
+#define __raw_spin_unlock_string \
+ "movb $1,%0" \
-+ :"+m" (lock->slock) : : "memory"
++ :"=m" (lock->slock) : : "memory"
+
+
+static inline void __raw_spin_unlock(raw_spinlock_t *lock)
@@ -77218,7 +75396,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinloc
+
+#define __raw_spin_unlock_string \
+ "xchgb %b0, %1" \
-+ :"=q" (oldval), "+m" (lock->slock) \
++ :"=q" (oldval), "=m" (lock->slock) \
+ :"0" (oldval) : "memory"
+
+static inline void __raw_spin_unlock(raw_spinlock_t *lock)
@@ -77299,19 +75477,19 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/spinloc
+
+static inline void __raw_read_unlock(raw_rwlock_t *rw)
+{
-+ asm volatile(LOCK_PREFIX "incl %0" :"+m" (rw->lock) : : "memory");
++ asm volatile(LOCK_PREFIX "incl %0" :"=m" (rw->lock) : : "memory");
+}
+
+static inline void __raw_write_unlock(raw_rwlock_t *rw)
+{
+ asm volatile(LOCK_PREFIX "addl $" RW_LOCK_BIAS_STR ", %0"
-+ : "+m" (rw->lock) : : "memory");
++ : "=m" (rw->lock) : : "memory");
+}
+
+#endif /* __ASM_SPINLOCK_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/swiotlb.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/swiotlb.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/swiotlb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/swiotlb.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/swiotlb.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/swiotlb.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/swiotlb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/swiotlb.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,41 @@
+#ifndef _ASM_SWIOTLB_H
+#define _ASM_SWIOTLB_H 1
@@ -77354,9 +75532,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/swiotlb
+#endif
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/synch_bitops.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/synch_bitops.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/synch_bitops.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/synch_bitops.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/synch_bitops.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/synch_bitops.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,141 @@
+#ifndef __XEN_SYNCH_BITOPS_H__
+#define __XEN_SYNCH_BITOPS_H__
@@ -77499,10 +75677,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/synch_b
+#define synch_cmpxchg_subword synch_cmpxchg
+
+#endif /* __XEN_SYNCH_BITOPS_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/system.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/system.h 2006-09-21 01:33:32.000000000 +0200
-@@ -0,0 +1,491 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/system.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/system.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/system.h 2006-11-19 14:27:04.000000000 +0100
+@@ -0,0 +1,581 @@
+#ifndef __ASM_SYSTEM_H
+#define __ASM_SYSTEM_H
+
@@ -77524,6 +75702,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+struct task_struct; /* one of the stranger aspects of C forward declarations.. */
+extern struct task_struct * FASTCALL(__switch_to(struct task_struct *prev, struct task_struct *next));
+
++/*
++ * Saving eflags is important. It switches not only IOPL between tasks,
++ * it also protects other tasks from NT leaking through sysenter etc.
++ */
+#define switch_to(prev,next,last) do { \
+ unsigned long esi,edi; \
+ asm volatile("pushfl\n\t" /* Save flags */ \
@@ -77597,6 +75779,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+#define savesegment(seg, value) \
+ asm volatile("mov %%" #seg ",%0":"=rm" (value))
+
++/*
++ * Clear and set 'TS' bit respectively
++ */
++#define clts() (HYPERVISOR_fpu_taskswitch(0))
+#define read_cr0() ({ \
+ unsigned int __dummy; \
+ __asm__ __volatile__( \
@@ -77605,12 +75791,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+ __dummy; \
+})
+#define write_cr0(x) \
-+ __asm__ __volatile__("movl %0,%%cr0": :"r" (x))
++ __asm__ __volatile__("movl %0,%%cr0": :"r" (x));
+
+#define read_cr2() \
+ (HYPERVISOR_shared_info->vcpu_info[smp_processor_id()].arch.cr2)
+#define write_cr2(x) \
-+ __asm__ __volatile__("movl %0,%%cr2": :"r" (x))
++ __asm__ __volatile__("movl %0,%%cr2": :"r" (x));
+
+#define read_cr3() ({ \
+ unsigned int __dummy; \
@@ -77633,6 +75819,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+ :"=r" (__dummy)); \
+ __dummy; \
+})
++
+#define read_cr4_safe() ({ \
+ unsigned int __dummy; \
+ /* This could fault if %cr4 does not exist */ \
@@ -77646,17 +75833,13 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+})
+
+#define write_cr4(x) \
-+ __asm__ __volatile__("movl %0,%%cr4": :"r" (x))
-+/*
-+ * Clear and set 'TS' bit respectively
-+ */
-+#define clts() (HYPERVISOR_fpu_taskswitch(0))
++ __asm__ __volatile__("movl %0,%%cr4": :"r" (x));
+#define stts() (HYPERVISOR_fpu_taskswitch(1))
+
+#endif /* __KERNEL__ */
+
+#define wbinvd() \
-+ __asm__ __volatile__ ("wbinvd": : :"memory")
++ __asm__ __volatile__ ("wbinvd": : :"memory");
+
+static inline unsigned long get_limit(unsigned long segment)
+{
@@ -77967,7 +76150,92 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+#define set_mb(var, value) do { var = value; barrier(); } while (0)
+#endif
+
-+#include <linux/irqflags.h>
++/* interrupt control.. */
++
++/*
++ * The use of 'barrier' in the following reflects their use as local-lock
++ * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
++ * critical operations are executed. All critical operations must complete
++ * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
++ * includes these barriers, for example.
++ */
++
++#define __cli() \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ _vcpu->evtchn_upcall_mask = 1; \
++ preempt_enable_no_resched(); \
++ barrier(); \
++} while (0)
++
++#define __sti() \
++do { \
++ vcpu_info_t *_vcpu; \
++ barrier(); \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ _vcpu->evtchn_upcall_mask = 0; \
++ barrier(); /* unmask then check (avoid races) */ \
++ if (unlikely(_vcpu->evtchn_upcall_pending)) \
++ force_evtchn_callback(); \
++ preempt_enable(); \
++} while (0)
++
++#define __save_flags(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ (x) = _vcpu->evtchn_upcall_mask; \
++ preempt_enable(); \
++} while (0)
++
++#define __restore_flags(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ barrier(); \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \
++ barrier(); /* unmask then check (avoid races) */ \
++ if (unlikely(_vcpu->evtchn_upcall_pending)) \
++ force_evtchn_callback(); \
++ preempt_enable(); \
++ } else \
++ preempt_enable_no_resched(); \
++} while (0)
++
++void safe_halt(void);
++void halt(void);
++
++#define __save_and_cli(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ (x) = _vcpu->evtchn_upcall_mask; \
++ _vcpu->evtchn_upcall_mask = 1; \
++ preempt_enable_no_resched(); \
++ barrier(); \
++} while (0)
++
++#define local_irq_save(x) __save_and_cli(x)
++#define local_irq_restore(x) __restore_flags(x)
++#define local_save_flags(x) __save_flags(x)
++#define local_irq_disable() __cli()
++#define local_irq_enable() __sti()
++
++/* Cannot use preempt_enable() here as we would recurse in preempt_sched(). */
++#define irqs_disabled() \
++({ int ___x; \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ ___x = (_vcpu->evtchn_upcall_mask != 0); \
++ preempt_enable_no_resched(); \
++ ___x; })
+
+/*
+ * disable hlt during certain critical i/o operations
@@ -77994,9 +76262,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/system.
+void default_idle(void);
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/timer.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/timer.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/timer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/timer.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/timer.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/timer.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/timer.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/timer.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,70 @@
+#ifndef _ASMi386_TIMER_H
+#define _ASMi386_TIMER_H
@@ -78068,9 +76336,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/timer.h
+extern struct init_timer_opts timer_pmtmr_init;
+#endif
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/tlbflush.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/tlbflush.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/tlbflush.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/tlbflush.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/tlbflush.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/tlbflush.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/tlbflush.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/tlbflush.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,101 @@
+#ifndef _I386_TLBFLUSH_H
+#define _I386_TLBFLUSH_H
@@ -78173,9 +76441,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/tlbflus
+}
+
+#endif /* _I386_TLBFLUSH_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/vga.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/vga.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/asm/vga.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/vga.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/asm/vga.h linux-2.6.18-xen/include/asm-i386/mach-xen/asm/vga.h
+--- linux-2.6.18/include/asm-i386/mach-xen/asm/vga.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/asm/vga.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,20 @@
+/*
+ * Access to VGA videoram
@@ -78197,9 +76465,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/asm/vga.h l
+#define vga_writeb(x,y) (*(y) = (x))
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/irq_vectors.h linux-2.6.18-xen/include/asm-i386/mach-xen/irq_vectors.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/irq_vectors.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/irq_vectors.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/irq_vectors.h linux-2.6.18-xen/include/asm-i386/mach-xen/irq_vectors.h
+--- linux-2.6.18/include/asm-i386/mach-xen/irq_vectors.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/irq_vectors.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,125 @@
+/*
+ * This file should contain #defines for all of the interrupt vector
@@ -78326,9 +76594,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/irq_vectors
+#define irq_to_dynirq(_x) ((_x) - DYNIRQ_BASE)
+
+#endif /* _ASM_IRQ_VECTORS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/mach_traps.h linux-2.6.18-xen/include/asm-i386/mach-xen/mach_traps.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/mach_traps.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/mach_traps.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/mach_traps.h linux-2.6.18-xen/include/asm-i386/mach-xen/mach_traps.h
+--- linux-2.6.18/include/asm-i386/mach-xen/mach_traps.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/mach_traps.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,33 @@
+/*
+ * include/asm-xen/asm-i386/mach-xen/mach_traps.h
@@ -78363,18 +76631,31 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/mach_traps.
+static inline void reassert_nmi(void) {}
+
+#endif /* !_MACH_TRAPS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/mach-xen/setup_arch.h linux-2.6.18-xen/include/asm-i386/mach-xen/setup_arch.h
---- linux-2.6.18.1/include/asm-i386/mach-xen/setup_arch.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-i386/mach-xen/setup_arch.h 2006-09-04 16:31:16.000000000 +0200
-@@ -0,0 +1,5 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/mach-xen/setup_arch.h linux-2.6.18-xen/include/asm-i386/mach-xen/setup_arch.h
+--- linux-2.6.18/include/asm-i386/mach-xen/setup_arch.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-i386/mach-xen/setup_arch.h 2006-11-19 14:27:04.000000000 +0100
+@@ -0,0 +1,6 @@
++
+/* Hook to call BIOS initialisation function */
+
+#define ARCH_SETUP machine_specific_arch_setup();
+
+void __init machine_specific_arch_setup(void);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/pgtable-2level-defs.h linux-2.6.18-xen/include/asm-i386/pgtable-2level-defs.h
---- linux-2.6.18.1/include/asm-i386/pgtable-2level-defs.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-i386/pgtable-2level-defs.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/page.h linux-2.6.18-xen/include/asm-i386/page.h
+--- linux-2.6.18/include/asm-i386/page.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/page.h 2006-11-19 14:27:04.000000000 +0100
+@@ -122,7 +122,7 @@
+
+ #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
+ #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
+-#define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)
++#define MAXMEM (__FIXADDR_TOP-__PAGE_OFFSET-__VMALLOC_RESERVE)
+ #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
+ #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
+ #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/pgtable-2level-defs.h linux-2.6.18-xen/include/asm-i386/pgtable-2level-defs.h
+--- linux-2.6.18/include/asm-i386/pgtable-2level-defs.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/pgtable-2level-defs.h 2006-11-19 14:27:04.000000000 +0100
@@ -1,6 +1,8 @@
#ifndef _I386_PGTABLE_2LEVEL_DEFS_H
#define _I386_PGTABLE_2LEVEL_DEFS_H
@@ -78384,9 +76665,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/pgtable-2level-defs.
/*
* traditional i386 two-level paging structure:
*/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/pgtable-3level-defs.h linux-2.6.18-xen/include/asm-i386/pgtable-3level-defs.h
---- linux-2.6.18.1/include/asm-i386/pgtable-3level-defs.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-i386/pgtable-3level-defs.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-i386/pgtable-3level-defs.h linux-2.6.18-xen/include/asm-i386/pgtable-3level-defs.h
+--- linux-2.6.18/include/asm-i386/pgtable-3level-defs.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-i386/pgtable-3level-defs.h 2006-11-19 14:27:04.000000000 +0100
@@ -1,6 +1,8 @@
#ifndef _I386_PGTABLE_3LEVEL_DEFS_H
#define _I386_PGTABLE_3LEVEL_DEFS_H
@@ -78396,10 +76677,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-i386/pgtable-3level-defs.
/*
* PGDIR_SHIFT determines what a top-level page table entry can map
*/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/agp.h linux-2.6.18-xen/include/asm-ia64/agp.h
---- linux-2.6.18.1/include/asm-ia64/agp.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/agp.h 2006-09-04 16:31:16.000000000 +0200
-@@ -19,13 +19,49 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/agp.h linux-2.6.18-xen/include/asm-ia64/agp.h
+--- linux-2.6.18/include/asm-ia64/agp.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/agp.h 2006-11-19 14:27:04.000000000 +0100
+@@ -19,13 +19,44 @@
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
@@ -78412,11 +76693,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/agp.h linux-2.6.18-x
+#endif
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
--#define alloc_gatt_pages(order) \
-- ((char *)__get_free_pages(GFP_KERNEL, (order)))
--#define free_gatt_pages(table, order) \
-- free_pages((unsigned long)(table), (order))
-+#ifdef CONFIG_XEN
++#ifndef CONFIG_XEN
+ #define alloc_gatt_pages(order) \
+ ((char *)__get_free_pages(GFP_KERNEL, (order)))
+ #define free_gatt_pages(table, order) \
+ free_pages((unsigned long)(table), (order))
++#else
+#include <asm/hypervisor.h>
+static inline char*
+alloc_gatt_pages(unsigned int order)
@@ -78440,25 +76722,17 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/agp.h linux-2.6.18-x
+ xen_destroy_contiguous_region((unsigned long)table, order);
+ free_pages((unsigned long)table, order);
+}
-+#else /* CONFIG_XEN */
-+/* Convert a physical address to an address suitable for the GART. */
-+#define phys_to_gart(x) (x)
-+#define gart_to_phys(x) (x)
-+
-+/* GATT allocation. Returns/accepts GATT kernel virtual address. */
-+#define alloc_gatt_pages(order) \
-+ ((char *)__get_free_pages(GFP_KERNEL, (order)))
-+#define free_gatt_pages(table, order) \
-+ free_pages((unsigned long)(table), (order))
-+#endif /* CONFIG_XEN */
++#endif /* CONFIG_XEN */
#endif /* _ASM_IA64_AGP_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-2.6.18-xen/include/asm-ia64/dma-mapping.h
---- linux-2.6.18.1/include/asm-ia64/dma-mapping.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/dma-mapping.h 2006-09-21 01:33:32.000000000 +0200
-@@ -7,19 +7,68 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/dma-mapping.h linux-2.6.18-xen/include/asm-ia64/dma-mapping.h
+--- linux-2.6.18/include/asm-ia64/dma-mapping.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/dma-mapping.h 2006-11-19 14:27:04.000000000 +0100
+@@ -6,20 +6,67 @@
+ * David Mosberger-Tang <davidm@hpl.hp.com>
*/
#include <asm/machvec.h>
++#ifndef CONFIG_XEN
-#define dma_alloc_coherent platform_dma_alloc_coherent
-#define dma_alloc_noncoherent platform_dma_alloc_coherent /* coherent mem. is cheap */
@@ -78470,8 +76744,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-
-#define dma_unmap_sg platform_dma_unmap_sg
-#define dma_sync_single_for_cpu platform_dma_sync_single_for_cpu
-#define dma_sync_sg_for_cpu platform_dma_sync_sg_for_cpu
-+#ifndef CONFIG_XEN
-+
+#define dma_alloc_coherent platform_dma_alloc_coherent
+#define dma_alloc_noncoherent platform_dma_alloc_coherent /* coherent mem. is cheap */
+#define dma_free_coherent platform_dma_free_coherent
@@ -78488,7 +76760,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-
+#define dma_sync_sg_for_device platform_dma_sync_sg_for_device
+#define dma_mapping_error platform_dma_mapping_error
+
-+
+#else /* CONFIG_XEN */
+/* Needed for arch/i386/kernel/swiotlb.c and arch/i386/kernel/pci-dma-xen.c */
+#include <asm/hypervisor.h>
@@ -78537,7 +76808,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-
#define dma_map_page(dev, pg, off, size, dir) \
dma_map_single(dev, page_address(pg) + (off), (size), (dir))
-@@ -36,7 +85,9 @@
+@@ -36,7 +83,9 @@
#define dma_sync_single_range_for_device(dev, dma_handle, offset, size, dir) \
dma_sync_single_for_device(dev, dma_handle, size, dir)
@@ -78547,7 +76818,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-
static inline int
dma_set_mask (struct device *dev, u64 mask)
-@@ -61,4 +112,29 @@
+@@ -61,4 +110,30 @@
#define dma_is_consistent(dma_handle) (1) /* all we do is coherent memory... */
@@ -78575,17 +76846,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/dma-mapping.h linux-
+ return (((((unsigned long)p & ~PAGE_MASK) + size) > PAGE_SIZE) &&
+ !test_bit(__pa(p) >> PAGE_SHIFT, contiguous_bitmap));
+}
++#endif
+
#endif /* _ASM_IA64_DMA_MAPPING_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/fixmap.h linux-2.6.18-xen/include/asm-ia64/fixmap.h
---- linux-2.6.18.1/include/asm-ia64/fixmap.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/fixmap.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/fixmap.h linux-2.6.18-xen/include/asm-ia64/fixmap.h
+--- linux-2.6.18/include/asm-ia64/fixmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/fixmap.h 2006-11-19 14:27:04.000000000 +0100
@@ -0,0 +1,2 @@
+#define clear_fixmap(x) do {} while (0)
+#define set_fixmap(x,y) do {} while (0)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/gcc_intrin.h linux-2.6.18-xen/include/asm-ia64/gcc_intrin.h
---- linux-2.6.18.1/include/asm-ia64/gcc_intrin.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/gcc_intrin.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/gcc_intrin.h linux-2.6.18-xen/include/asm-ia64/gcc_intrin.h
+--- linux-2.6.18/include/asm-ia64/gcc_intrin.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/gcc_intrin.h 2006-11-19 14:27:04.000000000 +0100
@@ -26,7 +26,7 @@
register unsigned long ia64_r13 asm ("r13") __attribute_used__;
@@ -78775,9 +77047,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/gcc_intrin.h linux-2
+#define __ia64_get_psr_i() (__ia64_getreg(_IA64_REG_PSR) & 0x4000UL)
+
#endif /* _ASM_IA64_GCC_INTRIN_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hw_irq.h linux-2.6.18-xen/include/asm-ia64/hw_irq.h
---- linux-2.6.18.1/include/asm-ia64/hw_irq.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/hw_irq.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/hw_irq.h linux-2.6.18-xen/include/asm-ia64/hw_irq.h
+--- linux-2.6.18/include/asm-ia64/hw_irq.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/hw_irq.h 2006-11-19 14:27:05.000000000 +0100
@@ -15,7 +15,11 @@
#include <asm/ptrace.h>
#include <asm/smp.h>
@@ -78803,9 +77075,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hw_irq.h linux-2.6.1
platform_send_ipi(smp_processor_id(), vector, IA64_IPI_DM_INT, 0);
}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypercall.h linux-2.6.18-xen/include/asm-ia64/hypercall.h
---- linux-2.6.18.1/include/asm-ia64/hypercall.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/hypercall.h 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/hypercall.h linux-2.6.18-xen/include/asm-ia64/hypercall.h
+--- linux-2.6.18/include/asm-ia64/hypercall.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/hypercall.h 2006-11-19 14:27:05.000000000 +0100
@@ -0,0 +1,423 @@
+/******************************************************************************
+ * hypercall.h
@@ -78842,13 +77114,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypercall.h linux-2.
+#ifndef __HYPERCALL_H__
+#define __HYPERCALL_H__
+
++#include <linux/string.h> /* memcpy() */
++
+#ifndef __HYPERVISOR_H__
+# error "please don't include this file directly"
+#endif
+
-+#include <asm/xen/xcom_hcall.h>
-+struct xencomm_handle;
-+
+/*
+ * Assembler stubs for hyper-calls.
+ */
@@ -78967,117 +77238,157 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypercall.h linux-2.
+ (type)__res; \
+})
+
-+
+static inline int
-+xencomm_arch_hypercall_sched_op(int cmd, struct xencomm_handle *arg)
++HYPERVISOR_sched_op_compat(
++ int cmd, unsigned long arg)
+{
-+ return _hypercall2(int, sched_op, cmd, arg);
++ return _hypercall2(int, sched_op_compat, cmd, arg);
+}
+
-+static inline long
-+HYPERVISOR_set_timer_op(u64 timeout)
++static inline int
++HYPERVISOR_sched_op(
++ int cmd, void *arg)
+{
-+ unsigned long timeout_hi = (unsigned long)(timeout >> 32);
-+ unsigned long timeout_lo = (unsigned long)timeout;
-+ return _hypercall2(long, set_timer_op, timeout_lo, timeout_hi);
++ return _hypercall2(int, sched_op, cmd, arg);
+}
+
-+static inline int
-+xencomm_arch_hypercall_dom0_op(struct xencomm_handle *op)
++static inline long
++HYPERVISOR_set_timer_op(
++ u64 timeout)
+{
-+ return _hypercall1(int, dom0_op, op);
++ unsigned long timeout_hi = (unsigned long)(timeout>>32);
++ unsigned long timeout_lo = (unsigned long)timeout;
++ return _hypercall2(long, set_timer_op, timeout_lo, timeout_hi);
+}
+
+static inline int
-+xencomm_arch_hypercall_sysctl(struct xencomm_handle *op)
++HYPERVISOR_dom0_op(
++ dom0_op_t *dom0_op)
+{
-+ return _hypercall1(int, sysctl, op);
++ dom0_op->interface_version = DOM0_INTERFACE_VERSION;
++ return _hypercall1(int, dom0_op, dom0_op);
+}
+
+static inline int
-+xencomm_arch_hypercall_domctl(struct xencomm_handle *op)
++HYPERVISOR_multicall(
++ void *call_list, int nr_calls)
+{
-+ return _hypercall1(int, domctl, op);
++ return _hypercall2(int, multicall, call_list, nr_calls);
+}
+
++//XXX xen/ia64 copy_from_guest() is broken.
++// This is a temporal work around until it is fixed.
+static inline int
-+xencomm_arch_hypercall_multicall(struct xencomm_handle *call_list,
-+ int nr_calls)
++____HYPERVISOR_memory_op(
++ unsigned int cmd, void *arg)
+{
-+ return _hypercall2(int, multicall, call_list, nr_calls);
++ return _hypercall2(int, memory_op, cmd, arg);
+}
+
++#include <xen/interface/memory.h>
++#ifdef CONFIG_VMX_GUEST
++# define ia64_xenmem_reservation_op(op, xmr) (0)
++#else
++int ia64_xenmem_reservation_op(unsigned long op,
++ struct xen_memory_reservation* reservation__);
++#endif
+static inline int
-+xencomm_arch_hypercall_memory_op(unsigned int cmd, struct xencomm_handle *arg)
-+{
-+ return _hypercall2(int, memory_op, cmd, arg);
++HYPERVISOR_memory_op(
++ unsigned int cmd, void *arg)
++{
++ switch (cmd) {
++ case XENMEM_increase_reservation:
++ case XENMEM_decrease_reservation:
++ case XENMEM_populate_physmap:
++ return ia64_xenmem_reservation_op(cmd,
++ (struct xen_memory_reservation*)arg);
++ default:
++ return ____HYPERVISOR_memory_op(cmd, arg);
++ }
++ /* NOTREACHED */
+}
+
+static inline int
-+xencomm_arch_hypercall_event_channel_op(int cmd, struct xencomm_handle *arg)
-+{
-+ return _hypercall2(int, event_channel_op, cmd, arg);
++HYPERVISOR_event_channel_op(
++ int cmd, void *arg)
++{
++ int rc = _hypercall2(int, event_channel_op, cmd, arg);
++ if (unlikely(rc == -ENOSYS)) {
++ struct evtchn_op op;
++ op.cmd = cmd;
++ memcpy(&op.u, arg, sizeof(op.u));
++ rc = _hypercall1(int, event_channel_op_compat, &op);
++ }
++ return rc;
+}
+
+static inline int
-+xencomm_arch_hypercall_acm_op(unsigned int cmd, struct xencomm_handle *arg)
++HYPERVISOR_acm_op(
++ unsigned int cmd, void *arg)
+{
-+ return _hypercall2(int, acm_op, cmd, arg);
++ return _hypercall2(int, acm_op, cmd, arg);
+}
+
+static inline int
-+xencomm_arch_hypercall_xen_version(int cmd, struct xencomm_handle *arg)
++HYPERVISOR_xen_version(
++ int cmd, void *arg)
+{
-+ return _hypercall2(int, xen_version, cmd, arg);
++ return _hypercall2(int, xen_version, cmd, arg);
+}
+
+static inline int
-+xencomm_arch_hypercall_console_io(int cmd, int count,
-+ struct xencomm_handle *str)
++HYPERVISOR_console_io(
++ int cmd, int count, char *str)
+{
-+ return _hypercall3(int, console_io, cmd, count, str);
++ return _hypercall3(int, console_io, cmd, count, str);
+}
+
+static inline int
-+xencomm_arch_hypercall_physdev_op(int cmd, struct xencomm_handle *arg)
-+{
-+ return _hypercall2(int, physdev_op, cmd, arg);
++HYPERVISOR_physdev_op(
++ int cmd, void *arg)
++{
++ int rc = _hypercall2(int, physdev_op, cmd, arg);
++ if (unlikely(rc == -ENOSYS)) {
++ struct physdev_op op;
++ op.cmd = cmd;
++ memcpy(&op.u, arg, sizeof(op.u));
++ rc = _hypercall1(int, physdev_op_compat, &op);
++ }
++ return rc;
+}
+
++//XXX __HYPERVISOR_grant_table_op is used for this hypercall constant.
+static inline int
-+xencomm_arch_hypercall_grant_table_op(unsigned int cmd,
-+ struct xencomm_handle *uop,
-+ unsigned int count)
++____HYPERVISOR_grant_table_op(
++ unsigned int cmd, void *uop, unsigned int count,
++ unsigned long pa1, unsigned long pa2)
+{
-+ return _hypercall3(int, grant_table_op, cmd, uop, count);
++ return _hypercall5(int, grant_table_op, cmd, uop, count, pa1, pa2);
+}
+
+int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count);
+
-+extern int xencomm_arch_hypercall_suspend(struct xencomm_handle *arg);
-+
+static inline int
-+xencomm_arch_hypercall_callback_op(int cmd, struct xencomm_handle *arg)
++HYPERVISOR_vcpu_op(
++ int cmd, int vcpuid, void *extra_args)
+{
-+ return _hypercall2(int, callback_op, cmd, arg);
++ return _hypercall3(int, vcpu_op, cmd, vcpuid, extra_args);
+}
+
++extern int HYPERVISOR_suspend(unsigned long srec);
++
+static inline unsigned long
-+xencomm_arch_hypercall_hvm_op(int cmd, void *arg)
++HYPERVISOR_hvm_op(
++ int cmd, void *arg)
+{
+ return _hypercall2(unsigned long, hvm_op, cmd, arg);
+}
+
+static inline int
-+HYPERVISOR_physdev_op(int cmd, void *arg)
++HYPERVISOR_callback_op(
++ int cmd, void *arg)
+{
-+ switch (cmd) {
-+ case PHYSDEVOP_eoi:
-+ return _hypercall1(int, ia64_fast_eoi,
-+ ((struct physdev_eoi *)arg)->irq);
-+ default:
-+ return xencomm_hypercall_physdev_op(cmd, arg);
-+ }
++ return _hypercall2(int, callback_op, cmd, arg);
+}
+
+extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
@@ -79187,53 +77498,14 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypercall.h linux-2.
+ return ret;
+}
+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M
-+static inline unsigned long
-+HYPERVISOR_expose_p2m(unsigned long conv_start_gpfn,
-+ unsigned long assign_start_gpfn,
-+ unsigned long expose_size, unsigned long granule_pfn)
-+{
-+ return _hypercall5(unsigned long, ia64_dom0vp_op,
-+ IA64_DOM0VP_expose_p2m, conv_start_gpfn,
-+ assign_start_gpfn, expose_size, granule_pfn);
-+}
-+#endif
-+
+// for balloon driver
+#define HYPERVISOR_update_va_mapping(va, new_val, flags) (0)
+
-+/* Use xencomm to do hypercalls. */
-+#ifdef MODULE
-+#define HYPERVISOR_sched_op xencomm_mini_hypercall_sched_op
-+#define HYPERVISOR_event_channel_op xencomm_mini_hypercall_event_channel_op
-+#define HYPERVISOR_callback_op xencomm_mini_hypercall_callback_op
-+#define HYPERVISOR_multicall xencomm_mini_hypercall_multicall
-+#define HYPERVISOR_xen_version xencomm_mini_hypercall_xen_version
-+#define HYPERVISOR_console_io xencomm_mini_hypercall_console_io
-+#define HYPERVISOR_hvm_op xencomm_mini_hypercall_hvm_op
-+#ifdef CONFIG_VMX_GUEST
-+#define HYPERVISOR_memory_op 0
-+#else
-+#define HYPERVISOR_memory_op xencomm_mini_hypercall_memory_op
-+#endif
-+#else
-+#define HYPERVISOR_sched_op xencomm_hypercall_sched_op
-+#define HYPERVISOR_event_channel_op xencomm_hypercall_event_channel_op
-+#define HYPERVISOR_callback_op xencomm_hypercall_callback_op
-+#define HYPERVISOR_multicall xencomm_hypercall_multicall
-+#define HYPERVISOR_xen_version xencomm_hypercall_xen_version
-+#define HYPERVISOR_console_io xencomm_hypercall_console_io
-+#define HYPERVISOR_hvm_op xencomm_hypercall_hvm_op
-+#define HYPERVISOR_memory_op xencomm_hypercall_memory_op
-+#endif
-+
-+#define HYPERVISOR_suspend xencomm_hypercall_suspend
-+
+#endif /* __HYPERCALL_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2.6.18-xen/include/asm-ia64/hypervisor.h
---- linux-2.6.18.1/include/asm-ia64/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/hypervisor.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,208 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/hypervisor.h linux-2.6.18-xen/include/asm-ia64/hypervisor.h
+--- linux-2.6.18/include/asm-ia64/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/hypervisor.h 2006-11-19 14:27:05.000000000 +0100
+@@ -0,0 +1,218 @@
+/******************************************************************************
+ * hypervisor.h
+ *
@@ -79310,6 +77582,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+{
+ int rc = HYPERVISOR_sched_op(SCHEDOP_yield, NULL);
+
++ if (rc == -ENOSYS)
++ rc = HYPERVISOR_sched_op_compat(SCHEDOP_yield, 0);
++
+ return rc;
+}
+
@@ -79319,6 +77594,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+{
+ int rc = HYPERVISOR_sched_op(SCHEDOP_block, NULL);
+
++ if (rc == -ENOSYS)
++ rc = HYPERVISOR_sched_op_compat(SCHEDOP_block, 0);
++
+ return rc;
+}
+
@@ -79332,6 +77610,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+
+ int rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
+
++ if (rc == -ENOSYS)
++ rc = HYPERVISOR_sched_op_compat(SCHEDOP_shutdown, reason);
++
+ return rc;
+}
+
@@ -79348,6 +77629,8 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+
+ set_xen_guest_handle(sched_poll.ports, ports);
+ rc = HYPERVISOR_sched_op(SCHEDOP_poll, &sched_poll);
++ if (rc == -ENOSYS)
++ rc = HYPERVISOR_sched_op_compat(SCHEDOP_yield, 0);
+
+ return rc;
+}
@@ -79364,7 +77647,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+ pgprot_t prot,
+ domid_t domid);
+struct file;
-+int privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma);
+int privcmd_mmap(struct file * file, struct vm_area_struct * vma);
+#define HAVE_ARCH_PRIVCMD_MMAP
+
@@ -79442,9 +77724,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/hypervisor.h linux-2
+#endif
+
+#endif /* __HYPERVISOR_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/intel_intrin.h linux-2.6.18-xen/include/asm-ia64/intel_intrin.h
---- linux-2.6.18.1/include/asm-ia64/intel_intrin.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/intel_intrin.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/intel_intrin.h linux-2.6.18-xen/include/asm-ia64/intel_intrin.h
+--- linux-2.6.18/include/asm-ia64/intel_intrin.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/intel_intrin.h 2006-11-19 14:27:05.000000000 +0100
@@ -16,8 +16,10 @@
* intrinsic
*/
@@ -79568,9 +77850,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/intel_intrin.h linux
#define __builtin_trap() __break(0);
#endif /* _ASM_IA64_INTEL_INTRIN_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/io.h linux-2.6.18-xen/include/asm-ia64/io.h
---- linux-2.6.18.1/include/asm-ia64/io.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/io.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/io.h linux-2.6.18-xen/include/asm-ia64/io.h
+--- linux-2.6.18/include/asm-ia64/io.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/io.h 2006-11-19 14:27:05.000000000 +0100
@@ -66,9 +66,11 @@
#define PIO_RESERVED __IA64_UNCACHED_OFFSET
#define HAVE_ARCH_PIO_SIZE
@@ -79625,9 +77907,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/io.h linux-2.6.18-xe
# endif /* KERNEL */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/iosapic.h linux-2.6.18-xen/include/asm-ia64/iosapic.h
---- linux-2.6.18.1/include/asm-ia64/iosapic.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/iosapic.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/iosapic.h linux-2.6.18-xen/include/asm-ia64/iosapic.h
+--- linux-2.6.18/include/asm-ia64/iosapic.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/iosapic.h 2006-11-19 14:27:05.000000000 +0100
@@ -53,6 +53,7 @@
#define NR_IOSAPICS 256
@@ -79644,9 +77926,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/iosapic.h linux-2.6.
static inline void iosapic_eoi(char __iomem *iosapic, u32 vector)
{
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/irq.h linux-2.6.18-xen/include/asm-ia64/irq.h
---- linux-2.6.18.1/include/asm-ia64/irq.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/irq.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/irq.h linux-2.6.18-xen/include/asm-ia64/irq.h
+--- linux-2.6.18/include/asm-ia64/irq.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/irq.h 2006-11-19 14:27:05.000000000 +0100
@@ -11,8 +11,39 @@
* 02/29/00 D.Mosberger moved most things into hw_irq.h
*/
@@ -79687,9 +77969,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/irq.h linux-2.6.18-x
static __inline__ int
irq_canonicalize (int irq)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/machvec_dig.h linux-2.6.18-xen/include/asm-ia64/machvec_dig.h
---- linux-2.6.18.1/include/asm-ia64/machvec_dig.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/machvec_dig.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/machvec_dig.h linux-2.6.18-xen/include/asm-ia64/machvec_dig.h
+--- linux-2.6.18/include/asm-ia64/machvec_dig.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/machvec_dig.h 2006-11-19 14:27:05.000000000 +0100
@@ -13,4 +13,19 @@
#define platform_name "dig"
#define platform_setup dig_setup
@@ -79710,10 +77992,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/machvec_dig.h linux-
+#endif
+
#endif /* _ASM_IA64_MACHVEC_DIG_h */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/maddr.h linux-2.6.18-xen/include/asm-ia64/maddr.h
---- linux-2.6.18.1/include/asm-ia64/maddr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/maddr.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,107 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/maddr.h linux-2.6.18-xen/include/asm-ia64/maddr.h
+--- linux-2.6.18/include/asm-ia64/maddr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/maddr.h 2006-11-19 14:27:05.000000000 +0100
+@@ -0,0 +1,92 @@
+#ifndef _ASM_IA64_MADDR_H
+#define _ASM_IA64_MADDR_H
+
@@ -79726,26 +78008,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/maddr.h linux-2.6.18
+
+#define INVALID_P2M_ENTRY (~0UL)
+
-+#ifdef CONFIG_XEN_IA64_EXPOSE_P2M
-+extern int p2m_initialized;
-+extern unsigned long p2m_min_low_pfn;
-+extern unsigned long p2m_max_low_pfn;
-+extern unsigned long p2m_convert_min_pfn;
-+extern unsigned long p2m_convert_max_pfn;
-+extern volatile const pte_t* p2m_pte;
-+unsigned long p2m_phystomach(unsigned long gpfn);
-+#else
-+#define p2m_initialized (0)
-+#define p2m_phystomach(gpfn) INVALID_MFN
-+#endif
-+
+/* XXX xen page size != page size */
+static inline unsigned long
+pfn_to_mfn_for_dma(unsigned long pfn)
+{
+ unsigned long mfn;
-+ if (p2m_initialized)
-+ return p2m_phystomach(pfn);
+ mfn = HYPERVISOR_phystomach(pfn);
+ BUG_ON(mfn == 0); // XXX
+ BUG_ON(mfn == INVALID_P2M_ENTRY); // XXX
@@ -79821,9 +78088,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/maddr.h linux-2.6.18
+typedef unsigned long maddr_t; // to compile netback, netfront
+
+#endif /* _ASM_IA64_MADDR_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/meminit.h linux-2.6.18-xen/include/asm-ia64/meminit.h
---- linux-2.6.18.1/include/asm-ia64/meminit.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/meminit.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/meminit.h linux-2.6.18-xen/include/asm-ia64/meminit.h
+--- linux-2.6.18/include/asm-ia64/meminit.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/meminit.h 2006-11-19 14:27:05.000000000 +0100
@@ -16,10 +16,15 @@
* - command line string
* - kernel code & data
@@ -79840,9 +78107,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/meminit.h linux-2.6.
struct rsvd_region {
unsigned long start; /* virtual address of beginning of element */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/page.h linux-2.6.18-xen/include/asm-ia64/page.h
---- linux-2.6.18.1/include/asm-ia64/page.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/page.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/page.h linux-2.6.18-xen/include/asm-ia64/page.h
+--- linux-2.6.18/include/asm-ia64/page.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/page.h 2006-11-19 14:27:05.000000000 +0100
@@ -126,7 +126,9 @@
# define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
#endif
@@ -79857,6 +78124,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/page.h linux-2.6.18-
(((current->personality & READ_IMPLIES_EXEC) != 0) \
? VM_EXEC : 0))
+-# endif /* __KERNEL__ */
+#ifndef __ASSEMBLY__
+#ifdef CONFIG_XEN
+
@@ -79905,11 +78173,11 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/page.h linux-2.6.18-
+
+#endif /* CONFIG_XEN */
+#endif /* __ASSEMBLY__ */
- # endif /* __KERNEL__ */
++#endif /* __KERNEL__ */
#endif /* _ASM_IA64_PAGE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/pal.h linux-2.6.18-xen/include/asm-ia64/pal.h
---- linux-2.6.18.1/include/asm-ia64/pal.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/pal.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/pal.h linux-2.6.18-xen/include/asm-ia64/pal.h
+--- linux-2.6.18/include/asm-ia64/pal.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/pal.h 2006-11-19 14:27:05.000000000 +0100
@@ -82,6 +82,7 @@
#ifndef __ASSEMBLY__
@@ -79918,9 +78186,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/pal.h linux-2.6.18-x
#include <asm/fpu.h>
/*
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/pgalloc.h linux-2.6.18-xen/include/asm-ia64/pgalloc.h
---- linux-2.6.18.1/include/asm-ia64/pgalloc.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/pgalloc.h 2006-09-04 16:31:16.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/pgalloc.h linux-2.6.18-xen/include/asm-ia64/pgalloc.h
+--- linux-2.6.18/include/asm-ia64/pgalloc.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/pgalloc.h 2006-11-19 14:27:05.000000000 +0100
@@ -125,7 +125,11 @@
static inline void
pmd_populate(struct mm_struct *mm, pmd_t * pmd_entry, struct page *pte)
@@ -79933,9 +78201,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/pgalloc.h linux-2.6.
}
static inline void
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/privop.h linux-2.6.18-xen/include/asm-ia64/privop.h
---- linux-2.6.18.1/include/asm-ia64/privop.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/privop.h 2006-09-04 16:31:17.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/privop.h linux-2.6.18-xen/include/asm-ia64/privop.h
+--- linux-2.6.18/include/asm-ia64/privop.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/privop.h 2006-11-19 14:27:05.000000000 +0100
@@ -0,0 +1,59 @@
+#ifndef _ASM_IA64_PRIVOP_H
+#define _ASM_IA64_PRIVOP_H
@@ -79996,9 +78264,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/privop.h linux-2.6.1
+#endif /* !__ASSEMBLY */
+
+#endif /* _ASM_IA64_PRIVOP_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/processor.h linux-2.6.18-xen/include/asm-ia64/processor.h
---- linux-2.6.18.1/include/asm-ia64/processor.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/processor.h 2006-09-04 16:31:17.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/processor.h linux-2.6.18-xen/include/asm-ia64/processor.h
+--- linux-2.6.18/include/asm-ia64/processor.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/processor.h 2006-11-19 14:27:05.000000000 +0100
@@ -18,6 +18,7 @@
#include <asm/kregs.h>
#include <asm/ptrace.h>
@@ -80007,9 +78275,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/processor.h linux-2.
#define IA64_NUM_DBG_REGS 8
/*
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/synch_bitops.h linux-2.6.18-xen/include/asm-ia64/synch_bitops.h
---- linux-2.6.18.1/include/asm-ia64/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/synch_bitops.h 2006-09-04 16:31:17.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/synch_bitops.h linux-2.6.18-xen/include/asm-ia64/synch_bitops.h
+--- linux-2.6.18/include/asm-ia64/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/synch_bitops.h 2006-11-19 14:27:05.000000000 +0100
@@ -0,0 +1,61 @@
+#ifndef __XEN_SYNCH_BITOPS_H__
+#define __XEN_SYNCH_BITOPS_H__
@@ -80072,9 +78340,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/synch_bitops.h linux
+#define synch_cmpxchg_subword synch_cmpxchg
+
+#endif /* __XEN_SYNCH_BITOPS_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/system.h linux-2.6.18-xen/include/asm-ia64/system.h
---- linux-2.6.18.1/include/asm-ia64/system.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-ia64/system.h 2006-09-04 16:31:17.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/system.h linux-2.6.18-xen/include/asm-ia64/system.h
+--- linux-2.6.18/include/asm-ia64/system.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-ia64/system.h 2006-11-19 14:27:05.000000000 +0100
@@ -123,7 +123,7 @@
#define __local_irq_save(x) \
do { \
@@ -80093,10 +78361,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/system.h linux-2.6.1
#define irqs_disabled() \
({ \
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/xen/privop.h linux-2.6.18-xen/include/asm-ia64/xen/privop.h
---- linux-2.6.18.1/include/asm-ia64/xen/privop.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/xen/privop.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,301 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-ia64/xen/privop.h linux-2.6.18-xen/include/asm-ia64/xen/privop.h
+--- linux-2.6.18/include/asm-ia64/xen/privop.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-ia64/xen/privop.h 2006-11-19 14:27:05.000000000 +0100
+@@ -0,0 +1,304 @@
+#ifndef _ASM_IA64_XEN_PRIVOP_H
+#define _ASM_IA64_XEN_PRIVOP_H
+
@@ -80113,9 +78381,12 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/xen/privop.h linux-2
+
+#define IA64_PARAVIRTUALIZED
+
++#if 0
++#undef XSI_BASE
+/* At 1 MB, before per-cpu space but still addressable using addl instead
+ of movl. */
+#define XSI_BASE 0xfffffffffff00000
++#endif
+
+/* Address of mapped regs. */
+#define XMAPPEDREGS_BASE (XSI_BASE + XSI_SIZE)
@@ -80398,148 +78669,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/xen/privop.h linux-2
+#define ia64_pal_call_static xen_pal_call_static
+
+#endif /* _ASM_IA64_XEN_PRIVOP_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/xen/xcom_hcall.h linux-2.6.18-xen/include/asm-ia64/xen/xcom_hcall.h
---- linux-2.6.18.1/include/asm-ia64/xen/xcom_hcall.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/xen/xcom_hcall.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,74 @@
-+/*
-+ * Copyright (C) 2006 Tristan Gingold <tristan.gingold@bull.net>, Bull SAS
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#ifndef _LINUX_XENCOMM_HCALL_H_
-+#define _LINUX_XENCOMM_HCALL_H_
-+
-+/* These function creates inline descriptor for the parameters and
-+ calls the corresponding xencomm_arch_hypercall_X.
-+ Architectures should defines HYPERVISOR_xxx as xencomm_hypercall_xxx unless
-+ they want to use their own wrapper. */
-+extern int xencomm_hypercall_console_io(int cmd, int count, char *str);
-+
-+extern int xencomm_hypercall_event_channel_op(int cmd, void *op);
-+
-+extern int xencomm_hypercall_xen_version(int cmd, void *arg);
-+
-+extern int xencomm_hypercall_physdev_op(int cmd, void *op);
-+
-+extern int xencomm_hypercall_grant_table_op(unsigned int cmd, void *op,
-+ unsigned int count);
-+
-+extern int xencomm_hypercall_sched_op(int cmd, void *arg);
-+
-+extern int xencomm_hypercall_multicall(void *call_list, int nr_calls);
-+
-+extern int xencomm_hypercall_callback_op(int cmd, void *arg);
-+
-+extern int xencomm_hypercall_memory_op(unsigned int cmd, void *arg);
-+
-+extern unsigned long xencomm_hypercall_hvm_op(int cmd, void *arg);
-+
-+extern int xencomm_hypercall_suspend(unsigned long srec);
-+
-+/* Using mini xencomm. */
-+extern int xencomm_mini_hypercall_console_io(int cmd, int count, char *str);
-+
-+extern int xencomm_mini_hypercall_event_channel_op(int cmd, void *op);
-+
-+extern int xencomm_mini_hypercall_xen_version(int cmd, void *arg);
-+
-+extern int xencomm_mini_hypercall_physdev_op(int cmd, void *op);
-+
-+extern int xencomm_mini_hypercall_grant_table_op(unsigned int cmd, void *op,
-+ unsigned int count);
-+
-+extern int xencomm_mini_hypercall_sched_op(int cmd, void *arg);
-+
-+extern int xencomm_mini_hypercall_multicall(void *call_list, int nr_calls);
-+
-+extern int xencomm_mini_hypercall_callback_op(int cmd, void *arg);
-+
-+extern int xencomm_mini_hypercall_memory_op(unsigned int cmd, void *arg);
-+
-+/* For privcmd. Locally declare argument type to avoid include storm.
-+ Type coherency will be checked within privcmd.c */
-+struct privcmd_hypercall;
-+extern int privcmd_hypercall(struct privcmd_hypercall *hypercall);
-+
-+#endif /* _LINUX_XENCOMM_HCALL_H_ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-ia64/xen/xencomm.h linux-2.6.18-xen/include/asm-ia64/xen/xencomm.h
---- linux-2.6.18.1/include/asm-ia64/xen/xencomm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-ia64/xen/xencomm.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,57 @@
-+/*
-+ * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#ifndef _LINUX_XENCOMM_H_
-+#define _LINUX_XENCOMM_H_
-+
-+#include <xen/interface/xencomm.h>
-+
-+#define XENCOMM_MINI_ADDRS 3
-+struct xencomm_mini {
-+ struct xencomm_desc _desc;
-+ uint64_t address[XENCOMM_MINI_ADDRS];
-+};
-+
-+/* To avoid additionnal virt to phys conversion, an opaque structure is
-+ presented. */
-+struct xencomm_handle;
-+
-+extern int xencomm_create(void *buffer, unsigned long bytes,
-+ struct xencomm_handle **desc, gfp_t type);
-+extern void xencomm_free(struct xencomm_handle *desc);
-+
-+extern int xencomm_create_mini(struct xencomm_mini *area, int *nbr_area,
-+ void *buffer, unsigned long bytes,
-+ struct xencomm_handle **ret);
-+
-+/* Translate virtual address to physical address. */
-+extern unsigned long xencomm_vaddr_to_paddr(unsigned long vaddr);
-+
-+/* Inline version. To be used only on linear space (kernel space). */
-+static inline struct xencomm_handle *
-+xencomm_create_inline(void *buffer)
-+{
-+ unsigned long paddr;
-+
-+ paddr = xencomm_vaddr_to_paddr((unsigned long)buffer);
-+ return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG);
-+}
-+
-+#define xen_guest_handle(hnd) ((hnd).p)
-+
-+#endif /* _LINUX_XENCOMM_H_ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-um/page.h linux-2.6.18-xen/include/asm-um/page.h
---- linux-2.6.18.1/include/asm-um/page.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-um/page.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-um/page.h linux-2.6.18-xen/include/asm-um/page.h
+--- linux-2.6.18/include/asm-um/page.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-um/page.h 2006-11-19 14:27:09.000000000 +0100
@@ -114,7 +114,7 @@
extern struct page *arch_validate(struct page *page, gfp_t mask, int order);
#define HAVE_ARCH_VALIDATE
@@ -80549,9 +78681,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-um/page.h linux-2.6.18-xe
#define HAVE_ARCH_FREE_PAGE
#include <asm-generic/memory_model.h>
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/apic.h linux-2.6.18-xen/include/asm-x86_64/apic.h
---- linux-2.6.18.1/include/asm-x86_64/apic.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-x86_64/apic.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/apic.h linux-2.6.18-xen/include/asm-x86_64/apic.h
+--- linux-2.6.18/include/asm-x86_64/apic.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/asm-x86_64/apic.h 2006-11-19 14:27:10.000000000 +0100
@@ -98,11 +98,13 @@
extern int disable_timer_pin_1;
@@ -80566,27 +78698,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/apic.h linux-2.6.1
#endif /* CONFIG_X86_LOCAL_APIC */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/ipi.h linux-2.6.18-xen/include/asm-x86_64/ipi.h
---- linux-2.6.18.1/include/asm-x86_64/ipi.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/asm-x86_64/ipi.h 2006-09-21 01:33:32.000000000 +0200
-@@ -49,6 +49,7 @@
- return SET_APIC_DEST_FIELD(mask);
- }
-
-+#ifndef CONFIG_XEN_UNPRIVILEGED_GUEST
- static inline void __send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest)
- {
- /*
-@@ -113,5 +114,6 @@
- }
- local_irq_restore(flags);
- }
-+#endif /* CONFIG_XEN_UNPRIVILEGED_GUEST */
-
- #endif /* __ASM_IPI_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/arch_hooks.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/arch_hooks.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/arch_hooks.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/arch_hooks.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/arch_hooks.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/arch_hooks.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/arch_hooks.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/arch_hooks.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,27 @@
+#ifndef _ASM_ARCH_HOOKS_H
+#define _ASM_ARCH_HOOKS_H
@@ -80615,9 +78729,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/arch_
+extern void mca_nmi_hook(void);
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/bootsetup.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/bootsetup.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/bootsetup.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/bootsetup.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/bootsetup.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/bootsetup.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/bootsetup.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/bootsetup.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,42 @@
+
+#ifndef _X86_64_BOOTSETUP_H
@@ -80661,9 +78775,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/boots
+#define RAMDISK_LOAD_FLAG 0x4000
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/desc.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/desc.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/desc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/desc.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/desc.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/desc.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/desc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/desc.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,263 @@
+/* Written 2000 by Andi Kleen */
+#ifndef __ARCH_DESC_H
@@ -80928,9 +79042,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/desc.
+#endif /* !__ASSEMBLY__ */
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dma-mapping.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dma-mapping.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dma-mapping.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dma-mapping.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/dma-mapping.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dma-mapping.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/dma-mapping.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dma-mapping.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,208 @@
+#ifndef _X8664_DMA_MAPPING_H
+#define _X8664_DMA_MAPPING_H 1
@@ -81140,9 +79254,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dma-m
+#endif /* _X8664_DMA_MAPPING_H */
+
+#include <asm-i386/mach-xen/asm/dma-mapping.h>
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dmi.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dmi.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dmi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dmi.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/dmi.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dmi.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/dmi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/dmi.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,29 @@
+#ifndef _ASM_DMI_H
+#define _ASM_DMI_H 1
@@ -81173,9 +79287,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/dmi.h
+#define dmi_iounmap bt_iounmap
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/e820.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/e820.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/e820.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/e820.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/e820.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/e820.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/e820.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/e820.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,64 @@
+/*
+ * structures and definitions for the int 15, ax=e820 memory map
@@ -81241,9 +79355,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/e820.
+#endif/*!__ASSEMBLY__*/
+
+#endif/*__E820_HEADER*/
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/fixmap.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/fixmap.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/fixmap.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/fixmap.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/fixmap.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/fixmap.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/fixmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/fixmap.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,113 @@
+/*
+ * fixmap.h: compile-time virtual memory allocation
@@ -81358,9 +79472,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/fixma
+}
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/floppy.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/floppy.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/floppy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/floppy.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/floppy.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/floppy.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/floppy.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/floppy.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,206 @@
+/*
+ * Architecture specific parts of the Floppy driver
@@ -81568,10 +79682,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/flopp
+#define EXTRA_FLOPPY_PARAMS
+
+#endif /* __ASM_XEN_X86_64_FLOPPY_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hw_irq.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hw_irq.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hw_irq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hw_irq.h 2006-09-04 16:31:18.000000000 +0200
-@@ -0,0 +1,136 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/hw_irq.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hw_irq.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/hw_irq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hw_irq.h 2006-11-19 14:27:11.000000000 +0100
+@@ -0,0 +1,137 @@
+#ifndef _ASM_HW_IRQ_H
+#define _ASM_HW_IRQ_H
+
@@ -81705,12 +79819,13 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hw_ir
+
+#define platform_legacy_irq(irq) ((irq) < 16)
+
++
+#endif
+
+#endif /* _ASM_HW_IRQ_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hypercall.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypercall.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hypercall.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypercall.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/hypercall.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypercall.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/hypercall.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypercall.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,389 @@
+/******************************************************************************
+ * hypercall.h
@@ -82101,15 +80216,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hyper
+}
+
+#endif /* __HYPERCALL_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hypervisor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypervisor.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypervisor.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/hypervisor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypervisor.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/hypervisor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/hypervisor.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,2 @@
+
+#include <asm-i386/mach-xen/asm/hypervisor.h>
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/io.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/io.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/io.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/io.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/io.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/io.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,327 @@
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
@@ -82438,78 +80553,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/io.h
+#define ARCH_HAS_DEV_MEM
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/irqflags.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irqflags.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/irqflags.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irqflags.h 2006-09-04 16:31:18.000000000 +0200
-@@ -0,0 +1,65 @@
-+/*
-+ * include/asm-x86_64/irqflags.h
-+ *
-+ * IRQ flags handling
-+ *
-+ * This file gets included from lowlevel asm headers too, to provide
-+ * wrapped versions of the local_irq_*() APIs, based on the
-+ * raw_local_irq_*() functions from the lowlevel headers.
-+ */
-+#ifndef _ASM_IRQFLAGS_H
-+#define _ASM_IRQFLAGS_H
-+
-+#ifndef __ASSEMBLY__
-+/*
-+ * Interrupt control:
-+ */
-+
-+unsigned long __raw_local_save_flags(void);
-+#define raw_local_save_flags(flags) \
-+ do { (flags) = __raw_local_save_flags(); } while (0)
-+
-+void raw_local_irq_restore(unsigned long flags);
-+void raw_local_irq_disable(void);
-+void raw_local_irq_enable(void);
-+
-+static inline int raw_irqs_disabled_flags(unsigned long flags)
-+{
-+ return flags != 0;
-+}
-+
-+/*
-+ * For spinlocks, etc.:
-+ */
-+
-+unsigned long __raw_local_irq_save(void);
-+
-+#define raw_local_irq_save(flags) \
-+ do { (flags) = __raw_local_irq_save(); } while (0)
-+
-+int raw_irqs_disabled(void);
-+
-+/*
-+ * Used in the idle loop; sti takes one instruction cycle
-+ * to complete:
-+ */
-+void raw_safe_halt(void);
-+
-+
-+/*
-+ * Used when interrupts are already enabled or to
-+ * shutdown the processor:
-+ */
-+void halt(void);
-+
-+#else /* __ASSEMBLY__: */
-+# ifdef CONFIG_TRACE_IRQFLAGS
-+# define TRACE_IRQS_ON call trace_hardirqs_on_thunk
-+# define TRACE_IRQS_OFF call trace_hardirqs_off_thunk
-+# else
-+# define TRACE_IRQS_ON
-+# define TRACE_IRQS_OFF
-+# endif
-+#endif
-+
-+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/irq.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irq.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/irq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irq.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/irq.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irq.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/irq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/irq.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,38 @@
+#ifndef _ASM_IRQ_H
+#define _ASM_IRQ_H
@@ -82549,9 +80595,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/irq.h
+#define __ARCH_HAS_DO_SOFTIRQ 1
+
+#endif /* _ASM_IRQ_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/maddr.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/maddr.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/maddr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/maddr.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/maddr.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/maddr.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/maddr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/maddr.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,139 @@
+#ifndef _X86_64_MADDR_H
+#define _X86_64_MADDR_H
@@ -82692,9 +80738,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/maddr
+
+#endif /* _X86_64_MADDR_H */
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu_context.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu_context.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu_context.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu_context.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/mmu_context.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu_context.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/mmu_context.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu_context.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,135 @@
+#ifndef __X86_64_MMU_CONTEXT_H
+#define __X86_64_MMU_CONTEXT_H
@@ -82831,9 +80877,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu_c
+}
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/mmu.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/mmu.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/mmu.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,38 @@
+#ifndef __x86_64_MMU_H
+#define __x86_64_MMU_H
@@ -82873,9 +80919,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/mmu.h
+#endif
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/msr.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/msr.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/msr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/msr.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/msr.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/msr.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/msr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/msr.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,399 @@
+#ifndef X86_64_MSR_H
+#define X86_64_MSR_H 1
@@ -83276,9 +81322,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/msr.h
+#define MSR_P4_U2L_ESCR1 0x3b1
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/nmi.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/nmi.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/nmi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/nmi.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/nmi.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/nmi.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/nmi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/nmi.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,93 @@
+/*
+ * linux/include/asm-i386/nmi.h
@@ -83373,9 +81419,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/nmi.h
+#define NMI_INVALID 3
+
+#endif /* ASM_NMI_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/page.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/page.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/page.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/page.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/page.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/page.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/page.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/page.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,208 @@
+#ifndef _X86_64_PAGE_H
+#define _X86_64_PAGE_H
@@ -83585,9 +81631,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/page.
+#endif /* __KERNEL__ */
+
+#endif /* _X86_64_PAGE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/param.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/param.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/param.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/param.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/param.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/param.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/param.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/param.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,22 @@
+#ifndef _ASMx86_64_PARAM_H
+#define _ASMx86_64_PARAM_H
@@ -83611,9 +81657,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/param
+#define MAXHOSTNAMELEN 64 /* max length of hostname */
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pci.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pci.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pci.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/pci.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pci.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/pci.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pci.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,173 @@
+#ifndef __x8664_PCI_H
+#define __x8664_PCI_H
@@ -83788,9 +81834,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pci.h
+#define pcibios_scan_all_fns(a, b) 1
+
+#endif /* __x8664_PCI_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgalloc.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgalloc.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgalloc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgalloc.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/pgalloc.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgalloc.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/pgalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgalloc.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,226 @@
+#ifndef _X86_64_PGALLOC_H
+#define _X86_64_PGALLOC_H
@@ -84018,9 +82064,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgall
+#define __pud_free_tlb(tlb,x) pud_free((x))
+
+#endif /* _X86_64_PGALLOC_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgtable.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgtable.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgtable.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgtable.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/pgtable.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgtable.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/pgtable.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/pgtable.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,558 @@
+#ifndef _X86_64_PGTABLE_H
+#define _X86_64_PGTABLE_H
@@ -84580,9 +82626,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/pgtab
+#include <asm-generic/pgtable.h>
+
+#endif /* _X86_64_PGTABLE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/processor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/processor.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/processor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/processor.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/processor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/processor.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/processor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/processor.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,504 @@
+/*
+ * include/asm-x86_64/processor.h
@@ -84660,6 +82706,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/proce
+ __u8 phys_proc_id; /* Physical Processor id. */
+ __u8 cpu_core_id; /* Core id. */
+#endif
++
+} ____cacheline_aligned;
+
+#define X86_VENDOR_INTEL 0
@@ -84828,11 +82875,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/proce
+} __attribute__((packed)) ____cacheline_aligned;
+
+DECLARE_PER_CPU(struct tss_struct,init_tss);
++/* Save the original ist values for checking stack pointers during debugging */
+#endif
+
-+
+extern struct cpuinfo_x86 boot_cpu_data;
-+/* Save the original ist values for checking stack pointers during debugging */
+struct orig_ist {
+ unsigned long ist[7];
+};
@@ -85088,9 +83134,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/proce
+#define HAVE_ARCH_PICK_MMAP_LAYOUT 1
+
+#endif /* __ASM_X86_64_PROCESSOR_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/ptrace.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/ptrace.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/ptrace.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/ptrace.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/ptrace.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/ptrace.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/ptrace.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/ptrace.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,125 @@
+#ifndef _X86_64_PTRACE_H
+#define _X86_64_PTRACE_H
@@ -85217,9 +83263,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/ptrac
+#endif
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/smp.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/smp.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/smp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/smp.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/smp.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/smp.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/smp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/smp.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,150 @@
+#ifndef __ASM_SMP_H
+#define __ASM_SMP_H
@@ -85371,16 +83417,16 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/smp.h
+
+#endif
+
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/synch_bitops.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/synch_bitops.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/synch_bitops.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/synch_bitops.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/synch_bitops.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/synch_bitops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/synch_bitops.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,2 @@
+
+#include <asm-i386/mach-xen/asm/synch_bitops.h>
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/system.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/system.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/system.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/system.h 2006-09-04 16:31:18.000000000 +0200
-@@ -0,0 +1,264 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/system.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/system.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/system.h 2006-11-19 14:27:11.000000000 +0100
+@@ -0,0 +1,346 @@
+#ifndef __ASM_SYSTEM_H
+#define __ASM_SYSTEM_H
+
@@ -85420,7 +83466,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/syste
+ "thread_return:\n\t" \
+ "movq %%gs:%P[pda_pcurrent],%%rsi\n\t" \
+ "movq %P[thread_info](%%rsi),%%r8\n\t" \
-+ LOCK_PREFIX "btr %[tif_fork],%P[ti_flags](%%r8)\n\t" \
++ LOCK_PREFIX "btr %[tif_fork],%P[ti_flags](%%r8)\n\t" \
+ "movq %%rax,%%rdi\n\t" \
+ "jc ret_from_fork\n\t" \
+ RESTORE_CONTEXT \
@@ -85634,20 +83680,102 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/syste
+
+#define warn_if_not_ulong(x) do { unsigned long foo; (void) (&(x) == &foo); } while (0)
+
++
++/*
++ * The use of 'barrier' in the following reflects their use as local-lock
++ * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
++ * critical operations are executed. All critical operations must complete
++ * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
++ * includes these barriers, for example.
++ */
++
++#define __cli() \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ _vcpu->evtchn_upcall_mask = 1; \
++ preempt_enable_no_resched(); \
++ barrier(); \
++} while (0)
++
++#define __sti() \
++do { \
++ vcpu_info_t *_vcpu; \
++ barrier(); \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ _vcpu->evtchn_upcall_mask = 0; \
++ barrier(); /* unmask then check (avoid races) */ \
++ if ( unlikely(_vcpu->evtchn_upcall_pending) ) \
++ force_evtchn_callback(); \
++ preempt_enable(); \
++} while (0)
++
++#define __save_flags(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ (x) = _vcpu->evtchn_upcall_mask; \
++ preempt_enable(); \
++} while (0)
++
++#define __restore_flags(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ barrier(); \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \
++ barrier(); /* unmask then check (avoid races) */ \
++ if ( unlikely(_vcpu->evtchn_upcall_pending) ) \
++ force_evtchn_callback(); \
++ preempt_enable(); \
++ } else \
++ preempt_enable_no_resched(); \
++} while (0)
++
++#define __save_and_cli(x) \
++do { \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ (x) = _vcpu->evtchn_upcall_mask; \
++ _vcpu->evtchn_upcall_mask = 1; \
++ preempt_enable_no_resched(); \
++ barrier(); \
++} while (0)
++
++#define local_irq_save(x) __save_and_cli(x)
++#define local_irq_restore(x) __restore_flags(x)
++#define local_save_flags(x) __save_flags(x)
++#define local_irq_disable() __cli()
++#define local_irq_enable() __sti()
++
++/* Cannot use preempt_enable() here as we would recurse in preempt_sched(). */
++#define irqs_disabled() \
++({ int ___x; \
++ vcpu_info_t *_vcpu; \
++ preempt_disable(); \
++ _vcpu = &HYPERVISOR_shared_info->vcpu_info[__vcpu_id]; \
++ ___x = (_vcpu->evtchn_upcall_mask != 0); \
++ preempt_enable_no_resched(); \
++ ___x; })
++
+void safe_halt(void);
+void halt(void);
+
-+#include <linux/irqflags.h>
-+
+void cpu_idle_wait(void);
+
+extern unsigned long arch_align_stack(unsigned long sp);
++
+extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/timer.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/timer.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/timer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/timer.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/timer.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/timer.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/timer.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/timer.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,67 @@
+#ifndef _ASMi386_TIMER_H
+#define _ASMi386_TIMER_H
@@ -85716,9 +83844,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/timer
+extern struct init_timer_opts timer_pmtmr_init;
+#endif
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/tlbflush.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/tlbflush.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/tlbflush.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/tlbflush.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/tlbflush.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/tlbflush.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/tlbflush.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/tlbflush.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,103 @@
+#ifndef _X8664_TLBFLUSH_H
+#define _X8664_TLBFLUSH_H
@@ -85823,9 +83951,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/tlbfl
+}
+
+#endif /* _X8664_TLBFLUSH_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/vga.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/vga.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/vga.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/vga.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/vga.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/vga.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/vga.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/vga.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,20 @@
+/*
+ * Access to VGA videoram
@@ -85847,9 +83975,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/vga.h
+#define vga_writeb(x,y) (*(y) = (x))
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/xor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/xor.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/xor.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/xor.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/asm/xor.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/xor.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/asm/xor.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/asm/xor.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,328 @@
+/*
+ * x86-64 changes / gcc fixes from Andi Kleen.
@@ -86179,9 +84307,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/asm/xor.h
+ We may also be able to load into the L1 only depending on how the cpu
+ deals with a load to a line that is being prefetched. */
+#define XOR_SELECT_TEMPLATE(FASTEST) (&xor_block_sse)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/irq_vectors.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/irq_vectors.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/irq_vectors.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/irq_vectors.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/irq_vectors.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/irq_vectors.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/irq_vectors.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/irq_vectors.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,123 @@
+/*
+ * This file should contain #defines for all of the interrupt vector
@@ -86306,9 +84434,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/irq_vecto
+#define irq_to_dynirq(_x) ((_x) - DYNIRQ_BASE)
+
+#endif /* _ASM_IRQ_VECTORS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_time.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_time.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_time.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_time.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/mach_time.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_time.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/mach_time.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_time.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,111 @@
+/*
+ * include/asm-i386/mach-default/mach_time.h
@@ -86421,9 +84549,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_time
+}
+
+#endif /* !_MACH_TIME_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_timer.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_timer.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_timer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_timer.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/mach_timer.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_timer.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/mach_timer.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/mach_timer.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,48 @@
+/*
+ * include/asm-i386/mach-default/mach_timer.h
@@ -86473,9 +84601,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/mach_time
+}
+
+#endif /* !_MACH_TIMER_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/setup_arch_post.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_post.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/setup_arch_post.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_post.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/setup_arch_post.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_post.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/setup_arch_post.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_post.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,58 @@
+/**
+ * machine_specific_* - Hooks for machine specific setup.
@@ -86535,18 +84663,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/setup_arc
+ }
+#endif
+}
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/asm-x86_64/mach-xen/setup_arch_pre.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_pre.h
---- linux-2.6.18.1/include/asm-x86_64/mach-xen/setup_arch_pre.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_pre.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/asm-x86_64/mach-xen/setup_arch_pre.h linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_pre.h
+--- linux-2.6.18/include/asm-x86_64/mach-xen/setup_arch_pre.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/asm-x86_64/mach-xen/setup_arch_pre.h 2006-11-19 14:27:11.000000000 +0100
@@ -0,0 +1,5 @@
+/* Hook to call BIOS initialisation function */
+
+#define ARCH_SETUP machine_specific_arch_setup();
+
+static void __init machine_specific_arch_setup(void);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/elfnote.h linux-2.6.18-xen/include/linux/elfnote.h
---- linux-2.6.18.1/include/linux/elfnote.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/linux/elfnote.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/elfnote.h linux-2.6.18-xen/include/linux/elfnote.h
+--- linux-2.6.18/include/linux/elfnote.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/linux/elfnote.h 2006-11-19 14:27:14.000000000 +0100
@@ -0,0 +1,90 @@
+#ifndef _LINUX_ELFNOTE_H
+#define _LINUX_ELFNOTE_H
@@ -86638,9 +84766,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/elfnote.h linux-2.6.18-
+#endif /* __ASSEMBLER__ */
+
+#endif /* _LINUX_ELFNOTE_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/gfp.h linux-2.6.18-xen/include/linux/gfp.h
---- linux-2.6.18.1/include/linux/gfp.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/gfp.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/gfp.h linux-2.6.18-xen/include/linux/gfp.h
+--- linux-2.6.18/include/linux/gfp.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/gfp.h 2006-11-19 14:27:14.000000000 +0100
@@ -99,7 +99,11 @@
*/
@@ -86654,9 +84782,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/gfp.h linux-2.6.18-xen/
#endif
extern struct page *
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/highmem.h linux-2.6.18-xen/include/linux/highmem.h
---- linux-2.6.18.1/include/linux/highmem.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/highmem.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/highmem.h linux-2.6.18-xen/include/linux/highmem.h
+--- linux-2.6.18/include/linux/highmem.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/highmem.h 2006-11-19 14:27:14.000000000 +0100
@@ -24,10 +24,16 @@
/* declarations for linux/mm/highmem.c */
@@ -86674,9 +84802,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/highmem.h linux-2.6.18-
static inline void *kmap(struct page *page)
{
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/interrupt.h linux-2.6.18-xen/include/linux/interrupt.h
---- linux-2.6.18.1/include/linux/interrupt.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/interrupt.h 2006-09-04 16:31:18.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/interrupt.h linux-2.6.18-xen/include/linux/interrupt.h
+--- linux-2.6.18/include/linux/interrupt.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/interrupt.h 2006-11-19 14:27:14.000000000 +0100
@@ -166,6 +166,12 @@
#endif /* CONFIG_GENERIC_HARDIRQS */
@@ -86690,9 +84818,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/interrupt.h linux-2.6.1
#ifndef __ARCH_SET_SOFTIRQ_PENDING
#define set_softirq_pending(x) (local_softirq_pending() = (x))
#define or_softirq_pending(x) (local_softirq_pending() |= (x))
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/mm.h linux-2.6.18-xen/include/linux/mm.h
---- linux-2.6.18.1/include/linux/mm.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/mm.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/mm.h linux-2.6.18-xen/include/linux/mm.h
+--- linux-2.6.18/include/linux/mm.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/mm.h 2006-11-19 14:27:14.000000000 +0100
@@ -164,6 +164,9 @@
#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
#define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */
@@ -86717,9 +84845,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/mm.h linux-2.6.18-xen/i
#ifdef CONFIG_PROC_FS
void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
#else
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/oprofile.h linux-2.6.18-xen/include/linux/oprofile.h
---- linux-2.6.18.1/include/linux/oprofile.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/oprofile.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/oprofile.h linux-2.6.18-xen/include/linux/oprofile.h
+--- linux-2.6.18/include/linux/oprofile.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/oprofile.h 2006-11-19 14:27:14.000000000 +0100
@@ -16,6 +16,10 @@
#include <linux/types.h>
#include <linux/spinlock.h>
@@ -86752,23 +84880,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/oprofile.h linux-2.6.18
/**
* Create a file of the given name as a child of the given root, with
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/pfn.h linux-2.6.18-xen/include/linux/pfn.h
---- linux-2.6.18.1/include/linux/pfn.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/pfn.h 2006-10-17 15:01:58.000000000 +0200
-@@ -4,6 +4,10 @@
- #define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK)
- #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
- #define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
-+#if defined(CONFIG_X86_XEN) && defined(CONFIG_X86_PAE)
-+#define PFN_PHYS(x) ((unsigned long long)(x) << PAGE_SHIFT)
-+#else
- #define PFN_PHYS(x) ((x) << PAGE_SHIFT)
-+#endif
-
- #endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/skbuff.h linux-2.6.18-xen/include/linux/skbuff.h
---- linux-2.6.18.1/include/linux/skbuff.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/include/linux/skbuff.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/linux/skbuff.h linux-2.6.18-xen/include/linux/skbuff.h
+--- linux-2.6.18/include/linux/skbuff.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/linux/skbuff.h 2006-11-19 14:27:15.000000000 +0100
@@ -203,6 +203,8 @@
* @local_df: allow local fragmentation
* @cloned: Head may be cloned (check refcnt to be sure)
@@ -86820,9 +84934,20 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/linux/skbuff.h linux-2.6.18-x
/**
* dev_alloc_skb - allocate an skbuff for receiving
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/balloon.h linux-2.6.18-xen/include/xen/balloon.h
---- linux-2.6.18.1/include/xen/balloon.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/balloon.h 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/scsi/scsi_eh.h linux-2.6.18-xen/include/scsi/scsi_eh.h
+--- linux-2.6.18/include/scsi/scsi_eh.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/include/scsi/scsi_eh.h 2006-11-19 14:27:15.000000000 +0100
+@@ -34,6 +34,7 @@
+ }
+
+
++extern void scsi_eh_wakeup(struct Scsi_Host *shost);
+ extern void scsi_eh_finish_cmd(struct scsi_cmnd *scmd,
+ struct list_head *done_q);
+ extern void scsi_eh_flush_done_q(struct list_head *done_q);
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/balloon.h linux-2.6.18-xen/include/xen/balloon.h
+--- linux-2.6.18/include/xen/balloon.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/balloon.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,57 @@
+/******************************************************************************
+ * balloon.h
@@ -86881,9 +85006,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/balloon.h linux-2.6.18-xe
+#define balloon_unlock(__flags) spin_unlock_irqrestore(&balloon_lock, __flags)
+
+#endif /* __ASM_BALLOON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/cpu_hotplug.h linux-2.6.18-xen/include/xen/cpu_hotplug.h
---- linux-2.6.18.1/include/xen/cpu_hotplug.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/cpu_hotplug.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/cpu_hotplug.h linux-2.6.18-xen/include/xen/cpu_hotplug.h
+--- linux-2.6.18/include/xen/cpu_hotplug.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/cpu_hotplug.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,43 @@
+#ifndef __XEN_CPU_HOTPLUG_H__
+#define __XEN_CPU_HOTPLUG_H__
@@ -86928,9 +85053,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/cpu_hotplug.h linux-2.6.1
+#endif /* !defined(CONFIG_HOTPLUG_CPU) */
+
+#endif /* __XEN_CPU_HOTPLUG_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/driver_util.h linux-2.6.18-xen/include/xen/driver_util.h
---- linux-2.6.18.1/include/xen/driver_util.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/driver_util.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/driver_util.h linux-2.6.18-xen/include/xen/driver_util.h
+--- linux-2.6.18/include/xen/driver_util.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/driver_util.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,15 @@
+
+#ifndef __ASM_XEN_DRIVER_UTIL_H__
@@ -86947,9 +85072,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/driver_util.h linux-2.6.1
+extern void unlock_vm_area(struct vm_struct *area);
+
+#endif /* __ASM_XEN_DRIVER_UTIL_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/evtchn.h linux-2.6.18-xen/include/xen/evtchn.h
---- linux-2.6.18.1/include/xen/evtchn.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/evtchn.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/evtchn.h linux-2.6.18-xen/include/xen/evtchn.h
+--- linux-2.6.18/include/xen/evtchn.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/evtchn.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,113 @@
+/******************************************************************************
+ * evtchn.h
@@ -87064,9 +85189,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/evtchn.h linux-2.6.18-xen
+extern void notify_remote_via_irq(int irq);
+
+#endif /* __ASM_EVTCHN_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/features.h linux-2.6.18-xen/include/xen/features.h
---- linux-2.6.18.1/include/xen/features.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/features.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/features.h linux-2.6.18-xen/include/xen/features.h
+--- linux-2.6.18/include/xen/features.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/features.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,20 @@
+/******************************************************************************
+ * features.h
@@ -87088,9 +85213,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/features.h linux-2.6.18-x
+#define xen_feature(flag) (xen_features[flag])
+
+#endif /* __ASM_XEN_FEATURES_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/foreign_page.h linux-2.6.18-xen/include/xen/foreign_page.h
---- linux-2.6.18.1/include/xen/foreign_page.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/foreign_page.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/foreign_page.h linux-2.6.18-xen/include/xen/foreign_page.h
+--- linux-2.6.18/include/xen/foreign_page.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/foreign_page.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,30 @@
+/******************************************************************************
+ * foreign_page.h
@@ -87122,9 +85247,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/foreign_page.h linux-2.6.
+ ( (void (*) (struct page *)) (page)->mapping )
+
+#endif /* __ASM_XEN_FOREIGN_PAGE_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/gnttab.h linux-2.6.18-xen/include/xen/gnttab.h
---- linux-2.6.18.1/include/xen/gnttab.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/gnttab.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/gnttab.h linux-2.6.18-xen/include/xen/gnttab.h
+--- linux-2.6.18/include/xen/gnttab.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/gnttab.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,150 @@
+/******************************************************************************
+ * gnttab.h
@@ -87276,9 +85401,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/gnttab.h linux-2.6.18-xen
+}
+
+#endif /* __ASM_GNTTAB_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/hvm.h linux-2.6.18-xen/include/xen/hvm.h
---- linux-2.6.18.1/include/xen/hvm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/hvm.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/hvm.h linux-2.6.18-xen/include/xen/hvm.h
+--- linux-2.6.18/include/xen/hvm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/hvm.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,24 @@
+/* Simple wrappers around HVM functions */
+#ifndef XEN_HVM_H__
@@ -87304,9 +85429,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/hvm.h linux-2.6.18-xen/in
+}
+
+#endif /* XEN_HVM_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/hypervisor_sysfs.h linux-2.6.18-xen/include/xen/hypervisor_sysfs.h
---- linux-2.6.18.1/include/xen/hypervisor_sysfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/hypervisor_sysfs.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/hypervisor_sysfs.h linux-2.6.18-xen/include/xen/hypervisor_sysfs.h
+--- linux-2.6.18/include/xen/hypervisor_sysfs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/hypervisor_sysfs.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,32 @@
+/*
+ * copyright (c) 2006 IBM Corporation
@@ -87340,9 +85465,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/hypervisor_sysfs.h linux-
+};
+
+#endif /* _HYP_SYSFS_H_ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/acm.h linux-2.6.18-xen/include/xen/interface/acm.h
---- linux-2.6.18.1/include/xen/interface/acm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/acm.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/acm.h linux-2.6.18-xen/include/xen/interface/acm.h
+--- linux-2.6.18/include/xen/interface/acm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/acm.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,187 @@
+/*
+ * acm.h: Xen access control module interface defintions
@@ -87531,9 +85656,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/acm.h linux-2.6
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/acm_ops.h linux-2.6.18-xen/include/xen/interface/acm_ops.h
---- linux-2.6.18.1/include/xen/interface/acm_ops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/acm_ops.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/acm_ops.h linux-2.6.18-xen/include/xen/interface/acm_ops.h
+--- linux-2.6.18/include/xen/interface/acm_ops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/acm_ops.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,102 @@
+/*
+ * acm_ops.h: Xen access control module hypervisor commands
@@ -87637,10 +85762,10 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/acm_ops.h linux
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h linux-2.6.18-xen/include/xen/interface/arch-ia64.h
---- linux-2.6.18.1/include/xen/interface/arch-ia64.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/arch-ia64.h 2006-10-17 15:01:58.000000000 +0200
-@@ -0,0 +1,444 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/arch-ia64.h linux-2.6.18-xen/include/xen/interface/arch-ia64.h
+--- linux-2.6.18/include/xen/interface/arch-ia64.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/arch-ia64.h 2006-11-19 14:27:15.000000000 +0100
+@@ -0,0 +1,448 @@
+/******************************************************************************
+ * arch-ia64/hypervisor-if.h
+ *
@@ -87691,6 +85816,18 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h lin
+
+typedef unsigned long xen_ulong_t;
+
++#define GPFN_MEM (0UL << 56) /* Guest pfn is normal mem */
++#define GPFN_FRAME_BUFFER (1UL << 56) /* VGA framebuffer */
++#define GPFN_LOW_MMIO (2UL << 56) /* Low MMIO range */
++#define GPFN_PIB (3UL << 56) /* PIB base */
++#define GPFN_IOSAPIC (4UL << 56) /* IOSAPIC base */
++#define GPFN_LEGACY_IO (5UL << 56) /* Legacy I/O base */
++#define GPFN_GFW (6UL << 56) /* Guest Firmware */
++#define GPFN_HIGH_MMIO (7UL << 56) /* High MMIO range */
++
++#define GPFN_IO_MASK (7UL << 56) /* Guest pfn is I/O type */
++#define GPFN_INV_MASK (31UL << 59) /* Guest pfn is invalid */
++
+#define INVALID_MFN (~0UL)
+
+#define MEM_G (1UL << 30)
@@ -87967,33 +86104,33 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h lin
+typedef struct vcpu_guest_context vcpu_guest_context_t;
+DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
+
-+/* dom0 vp op */
++// dom0 vp op
+#define __HYPERVISOR_ia64_dom0vp_op __HYPERVISOR_arch_0
-+/* Map io space in machine address to dom0 physical address space.
-+ Currently physical assigned address equals to machine address. */
-+#define IA64_DOM0VP_ioremap 0
-+
-+/* Convert a pseudo physical page frame number to the corresponding
-+ machine page frame number. If no page is assigned, INVALID_MFN or
-+ GPFN_INV_MASK is returned depending on domain's non-vti/vti mode. */
-+#define IA64_DOM0VP_phystomach 1
-+
-+/* Convert a machine page frame number to the corresponding pseudo physical
-+ page frame number of the caller domain. */
-+#define IA64_DOM0VP_machtophys 3
-+
-+/* Reserved for future use. */
-+#define IA64_DOM0VP_iounmap 4
-+
-+/* Unmap and free pages contained in the specified pseudo physical region. */
-+#define IA64_DOM0VP_zap_physmap 5
-+
-+/* Assign machine page frame to dom0's pseudo physical address space. */
-+#define IA64_DOM0VP_add_physmap 6
-+
-+/* expose the p2m table into domain */
-+#define IA64_DOM0VP_expose_p2m 7
-+
++#define IA64_DOM0VP_ioremap 0 // map io space in machine
++ // address to dom0 physical
++ // address space.
++ // currently physical
++ // assignedg address equals to
++ // machine address
++#define IA64_DOM0VP_phystomach 1 // convert a pseudo physical
++ // page frame number
++ // to the corresponding
++ // machine page frame number.
++ // if no page is assigned,
++ // INVALID_MFN or GPFN_INV_MASK
++ // is returned depending on
++ // domain's non-vti/vti mode.
++#define IA64_DOM0VP_machtophys 3 // convert a machine page
++ // frame number
++ // to the corresponding
++ // pseudo physical page frame
++ // number of the caller domain
++#define IA64_DOM0VP_zap_physmap 17 // unmap and free pages
++ // contained in the specified
++ // pseudo physical region
++#define IA64_DOM0VP_add_physmap 18 // assigne machine page frane
++ // to dom0's pseudo physical
++ // address space.
+// flags for page assignement to pseudo physical address space
+#define _ASSIGN_readonly 0
+#define ASSIGN_readonly (1UL << _ASSIGN_readonly)
@@ -88026,12 +86163,15 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h lin
+
+#endif /* !__ASSEMBLY__ */
+
++/* Address of shared_info in domain virtual space.
++ This is the default address, for compatibility only. */
++#define XSI_BASE 0xf100000000000000
++
+/* Size of the shared_info area (this is not related to page size). */
+#define XSI_SHIFT 14
+#define XSI_SIZE (1 << XSI_SHIFT)
+/* Log size of mapped_regs area (64 KB - only 4KB is used). */
+#define XMAPPEDREGS_SHIFT 12
-+#define XMAPPEDREGS_SIZE (1 << XMAPPEDREGS_SHIFT)
+/* Offset of XASI (Xen arch shared info) wrt XSI_BASE. */
+#define XMAPPEDREGS_OFS XSI_SIZE
+
@@ -88063,17 +86203,6 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h lin
+#define HYPERPRIVOP_GET_PSR 0x19
+#define HYPERPRIVOP_MAX 0x19
+
-+/* Fast and light hypercalls. */
-+#define __HYPERVISOR_ia64_fast_eoi 0x0200
-+
-+/* Xencomm macros. */
-+#define XENCOMM_INLINE_MASK 0xf800000000000000UL
-+#define XENCOMM_INLINE_FLAG 0x8000000000000000UL
-+
-+#define XENCOMM_IS_INLINE(addr) \
-+ (((unsigned long)(addr) & XENCOMM_INLINE_MASK) == XENCOMM_INLINE_FLAG)
-+#define XENCOMM_INLINE_ADDR(addr) \
-+ ((unsigned long)(addr) & ~XENCOMM_INLINE_MASK)
+#endif /* __HYPERVISOR_IF_IA64_H__ */
+
+/*
@@ -88085,9 +86214,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-ia64.h lin
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-powerpc.h linux-2.6.18-xen/include/xen/interface/arch-powerpc.h
---- linux-2.6.18.1/include/xen/interface/arch-powerpc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/arch-powerpc.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/arch-powerpc.h linux-2.6.18-xen/include/xen/interface/arch-powerpc.h
+--- linux-2.6.18/include/xen/interface/arch-powerpc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/arch-powerpc.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,115 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -88204,9 +86333,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-powerpc.h
+#endif
+
+#endif
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-x86_32.h linux-2.6.18-xen/include/xen/interface/arch-x86_32.h
---- linux-2.6.18.1/include/xen/interface/arch-x86_32.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/arch-x86_32.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/arch-x86_32.h linux-2.6.18-xen/include/xen/interface/arch-x86_32.h
+--- linux-2.6.18/include/xen/interface/arch-x86_32.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/arch-x86_32.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,255 @@
+/******************************************************************************
+ * arch-x86_32.h
@@ -88463,9 +86592,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-x86_32.h l
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-x86_64.h linux-2.6.18-xen/include/xen/interface/arch-x86_64.h
---- linux-2.6.18.1/include/xen/interface/arch-x86_64.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/arch-x86_64.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/arch-x86_64.h linux-2.6.18-xen/include/xen/interface/arch-x86_64.h
+--- linux-2.6.18/include/xen/interface/arch-x86_64.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/arch-x86_64.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,322 @@
+/******************************************************************************
+ * arch-x86_64.h
@@ -88789,9 +86918,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/arch-x86_64.h l
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/callback.h linux-2.6.18-xen/include/xen/interface/callback.h
---- linux-2.6.18.1/include/xen/interface/callback.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/callback.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/callback.h linux-2.6.18-xen/include/xen/interface/callback.h
+--- linux-2.6.18/include/xen/interface/callback.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/callback.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,74 @@
+/******************************************************************************
+ * callback.h
@@ -88867,9 +86996,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/callback.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/dom0_ops.h linux-2.6.18-xen/include/xen/interface/dom0_ops.h
---- linux-2.6.18.1/include/xen/interface/dom0_ops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/dom0_ops.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/dom0_ops.h linux-2.6.18-xen/include/xen/interface/dom0_ops.h
+--- linux-2.6.18/include/xen/interface/dom0_ops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/dom0_ops.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,102 @@
+/******************************************************************************
+ * dom0_ops.h
@@ -88973,9 +87102,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/dom0_ops.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/domctl.h linux-2.6.18-xen/include/xen/interface/domctl.h
---- linux-2.6.18.1/include/xen/interface/domctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/domctl.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/domctl.h linux-2.6.18-xen/include/xen/interface/domctl.h
+--- linux-2.6.18/include/xen/interface/domctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/domctl.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,392 @@
+/******************************************************************************
+ * domctl.h
@@ -89369,9 +87498,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/domctl.h linux-
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/elfnote.h linux-2.6.18-xen/include/xen/interface/elfnote.h
---- linux-2.6.18.1/include/xen/interface/elfnote.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/elfnote.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/elfnote.h linux-2.6.18-xen/include/xen/interface/elfnote.h
+--- linux-2.6.18/include/xen/interface/elfnote.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/elfnote.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,133 @@
+/******************************************************************************
+ * elfnote.h
@@ -89506,9 +87635,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/elfnote.h linux
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/event_channel.h linux-2.6.18-xen/include/xen/interface/event_channel.h
---- linux-2.6.18.1/include/xen/interface/event_channel.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/event_channel.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/event_channel.h linux-2.6.18-xen/include/xen/interface/event_channel.h
+--- linux-2.6.18/include/xen/interface/event_channel.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/event_channel.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,233 @@
+/******************************************************************************
+ * event_channel.h
@@ -89743,9 +87872,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/event_channel.h
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/features.h linux-2.6.18-xen/include/xen/interface/features.h
---- linux-2.6.18.1/include/xen/interface/features.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/features.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/features.h linux-2.6.18-xen/include/xen/interface/features.h
+--- linux-2.6.18/include/xen/interface/features.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/features.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,53 @@
+/******************************************************************************
+ * features.h
@@ -89800,9 +87929,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/features.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/grant_table.h linux-2.6.18-xen/include/xen/interface/grant_table.h
---- linux-2.6.18.1/include/xen/interface/grant_table.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/grant_table.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/grant_table.h linux-2.6.18-xen/include/xen/interface/grant_table.h
+--- linux-2.6.18/include/xen/interface/grant_table.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/grant_table.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,362 @@
+/******************************************************************************
+ * grant_table.h
@@ -90166,9 +88295,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/grant_table.h l
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/e820.h linux-2.6.18-xen/include/xen/interface/hvm/e820.h
---- linux-2.6.18.1/include/xen/interface/hvm/e820.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/hvm/e820.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/hvm/e820.h linux-2.6.18-xen/include/xen/interface/hvm/e820.h
+--- linux-2.6.18/include/xen/interface/hvm/e820.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/hvm/e820.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,32 @@
+#ifndef __XEN_PUBLIC_HVM_E820_H__
+#define __XEN_PUBLIC_HVM_E820_H__
@@ -90202,9 +88331,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/e820.h linu
+#define HVM_BELOW_4G_MMIO_LENGTH ((1ULL << 32) - HVM_BELOW_4G_MMIO_START)
+
+#endif /* __XEN_PUBLIC_HVM_E820_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/hvm_info_table.h linux-2.6.18-xen/include/xen/interface/hvm/hvm_info_table.h
---- linux-2.6.18.1/include/xen/interface/hvm/hvm_info_table.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/hvm/hvm_info_table.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/hvm/hvm_info_table.h linux-2.6.18-xen/include/xen/interface/hvm/hvm_info_table.h
+--- linux-2.6.18/include/xen/interface/hvm/hvm_info_table.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/hvm/hvm_info_table.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,22 @@
+/******************************************************************************
+ * hvm/hvm_info_table.h
@@ -90228,9 +88357,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/hvm_info_ta
+};
+
+#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/ioreq.h linux-2.6.18-xen/include/xen/interface/hvm/ioreq.h
---- linux-2.6.18.1/include/xen/interface/hvm/ioreq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/hvm/ioreq.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/hvm/ioreq.h linux-2.6.18-xen/include/xen/interface/hvm/ioreq.h
+--- linux-2.6.18/include/xen/interface/hvm/ioreq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/hvm/ioreq.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,99 @@
+/*
+ * ioreq.h: I/O request definitions for device models
@@ -90331,9 +88460,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/ioreq.h lin
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/params.h linux-2.6.18-xen/include/xen/interface/hvm/params.h
---- linux-2.6.18.1/include/xen/interface/hvm/params.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/hvm/params.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/hvm/params.h linux-2.6.18-xen/include/xen/interface/hvm/params.h
+--- linux-2.6.18/include/xen/interface/hvm/params.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/hvm/params.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,24 @@
+#ifndef __XEN_PUBLIC_HVM_PARAMS_H__
+#define __XEN_PUBLIC_HVM_PARAMS_H__
@@ -90359,9 +88488,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/params.h li
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_param_t);
+
+#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/vmx_assist.h linux-2.6.18-xen/include/xen/interface/hvm/vmx_assist.h
---- linux-2.6.18.1/include/xen/interface/hvm/vmx_assist.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/hvm/vmx_assist.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/hvm/vmx_assist.h linux-2.6.18-xen/include/xen/interface/hvm/vmx_assist.h
+--- linux-2.6.18/include/xen/interface/hvm/vmx_assist.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/hvm/vmx_assist.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,98 @@
+/*
+ * vmx_assist.h: Context definitions for the VMXASSIST world switch.
@@ -90461,9 +88590,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/hvm/vmx_assist.
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/blkif.h linux-2.6.18-xen/include/xen/interface/io/blkif.h
---- linux-2.6.18.1/include/xen/interface/io/blkif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/blkif.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/blkif.h linux-2.6.18-xen/include/xen/interface/io/blkif.h
+--- linux-2.6.18/include/xen/interface/io/blkif.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/blkif.h 2006-11-19 14:27:15.000000000 +0100
@@ -0,0 +1,87 @@
+/******************************************************************************
+ * blkif.h
@@ -90552,9 +88681,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/blkif.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/console.h linux-2.6.18-xen/include/xen/interface/io/console.h
---- linux-2.6.18.1/include/xen/interface/io/console.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/console.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/console.h linux-2.6.18-xen/include/xen/interface/io/console.h
+--- linux-2.6.18/include/xen/interface/io/console.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/console.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,33 @@
+/******************************************************************************
+ * console.h
@@ -90589,9 +88718,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/console.h li
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/netif.h linux-2.6.18-xen/include/xen/interface/io/netif.h
---- linux-2.6.18.1/include/xen/interface/io/netif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/netif.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/netif.h linux-2.6.18-xen/include/xen/interface/io/netif.h
+--- linux-2.6.18/include/xen/interface/io/netif.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/netif.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,166 @@
+/******************************************************************************
+ * netif.h
@@ -90759,9 +88888,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/netif.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/pciif.h linux-2.6.18-xen/include/xen/interface/io/pciif.h
---- linux-2.6.18.1/include/xen/interface/io/pciif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/pciif.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/pciif.h linux-2.6.18-xen/include/xen/interface/io/pciif.h
+--- linux-2.6.18/include/xen/interface/io/pciif.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/pciif.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,55 @@
+/*
+ * PCI Backend/Frontend Common Data Structures & Macros
@@ -90818,9 +88947,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/pciif.h linu
+};
+
+#endif /* __XEN_PCI_COMMON_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/ring.h linux-2.6.18-xen/include/xen/interface/io/ring.h
---- linux-2.6.18.1/include/xen/interface/io/ring.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/ring.h 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/ring.h linux-2.6.18-xen/include/xen/interface/io/ring.h
+--- linux-2.6.18/include/xen/interface/io/ring.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/ring.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,273 @@
+/******************************************************************************
+ * ring.h
@@ -91095,9 +89224,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/ring.h linux
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/tpmif.h linux-2.6.18-xen/include/xen/interface/io/tpmif.h
---- linux-2.6.18.1/include/xen/interface/io/tpmif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/tpmif.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/tpmif.h linux-2.6.18-xen/include/xen/interface/io/tpmif.h
+--- linux-2.6.18/include/xen/interface/io/tpmif.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/tpmif.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * tpmif.h
@@ -91158,9 +89287,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/tpmif.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/xenbus.h linux-2.6.18-xen/include/xen/interface/io/xenbus.h
---- linux-2.6.18.1/include/xen/interface/io/xenbus.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/xenbus.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/xenbus.h linux-2.6.18-xen/include/xen/interface/io/xenbus.h
+--- linux-2.6.18/include/xen/interface/io/xenbus.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/xenbus.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,45 @@
+/*****************************************************************************
+ * xenbus.h
@@ -91207,9 +89336,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/xenbus.h lin
+typedef enum xenbus_state XenbusState;
+
+#endif /* _XEN_PUBLIC_IO_XENBUS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/xs_wire.h linux-2.6.18-xen/include/xen/interface/io/xs_wire.h
---- linux-2.6.18.1/include/xen/interface/io/xs_wire.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/io/xs_wire.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/io/xs_wire.h linux-2.6.18-xen/include/xen/interface/io/xs_wire.h
+--- linux-2.6.18/include/xen/interface/io/xs_wire.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/io/xs_wire.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,97 @@
+/*
+ * Details of the "wire" protocol between Xen Store Daemon and client
@@ -91308,9 +89437,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/io/xs_wire.h li
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/memory.h linux-2.6.18-xen/include/xen/interface/memory.h
---- linux-2.6.18.1/include/xen/interface/memory.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/memory.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/memory.h linux-2.6.18-xen/include/xen/interface/memory.h
+--- linux-2.6.18/include/xen/interface/memory.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/memory.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,243 @@
+/******************************************************************************
+ * memory.h
@@ -91555,9 +89684,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/memory.h linux-
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/nmi.h linux-2.6.18-xen/include/xen/interface/nmi.h
---- linux-2.6.18.1/include/xen/interface/nmi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/nmi.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/nmi.h linux-2.6.18-xen/include/xen/interface/nmi.h
+--- linux-2.6.18/include/xen/interface/nmi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/nmi.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * nmi.h
@@ -91619,9 +89748,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/nmi.h linux-2.6
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/physdev.h linux-2.6.18-xen/include/xen/interface/physdev.h
---- linux-2.6.18.1/include/xen/interface/physdev.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/physdev.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/physdev.h linux-2.6.18-xen/include/xen/interface/physdev.h
+--- linux-2.6.18/include/xen/interface/physdev.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/physdev.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,149 @@
+
+#ifndef __XEN_PUBLIC_PHYSDEV_H__
@@ -91772,9 +89901,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/physdev.h linux
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/platform.h linux-2.6.18-xen/include/xen/interface/platform.h
---- linux-2.6.18.1/include/xen/interface/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/platform.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/platform.h linux-2.6.18-xen/include/xen/interface/platform.h
+--- linux-2.6.18/include/xen/interface/platform.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/platform.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,125 @@
+/******************************************************************************
+ * platform.h
@@ -91901,9 +90030,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/platform.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/sched.h linux-2.6.18-xen/include/xen/interface/sched.h
---- linux-2.6.18.1/include/xen/interface/sched.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/sched.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/sched.h linux-2.6.18-xen/include/xen/interface/sched.h
+--- linux-2.6.18/include/xen/interface/sched.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/sched.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,103 @@
+/******************************************************************************
+ * sched.h
@@ -92008,9 +90137,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/sched.h linux-2
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/sysctl.h linux-2.6.18-xen/include/xen/interface/sysctl.h
---- linux-2.6.18.1/include/xen/interface/sysctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/sysctl.h 2006-09-04 16:31:19.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/sysctl.h linux-2.6.18-xen/include/xen/interface/sysctl.h
+--- linux-2.6.18/include/xen/interface/sysctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/sysctl.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,151 @@
+/******************************************************************************
+ * sysctl.h
@@ -92163,9 +90292,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/sysctl.h linux-
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/trace.h linux-2.6.18-xen/include/xen/interface/trace.h
---- linux-2.6.18.1/include/xen/interface/trace.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/trace.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/trace.h linux-2.6.18-xen/include/xen/interface/trace.h
+--- linux-2.6.18/include/xen/interface/trace.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/trace.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,87 @@
+/******************************************************************************
+ * include/public/trace.h
@@ -92254,9 +90383,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/trace.h linux-2
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/vcpu.h linux-2.6.18-xen/include/xen/interface/vcpu.h
---- linux-2.6.18.1/include/xen/interface/vcpu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/vcpu.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/vcpu.h linux-2.6.18-xen/include/xen/interface/vcpu.h
+--- linux-2.6.18/include/xen/interface/vcpu.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/vcpu.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,121 @@
+/******************************************************************************
+ * vcpu.h
@@ -92379,9 +90508,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/vcpu.h linux-2.
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/version.h linux-2.6.18-xen/include/xen/interface/version.h
---- linux-2.6.18.1/include/xen/interface/version.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/version.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/version.h linux-2.6.18-xen/include/xen/interface/version.h
+--- linux-2.6.18/include/xen/interface/version.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/version.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,73 @@
+/******************************************************************************
+ * version.h
@@ -92456,9 +90585,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/version.h linux
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xencomm.h linux-2.6.18-xen/include/xen/interface/xencomm.h
---- linux-2.6.18.1/include/xen/interface/xencomm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/xencomm.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/xencomm.h linux-2.6.18-xen/include/xen/interface/xencomm.h
+--- linux-2.6.18/include/xen/interface/xencomm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/xencomm.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
@@ -92497,9 +90626,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xencomm.h linux
+};
+
+#endif /* _XEN_XENCOMM_H_ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xen-compat.h linux-2.6.18-xen/include/xen/interface/xen-compat.h
---- linux-2.6.18.1/include/xen/interface/xen-compat.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/xen-compat.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/xen-compat.h linux-2.6.18-xen/include/xen/interface/xen-compat.h
+--- linux-2.6.18/include/xen/interface/xen-compat.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/xen-compat.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,26 @@
+/******************************************************************************
+ * xen-compat.h
@@ -92527,9 +90656,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xen-compat.h li
+#endif
+
+#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xen.h linux-2.6.18-xen/include/xen/interface/xen.h
---- linux-2.6.18.1/include/xen/interface/xen.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/xen.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/xen.h linux-2.6.18-xen/include/xen/interface/xen.h
+--- linux-2.6.18/include/xen/interface/xen.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/xen.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,581 @@
+/******************************************************************************
+ * xen.h
@@ -93112,9 +91241,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xen.h linux-2.6
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xenoprof.h linux-2.6.18-xen/include/xen/interface/xenoprof.h
---- linux-2.6.18.1/include/xen/interface/xenoprof.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/interface/xenoprof.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/interface/xenoprof.h linux-2.6.18-xen/include/xen/interface/xenoprof.h
+--- linux-2.6.18/include/xen/interface/xenoprof.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/interface/xenoprof.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,110 @@
+/******************************************************************************
+ * xenoprof.h
@@ -93226,9 +91355,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/interface/xenoprof.h linu
+ * indent-tabs-mode: nil
+ * End:
+ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/pcifront.h linux-2.6.18-xen/include/xen/pcifront.h
---- linux-2.6.18.1/include/xen/pcifront.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/pcifront.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/pcifront.h linux-2.6.18-xen/include/xen/pcifront.h
+--- linux-2.6.18/include/xen/pcifront.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/pcifront.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,76 @@
+/*
+ * PCI Frontend - arch-dependendent declarations
@@ -93306,9 +91435,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/pcifront.h linux-2.6.18-x
+#endif /* __KERNEL__ */
+
+#endif /* __XEN_ASM_PCIFRONT_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/public/evtchn.h linux-2.6.18-xen/include/xen/public/evtchn.h
---- linux-2.6.18.1/include/xen/public/evtchn.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/public/evtchn.h 2006-10-17 15:01:58.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/public/evtchn.h linux-2.6.18-xen/include/xen/public/evtchn.h
+--- linux-2.6.18/include/xen/public/evtchn.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/public/evtchn.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,88 @@
+/******************************************************************************
+ * evtchn.h
@@ -93398,9 +91527,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/public/evtchn.h linux-2.6
+ _IOC(_IOC_NONE, 'E', 5, 0)
+
+#endif /* __LINUX_PUBLIC_EVTCHN_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/public/privcmd.h linux-2.6.18-xen/include/xen/public/privcmd.h
---- linux-2.6.18.1/include/xen/public/privcmd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/public/privcmd.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/public/privcmd.h linux-2.6.18-xen/include/xen/public/privcmd.h
+--- linux-2.6.18/include/xen/public/privcmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/public/privcmd.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,79 @@
+/******************************************************************************
+ * privcmd.h
@@ -93481,9 +91610,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/public/privcmd.h linux-2.
+ _IOC(_IOC_NONE, 'P', 3, sizeof(privcmd_mmapbatch_t))
+
+#endif /* __LINUX_PUBLIC_PRIVCMD_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xenbus.h linux-2.6.18-xen/include/xen/xenbus.h
---- linux-2.6.18.1/include/xen/xenbus.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/xenbus.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/xenbus.h linux-2.6.18-xen/include/xen/xenbus.h
+--- linux-2.6.18/include/xen/xenbus.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/xenbus.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,306 @@
+/******************************************************************************
+ * xenbus.h
@@ -93791,9 +91920,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xenbus.h linux-2.6.18-xen
+int xenbus_frontend_closed(struct xenbus_device *dev);
+
+#endif /* _XEN_XENBUS_H */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xencons.h linux-2.6.18-xen/include/xen/xencons.h
---- linux-2.6.18.1/include/xen/xencons.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/xencons.h 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/xencons.h linux-2.6.18-xen/include/xen/xencons.h
+--- linux-2.6.18/include/xen/xencons.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/xencons.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,17 @@
+#ifndef __ASM_XENCONS_H__
+#define __ASM_XENCONS_H__
@@ -93812,9 +91941,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xencons.h linux-2.6.18-xe
+int xencons_ring_send(const char *data, unsigned len);
+
+#endif /* __ASM_XENCONS_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xen_proc.h linux-2.6.18-xen/include/xen/xen_proc.h
---- linux-2.6.18.1/include/xen/xen_proc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/include/xen/xen_proc.h 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/include/xen/xen_proc.h linux-2.6.18-xen/include/xen/xen_proc.h
+--- linux-2.6.18/include/xen/xen_proc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/include/xen/xen_proc.h 2006-11-19 14:27:16.000000000 +0100
@@ -0,0 +1,12 @@
+
+#ifndef __ASM_XEN_PROC_H__
@@ -93828,9 +91957,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/include/xen/xen_proc.h linux-2.6.18-x
+ const char *name);
+
+#endif /* __ASM_XEN_PROC_H__ */
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/kernel/fork.c linux-2.6.18-xen/kernel/fork.c
---- linux-2.6.18.1/kernel/fork.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/kernel/fork.c 2006-09-05 10:45:48.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/kernel/fork.c linux-2.6.18-xen/kernel/fork.c
+--- linux-2.6.18/kernel/fork.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/kernel/fork.c 2006-11-19 14:27:16.000000000 +0100
@@ -276,6 +276,9 @@
if (retval)
goto out;
@@ -93841,20 +91970,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/kernel/fork.c linux-2.6.18-xen/kernel
retval = 0;
out:
up_write(&mm->mmap_sem);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/kernel/irq/manage.c linux-2.6.18-xen/kernel/irq/manage.c
---- linux-2.6.18.1/kernel/irq/manage.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/kernel/irq/manage.c 2006-09-04 16:31:20.000000000 +0200
-@@ -350,7 +350,6 @@
- struct irqaction **p;
- unsigned long flags;
-
-- WARN_ON(in_interrupt());
- if (irq >= NR_IRQS)
- return;
-
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/kernel/Kconfig.preempt linux-2.6.18-xen/kernel/Kconfig.preempt
---- linux-2.6.18.1/kernel/Kconfig.preempt 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/kernel/Kconfig.preempt 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/kernel/Kconfig.preempt linux-2.6.18-xen/kernel/Kconfig.preempt
+--- linux-2.6.18/kernel/Kconfig.preempt 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/kernel/Kconfig.preempt 2006-11-19 14:27:16.000000000 +0100
@@ -35,6 +35,7 @@
config PREEMPT
@@ -93863,9 +91981,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/kernel/Kconfig.preempt linux-2.6.18-x
help
This option reduces the latency of the kernel by making
all kernel code (that is not executing in a critical section)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/lib/Kconfig.debug linux-2.6.18-xen/lib/Kconfig.debug
---- linux-2.6.18.1/lib/Kconfig.debug 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/lib/Kconfig.debug 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/lib/Kconfig.debug linux-2.6.18-xen/lib/Kconfig.debug
+--- linux-2.6.18/lib/Kconfig.debug 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/lib/Kconfig.debug 2006-11-19 14:27:16.000000000 +0100
@@ -325,7 +325,7 @@
config UNWIND_INFO
@@ -93875,20 +91993,22 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/lib/Kconfig.debug linux-2.6.18-xen/li
depends on !MODULES || !(MIPS || PPC || SUPERH || V850)
help
If you say Y here the resulting kernel image will be slightly larger
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/lib/Makefile linux-2.6.18-xen/lib/Makefile
---- linux-2.6.18.1/lib/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/lib/Makefile 2006-10-17 15:01:59.000000000 +0200
-@@ -52,6 +52,7 @@
+diff -urN -x .hg -x .hgtags linux-2.6.18/lib/Makefile linux-2.6.18-xen/lib/Makefile
+--- linux-2.6.18/lib/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/lib/Makefile 2006-11-19 14:27:16.000000000 +0100
+@@ -52,6 +52,9 @@
obj-$(CONFIG_AUDIT_GENERIC) += audit.o
obj-$(CONFIG_SWIOTLB) += swiotlb.o
++ifneq ($(CONFIG_XEN_IA64_DOM0_NON_VP),y)
+swiotlb-$(CONFIG_XEN) := ../arch/i386/kernel/swiotlb.o
++endif
hostprogs-y := gen_crc32table
clean-files := crc32table.h
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/highmem.c linux-2.6.18-xen/mm/highmem.c
---- linux-2.6.18.1/mm/highmem.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/mm/highmem.c 2006-09-04 16:31:20.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/mm/highmem.c linux-2.6.18-xen/mm/highmem.c
+--- linux-2.6.18/mm/highmem.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/mm/highmem.c 2006-11-19 14:27:16.000000000 +0100
@@ -142,6 +142,17 @@
return vaddr;
}
@@ -93907,9 +92027,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/highmem.c linux-2.6.18-xen/mm/high
void fastcall *kmap_high(struct page *page)
{
unsigned long vaddr;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/Kconfig linux-2.6.18-xen/mm/Kconfig
---- linux-2.6.18.1/mm/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/mm/Kconfig 2006-09-22 16:38:35.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/mm/Kconfig linux-2.6.18-xen/mm/Kconfig
+--- linux-2.6.18/mm/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/mm/Kconfig 2006-11-19 14:27:16.000000000 +0100
@@ -116,7 +116,6 @@
config MEMORY_HOTPLUG
bool "Allow for memory hot-add"
@@ -93933,9 +92053,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/Kconfig linux-2.6.18-xen/mm/Kconfi
default "4"
#
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/memory.c linux-2.6.18-xen/mm/memory.c
---- linux-2.6.18.1/mm/memory.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/mm/memory.c 2006-10-17 15:01:59.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/mm/memory.c linux-2.6.18-xen/mm/memory.c
+--- linux-2.6.18/mm/memory.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/mm/memory.c 2006-11-19 14:27:16.000000000 +0100
@@ -403,7 +403,8 @@
* and that the resulting page looks ok.
*/
@@ -93946,15 +92066,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/memory.c linux-2.6.18-xen/mm/memor
return NULL;
}
-@@ -891,6 +892,7 @@
- tlb_finish_mmu(tlb, address, end);
- return end;
- }
-+EXPORT_SYMBOL(zap_page_range);
-
- /*
- * Do a quick page-table lookup for a single page.
-@@ -1030,6 +1032,26 @@
+@@ -1030,6 +1031,26 @@
continue;
}
@@ -93981,7 +92093,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/memory.c linux-2.6.18-xen/mm/memor
if (!vma || (vma->vm_flags & (VM_IO | VM_PFNMAP))
|| !(vm_flags & vma->vm_flags))
return i ? : -EFAULT;
-@@ -1369,6 +1391,102 @@
+@@ -1369,6 +1390,102 @@
}
EXPORT_SYMBOL(remap_pfn_range);
@@ -94084,9 +92196,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/memory.c linux-2.6.18-xen/mm/memor
/*
* handle_pte_fault chooses page fault handler according to an entry
* which was read non-atomically. Before making any commitment, on
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/mmap.c linux-2.6.18-xen/mm/mmap.c
---- linux-2.6.18.1/mm/mmap.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/mm/mmap.c 2006-09-21 01:33:32.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/mm/mmap.c linux-2.6.18-xen/mm/mmap.c
+--- linux-2.6.18/mm/mmap.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/mm/mmap.c 2006-11-19 14:27:16.000000000 +0100
@@ -1963,6 +1963,10 @@
unsigned long nr_accounted = 0;
unsigned long end;
@@ -94098,9 +92210,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/mmap.c linux-2.6.18-xen/mm/mmap.c
lru_add_drain();
flush_cache_mm(mm);
tlb = tlb_gather_mmu(mm, 1);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/page_alloc.c linux-2.6.18-xen/mm/page_alloc.c
---- linux-2.6.18.1/mm/page_alloc.c 2006-10-19 11:01:25.000000000 +0200
-+++ linux-2.6.18-xen/mm/page_alloc.c 2006-10-17 15:01:59.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/mm/page_alloc.c linux-2.6.18-xen/mm/page_alloc.c
+--- linux-2.6.18/mm/page_alloc.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/mm/page_alloc.c 2006-11-19 14:27:16.000000000 +0100
@@ -443,7 +443,8 @@
int i;
int reserved = 0;
@@ -94121,9 +92233,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/mm/page_alloc.c linux-2.6.18-xen/mm/p
if (PageAnon(page))
page->mapping = NULL;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/dev.c linux-2.6.18-xen/net/core/dev.c
---- linux-2.6.18.1/net/core/dev.c 2006-10-19 11:01:25.000000000 +0200
-+++ linux-2.6.18-xen/net/core/dev.c 2006-10-17 15:01:59.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/core/dev.c linux-2.6.18-xen/net/core/dev.c
+--- linux-2.6.18/net/core/dev.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/core/dev.c 2006-11-19 14:27:17.000000000 +0100
@@ -118,6 +118,12 @@
#include <linux/err.h>
#include <linux/ctype.h>
@@ -94194,7 +92306,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/dev.c linux-2.6.18-xen/net/c
/* GSO will handle the following emulations directly. */
if (netif_needs_gso(dev, skb))
goto gso;
-@@ -1798,6 +1847,19 @@
+@@ -1796,6 +1845,19 @@
}
#endif
@@ -94214,7 +92326,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/dev.c linux-2.6.18-xen/net/c
list_for_each_entry_rcu(ptype, &ptype_all, list) {
if (!ptype->dev || ptype->dev == skb->dev) {
if (pt_prev)
-@@ -3584,6 +3646,7 @@
+@@ -3582,6 +3644,7 @@
EXPORT_SYMBOL(net_enable_timestamp);
EXPORT_SYMBOL(net_disable_timestamp);
EXPORT_SYMBOL(dev_get_flags);
@@ -94222,9 +92334,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/dev.c linux-2.6.18-xen/net/c
#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
EXPORT_SYMBOL(br_handle_frame_hook);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/net/core/skbuff.c
---- linux-2.6.18.1/net/core/skbuff.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/net/core/skbuff.c 2006-09-04 16:31:21.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/core/skbuff.c linux-2.6.18-xen/net/core/skbuff.c
+--- linux-2.6.18/net/core/skbuff.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/core/skbuff.c 2006-11-19 14:27:17.000000000 +0100
@@ -139,6 +139,7 @@
* Buffers may only be allocated from interrupts using a @gfp_mask of
* %GFP_ATOMIC.
@@ -94241,7 +92353,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/ne
/**
* alloc_skb_from_cache - allocate a network buffer
-@@ -210,14 +212,17 @@
+@@ -210,14 +212,18 @@
*/
struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp,
unsigned int size,
@@ -94250,6 +92362,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/ne
+ int fclone)
{
+ kmem_cache_t *cache;
++ struct skb_shared_info *shinfo;
struct sk_buff *skb;
u8 *data;
@@ -94262,11 +92375,26 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/ne
if (!skb)
goto out;
-@@ -241,10 +246,20 @@
- skb_shinfo(skb)->gso_segs = 0;
- skb_shinfo(skb)->gso_type = 0;
- skb_shinfo(skb)->frag_list = NULL;
-+
+@@ -234,17 +240,29 @@
+ skb->data = data;
+ skb->tail = data;
+ skb->end = data + size;
++ /* make sure we initialize shinfo sequentially */
++ shinfo = skb_shinfo(skb);
++ atomic_set(&shinfo->dataref, 1);
++ shinfo->nr_frags = 0;
++ shinfo->gso_size = 0;
++ shinfo->gso_segs = 0;
++ shinfo->gso_type = 0;
++ shinfo->ip6_frag_id = 0;
++ shinfo->frag_list = NULL;
+
+- atomic_set(&(skb_shinfo(skb)->dataref), 1);
+- skb_shinfo(skb)->nr_frags = 0;
+- skb_shinfo(skb)->gso_size = 0;
+- skb_shinfo(skb)->gso_segs = 0;
+- skb_shinfo(skb)->gso_type = 0;
+- skb_shinfo(skb)->frag_list = NULL;
+ if (fclone) {
+ struct sk_buff *child = skb + 1;
+ atomic_t *fclone_ref = (atomic_t *) (child + 1);
@@ -94284,7 +92412,7 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/ne
skb = NULL;
goto out;
}
-@@ -464,6 +479,10 @@
+@@ -464,6 +482,10 @@
C(local_df);
n->cloned = 1;
n->nohdr = 0;
@@ -94295,9 +92423,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/core/skbuff.c linux-2.6.18-xen/ne
C(pkt_type);
C(ip_summed);
C(priority);
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_tcp.c linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_tcp.c
---- linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-04 16:31:22.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/ipv4/netfilter/ip_nat_proto_tcp.c linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_tcp.c
+--- linux-2.6.18/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-11-19 14:27:18.000000000 +0100
@@ -129,7 +129,12 @@
if (hdrsize < sizeof(*hdr))
return 1;
@@ -94312,9 +92440,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_tcp.c
ip_nat_cheat_check(oldport ^ 0xFFFF,
newport,
hdr->check));
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_udp.c linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_udp.c
---- linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-04 16:31:22.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/ipv4/netfilter/ip_nat_proto_udp.c linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_udp.c
+--- linux-2.6.18/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-11-19 14:27:18.000000000 +0100
@@ -114,7 +114,12 @@
portptr = &hdr->dest;
}
@@ -94329,9 +92457,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/netfilter/ip_nat_proto_udp.c
ip_nat_cheat_check(*portptr ^ 0xFFFF,
newport,
hdr->check));
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/xfrm4_output.c linux-2.6.18-xen/net/ipv4/xfrm4_output.c
---- linux-2.6.18.1/net/ipv4/xfrm4_output.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/net/ipv4/xfrm4_output.c 2006-09-04 16:31:23.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/ipv4/xfrm4_output.c linux-2.6.18-xen/net/ipv4/xfrm4_output.c
+--- linux-2.6.18/net/ipv4/xfrm4_output.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/ipv4/xfrm4_output.c 2006-11-19 14:27:18.000000000 +0100
@@ -18,6 +18,8 @@
#include <net/xfrm.h>
#include <net/icmp.h>
@@ -94352,9 +92480,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv4/xfrm4_output.c linux-2.6.18-
if (skb->ip_summed == CHECKSUM_HW) {
err = skb_checksum_help(skb, 0);
if (err)
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv6/addrconf.c linux-2.6.18-xen/net/ipv6/addrconf.c
---- linux-2.6.18.1/net/ipv6/addrconf.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18-xen/net/ipv6/addrconf.c 2006-09-04 16:31:23.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/net/ipv6/addrconf.c linux-2.6.18-xen/net/ipv6/addrconf.c
+--- linux-2.6.18/net/ipv6/addrconf.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen/net/ipv6/addrconf.c 2006-11-19 14:27:18.000000000 +0100
@@ -2514,6 +2514,7 @@
spin_lock_bh(&ifp->lock);
@@ -94371,9 +92499,9 @@ diff -urN -x .hg -x .hgtags linux-2.6.18.1/net/ipv6/addrconf.c linux-2.6.18-xen/
(ipv6_addr_type(&ifp->addr) & IPV6_ADDR_LINKLOCAL)) {
struct in6_addr all_routers;
-diff -urN -x .hg -x .hgtags linux-2.6.18.1/scripts/Makefile.xen linux-2.6.18-xen/scripts/Makefile.xen
---- linux-2.6.18.1/scripts/Makefile.xen 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18-xen/scripts/Makefile.xen 2006-09-04 16:31:23.000000000 +0200
+diff -urN -x .hg -x .hgtags linux-2.6.18/scripts/Makefile.xen linux-2.6.18-xen/scripts/Makefile.xen
+--- linux-2.6.18/scripts/Makefile.xen 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-xen/scripts/Makefile.xen 2006-11-19 14:27:19.000000000 +0100
@@ -0,0 +1,14 @@
+
+# cherrypickxen($1 = allobj)
diff --git a/debian/patches/series/7-extra b/debian/patches/series/7-extra
index 29e1f1b395ad..7e2ba763f5b3 100644
--- a/debian/patches/series/7-extra
+++ b/debian/patches/series/7-extra
@@ -1,7 +1,7 @@
+ features/all/vserver/vs2.0.2.2-rc8.patch *_vserver *_xen-vserver
+ features/all/vserver/bindmount-dev.patch *_vserver *_xen-vserver
+ features/all/xen/vserver-clash.patch *_xen-vserver
-+ features/all/xen/fedora-36252.patch *_xen *_xen-vserver
++ features/all/xen/fedora-2.6.18-36156.patch *_xen *_xen-vserver
+ features/all/xen/vserver-update.patch *_xen-vserver
+ bugfix/r8169-ignore-parity.patch arm
+ bugfix/arm/r8169-ignore-parity-n2100.patch arm