diff options
author | Bastian Blank <waldi@debian.org> | 2006-12-03 14:47:28 +0000 |
---|---|---|
committer | Bastian Blank <waldi@debian.org> | 2006-12-03 14:47:28 +0000 |
commit | 97baef61d9c83619585cbd5a87595a6374e72646 (patch) | |
tree | 2ad4b42cf30139f30a53ffa9f9d5078b03c06db0 | |
parent | 62f2d13b4981c126cce6175e19e0c438d40850db (diff) | |
download | kernel_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/changelog | 3 | ||||
-rw-r--r-- | debian/patches/features/all/xen/README | 1 | ||||
-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-extra | 2 |
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 |