Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-09-12 16:31:26 +0200
committerJan Beulich <jbeulich@novell.com>2011-09-12 16:31:26 +0200
commit3692f47577ecaffd07e3a79c012e80f83db3c760 (patch)
treeabe8ce86182474dd0aec17145ef0633b2cf95dd5
parent03a0c8c9889082bbbd15a414ad0fea71de520e33 (diff)
- Update Xen patches to 3.1-rc5 and c/s 1104.
- mm: frontswap: config and doc files. - mm: frontswap: core code. - mm: frontswap: add swap hooks and extend try_to_unuse. - mm: frontswap: swap data structure changes. - In HVM guests do not take over the CDROM device (bnc#645893). - x86: report ACPI-reserved state of PCI MMCONFIG region to hypervisor. - config.conf: Re-enable Xen flavors. - Update config files.
-rw-r--r--config.conf8
-rw-r--r--config/i386/debug5
-rw-r--r--config/i386/default3
-rw-r--r--config/i386/desktop5
-rw-r--r--config/i386/ec232
-rw-r--r--config/i386/pae5
-rw-r--r--config/i386/trace5
-rw-r--r--config/i386/xen136
-rw-r--r--config/ia64/debug1
-rw-r--r--config/ia64/default1
-rw-r--r--config/ia64/trace1
-rw-r--r--config/ppc/default1
-rw-r--r--config/ppc/ppc641
-rw-r--r--config/ppc64/debug1
-rw-r--r--config/ppc64/default1
-rw-r--r--config/ppc64/ppc641
-rw-r--r--config/ppc64/trace1
-rw-r--r--config/s390/s3901
-rw-r--r--config/s390/trace1
-rw-r--r--config/s390x/default1
-rw-r--r--config/s390x/trace1
-rw-r--r--config/x86_64/debug5
-rw-r--r--config/x86_64/default5
-rw-r--r--config/x86_64/desktop5
-rw-r--r--config/x86_64/ec231
-rw-r--r--config/x86_64/trace5
-rw-r--r--config/x86_64/xen134
-rw-r--r--patches.xen/add-console-use-vt14
-rw-r--r--patches.xen/frontswap-config295
-rw-r--r--patches.xen/frontswap-core518
-rw-r--r--patches.xen/frontswap-hooks295
-rw-r--r--patches.xen/frontswap-structure-changes66
-rw-r--r--patches.xen/ipv6-no-autoconf8
-rw-r--r--patches.xen/kexec-move-segment-code-i386.patch12
-rw-r--r--patches.xen/kexec-move-segment-code-x86_64.patch12
-rw-r--r--patches.xen/pci-guestdev268
-rw-r--r--patches.xen/pci-reserve40
-rw-r--r--patches.xen/xen-blkback-cdrom227
-rw-r--r--patches.xen/xen-blkfront-cdrom42
-rw-r--r--patches.xen/xen-blkfront-hvm-no-cdrom38
-rw-r--r--patches.xen/xen-blkif-protocol-fallback-hack26
-rw-r--r--patches.xen/xen-blktap2-use-after-free27
-rw-r--r--patches.xen/xen-clockevents97
-rw-r--r--patches.xen/xen-cpufreq-report28
-rw-r--r--patches.xen/xen-cxgb316
-rw-r--r--patches.xen/xen-frontswap257
-rw-r--r--patches.xen/xen-ipi-per-cpu-irq32
-rw-r--r--patches.xen/xen-kconfig-compat4
-rw-r--r--patches.xen/xen-kzalloc54
-rw-r--r--patches.xen/xen-mem-hotplug8
-rw-r--r--patches.xen/xen-op-packet68
-rw-r--r--patches.xen/xen-pcpu-hotplug62
-rw-r--r--patches.xen/xen-setup-gsi12
-rw-r--r--patches.xen/xen-spinlock-poll-early24
-rw-r--r--patches.xen/xen-sys-suspend40
-rw-r--r--patches.xen/xen-unpriv-build101
-rw-r--r--patches.xen/xen-virq-per-cpu-irq32
-rw-r--r--patches.xen/xen-x86-EFI213
-rw-r--r--patches.xen/xen-x86-bigmem18
-rw-r--r--patches.xen/xen-x86-dcr-fallback14
-rw-r--r--patches.xen/xen-x86-mmcfg-ACPI-reserved73
-rw-r--r--patches.xen/xen-x86-msr-on-pcpu63
-rw-r--r--patches.xen/xen-x86-no-lapic32
-rw-r--r--patches.xen/xen-x86-per-cpu-vcpu-info100
-rw-r--r--patches.xen/xen-x86-pmd-handling54
-rw-r--r--patches.xen/xen-x86_64-dump-user-pgt14
-rw-r--r--patches.xen/xen-x86_64-note-init-p2m52
-rw-r--r--patches.xen/xen-x86_64-pgd-alloc-order62
-rw-r--r--patches.xen/xen-x86_64-pgd-pin22
-rw-r--r--patches.xen/xen-x86_64-unmapped-initrd42
-rw-r--r--patches.xen/xen3-auto-arch-i386.diff24
-rw-r--r--patches.xen/xen3-auto-arch-x86.diff102
-rw-r--r--patches.xen/xen3-auto-arch-x86_64.diff2
-rw-r--r--patches.xen/xen3-auto-blktap2-pvops.diff24
-rw-r--r--patches.xen/xen3-auto-common.diff227
-rw-r--r--patches.xen/xen3-auto-include-xen-interface.diff148
-rw-r--r--patches.xen/xen3-auto-xen-arch.diff1460
-rw-r--r--patches.xen/xen3-auto-xen-drivers.diff89
-rw-r--r--patches.xen/xen3-auto-xen-kconfig.diff130
-rw-r--r--patches.xen/xen3-fixup-blktap2-pvops38
-rw-r--r--patches.xen/xen3-fixup-common72
-rw-r--r--patches.xen/xen3-fixup-kconfig16
-rw-r--r--patches.xen/xen3-fixup-xen428
-rw-r--r--patches.xen/xen3-patch-2.6.18106
-rw-r--r--patches.xen/xen3-patch-2.6.19574
-rw-r--r--patches.xen/xen3-patch-2.6.20362
-rw-r--r--patches.xen/xen3-patch-2.6.21327
-rw-r--r--patches.xen/xen3-patch-2.6.22495
-rw-r--r--patches.xen/xen3-patch-2.6.23639
-rw-r--r--patches.xen/xen3-patch-2.6.24978
-rw-r--r--patches.xen/xen3-patch-2.6.25667
-rw-r--r--patches.xen/xen3-patch-2.6.26584
-rw-r--r--patches.xen/xen3-patch-2.6.271548
-rw-r--r--patches.xen/xen3-patch-2.6.28655
-rw-r--r--patches.xen/xen3-patch-2.6.29637
-rw-r--r--patches.xen/xen3-patch-2.6.30564
-rw-r--r--patches.xen/xen3-patch-2.6.31716
-rw-r--r--patches.xen/xen3-patch-2.6.32507
-rw-r--r--patches.xen/xen3-patch-2.6.33302
-rw-r--r--patches.xen/xen3-patch-2.6.34463
-rw-r--r--patches.xen/xen3-patch-2.6.35223
-rw-r--r--patches.xen/xen3-patch-2.6.36283
-rw-r--r--patches.xen/xen3-patch-2.6.37747
-rw-r--r--patches.xen/xen3-patch-2.6.38280
-rw-r--r--patches.xen/xen3-patch-2.6.39302
-rw-r--r--patches.xen/xen3-patch-3.0 (renamed from patches.xen/xen3-patch-3.0-rc5)1470
-rw-r--r--patches.xen/xen3-patch-3.1-rc52437
-rw-r--r--patches.xen/xen3-stack-unwind16
-rw-r--r--patches.xen/xen3-x86_64-unwind-annotations75
-rw-r--r--series.conf227
110 files changed, 12461 insertions, 10362 deletions
diff --git a/config.conf b/config.conf
index 2e531e4733..f7fa404d7f 100644
--- a/config.conf
+++ b/config.conf
@@ -12,8 +12,8 @@
+i386 i386/desktop
+i386 i386/pae
+i386 -syms i386/debug
-#+i386 i386/xen
-#+i386 -syms i386/ec2
++i386 i386/xen
++i386 -syms i386/ec2
+i386 i386/vanilla
+i386 -syms i386/trace
@@ -24,8 +24,8 @@
+x86_64 x86_64/default
+x86_64 x86_64/desktop
-#+x86_64 x86_64/xen
-#+x86_64 -syms x86_64/ec2
++x86_64 x86_64/xen
++x86_64 -syms x86_64/ec2
+x86_64 -syms x86_64/debug
+x86_64 x86_64/vanilla
+x86_64 -syms x86_64/trace
diff --git a/config/i386/debug b/config/i386/debug
index 4e1a86534b..e8fea0bcff 100644
--- a/config/i386/debug
+++ b/config/i386/debug
@@ -292,6 +292,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
+# CONFIG_X86_XEN is not set
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_INTEL_MID is not set
@@ -304,8 +305,7 @@ CONFIG_X86_ES7000=y
CONFIG_X86_32_IRIS=m
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
@@ -445,6 +445,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
diff --git a/config/i386/default b/config/i386/default
index 8a9992cb50..4cb0688abf 100644
--- a/config/i386/default
+++ b/config/i386/default
@@ -293,6 +293,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
+# CONFIG_X86_XEN is not set
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_INTEL_MID is not set
@@ -305,7 +306,6 @@ CONFIG_X86_ES7000=y
CONFIG_X86_32_IRIS=m
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
@@ -431,6 +431,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
diff --git a/config/i386/desktop b/config/i386/desktop
index e611daecd6..96c4e26e9e 100644
--- a/config/i386/desktop
+++ b/config/i386/desktop
@@ -294,6 +294,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
+# CONFIG_X86_XEN is not set
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_INTEL_MID is not set
@@ -306,8 +307,7 @@ CONFIG_X86_ES7000=y
CONFIG_X86_32_IRIS=m
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
@@ -448,6 +448,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
diff --git a/config/i386/ec2 b/config/i386/ec2
index 856cad1ac1..2849d68e26 100644
--- a/config/i386/ec2
+++ b/config/i386/ec2
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/i386 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/i386 3.1.0-rc5 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -197,6 +197,7 @@ CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -216,6 +217,7 @@ CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
@@ -296,6 +298,7 @@ CONFIG_X86_GENERIC=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_PPRO_FENCE=y
@@ -315,7 +318,6 @@ CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_TRANSMETA_32=y
# CONFIG_SWIOTLB is not set
# CONFIG_IOMMU_HELPER is not set
-# CONFIG_IOMMU_API is not set
CONFIG_NR_CPUS=32
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_PREEMPT_NONE=y
@@ -350,6 +352,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
# CONFIG_HIGHPTE is not set
CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
@@ -606,6 +609,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
@@ -915,6 +919,11 @@ CONFIG_NET_9P=m
# CONFIG_CAIF is not set
CONFIG_CEPH_LIB=m
CONFIG_CEPH_LIB_PRETTYDEBUG=y
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
#
# Device Drivers
@@ -942,6 +951,7 @@ CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1172,6 +1182,7 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -1299,10 +1310,6 @@ CONFIG_USB_SUPPORT=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
#
-# Enable Host or Gadget support to see Inventra options
-#
-
-#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
# CONFIG_USB_GADGET is not set
@@ -1313,7 +1320,6 @@ CONFIG_USB_SUPPORT=y
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
-# CONFIG_NFC_DEVICES is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
@@ -1363,7 +1369,7 @@ CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_TMEM=y
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
-CONFIG_CLKSRC_I8253=y
+CONFIG_VIRT_DRIVERS=y
#
# File systems
@@ -1371,7 +1377,6 @@ CONFIG_CLKSRC_I8253=y
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=m
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
@@ -1390,7 +1395,6 @@ CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
@@ -1496,6 +1500,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -1524,7 +1529,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-CONFIG_NFSD_DEPRECATED=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -1671,7 +1675,7 @@ CONFIG_TIMER_STATS=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1935,6 +1939,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
@@ -1966,3 +1971,4 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
diff --git a/config/i386/pae b/config/i386/pae
index 9592390af3..f92bf503e5 100644
--- a/config/i386/pae
+++ b/config/i386/pae
@@ -293,6 +293,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
+# CONFIG_X86_XEN is not set
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_INTEL_MID is not set
@@ -305,8 +306,7 @@ CONFIG_X86_ES7000=y
CONFIG_X86_32_IRIS=m
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
@@ -446,6 +446,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
diff --git a/config/i386/trace b/config/i386/trace
index e28c018a26..93d3ee4472 100644
--- a/config/i386/trace
+++ b/config/i386/trace
@@ -293,6 +293,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
+# CONFIG_X86_XEN is not set
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_INTEL_MID is not set
@@ -305,8 +306,7 @@ CONFIG_X86_ES7000=y
CONFIG_X86_32_IRIS=m
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
@@ -446,6 +446,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
diff --git a/config/i386/xen b/config/i386/xen
index 0f4d46eded..6010eab0fa 100644
--- a/config/i386/xen
+++ b/config/i386/xen
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/i386 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/i386 3.1.0-rc5 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -156,6 +156,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -201,6 +202,7 @@ CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -220,6 +222,7 @@ CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
@@ -302,6 +305,7 @@ CONFIG_X86_GENERIC=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_PPRO_FENCE=y
@@ -322,7 +326,6 @@ CONFIG_CPU_SUP_TRANSMETA_32=y
CONFIG_DMI=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
CONFIG_NR_CPUS=32
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_PREEMPT_NONE=y
@@ -367,6 +370,7 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
CONFIG_MEMORY_FAILURE=y
CONFIG_HWPOISON_INJECT=m
CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
# CONFIG_HIGHPTE is not set
CONFIG_MTRR=y
CONFIG_X86_PAT=y
@@ -427,11 +431,12 @@ CONFIG_ACPI_PCI_SLOT=m
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
# CONFIG_ACPI_CUSTOM_METHOD is not set
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
CONFIG_ACPI_PV_SLEEP=y
@@ -734,6 +739,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
@@ -1197,6 +1203,13 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=y
CONFIG_CEPH_LIB_PRETTYDEBUG=y
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
#
# Device Drivers
@@ -1216,6 +1229,8 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
@@ -1430,6 +1445,7 @@ CONFIG_BLK_DEV_DAC960=m
CONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1454,7 +1470,6 @@ CONFIG_AD525X_DPOT_I2C=m
CONFIG_AD525X_DPOT_SPI=m
CONFIG_IBM_ASM=m
CONFIG_PHANTOM=m
-CONFIG_INTEL_MID_PTI=m
CONFIG_SGI_IOC4=m
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
@@ -1476,6 +1491,7 @@ CONFIG_DS1682=m
CONFIG_TI_DAC7512=m
CONFIG_BMP085=m
CONFIG_PCH_PHUB=m
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1487,6 +1503,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1574,6 +1591,7 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_ARCMSR=m
@@ -1774,8 +1792,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -1933,6 +1951,7 @@ CONFIG_R8169=m
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_VIA_VELOCITY=m
@@ -2025,10 +2044,13 @@ CONFIG_CARL9170_LEDS=y
# CONFIG_CARL9170_DEBUGFS is not set
CONFIG_CARL9170_WPC=y
CONFIG_B43=m
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
+CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
@@ -2135,6 +2157,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2278,6 +2301,7 @@ CONFIG_IEEE802154_FAKEHARD=m
CONFIG_CAIF_TTY=m
CONFIG_CAIF_SPI_SLAVE=m
# CONFIG_CAIF_SPI_SYNC is not set
+CONFIG_CAIF_HSI=m
CONFIG_RIONET=m
CONFIG_RIONET_TX_SIZE=128
CONFIG_RIONET_RX_SIZE=128
@@ -2604,12 +2628,16 @@ CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_WISTRON_BTNS=m
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2883,13 +2911,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -3036,18 +3064,22 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
@@ -3064,7 +3096,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3099,6 +3133,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=m
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3179,6 +3214,7 @@ CONFIG_BCMA_POSSIBLE=y
# Broadcom specific AMBA
#
CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_DEBUG is not set
@@ -3191,6 +3227,7 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3241,6 +3278,7 @@ CONFIG_MEDIA_SUPPORT=m
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3257,6 +3295,7 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
@@ -3285,6 +3324,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3303,6 +3343,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3369,6 +3410,10 @@ CONFIG_VIDEO_OV7670=m
CONFIG_VIDEO_MT9V011=m
#
+# Flash devices
+#
+
+#
# Video improvement chips
#
CONFIG_VIDEO_UPD64031A=m
@@ -3431,6 +3476,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3459,6 +3505,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3490,6 +3537,7 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
@@ -3634,6 +3682,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3647,6 +3700,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -3901,6 +3960,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -3989,6 +4049,7 @@ CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
CONFIG_SND_SB_COMMON=m
CONFIG_SND_SB16_DSP=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -4038,7 +4099,6 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PREALLOC_SIZE=1024
CONFIG_SND_HDA_HWDEP=y
@@ -4048,6 +4108,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=2
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -4055,6 +4116,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4152,6 +4214,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4189,6 +4253,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4199,6 +4264,7 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
@@ -4251,10 +4317,6 @@ CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
#
-# Enable Host or Gadget support to see Inventra options
-#
-
-#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
@@ -4449,7 +4511,6 @@ CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4477,8 +4538,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
# CONFIG_ACCESSIBILITY is not set
CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_MAD=m
@@ -4700,12 +4759,6 @@ CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_TMEM=y
CONFIG_STAGING=y
-CONFIG_STALLION=m
-CONFIG_ISTALLION=m
-CONFIG_DIGIEPCA=m
-CONFIG_RISCOM8=m
-CONFIG_SPECIALIX=m
-CONFIG_COMPUTONE=m
CONFIG_ET131X=m
# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
@@ -4821,6 +4874,7 @@ CONFIG_AD799X_RING_BUFFER=y
CONFIG_AD7476=m
CONFIG_AD7887=m
CONFIG_AD7780=m
+CONFIG_AD7793=m
CONFIG_AD7745=m
CONFIG_AD7816=m
CONFIG_ADT75=m
@@ -4843,6 +4897,7 @@ CONFIG_AD5624R_SPI=m
CONFIG_AD5446=m
CONFIG_AD5504=m
CONFIG_AD5791=m
+CONFIG_AD5686=m
CONFIG_MAX517=m
#
@@ -4900,9 +4955,6 @@ CONFIG_ADE7854_SPI=m
CONFIG_AD2S90=m
CONFIG_AD2S120X=m
CONFIG_AD2S1210=m
-# CONFIG_AD2S1210_GPIO_INPUT is not set
-# CONFIG_AD2S1210_GPIO_OUTPUT is not set
-CONFIG_AD2S1210_GPIO_NONE=y
#
# Triggers - standalone
@@ -4910,7 +4962,6 @@ CONFIG_AD2S1210_GPIO_NONE=y
CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
CONFIG_IIO_GPIO_TRIGGER=m
CONFIG_IIO_SYSFS_TRIGGER=m
-CONFIG_CS5535_GPIO=m
CONFIG_XVMALLOC=y
CONFIG_ZRAM=m
# CONFIG_ZRAM_DEBUG is not set
@@ -4920,6 +4971,7 @@ CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
CONFIG_VIDEO_DT3155=m
CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
CONFIG_CRYSTALHD=m
CONFIG_CXT1E1=m
CONFIG_SBE_PMCC4_NCOMM=y
@@ -4936,12 +4988,9 @@ CONFIG_LIRC_SIR=m
CONFIG_LIRC_TTUSBIR=m
CONFIG_LIRC_ZILOG=m
CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
# CONFIG_EASYCAP_DEBUG is not set
CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
CONFIG_SBE_2T3E3=m
CONFIG_ATH6K_LEGACY=m
CONFIG_AR600x_SD31_XXX=y
@@ -4988,10 +5037,9 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
+CONFIG_DRM_PSB_MRST=y
+# CONFIG_DRM_PSB_MFLD is not set
+CONFIG_DRM_PSB_CDV=y
CONFIG_ALTERA_STAPL=m
CONFIG_INTEL_MEI=m
CONFIG_X86_PLATFORM_DEVICES=y
@@ -5038,7 +5086,10 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
-CONFIG_CLKSRC_I8253=y
+CONFIG_SAMSUNG_Q10=m
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_VIRT_DRIVERS=y
#
# Firmware Drivers
@@ -5062,7 +5113,6 @@ CONFIG_SIGMA=m
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
@@ -5081,7 +5131,6 @@ CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
@@ -5210,6 +5259,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -5230,6 +5280,7 @@ CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
CONFIG_UFS_FS_WRITE=y
# CONFIG_UFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
@@ -5243,7 +5294,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-CONFIG_NFSD_DEPRECATED=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5391,7 +5441,7 @@ CONFIG_TIMER_STATS=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -5517,6 +5567,11 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_COMPAT_24=y
@@ -5666,6 +5721,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=y
+CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
@@ -5702,3 +5758,5 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
+CONFIG_LLIST=y
diff --git a/config/ia64/debug b/config/ia64/debug
index 81dace0a86..e70e5c477c 100644
--- a/config/ia64/debug
+++ b/config/ia64/debug
@@ -279,6 +279,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
diff --git a/config/ia64/default b/config/ia64/default
index a684c816fb..a1de1ffd58 100644
--- a/config/ia64/default
+++ b/config/ia64/default
@@ -279,6 +279,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
diff --git a/config/ia64/trace b/config/ia64/trace
index a0796fb3bf..9f0a221a46 100644
--- a/config/ia64/trace
+++ b/config/ia64/trace
@@ -279,6 +279,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
diff --git a/config/ppc/default b/config/ppc/default
index 11355d3ad9..17acec0ffe 100644
--- a/config/ppc/default
+++ b/config/ppc/default
@@ -397,6 +397,7 @@ CONFIG_VIRT_TO_BUS=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_NEED_PER_CPU_KM=y
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_PPC_4K_PAGES=y
CONFIG_FORCE_MAX_ZONEORDER=11
# CONFIG_CMDLINE_BOOL is not set
diff --git a/config/ppc/ppc64 b/config/ppc/ppc64
index 7b171f44df..b248d7fd06 100644
--- a/config/ppc/ppc64
+++ b/config/ppc/ppc64
@@ -468,6 +468,7 @@ CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_HAS_HASH_64K=y
diff --git a/config/ppc64/debug b/config/ppc64/debug
index dbca6aab2b..e8887489ab 100644
--- a/config/ppc64/debug
+++ b/config/ppc64/debug
@@ -467,6 +467,7 @@ CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_HAS_HASH_64K=y
diff --git a/config/ppc64/default b/config/ppc64/default
index c2047f3f88..5539e95819 100644
--- a/config/ppc64/default
+++ b/config/ppc64/default
@@ -468,6 +468,7 @@ CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_HAS_HASH_64K=y
diff --git a/config/ppc64/ppc64 b/config/ppc64/ppc64
index 54e9620084..2f9e1491d5 100644
--- a/config/ppc64/ppc64
+++ b/config/ppc64/ppc64
@@ -468,6 +468,7 @@ CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_HAS_HASH_64K=y
diff --git a/config/ppc64/trace b/config/ppc64/trace
index c5da045211..b50265798a 100644
--- a/config/ppc64/trace
+++ b/config/ppc64/trace
@@ -467,6 +467,7 @@ CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_HAS_HASH_64K=y
diff --git a/config/s390/s390 b/config/s390/s390
index a03d528ff9..2a937e299b 100644
--- a/config/s390/s390
+++ b/config/s390/s390
@@ -325,6 +325,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
#
# I/O subsystem configuration
diff --git a/config/s390/trace b/config/s390/trace
index 71fb67c622..a4b19ffca4 100644
--- a/config/s390/trace
+++ b/config/s390/trace
@@ -325,6 +325,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
#
# I/O subsystem configuration
diff --git a/config/s390x/default b/config/s390x/default
index aca300dc0c..ace173a1f6 100644
--- a/config/s390x/default
+++ b/config/s390x/default
@@ -328,6 +328,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
#
# I/O subsystem configuration
diff --git a/config/s390x/trace b/config/s390x/trace
index a45734639d..2c95443c28 100644
--- a/config/s390x/trace
+++ b/config/s390x/trace
@@ -328,6 +328,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
#
# I/O subsystem configuration
diff --git a/config/x86_64/debug b/config/x86_64/debug
index e6fc3b5a8e..0a11dcc5cd 100644
--- a/config/x86_64/debug
+++ b/config/x86_64/debug
@@ -296,13 +296,13 @@ CONFIG_SMP=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_64_XEN is not set
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
@@ -409,6 +409,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
diff --git a/config/x86_64/default b/config/x86_64/default
index 8e888b5a23..9d76a60948 100644
--- a/config/x86_64/default
+++ b/config/x86_64/default
@@ -296,13 +296,13 @@ CONFIG_SMP=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_64_XEN is not set
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
@@ -409,6 +409,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
diff --git a/config/x86_64/desktop b/config/x86_64/desktop
index 4f831f67a9..7f45b55090 100644
--- a/config/x86_64/desktop
+++ b/config/x86_64/desktop
@@ -297,13 +297,13 @@ CONFIG_SMP=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_64_XEN is not set
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
@@ -411,6 +411,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
diff --git a/config/x86_64/ec2 b/config/x86_64/ec2
index b4b6df3c54..5b301ff735 100644
--- a/config/x86_64/ec2
+++ b/config/x86_64/ec2
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/x86_64 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86_64 3.1.0-rc5 Kernel Configuration
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
@@ -197,6 +197,7 @@ CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -215,6 +216,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_BLOCK_COMPAT=y
@@ -280,6 +282,7 @@ CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
@@ -292,7 +295,6 @@ CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=32
# CONFIG_IRQ_TIME_ACCOUNTING is not set
@@ -321,6 +323,7 @@ CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
@@ -580,6 +583,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
@@ -891,6 +895,11 @@ CONFIG_NET_9P=m
# CONFIG_CAIF is not set
CONFIG_CEPH_LIB=m
CONFIG_CEPH_LIB_PRETTYDEBUG=y
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
#
# Device Drivers
@@ -918,6 +927,7 @@ CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1146,6 +1156,7 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -1272,10 +1283,6 @@ CONFIG_USB_SUPPORT=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
#
-# Enable Host or Gadget support to see Inventra options
-#
-
-#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
# CONFIG_USB_GADGET is not set
@@ -1286,7 +1293,6 @@ CONFIG_USB_SUPPORT=y
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
-# CONFIG_NFC_DEVICES is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
@@ -1336,6 +1342,7 @@ CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_TMEM=y
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
+CONFIG_VIRT_DRIVERS=y
#
# File systems
@@ -1343,7 +1350,6 @@ CONFIG_XEN_TMEM=y
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=m
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
@@ -1362,7 +1368,6 @@ CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
@@ -1469,6 +1474,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -1497,7 +1503,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-CONFIG_NFSD_DEPRECATED=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -1644,7 +1649,7 @@ CONFIG_TIMER_STATS=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1908,6 +1913,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
@@ -1938,3 +1944,4 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
diff --git a/config/x86_64/trace b/config/x86_64/trace
index 71512abd68..dd5c2be6b5 100644
--- a/config/x86_64/trace
+++ b/config/x86_64/trace
@@ -296,13 +296,13 @@ CONFIG_SMP=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_64_XEN is not set
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_PARAVIRT_GUEST=y
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_PARAVIRT_XEN is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
@@ -409,6 +409,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
diff --git a/config/x86_64/xen b/config/x86_64/xen
index 3bdb218205..06bc792659 100644
--- a/config/x86_64/xen
+++ b/config/x86_64/xen
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/x86_64 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86_64 3.1.0-rc5 Kernel Configuration
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
@@ -156,6 +156,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -201,6 +202,7 @@ CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -219,6 +221,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_BLOCK_COMPAT=y
@@ -286,6 +289,7 @@ CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
@@ -299,7 +303,6 @@ CONFIG_CPU_SUP_CENTAUR=y
CONFIG_DMI=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=512
# CONFIG_IRQ_TIME_ACCOUNTING is not set
@@ -338,6 +341,7 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
CONFIG_MEMORY_FAILURE=y
CONFIG_HWPOISON_INJECT=m
CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
CONFIG_MTRR=y
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
@@ -397,11 +401,12 @@ CONFIG_ACPI_PCI_SLOT=m
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
# CONFIG_ACPI_CUSTOM_METHOD is not set
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
CONFIG_ACPI_PV_SLEEP=y
@@ -704,6 +709,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
@@ -1167,6 +1173,13 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=y
CONFIG_CEPH_LIB_PRETTYDEBUG=y
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
#
# Device Drivers
@@ -1186,6 +1199,8 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
@@ -1397,6 +1412,7 @@ CONFIG_BLK_DEV_DAC960=m
CONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1421,7 +1437,6 @@ CONFIG_AD525X_DPOT_I2C=m
CONFIG_AD525X_DPOT_SPI=m
CONFIG_IBM_ASM=m
CONFIG_PHANTOM=m
-CONFIG_INTEL_MID_PTI=m
CONFIG_SGI_IOC4=m
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
@@ -1443,6 +1458,7 @@ CONFIG_DS1682=m
CONFIG_TI_DAC7512=m
CONFIG_BMP085=m
CONFIG_PCH_PHUB=m
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1454,6 +1470,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1540,6 +1557,7 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_ARCMSR=m
@@ -1736,8 +1754,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -1895,6 +1913,7 @@ CONFIG_R8169=m
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_VIA_VELOCITY=m
@@ -1986,10 +2005,13 @@ CONFIG_CARL9170_LEDS=y
# CONFIG_CARL9170_DEBUGFS is not set
CONFIG_CARL9170_WPC=y
CONFIG_B43=m
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
+CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
@@ -2096,6 +2118,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2239,6 +2262,7 @@ CONFIG_IEEE802154_FAKEHARD=m
CONFIG_CAIF_TTY=m
CONFIG_CAIF_SPI_SLAVE=m
# CONFIG_CAIF_SPI_SYNC is not set
+CONFIG_CAIF_HSI=m
CONFIG_RIONET=m
CONFIG_RIONET_TX_SIZE=128
CONFIG_RIONET_RX_SIZE=128
@@ -2565,11 +2589,15 @@ CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2833,13 +2861,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -2986,18 +3014,22 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
@@ -3014,7 +3046,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3049,6 +3083,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=m
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3127,6 +3162,7 @@ CONFIG_BCMA_POSSIBLE=y
# Broadcom specific AMBA
#
CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_DEBUG is not set
@@ -3139,6 +3175,7 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3189,6 +3226,7 @@ CONFIG_MEDIA_SUPPORT=m
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3205,6 +3243,7 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
@@ -3233,6 +3272,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3251,6 +3291,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3317,6 +3358,10 @@ CONFIG_VIDEO_OV7670=m
CONFIG_VIDEO_MT9V011=m
#
+# Flash devices
+#
+
+#
# Video improvement chips
#
CONFIG_VIDEO_UPD64031A=m
@@ -3379,6 +3424,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3407,6 +3453,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3438,6 +3485,7 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
@@ -3582,6 +3630,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3595,6 +3648,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -3840,6 +3899,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -3928,6 +3988,7 @@ CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
CONFIG_SND_SB_COMMON=m
CONFIG_SND_SB16_DSP=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -3977,7 +4038,6 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PREALLOC_SIZE=1024
CONFIG_SND_HDA_HWDEP=y
@@ -3987,6 +4047,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=2
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -3994,6 +4055,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4090,6 +4152,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4127,6 +4191,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4137,6 +4202,7 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
@@ -4189,10 +4255,6 @@ CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
#
-# Enable Host or Gadget support to see Inventra options
-#
-
-#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
@@ -4386,7 +4448,6 @@ CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4414,8 +4475,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
# CONFIG_ACCESSIBILITY is not set
CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_MAD=m
@@ -4633,12 +4692,6 @@ CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_TMEM=y
CONFIG_STAGING=y
-CONFIG_STALLION=m
-CONFIG_ISTALLION=m
-CONFIG_DIGIEPCA=m
-CONFIG_RISCOM8=m
-CONFIG_SPECIALIX=m
-CONFIG_COMPUTONE=m
CONFIG_ET131X=m
# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
@@ -4754,6 +4807,7 @@ CONFIG_AD799X_RING_BUFFER=y
CONFIG_AD7476=m
CONFIG_AD7887=m
CONFIG_AD7780=m
+CONFIG_AD7793=m
CONFIG_AD7745=m
CONFIG_AD7816=m
CONFIG_ADT75=m
@@ -4776,6 +4830,7 @@ CONFIG_AD5624R_SPI=m
CONFIG_AD5446=m
CONFIG_AD5504=m
CONFIG_AD5791=m
+CONFIG_AD5686=m
CONFIG_MAX517=m
#
@@ -4833,9 +4888,6 @@ CONFIG_ADE7854_SPI=m
CONFIG_AD2S90=m
CONFIG_AD2S120X=m
CONFIG_AD2S1210=m
-# CONFIG_AD2S1210_GPIO_INPUT is not set
-# CONFIG_AD2S1210_GPIO_OUTPUT is not set
-CONFIG_AD2S1210_GPIO_NONE=y
#
# Triggers - standalone
@@ -4852,6 +4904,7 @@ CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
CONFIG_VIDEO_DT3155=m
CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
CONFIG_CRYSTALHD=m
CONFIG_CXT1E1=m
CONFIG_SBE_PMCC4_NCOMM=y
@@ -4868,12 +4921,9 @@ CONFIG_LIRC_SIR=m
CONFIG_LIRC_TTUSBIR=m
CONFIG_LIRC_ZILOG=m
CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
# CONFIG_EASYCAP_DEBUG is not set
CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
CONFIG_SBE_2T3E3=m
CONFIG_ATH6K_LEGACY=m
CONFIG_AR600x_SD31_XXX=y
@@ -4920,10 +4970,9 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
+CONFIG_DRM_PSB_MRST=y
+# CONFIG_DRM_PSB_MFLD is not set
+CONFIG_DRM_PSB_CDV=y
CONFIG_ALTERA_STAPL=m
CONFIG_INTEL_MEI=m
CONFIG_X86_PLATFORM_DEVICES=y
@@ -4969,6 +5018,10 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_VIRT_DRIVERS=y
#
# Firmware Drivers
@@ -4992,7 +5045,6 @@ CONFIG_SIGMA=m
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
@@ -5011,7 +5063,6 @@ CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_DEFAULTS_TO_BARRIERS_ENABLED=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
@@ -5141,6 +5192,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -5161,6 +5213,7 @@ CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
CONFIG_UFS_FS_WRITE=y
# CONFIG_UFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
@@ -5174,7 +5227,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-CONFIG_NFSD_DEPRECATED=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5322,7 +5374,7 @@ CONFIG_TIMER_STATS=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -5447,6 +5499,11 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_COMPAT_24=y
@@ -5596,6 +5653,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=y
+CONFIG_CRC8=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
@@ -5631,3 +5689,5 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
+CONFIG_LLIST=y
diff --git a/patches.xen/add-console-use-vt b/patches.xen/add-console-use-vt
index 241db027cc..a6a3e15753 100644
--- a/patches.xen/add-console-use-vt
+++ b/patches.xen/add-console-use-vt
@@ -4,9 +4,9 @@ Patch-mainline: no
$subject says all
---- head-2011-06-30.orig/drivers/tty/tty_io.c 2011-06-30 15:04:19.000000000 +0200
-+++ head-2011-06-30/drivers/tty/tty_io.c 2011-06-30 15:21:13.000000000 +0200
-@@ -137,6 +137,8 @@ EXPORT_SYMBOL(tty_mutex);
+--- head-2011-09-07.orig/drivers/tty/tty_io.c 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/tty/tty_io.c 2011-09-07 14:18:31.000000000 +0200
+@@ -138,6 +138,8 @@ EXPORT_SYMBOL(tty_mutex);
/* Spinlock to protect the tty->tty_files list */
DEFINE_SPINLOCK(tty_files_lock);
@@ -15,7 +15,7 @@ $subject says all
static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
ssize_t redirected_tty_write(struct file *, const char __user *,
-@@ -1835,7 +1837,7 @@ retry_open:
+@@ -1834,7 +1836,7 @@ retry_open:
goto got_driver;
}
#ifdef CONFIG_VT
@@ -24,7 +24,7 @@ $subject says all
extern struct tty_driver *console_driver;
driver = tty_driver_kref_get(console_driver);
index = fg_console;
-@@ -3327,7 +3329,8 @@ int __init tty_init(void)
+@@ -3326,7 +3328,8 @@ int __init tty_init(void)
WARN_ON(device_create_file(consdev, &dev_attr_active) < 0);
#ifdef CONFIG_VT
@@ -34,8 +34,8 @@ $subject says all
#endif
return 0;
}
---- head-2011-06-30.orig/include/linux/console.h 2011-03-15 02:20:32.000000000 +0100
-+++ head-2011-06-30/include/linux/console.h 2011-01-31 14:30:58.000000000 +0100
+--- head-2011-09-07.orig/include/linux/console.h 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/include/linux/console.h 2011-01-31 14:30:58.000000000 +0100
@@ -73,6 +73,7 @@ extern const struct consw dummy_con; /*
extern const struct consw vga_con; /* VGA text console */
extern const struct consw newport_con; /* SGI Newport console */
diff --git a/patches.xen/frontswap-config b/patches.xen/frontswap-config
new file mode 100644
index 0000000000..5c3e20583d
--- /dev/null
+++ b/patches.xen/frontswap-config
@@ -0,0 +1,295 @@
+From: Dan Magenheimer <dan.magenheimer@oracle.com>
+Subject: [PATCH V8 4/4] mm: frontswap: config and doc files
+Patch-mainline: slated for 3.2
+
+This fourth patch of four in the frontswap series adds configuration
+and documentation files.
+
+[v8: rebase to 3.0-rc4]
+[v7: rebase to 3.0-rc3]
+[v6: rebase to 3.0-rc1]
+[v5: change config default to n]
+[v4: rebase to 2.6.39]
+Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
+Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
+Acked-by: Jan Beulich <JBeulich@novell.com>
+Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
+Cc: Jeremy Fitzhardinge <jeremy@goop.org>
+Cc: Hugh Dickins <hughd@google.com>
+Cc: Johannes Weiner <hannes@cmpxchg.org>
+Cc: Nitin Gupta <ngupta@vflare.org>
+Cc: Matthew Wilcox <matthew@wil.cx>
+Cc: Chris Mason <chris.mason@oracle.com>
+Cc: Rik Riel <riel@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+
+--- sle11sp2-2011-09-06.orig/mm/Makefile 2011-09-06 08:34:28.000000000 +0200
++++ sle11sp2-2011-09-06/mm/Makefile 2011-08-29 17:52:14.000000000 +0200
+@@ -25,6 +25,7 @@ obj-$(CONFIG_HAVE_MEMBLOCK) += memblock.
+
+ obj-$(CONFIG_BOUNCE) += bounce.o
+ obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o thrash.o
++obj-$(CONFIG_FRONTSWAP) += frontswap.o
+ obj-$(CONFIG_HAS_DMA) += dmapool.o
+ obj-$(CONFIG_HUGETLBFS) += hugetlb.o
+ obj-$(CONFIG_NUMA) += mempolicy.o
+--- sle11sp2-2011-09-06.orig/mm/Kconfig 2011-09-06 08:34:28.000000000 +0200
++++ sle11sp2-2011-09-06/mm/Kconfig 2011-08-29 17:52:14.000000000 +0200
+@@ -370,3 +370,20 @@ config CLEANCACHE
+ in a negligible performance hit.
+
+ If unsure, say Y to enable cleancache
++
++config FRONTSWAP
++ bool "Enable frontswap to cache swap pages if tmem is present"
++ depends on SWAP
++ default n
++ help
++ Frontswap is so named because it can be thought of as the opposite
++ of a "backing" store for a swap device. The data is stored into
++ "transcendent memory", memory that is not directly accessible or
++ addressable by the kernel and is of unknown and possibly
++ time-varying size. When space in transcendent memory is available,
++ a significant swap I/O reduction may be achieved. When none is
++ available, all frontswap calls are reduced to a single pointer-
++ compare-against-NULL resulting in a negligible performance hit
++ and swap data is stored as normal on the matching swap device.
++
++ If unsure, say Y to enable frontswap.
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sle11sp2-2011-09-06/Documentation/ABI/testing/sysfs-kernel-mm-frontswap 2011-08-29 17:52:14.000000000 +0200
+@@ -0,0 +1,16 @@
++What: /sys/kernel/mm/frontswap/
++Date: August 2011
++Contact: Dan Magenheimer <dan.magenheimer@oracle.com>
++Description:
++ /sys/kernel/mm/frontswap/ contains a number of files which
++ record a count of various frontswap operations (sum across
++ all swap devices):
++ succ_puts
++ failed_puts
++ gets
++ flushes
++ In addition, reading the curr_pages file shows how many
++ pages are currently contained in frontswap and writing this
++ file with an integer performs a "partial swapoff", reducing
++ the number of frontswap pages to that integer if memory
++ constraints permit.
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sle11sp2-2011-09-06/Documentation/vm/frontswap.txt 2011-08-29 17:52:14.000000000 +0200
+@@ -0,0 +1,215 @@
++Frontswap provides a "transcendent memory" interface for swap pages.
++In some environments, dramatic performance savings may be obtained because
++swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk.
++
++Frontswap is so named because it can be thought of as the opposite of
++a "backing" store for a swap device. The storage is assumed to be
++a synchronous concurrency-safe page-oriented "pseudo-RAM device" conforming
++to the requirements of transcendent memory (such as Xen's "tmem", or
++in-kernel compressed memory, aka "zcache", or future RAM-like devices);
++this pseudo-RAM device is not directly accessible or addressable by the
++kernel and is of unknown and possibly time-varying size. The driver
++links itself to frontswap by calling frontswap_register_ops to set the
++frontswap_ops funcs appropriately and the functions it provides must
++conform to certain policies as follows:
++
++An "init" prepares the device to receive frontswap pages associated
++with the specified swap device number (aka "type"). A "put_page" will
++copy the page to transcendent memory and associate it with the type and
++offset associated with the page. A "get_page" will copy the page, if found,
++from transcendent memory into kernel memory, but will NOT remove the page
++from from transcendent memory. A "flush_page" will remove the page from
++transcendent memory and a "flush_area" will remove ALL pages associated
++with the swap type (e.g., like swapoff) and notify the "device" to refuse
++further puts with that swap type.
++
++Once a page is successfully put, a matching get on the page will normally
++succeed. So when the kernel finds itself in a situation where it needs
++to swap out a page, it first attempts to use frontswap. If the put returns
++success, the data has been successfully saved to transcendent memory and
++a disk write and, if the data is later read back, a disk read are avoided.
++If a put returns failure, transcendent memory has rejected the data, and the
++page can be written to swap as usual.
++
++Note that if a page is put and the page already exists in transcendent memory
++(a "duplicate" put), either the put succeeds and the data is overwritten,
++or the put fails AND the page is flushed. This ensures stale data may
++never be obtained from frontswap.
++
++Monitoring and control of frontswap is done by sysfs files in the
++/sys/kernel/mm/frontswap directory. The effectiveness of frontswap can
++be measured (across all swap devices) with:
++
++curr_pages - number of pages currently contained in frontswap
++failed_puts - how many put attempts have failed
++gets - how many gets were attempted (all should succeed)
++succ_puts - how many put attempts have succeeded
++flushes - how many flushes were attempted
++
++The number of pages currently contained in frontswap can be reduced by root by
++writing an integer target to curr_pages, which results in a "partial swapoff",
++thus reducing the number of frontswap pages to that target if memory
++constraints permit.
++
++FAQ
++
++1) Where's the value?
++
++When a workload starts swapping, performance falls through the floor.
++Frontswap significantly increases performance in many such workloads by
++providing a clean, dynamic interface to read and write swap pages to
++"transcendent memory" that is otherwise not directly addressable to the kernel.
++This interface is ideal when data is transformed to a different form
++and size (such as with compression) or secretly moved (as might be
++useful for write-balancing for some RAM-like devices). Swap pages (and
++evicted page-cache pages) are a great use for this kind of slower-than-RAM-
++but-much-faster-than-disk "pseudo-RAM device" and the frontswap (and
++cleancache) interface to transcendent memory provides a nice way to read
++and write -- and indirectly "name" -- the pages.
++
++In the virtual case, the whole point of virtualization is to statistically
++multiplex physical resources acrosst the varying demands of multiple
++virtual machines. This is really hard to do with RAM and efforts to do
++it well with no kernel changes have essentially failed (except in some
++well-publicized special-case workloads). Frontswap -- and cleancache --
++with a fairly small impact on the kernel, provides a huge amount
++of flexibility for more dynamic, flexible RAM multiplexing.
++Specifically, the Xen Transcendent Memory backend allows otherwise
++"fallow" hypervisor-owned RAM to not only be "time-shared" between multiple
++virtual machines, but the pages can be compressed and deduplicated to
++optimize RAM utilization. And when guest OS's are induced to surrender
++underutilized RAM (e.g. with "self-ballooning"), sudden unexpected
++memory pressure may result in swapping; frontswap allows those pages
++to be swapped to and from hypervisor RAM if overall host system memory
++conditions allow.
++
++2) Sure there may be performance advantages in some situations, but
++ what's the space/time overhead of frontswap?
++
++If CONFIG_FRONTSWAP is disabled, every frontswap hook compiles into
++nothingness and the only overhead is a few extra bytes per swapon'ed
++swap device. If CONFIG_FRONTSWAP is enabled but no frontswap "backend"
++registers, there is one extra global variable compared to zero for
++every swap page read or written. If CONFIG_FRONTSWAP is enabled
++AND a frontswap backend registers AND the backend fails every "put"
++request (i.e. provides no memory despite claiming it might),
++CPU overhead is still negligible -- and since every frontswap fail
++precedes a swap page write-to-disk, the system is highly likely
++to be I/O bound and using a small fraction of a percent of a CPU
++will be irrelevant anyway.
++
++As for space, if CONFIG_FRONTSWAP is enabled AND a frontswap backend
++registers, one bit is allocated for every swap page for every swap
++device that is swapon'd. This is added to the EIGHT bits (which
++was sixteen until about 2.6.34) that the kernel already allocates
++for every swap page for every swap device that is swapon'd. (Hugh
++Dickins has observed that frontswap could probably steal one of
++the existing eight bits, but let's worry about that minor optimization
++later.) For very large swap disks (which are rare) on a standard
++4K pagesize, this is 1MB per 32GB swap.
++
++3) OK, how about a quick overview of what this frontswap patch does
++ in terms that a kernel hacker can grok?
++
++Let's assume that a frontswap "backend" has registered during
++kernel initialization; this registration indicates that this
++frontswap backend has access to some "memory" that is not directly
++accessible by the kernel. Exactly how much memory it provides is
++entirely dynamic and random.
++
++Whenever a swap-device is swapon'd frontswap_init() is called,
++passing the swap device number (aka "type") as a parameter.
++This notifies frontswap to expect attempts to "put" swap pages
++associated with that number.
++
++Whenever the swap subsystem is readying a page to write to a swap
++device (c.f swap_writepage()), frontswap_put_page is called. Frontswap
++consults with the frontswap backend and if the backend says it does NOT
++have room, frontswap_put_page returns -1 and the kernel swaps the page
++to the swap device as normal. Note that the response from the frontswap
++backend is unpredictable to the kernel; it may choose to never accept a
++page, it could accept every ninth page, or it might accept every
++page. But if the backend does accept a page, the data from the page
++has already been copied and associated with the type and offset,
++and the backend guarantees the persistence of the data. In this case,
++frontswap sets a bit in the "frontswap_map" for the swap device
++corresponding to the page offset on the swap device to which it would
++otherwise have written the data.
++
++When the swap subsystem needs to swap-in a page (swap_readpage()),
++it first calls frontswap_get_page() which checks the frontswap_map to
++see if the page was earlier accepted by the frontswap backend. If
++it was, the page of data is filled from the frontswap backend and
++the swap-in is complete. If not, the normal swap-in code is
++executed to obtain the page of data from the real swap device.
++
++So every time the frontswap backend accepts a page, a swap device read
++and (potentially) a swap device write are replaced by a "frontswap backend
++put" and (possibly) a "frontswap backend get", which are presumably much
++faster.
++
++4) Can't frontswap be configured as a "special" swap device that is
++ just higher priority than any real swap device (e.g. like zswap)?
++
++No. Recall that acceptance of any swap page by the frontswap
++backend is entirely unpredictable. This is critical to the definition
++of frontswap because it grants completely dynamic discretion to the
++backend. But since any "put" might fail, there must always be a real
++slot on a real swap device to swap the page. Thus frontswap must be
++implemented as a "shadow" to every swapon'd device with the potential
++capability of holding every page that the swap device might have held
++and the possibility that it might hold no pages at all.
++On the downside, this also means that frontswap cannot contain more
++pages than the total of swapon'd swap devices. For example, if NO
++swap device is configured on some installation, frontswap is useless.
++
++Further, frontswap is entirely synchronous whereas a real swap
++device is, by definition, asynchronous and uses block I/O. The
++block I/O layer is not only unnecessary, but may perform "optimizations"
++that are inappropriate for a RAM-oriented device including delaying
++the write of some pages for a significant amount of time. Synchrony is
++required to ensure the dynamicity of the backend and to avoid thorny race
++conditions that would unnecessarily and greatly complicate frontswap
++and/or the block I/O subsystem.
++
++In a virtualized environment, the dynamicity allows the hypervisor
++(or host OS) to do "intelligent overcommit". For example, it can
++choose to accept pages only until host-swapping might be imminent,
++then force guests to do their own swapping. In zcache, "poorly"
++compressible pages can be rejected, where "poorly" can itself be defined
++dynamically depending on current memory constraints.
++
++5) Why this weird definition about "duplicate puts"? If a page
++ has been previously successfully put, can't it always be
++ successfully overwritten?
++
++Nearly always it can, but no, sometimes it cannot. Consider an example
++where data is compressed and the original 4K page has been compressed
++to 1K. Now an attempt is made to overwrite the page with data that
++is non-compressible and so would take the entire 4K. But the backend
++has no more space. In this case, the put must be rejected. Whenever
++frontswap rejects a put that would overwrite, it also must flush
++the old data and ensure that it is no longer accessible. Since the
++swap subsystem then writes the new data to the read swap device,
++this is the correct course of action to ensure coherency.
++
++6) What is frontswap_shrink for?
++
++When the (non-frontswap) swap subsystem swaps out a page to a real
++swap device, that page is only taking up low-value pre-allocated disk
++space. But if frontswap has placed a page in transcendent memory, that
++page may be taking up valuable real estate. The frontswap_shrink
++routine allows a process outside of the swap subsystem (such as
++a userland service via the sysfs interface, or a kernel thread)
++to force pages out of the memory managed by frontswap and back into
++kernel-addressable memory.
++
++7) Why does the frontswap patch create the new include file swapfile.h?
++
++The frontswap code depends on some swap-subsystem-internal data
++structures that have, over the years, moved back and forth between
++static and global. This seemed a reasonable compromise: Define
++them as global but declare them in a new include file that isn't
++included by the large number of source files that include swap.h.
++
++Dan Magenheimer, last updated August 8, 2011
diff --git a/patches.xen/frontswap-core b/patches.xen/frontswap-core
new file mode 100644
index 0000000000..42baff56d8
--- /dev/null
+++ b/patches.xen/frontswap-core
@@ -0,0 +1,518 @@
+From: Dan Magenheimer <dan.magenheimer@oracle.com>
+Subject: [PATCH V8 2/4] mm: frontswap: core code
+Patch-mainline: slated for 3.2
+
+This second patch of four in this frontswap series provides the core code
+for frontswap that interfaces between the hooks in the swap subsystem and
+a frontswap backend via frontswap_ops.
+
+Two new files are added: mm/frontswap.c and include/linux/frontswap.h
+
+Credits: Frontswap_ops design derived from Jeremy Fitzhardinge
+design for tmem; sysfs code modelled after mm/ksm.c
+
+[v8: rebase to 3.0-rc4]
+[v8: kamezawa.hiroyu@jp.fujitsu.com: change count to atomic_t to avoid races]
+[v7: rebase to 3.0-rc3]
+[v7: JBeulich@novell.com: new static inlines resolve to no-ops if not config'd]
+[v7: JBeulich@novell.com: avoid redundant shifts/divides for *_bit lib calls]
+[v6: rebase to 3.1-rc1]
+[v6: lliubbo@gmail.com: fix null pointer deref if vzalloc fails]
+[v6: konrad.wilk@oracl.com: various checks and code clarifications/comments]
+[v5: no change from v4]
+[v4: rebase to 2.6.39]
+Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
+Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
+Acked-by: Jan Beulich <JBeulich@novell.com>
+Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
+Cc: Jeremy Fitzhardinge <jeremy@goop.org>
+Cc: Hugh Dickins <hughd@google.com>
+Cc: Johannes Weiner <hannes@cmpxchg.org>
+Cc: Nitin Gupta <ngupta@vflare.org>
+Cc: Matthew Wilcox <matthew@wil.cx>
+Cc: Chris Mason <chris.mason@oracle.com>
+Cc: Rik Riel <riel@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sle11sp2-2011-09-06/include/linux/frontswap.h 2011-08-29 17:52:14.000000000 +0200
+@@ -0,0 +1,125 @@
++#ifndef _LINUX_FRONTSWAP_H
++#define _LINUX_FRONTSWAP_H
++
++#include <linux/swap.h>
++#include <linux/mm.h>
++
++struct frontswap_ops {
++ void (*init)(unsigned);
++ int (*put_page)(unsigned, pgoff_t, struct page *);
++ int (*get_page)(unsigned, pgoff_t, struct page *);
++ void (*flush_page)(unsigned, pgoff_t);
++ void (*flush_area)(unsigned);
++};
++
++extern int frontswap_enabled;
++extern struct frontswap_ops
++ frontswap_register_ops(struct frontswap_ops *ops);
++extern void frontswap_shrink(unsigned long);
++extern unsigned long frontswap_curr_pages(void);
++
++extern void __frontswap_init(unsigned type);
++extern int __frontswap_put_page(struct page *page);
++extern int __frontswap_get_page(struct page *page);
++extern void __frontswap_flush_page(unsigned, pgoff_t);
++extern void __frontswap_flush_area(unsigned);
++
++#ifdef CONFIG_FRONTSWAP
++
++static inline int frontswap_test(struct swap_info_struct *sis, pgoff_t offset)
++{
++ int ret = 0;
++
++ if (frontswap_enabled && sis->frontswap_map)
++ ret = test_bit(offset, sis->frontswap_map);
++ return ret;
++}
++
++static inline void frontswap_set(struct swap_info_struct *sis, pgoff_t offset)
++{
++ if (frontswap_enabled && sis->frontswap_map)
++ set_bit(offset, sis->frontswap_map);
++}
++
++static inline void frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
++{
++ if (frontswap_enabled && sis->frontswap_map)
++ clear_bit(offset, sis->frontswap_map);
++}
++
++static inline void frontswap_map_set(struct swap_info_struct *p,
++ unsigned long *map)
++{
++ p->frontswap_map = map;
++}
++
++static inline unsigned long *frontswap_map_get(struct swap_info_struct *p)
++{
++ return p->frontswap_map;
++}
++#else
++/* all inline routines become no-ops and all externs are ignored */
++
++#define frontswap_enabled (0)
++
++static inline int frontswap_test(struct swap_info_struct *sis, pgoff_t offset)
++{
++ return 0;
++}
++
++static inline void frontswap_set(struct swap_info_struct *sis, pgoff_t offset)
++{
++}
++
++static inline void frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
++{
++}
++
++static inline void frontswap_map_set(struct swap_info_struct *p,
++ unsigned long *map)
++{
++}
++
++static inline unsigned long *frontswap_map_get(struct swap_info_struct *p)
++{
++ return NULL;
++}
++#endif
++
++static inline int frontswap_put_page(struct page *page)
++{
++ int ret = -1;
++
++ if (frontswap_enabled)
++ ret = __frontswap_put_page(page);
++ return ret;
++}
++
++static inline int frontswap_get_page(struct page *page)
++{
++ int ret = -1;
++
++ if (frontswap_enabled)
++ ret = __frontswap_get_page(page);
++ return ret;
++}
++
++static inline void frontswap_flush_page(unsigned type, pgoff_t offset)
++{
++ if (frontswap_enabled)
++ __frontswap_flush_page(type, offset);
++}
++
++static inline void frontswap_flush_area(unsigned type)
++{
++ if (frontswap_enabled)
++ __frontswap_flush_area(type);
++}
++
++static inline void frontswap_init(unsigned type)
++{
++ if (frontswap_enabled)
++ __frontswap_init(type);
++}
++
++#endif /* _LINUX_FRONTSWAP_H */
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sle11sp2-2011-09-06/mm/frontswap.c 2011-08-29 18:04:05.000000000 +0200
+@@ -0,0 +1,351 @@
++/*
++ * Frontswap frontend
++ *
++ * This code provides the generic "frontend" layer to call a matching
++ * "backend" driver implementation of frontswap. See
++ * Documentation/vm/frontswap.txt for more information.
++ *
++ * Copyright (C) 2009-2010 Oracle Corp. All rights reserved.
++ * Author: Dan Magenheimer
++ *
++ * This work is licensed under the terms of the GNU GPL, version 2.
++ */
++
++#include <linux/mm.h>
++#include <linux/mman.h>
++#include <linux/sysctl.h>
++#include <linux/swap.h>
++#include <linux/swapops.h>
++#include <linux/proc_fs.h>
++#include <linux/security.h>
++#include <linux/capability.h>
++#include <linux/module.h>
++#include <linux/uaccess.h>
++#include <linux/frontswap.h>
++#include <linux/swapfile.h>
++
++/*
++ * frontswap_ops is set by frontswap_register_ops to contain the pointers
++ * to the frontswap "backend" implementation functions.
++ */
++static struct frontswap_ops frontswap_ops;
++
++/*
++ * This global enablement flag reduces overhead on systems where frontswap_ops
++ * has not been registered, so is preferred to the slower alternative: a
++ * function call that checks a non-global.
++ */
++int frontswap_enabled;
++EXPORT_SYMBOL(frontswap_enabled);
++
++/*
++ * Useful stats available in /sys/kernel/mm/frontswap. These are for
++ * information only so are not protected against increment/decrement races.
++ */
++static unsigned long frontswap_gets;
++static unsigned long frontswap_succ_puts;
++static unsigned long frontswap_failed_puts;
++static unsigned long frontswap_flushes;
++
++/*
++ * Register operations for frontswap, returning previous thus allowing
++ * detection of multiple backends and possible nesting
++ */
++struct frontswap_ops frontswap_register_ops(struct frontswap_ops *ops)
++{
++ struct frontswap_ops old = frontswap_ops;
++
++ frontswap_ops = *ops;
++ frontswap_enabled = 1;
++ return old;
++}
++EXPORT_SYMBOL(frontswap_register_ops);
++
++/* Called when a swap device is swapon'd */
++void __frontswap_init(unsigned type)
++{
++ struct swap_info_struct *sis = swap_info[type];
++
++ BUG_ON(sis == NULL);
++ if (sis->frontswap_map == NULL)
++ return;
++ if (frontswap_enabled)
++ (*frontswap_ops.init)(type);
++}
++EXPORT_SYMBOL(__frontswap_init);
++
++/*
++ * "Put" data from a page to frontswap and associate it with the page's
++ * swaptype and offset. Page must be locked and in the swap cache.
++ * If frontswap already contains a page with matching swaptype and
++ * offset, the frontswap implmentation may either overwrite the data
++ * and return success or flush the page from frontswap and return failure
++ */
++int __frontswap_put_page(struct page *page)
++{
++ int ret = -1, dup = 0;
++ swp_entry_t entry = { .val = page_private(page), };
++ int type = swp_type(entry);
++ struct swap_info_struct *sis = swap_info[type];
++ pgoff_t offset = swp_offset(entry);
++
++ BUG_ON(!PageLocked(page));
++ BUG_ON(sis == NULL);
++ if (frontswap_test(sis, offset))
++ dup = 1;
++ ret = (*frontswap_ops.put_page)(type, offset, page);
++ if (ret == 0) {
++ frontswap_set(sis, offset);
++ frontswap_succ_puts++;
++ if (!dup)
++ atomic_inc(&sis->frontswap_pages);
++ } else if (dup) {
++ /*
++ failed dup always results in automatic flush of
++ the (older) page from frontswap
++ */
++ frontswap_clear(sis, offset);
++ atomic_dec(&sis->frontswap_pages);
++ frontswap_failed_puts++;
++ } else
++ frontswap_failed_puts++;
++ return ret;
++}
++EXPORT_SYMBOL(__frontswap_put_page);
++
++/*
++ * "Get" data from frontswap associated with swaptype and offset that were
++ * specified when the data was put to frontswap and use it to fill the
++ * specified page with data. Page must be locked and in the swap cache
++ */
++int __frontswap_get_page(struct page *page)
++{
++ int ret = -1;
++ swp_entry_t entry = { .val = page_private(page), };
++ int type = swp_type(entry);
++ struct swap_info_struct *sis = swap_info[type];
++ pgoff_t offset = swp_offset(entry);
++
++ BUG_ON(!PageLocked(page));
++ BUG_ON(sis == NULL);
++ if (frontswap_test(sis, offset))
++ ret = (*frontswap_ops.get_page)(type, offset, page);
++ if (ret == 0)
++ frontswap_gets++;
++ return ret;
++}
++EXPORT_SYMBOL(__frontswap_get_page);
++
++/*
++ * Flush any data from frontswap associated with the specified swaptype
++ * and offset so that a subsequent "get" will fail.
++ */
++void __frontswap_flush_page(unsigned type, pgoff_t offset)
++{
++ struct swap_info_struct *sis = swap_info[type];
++
++ BUG_ON(sis == NULL);
++ if (frontswap_test(sis, offset)) {
++ (*frontswap_ops.flush_page)(type, offset);
++ atomic_dec(&sis->frontswap_pages);
++ frontswap_clear(sis, offset);
++ frontswap_flushes++;
++ }
++}
++EXPORT_SYMBOL(__frontswap_flush_page);
++
++/*
++ * Flush all data from frontswap associated with all offsets for the
++ * specified swaptype.
++ */
++void __frontswap_flush_area(unsigned type)
++{
++ struct swap_info_struct *sis = swap_info[type];
++
++ BUG_ON(sis == NULL);
++ if (sis->frontswap_map == NULL)
++ return;
++ (*frontswap_ops.flush_area)(type);
++ atomic_set(&sis->frontswap_pages, 0);
++ memset(sis->frontswap_map, 0, sis->max / sizeof(long));
++}
++EXPORT_SYMBOL(__frontswap_flush_area);
++
++/*
++ * Frontswap, like a true swap device, may unnecessarily retain pages
++ * under certain circumstances; "shrink" frontswap is essentially a
++ * "partial swapoff" and works by calling try_to_unuse to attempt to
++ * unuse enough frontswap pages to attempt to -- subject to memory
++ * constraints -- reduce the number of pages in frontswap
++ */
++void frontswap_shrink(unsigned long target_pages)
++{
++ int wrapped = 0;
++ bool locked = false;
++
++ /* try a few times to maximize chance of try_to_unuse success */
++ for (wrapped = 0; wrapped < 3; wrapped++) {
++
++ struct swap_info_struct *si = NULL;
++ int si_frontswap_pages;
++ unsigned long total_pages = 0, total_pages_to_unuse;
++ unsigned long pages = 0, pages_to_unuse = 0;
++ int type;
++
++ /*
++ * we don't want to hold swap_lock while doing a very
++ * lengthy try_to_unuse, but swap_list may change
++ * so restart scan from swap_list.head each time
++ */
++ spin_lock(&swap_lock);
++ locked = true;
++ total_pages = 0;
++ for (type = swap_list.head; type >= 0; type = si->next) {
++ si = swap_info[type];
++ total_pages += atomic_read(&si->frontswap_pages);
++ }
++ if (total_pages <= target_pages)
++ goto out;
++ total_pages_to_unuse = total_pages - target_pages;
++ for (type = swap_list.head; type >= 0; type = si->next) {
++ si = swap_info[type];
++ si_frontswap_pages = atomic_read(&si->frontswap_pages);
++ if (total_pages_to_unuse < si_frontswap_pages)
++ pages = pages_to_unuse = total_pages_to_unuse;
++ else {
++ pages = si_frontswap_pages;
++ pages_to_unuse = 0; /* unuse all */
++ }
++ if (security_vm_enough_memory_kern(pages))
++ continue;
++ vm_unacct_memory(pages);
++ break;
++ }
++ if (type < 0)
++ goto out;
++ locked = false;
++ spin_unlock(&swap_lock);
++ try_to_unuse(type, true, pages_to_unuse);
++ }
++
++out:
++ if (locked)
++ spin_unlock(&swap_lock);
++ return;
++}
++EXPORT_SYMBOL(frontswap_shrink);
++
++/*
++ * Count and return the number of pages frontswap pages across all
++ * swap devices. This is exported so that a kernel module can
++ * determine current usage without reading sysfs.
++ */
++unsigned long frontswap_curr_pages(void)
++{
++ int type;
++ unsigned long totalpages = 0;
++ struct swap_info_struct *si = NULL;
++
++ spin_lock(&swap_lock);
++ for (type = swap_list.head; type >= 0; type = si->next) {
++ si = swap_info[type];
++ if (si != NULL)
++ totalpages += atomic_read(&si->frontswap_pages);
++ }
++ spin_unlock(&swap_lock);
++ return totalpages;
++}
++EXPORT_SYMBOL(frontswap_curr_pages);
++
++#ifdef CONFIG_SYSFS
++
++/* see Documentation/ABI/xxx/sysfs-kernel-mm-frontswap */
++
++#define FRONTSWAP_ATTR_RO(_name) \
++ static struct kobj_attribute _name##_attr = __ATTR_RO(_name)
++#define FRONTSWAP_ATTR(_name) \
++ static struct kobj_attribute _name##_attr = \
++ __ATTR(_name, 0644, _name##_show, _name##_store)
++
++static ssize_t curr_pages_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ return sprintf(buf, "%lu\n", frontswap_curr_pages());
++}
++
++static ssize_t curr_pages_store(struct kobject *kobj,
++ struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ unsigned long target_pages;
++
++ if (strict_strtoul(buf, 10, &target_pages))
++ return -EINVAL;
++
++ frontswap_shrink(target_pages);
++
++ return count;
++}
++FRONTSWAP_ATTR(curr_pages);
++
++static ssize_t succ_puts_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ return sprintf(buf, "%lu\n", frontswap_succ_puts);
++}
++FRONTSWAP_ATTR_RO(succ_puts);
++
++static ssize_t failed_puts_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ return sprintf(buf, "%lu\n", frontswap_failed_puts);
++}
++FRONTSWAP_ATTR_RO(failed_puts);
++
++static ssize_t gets_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ return sprintf(buf, "%lu\n", frontswap_gets);
++}
++FRONTSWAP_ATTR_RO(gets);
++
++static ssize_t flushes_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ return sprintf(buf, "%lu\n", frontswap_flushes);
++}
++FRONTSWAP_ATTR_RO(flushes);
++
++static struct attribute *frontswap_attrs[] = {
++ &curr_pages_attr.attr,
++ &succ_puts_attr.attr,
++ &failed_puts_attr.attr,
++ &gets_attr.attr,
++ &flushes_attr.attr,
++ NULL,
++};
++
++static struct attribute_group frontswap_attr_group = {
++ .attrs = frontswap_attrs,
++ .name = "frontswap",
++};
++
++#endif /* CONFIG_SYSFS */
++
++static int __init init_frontswap(void)
++{
++ int err = 0;
++
++#ifdef CONFIG_SYSFS
++ err = sysfs_create_group(mm_kobj, &frontswap_attr_group);
++#endif /* CONFIG_SYSFS */
++ return err;
++}
++
++static void __exit exit_frontswap(void)
++{
++ frontswap_shrink(0UL);
++}
++
++module_init(init_frontswap);
++module_exit(exit_frontswap);
diff --git a/patches.xen/frontswap-hooks b/patches.xen/frontswap-hooks
new file mode 100644
index 0000000000..99ab3d1fa8
--- /dev/null
+++ b/patches.xen/frontswap-hooks
@@ -0,0 +1,295 @@
+From: Dan Magenheimer <dan.magenheimer@oracle.com>
+Subject: [PATCH V8 3/4] mm: frontswap: add swap hooks and extend try_to_unuse
+Patch-mainline: slated for 3.2
+
+This third patch of four in the frontswap series adds hooks in the swap
+subsystem and extends try_to_unuse so that frontswap_shrink can do a
+"partial swapoff". Also, declarations for the extern-ified swap variables
+in the first patch are declared.
+
+Note that failed frontswap_map allocation is safe... failure is noted
+by lack of "FS" in the subsequent printk.
+
+[v8: rebase to 3.0-rc4]
+[v8: kamezawa.hiroyu@jp.fujitsu.com: add comment to clarify find_next_to_unuse]
+[v7: rebase to 3.0-rc3]
+[v7: JBeulich@novell.com: use new static inlines, no-ops if not config'd]
+[v6: rebase to 3.1-rc1]
+[v6: lliubbo@gmail.com: use vzalloc]
+[v6: lliubbo@gmail.com: fix null pointer deref if vzalloc fails]
+[v5: accidentally posted stale code for v4 that failed to compile :-(]
+[v4: rebase to 2.6.39]
+Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
+Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
+Acked-by: Jan Beulich <JBeulich@novell.com>
+Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
+Cc: Jeremy Fitzhardinge <jeremy@goop.org>
+Cc: Hugh Dickins <hughd@google.com>
+Cc: Johannes Weiner <hannes@cmpxchg.org>
+Cc: Nitin Gupta <ngupta@vflare.org>
+Cc: Matthew Wilcox <matthew@wil.cx>
+Cc: Chris Mason <chris.mason@oracle.com>
+Cc: Rik Riel <riel@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+
+--- head-2011-09-07.orig/mm/swapfile.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/mm/swapfile.c 2011-08-29 17:57:06.000000000 +0200
+@@ -32,6 +32,8 @@
+ #include <linux/memcontrol.h>
+ #include <linux/poll.h>
+ #include <linux/oom.h>
++#include <linux/frontswap.h>
++#include <linux/swapfile.h>
+
+ #include <asm/pgtable.h>
+ #include <asm/tlbflush.h>
+@@ -43,7 +45,7 @@ static bool swap_count_continued(struct
+ static void free_swap_count_continuations(struct swap_info_struct *);
+ static sector_t map_swap_entry(swp_entry_t, struct block_device**);
+
+-static DEFINE_SPINLOCK(swap_lock);
++DEFINE_SPINLOCK(swap_lock);
+ static unsigned int nr_swapfiles;
+ long nr_swap_pages;
+ long total_swap_pages;
+@@ -54,9 +56,9 @@ static const char Unused_file[] = "Unuse
+ static const char Bad_offset[] = "Bad swap offset entry ";
+ static const char Unused_offset[] = "Unused swap offset entry ";
+
+-static struct swap_list_t swap_list = {-1, -1};
++struct swap_list_t swap_list = {-1, -1};
+
+-static struct swap_info_struct *swap_info[MAX_SWAPFILES];
++struct swap_info_struct *swap_info[MAX_SWAPFILES];
+
+ static DEFINE_MUTEX(swapon_mutex);
+
+@@ -557,6 +559,7 @@ static unsigned char swap_entry_free(str
+ swap_list.next = p->type;
+ nr_swap_pages++;
+ p->inuse_pages--;
++ frontswap_flush_page(p->type, offset);
+ if ((p->flags & SWP_BLKDEV) &&
+ disk->fops->swap_slot_free_notify)
+ disk->fops->swap_slot_free_notify(p->bdev, offset);
+@@ -1018,11 +1021,12 @@ static int unuse_mm(struct mm_struct *mm
+ }
+
+ /*
+- * Scan swap_map from current position to next entry still in use.
++ * Scan swap_map (or frontswap_map if frontswap parameter is true)
++ * from current position to next entry still in use.
+ * Recycle to start on reaching the end, returning 0 when empty.
+ */
+ static unsigned int find_next_to_unuse(struct swap_info_struct *si,
+- unsigned int prev)
++ unsigned int prev, bool frontswap)
+ {
+ unsigned int max = si->max;
+ unsigned int i = prev;
+@@ -1048,6 +1052,12 @@ static unsigned int find_next_to_unuse(s
+ prev = 0;
+ i = 1;
+ }
++ if (frontswap) {
++ if (frontswap_test(si, i))
++ break;
++ else
++ continue;
++ }
+ count = si->swap_map[i];
+ if (count && swap_count(count) != SWAP_MAP_BAD)
+ break;
+@@ -1059,8 +1069,12 @@ static unsigned int find_next_to_unuse(s
+ * We completely avoid races by reading each swap page in advance,
+ * and then search for the process using it. All the necessary
+ * page table adjustments can then be made atomically.
++ *
++ * if the boolean frontswap is true, only unuse pages_to_unuse pages;
++ * pages_to_unuse==0 means all pages; ignored if frontswap is false
+ */
+-static int try_to_unuse(unsigned int type)
++int try_to_unuse(unsigned int type, bool frontswap,
++ unsigned long pages_to_unuse)
+ {
+ struct swap_info_struct *si = swap_info[type];
+ struct mm_struct *start_mm;
+@@ -1093,7 +1107,7 @@ static int try_to_unuse(unsigned int typ
+ * one pass through swap_map is enough, but not necessarily:
+ * there are races when an instance of an entry might be missed.
+ */
+- while ((i = find_next_to_unuse(si, i)) != 0) {
++ while ((i = find_next_to_unuse(si, i, frontswap)) != 0) {
+ if (signal_pending(current)) {
+ retval = -EINTR;
+ break;
+@@ -1260,6 +1274,10 @@ static int try_to_unuse(unsigned int typ
+ * interactive performance.
+ */
+ cond_resched();
++ if (frontswap && pages_to_unuse > 0) {
++ if (!--pages_to_unuse)
++ break;
++ }
+ }
+
+ mmput(start_mm);
+@@ -1519,7 +1537,8 @@ bad_bmap:
+ }
+
+ static void enable_swap_info(struct swap_info_struct *p, int prio,
+- unsigned char *swap_map)
++ unsigned char *swap_map,
++ unsigned long *frontswap_map)
+ {
+ int i, prev;
+
+@@ -1529,6 +1548,7 @@ static void enable_swap_info(struct swap
+ else
+ p->prio = --least_priority;
+ p->swap_map = swap_map;
++ frontswap_map_set(p, frontswap_map);
+ p->flags |= SWP_WRITEOK;
+ nr_swap_pages += p->pages;
+ total_swap_pages += p->pages;
+@@ -1545,6 +1565,7 @@ static void enable_swap_info(struct swap
+ swap_list.head = swap_list.next = p->type;
+ else
+ swap_info[prev]->next = p->type;
++ frontswap_init(p->type);
+ spin_unlock(&swap_lock);
+ }
+
+@@ -1616,7 +1637,7 @@ SYSCALL_DEFINE1(swapoff, const char __us
+ spin_unlock(&swap_lock);
+
+ oom_score_adj = test_set_oom_score_adj(OOM_SCORE_ADJ_MAX);
+- err = try_to_unuse(type);
++ err = try_to_unuse(type, false, 0); /* force all pages to be unused */
+ test_set_oom_score_adj(oom_score_adj);
+
+ if (err) {
+@@ -1627,7 +1648,7 @@ SYSCALL_DEFINE1(swapoff, const char __us
+ * sys_swapoff for this swap_info_struct at this point.
+ */
+ /* re-insert swap space back into swap_list */
+- enable_swap_info(p, p->prio, p->swap_map);
++ enable_swap_info(p, p->prio, p->swap_map, frontswap_map_get(p));
+ goto out_dput;
+ }
+
+@@ -1653,9 +1674,11 @@ SYSCALL_DEFINE1(swapoff, const char __us
+ swap_map = p->swap_map;
+ p->swap_map = NULL;
+ p->flags = 0;
++ frontswap_flush_area(type);
+ spin_unlock(&swap_lock);
+ mutex_unlock(&swapon_mutex);
+ vfree(swap_map);
++ vfree(frontswap_map_get(p));
+ /* Destroy swap account informatin */
+ swap_cgroup_swapoff(type);
+
+@@ -2019,6 +2042,7 @@ SYSCALL_DEFINE2(swapon, const char __use
+ sector_t span;
+ unsigned long maxpages;
+ unsigned char *swap_map = NULL;
++ unsigned long *frontswap_map = NULL;
+ struct page *page = NULL;
+ struct inode *inode = NULL;
+
+@@ -2099,6 +2123,9 @@ SYSCALL_DEFINE2(swapon, const char __use
+ error = nr_extents;
+ goto bad_swap;
+ }
++ /* frontswap enabled? set up bit-per-page map for frontswap */
++ if (frontswap_enabled)
++ frontswap_map = vzalloc(maxpages / sizeof(long));
+
+ if (p->bdev) {
+ if (blk_queue_nonrot(bdev_get_queue(p->bdev))) {
+@@ -2114,14 +2141,15 @@ SYSCALL_DEFINE2(swapon, const char __use
+ if (swap_flags & SWAP_FLAG_PREFER)
+ prio =
+ (swap_flags & SWAP_FLAG_PRIO_MASK) >> SWAP_FLAG_PRIO_SHIFT;
+- enable_swap_info(p, prio, swap_map);
++ enable_swap_info(p, prio, swap_map, frontswap_map);
+
+ printk(KERN_INFO "Adding %uk swap on %s. "
+- "Priority:%d extents:%d across:%lluk %s%s\n",
++ "Priority:%d extents:%d across:%lluk %s%s%s\n",
+ p->pages<<(PAGE_SHIFT-10), name, p->prio,
+ nr_extents, (unsigned long long)span<<(PAGE_SHIFT-10),
+ (p->flags & SWP_SOLIDSTATE) ? "SS" : "",
+- (p->flags & SWP_DISCARDABLE) ? "D" : "");
++ (p->flags & SWP_DISCARDABLE) ? "D" : "",
++ (frontswap_map) ? "FS" : "");
+
+ mutex_unlock(&swapon_mutex);
+ atomic_inc(&proc_poll_event);
+@@ -2312,6 +2340,10 @@ int valid_swaphandles(swp_entry_t entry,
+ base++;
+
+ spin_lock(&swap_lock);
++ if (frontswap_test(si, target)) {
++ spin_unlock(&swap_lock);
++ return 0;
++ }
+ if (end > si->max) /* don't go beyond end of map */
+ end = si->max;
+
+@@ -2322,6 +2354,9 @@ int valid_swaphandles(swp_entry_t entry,
+ break;
+ if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD)
+ break;
++ /* Don't read in frontswap pages */
++ if (frontswap_test(si, toff))
++ break;
+ }
+ /* Count contiguous allocated slots below our target */
+ for (toff = target; --toff >= base; nr_pages++) {
+@@ -2330,6 +2365,9 @@ int valid_swaphandles(swp_entry_t entry,
+ break;
+ if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD)
+ break;
++ /* Don't read in frontswap pages */
++ if (frontswap_test(si, toff))
++ break;
+ }
+ spin_unlock(&swap_lock);
+
+--- head-2011-09-07.orig/mm/page_io.c 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/mm/page_io.c 2011-08-29 17:52:14.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/bio.h>
+ #include <linux/swapops.h>
+ #include <linux/writeback.h>
++#include <linux/frontswap.h>
+ #include <asm/pgtable.h>
+
+ static struct bio *get_swap_bio(gfp_t gfp_flags,
+@@ -98,6 +99,12 @@ int swap_writepage(struct page *page, st
+ unlock_page(page);
+ goto out;
+ }
++ if (frontswap_put_page(page) == 0) {
++ set_page_writeback(page);
++ unlock_page(page);
++ end_page_writeback(page);
++ goto out;
++ }
+ bio = get_swap_bio(GFP_NOIO, page, end_swap_bio_write);
+ if (bio == NULL) {
+ set_page_dirty(page);
+@@ -122,6 +129,11 @@ int swap_readpage(struct page *page)
+
+ VM_BUG_ON(!PageLocked(page));
+ VM_BUG_ON(PageUptodate(page));
++ if (frontswap_get_page(page) == 0) {
++ SetPageUptodate(page);
++ unlock_page(page);
++ goto out;
++ }
+ bio = get_swap_bio(GFP_KERNEL, page, end_swap_bio_read);
+ if (bio == NULL) {
+ unlock_page(page);
diff --git a/patches.xen/frontswap-structure-changes b/patches.xen/frontswap-structure-changes
new file mode 100644
index 0000000000..87d3d33b24
--- /dev/null
+++ b/patches.xen/frontswap-structure-changes
@@ -0,0 +1,66 @@
+From: Dan Magenheimer <dan.magenheimer@oracle.com>
+Subject: [PATCH V8 1/4] mm: frontswap: swap data structure changes
+Patch-mainline: slated for 3.2
+
+This first patch of four in the frontswap series makes available core
+swap data structures (swap_lock, swap_list and swap_info) that are
+needed by frontswap.c but we don't need to expose them to the dozens
+of files that include swap.h so we create a new swapfile.h just to
+extern-ify these.
+
+Also add frontswap-related elements to swap_info_struct. Frontswap_map
+points to vzalloc'ed one-bit-per-swap-page metadata that indicates
+whether the swap page is in frontswap or in the device and frontswap_pages
+counts how many pages are in frontswap.
+
+[v8: rebase to 3.0-rc4]
+[v8: kamezawa.hiroyu@jp.fujitsu.com: frontswap_pages should be atomic_t]
+[v8: kamezawa.hiroyu@jp.fujitsu.com: comment to clarify informational counters]
+[v7: rebase to 3.0-rc3]
+[v7: JBeulich@novell.com: add new swap struct elements only if config'd]
+[v6: rebase to 3.0-rc1]
+[v5: no change from v4]
+[v4: rebase to 2.6.39]
+Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
+Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
+Reviewed-by: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
+Acked-by: Jan Beulich <JBeulich@novell.com>
+Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
+Cc: Jeremy Fitzhardinge <jeremy@goop.org>
+Cc: Hugh Dickins <hughd@google.com>
+Cc: Johannes Weiner <hannes@cmpxchg.org>
+Cc: Nitin Gupta <ngupta@vflare.org>
+Cc: Matthew Wilcox <matthew@wil.cx>
+Cc: Chris Mason <chris.mason@oracle.com>
+Cc: Rik Riel <riel@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sle11sp2-2011-09-06/include/linux/swapfile.h 2011-08-29 17:52:14.000000000 +0200
+@@ -0,0 +1,13 @@
++#ifndef _LINUX_SWAPFILE_H
++#define _LINUX_SWAPFILE_H
++
++/*
++ * these were static in swapfile.c but frontswap.c needs them and we don't
++ * want to expose them to the dozens of source files that include swap.h
++ */
++extern spinlock_t swap_lock;
++extern struct swap_list_t swap_list;
++extern struct swap_info_struct *swap_info[];
++extern int try_to_unuse(unsigned int, bool, unsigned long);
++
++#endif /* _LINUX_SWAPFILE_H */
+--- sle11sp2-2011-09-06.orig/include/linux/swap.h 2011-09-06 08:34:28.000000000 +0200
++++ sle11sp2-2011-09-06/include/linux/swap.h 2011-08-29 18:02:53.000000000 +0200
+@@ -194,6 +194,10 @@ struct swap_info_struct {
+ struct block_device *bdev; /* swap device or bdev of swap file */
+ struct file *swap_file; /* seldom referenced */
+ unsigned int old_block_size; /* seldom referenced */
++#ifdef CONFIG_FRONTSWAP
++ unsigned long *frontswap_map; /* frontswap in-use, one bit per page */
++ atomic_t frontswap_pages; /* frontswap pages in-use counter */
++#endif
+ };
+
+ struct swap_list_t {
diff --git a/patches.xen/ipv6-no-autoconf b/patches.xen/ipv6-no-autoconf
index 02887ede91..e7ec9db726 100644
--- a/patches.xen/ipv6-no-autoconf
+++ b/patches.xen/ipv6-no-autoconf
@@ -15,9 +15,9 @@ This patch makes autoconf (DAD and router discovery) depend on the
interface's ability to do multicast. Turning off multicast for an
interface before bringing it up will suppress autoconfiguration.
---- head-2011-06-30.orig/net/ipv6/addrconf.c 2011-06-30 15:04:41.000000000 +0200
-+++ head-2011-06-30/net/ipv6/addrconf.c 2011-06-30 15:21:30.000000000 +0200
-@@ -2835,6 +2835,7 @@ static void addrconf_dad_start(struct in
+--- head-2011-09-07.orig/net/ipv6/addrconf.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/net/ipv6/addrconf.c 2011-06-30 15:21:30.000000000 +0200
+@@ -2874,6 +2874,7 @@ static void addrconf_dad_start(struct in
goto out;
if (dev->flags&(IFF_NOARP|IFF_LOOPBACK) ||
@@ -25,7 +25,7 @@ interface before bringing it up will suppress autoconfiguration.
idev->cnf.accept_dad < 1 ||
!(ifp->flags&IFA_F_TENTATIVE) ||
ifp->flags & IFA_F_NODAD) {
-@@ -2938,6 +2939,7 @@ static void addrconf_dad_completed(struc
+@@ -2977,6 +2978,7 @@ static void addrconf_dad_completed(struc
ifp->idev->cnf.forwarding == 2) &&
ifp->idev->cnf.rtr_solicits > 0 &&
(dev->flags&IFF_LOOPBACK) == 0 &&
diff --git a/patches.xen/kexec-move-segment-code-i386.patch b/patches.xen/kexec-move-segment-code-i386.patch
index 79914819ae..ca0f6a6f12 100644
--- a/patches.xen/kexec-move-segment-code-i386.patch
+++ b/patches.xen/kexec-move-segment-code-i386.patch
@@ -17,8 +17,8 @@ Acked-by: jbeulich@novell.com
Applies to 2.6.19-rc1.
jb: fixed up register usage (paralleling what's needed for 2.6.30 on x86-64)
---- head-2010-01-19.orig/arch/x86/kernel/machine_kexec_32.c 2010-01-19 13:26:10.000000000 +0100
-+++ head-2010-01-19/arch/x86/kernel/machine_kexec_32.c 2010-01-19 14:51:07.000000000 +0100
+--- head-2011-08-09.orig/arch/x86/kernel/machine_kexec_32.c 2011-08-09 10:21:04.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/machine_kexec_32.c 2010-01-19 14:51:07.000000000 +0100
@@ -27,48 +27,6 @@
#include <asm/cacheflush.h>
#include <asm/debugreg.h>
@@ -93,8 +93,8 @@ Acked-by: jbeulich@novell.com
/* now call it */
image->start = relocate_kernel_ptr((unsigned long)image->head,
(unsigned long)page_list,
---- head-2010-01-19.orig/arch/x86/kernel/relocate_kernel_32.S 2009-06-10 05:05:27.000000000 +0200
-+++ head-2010-01-19/arch/x86/kernel/relocate_kernel_32.S 2010-01-19 14:51:07.000000000 +0100
+--- head-2011-08-09.orig/arch/x86/kernel/relocate_kernel_32.S 2011-08-09 10:19:07.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/relocate_kernel_32.S 2011-08-09 10:21:17.000000000 +0200
@@ -87,14 +87,32 @@ relocate_kernel:
movl PTR(PA_PGD)(%ebp), %eax
movl %eax, %cr3
@@ -129,8 +129,8 @@ Acked-by: jbeulich@novell.com
+ iretl
identity_mapped:
- /* store the start address on the stack */
-@@ -271,5 +289,22 @@ swap_pages:
+ /* set return address to 0 if not preserving context */
+@@ -273,5 +291,22 @@ swap_pages:
popl %ebp
ret
diff --git a/patches.xen/kexec-move-segment-code-x86_64.patch b/patches.xen/kexec-move-segment-code-x86_64.patch
index bbd3780e3d..0402ce9088 100644
--- a/patches.xen/kexec-move-segment-code-x86_64.patch
+++ b/patches.xen/kexec-move-segment-code-x86_64.patch
@@ -17,8 +17,8 @@ Acked-by: jbeulich@novell.com
Applies to 2.6.19-rc1.
jb: fixed up register usage for 2.6.30 (bnc#545206)
---- head-2010-04-15.orig/arch/x86/kernel/machine_kexec_64.c 2010-04-15 09:37:47.000000000 +0200
-+++ head-2010-04-15/arch/x86/kernel/machine_kexec_64.c 2010-04-15 09:38:56.000000000 +0200
+--- head-2011-08-09.orig/arch/x86/kernel/machine_kexec_64.c 2011-08-09 10:21:04.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/machine_kexec_64.c 2010-04-15 09:38:56.000000000 +0200
@@ -203,47 +203,6 @@ static int init_pgtable(struct kimage *i
return init_transition_pgtable(image, level4p);
}
@@ -92,8 +92,8 @@ Acked-by: jbeulich@novell.com
/* now call it */
image->start = relocate_kernel((unsigned long)image->head,
(unsigned long)page_list,
---- head-2010-04-15.orig/arch/x86/kernel/relocate_kernel_64.S 2010-04-15 09:37:47.000000000 +0200
-+++ head-2010-04-15/arch/x86/kernel/relocate_kernel_64.S 2010-01-19 14:51:10.000000000 +0100
+--- head-2011-08-09.orig/arch/x86/kernel/relocate_kernel_64.S 2011-08-09 10:19:07.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/relocate_kernel_64.S 2011-08-09 10:21:24.000000000 +0200
@@ -91,13 +91,30 @@ relocate_kernel:
/* Switch to the identity mapped page tables */
movq %r9, %cr3
@@ -126,8 +126,8 @@ Acked-by: jbeulich@novell.com
+ lretq
identity_mapped:
- /* store the start address on the stack */
-@@ -262,5 +279,20 @@ swap_pages:
+ /* set return address to 0 if not preserving context */
+@@ -264,5 +281,20 @@ swap_pages:
3:
ret
diff --git a/patches.xen/pci-guestdev b/patches.xen/pci-guestdev
index cd9a573c20..6a70ce62a4 100644
--- a/patches.xen/pci-guestdev
+++ b/patches.xen/pci-guestdev
@@ -8,9 +8,9 @@ jb: Added support for guestiomuldev=all.
jb: split /dev/xen/pci_iomul driver to be separate (so it can be a module)
Acked-by: jbeulich@novell.com
---- head-2011-07-21.orig/Documentation/kernel-parameters.txt 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/Documentation/kernel-parameters.txt 2011-07-21 12:02:12.000000000 +0200
-@@ -819,6 +819,24 @@ bytes respectively. Such letter suffixes
+--- head-2011-09-07.orig/Documentation/kernel-parameters.txt 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/Documentation/kernel-parameters.txt 2011-07-21 12:02:12.000000000 +0200
+@@ -831,6 +831,24 @@ bytes respectively. Such letter suffixes
gpt [EFI] Forces disk with valid GPT signature but
invalid Protective MBR to be treated as GPT.
@@ -34,8 +34,8 @@ Acked-by: jbeulich@novell.com
+
hashdist= [KNL,NUMA] Large hashes allocated during boot
are distributed across NUMA nodes. Defaults on
- for 64bit NUMA, off otherwise.
-@@ -2188,6 +2206,10 @@ bytes respectively. Such letter suffixes
+ for 64-bit NUMA, off otherwise.
+@@ -2207,6 +2225,10 @@ bytes respectively. Such letter suffixes
Run specified binary instead of /init from the ramdisk,
used for early userspace startup. See initrd.
@@ -46,8 +46,8 @@ Acked-by: jbeulich@novell.com
reboot= [BUGS=X86-32,BUGS=ARM,BUGS=IA-64] Rebooting mode
Format: <reboot_mode>[,<reboot_mode2>[,...]]
See arch/*/kernel/reboot.c or arch/*/kernel/process.c
---- head-2011-07-21.orig/drivers/acpi/pci_root.c 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/pci_root.c 2011-06-30 15:22:30.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/pci_root.c 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/acpi/pci_root.c 2011-06-30 15:22:30.000000000 +0200
@@ -449,6 +449,41 @@ out:
}
EXPORT_SYMBOL(acpi_pci_osc_control_set);
@@ -90,7 +90,7 @@ Acked-by: jbeulich@novell.com
static int __devinit acpi_pci_root_add(struct acpi_device *device)
{
unsigned long long segment, bus;
-@@ -610,6 +645,13 @@ static int __devinit acpi_pci_root_add(s
+@@ -611,6 +646,13 @@ static int __devinit acpi_pci_root_add(s
"(_OSC support mask: 0x%02x)\n", flags);
}
@@ -104,7 +104,7 @@ Acked-by: jbeulich@novell.com
pci_acpi_add_bus_pm_notifier(device, root->bus);
if (device->wakeup.flags.run_wake)
device_set_run_wake(root->bus->bridge, true);
-@@ -657,3 +699,31 @@ static int __init acpi_pci_root_init(voi
+@@ -658,3 +700,31 @@ static int __init acpi_pci_root_init(voi
}
subsys_initcall(acpi_pci_root_init);
@@ -136,8 +136,8 @@ Acked-by: jbeulich@novell.com
+ return FALSE;
+}
+#endif
---- head-2011-07-21.orig/drivers/acpi/scan.c 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/scan.c 2011-05-09 11:37:03.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/scan.c 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/acpi/scan.c 2011-05-09 11:37:03.000000000 +0200
@@ -175,6 +175,16 @@ acpi_device_hid_show(struct device *dev,
}
static DEVICE_ATTR(hid, 0444, acpi_device_hid_show, NULL);
@@ -191,8 +191,8 @@ Acked-by: jbeulich@novell.com
if (info->valid & ACPI_VALID_ADR) {
device->pnp.bus_address = info->address;
device->flags.bus_address = 1;
---- head-2011-07-21.orig/drivers/pci/Kconfig 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/pci/Kconfig 2011-01-31 14:31:27.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Kconfig 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/pci/Kconfig 2011-01-31 14:31:27.000000000 +0100
@@ -31,6 +31,20 @@ config PCI_DEBUG
When in doubt, say N.
@@ -214,8 +214,8 @@ Acked-by: jbeulich@novell.com
config PCI_STUB
tristate "PCI Stub driver"
depends on PCI
---- head-2011-07-21.orig/drivers/pci/Makefile 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/pci/Makefile 2011-01-31 14:31:28.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Makefile 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/pci/Makefile 2011-01-31 14:31:28.000000000 +0100
@@ -7,6 +7,10 @@ obj-y += access.o bus.o probe.o remove.
irq.o vpd.o
obj-$(CONFIG_PROC_FS) += proc.o
@@ -228,7 +228,7 @@ Acked-by: jbeulich@novell.com
obj-$(CONFIG_PCI_QUIRKS) += quirks.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/pci/guestdev.c 2011-01-31 14:31:28.000000000 +0100
++++ head-2011-09-07/drivers/pci/guestdev.c 2011-01-31 14:31:28.000000000 +0100
@@ -0,0 +1,881 @@
+/*
+ * Copyright (c) 2008, 2009 NEC Corporation.
@@ -1112,8 +1112,8 @@ Acked-by: jbeulich@novell.com
+fs_initcall(pci_check_guestdev_exists);
+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/pci/iomulti.c 2011-01-31 14:31:28.000000000 +0100
-@@ -0,0 +1,897 @@
++++ head-2011-09-07/drivers/pci/iomulti.c 2011-09-09 15:02:07.000000000 +0200
+@@ -0,0 +1,904 @@
+/*
+ * 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
@@ -1139,20 +1139,27 @@ Acked-by: jbeulich@novell.com
+#include <linux/sort.h>
+#include <asm/setup.h>
+
++#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
++#define __pcihp_init __devinit
++#else
++#define __pcihp_init __init
++#endif
++
+#define PCI_BUS_MAX 255
+#define PCI_DEV_MAX 31
+
+/* see pci_resource_len */
-+static inline resource_size_t pci_iomul_len(const struct resource* r)
++static inline resource_size_t __pcihp_init pci_iomul_len(
++ const struct resource* r)
+{
-+ if (r->start == 0 && r->start == r->end)
++ if (!r->start && r->start == r->end)
+ return 0;
+ return r->end - r->start + 1;
+}
+
+#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
+/* stolen from pbus_size_io() */
-+static unsigned long pdev_size_io(struct pci_dev *pdev)
++static unsigned long __devinit pdev_size_io(struct pci_dev *pdev)
+{
+ unsigned long size = 0, size1 = 0;
+ int i;
@@ -1203,7 +1210,7 @@ Acked-by: jbeulich@novell.com
+/*****************************************************************************/
+int pci_iomul_switch_io_allocated(const struct pci_iomul_switch *sw)
+{
-+ return !(sw->io_base == 0 || sw->io_base > sw->io_limit);
++ return sw->io_base && sw->io_base <= sw->io_limit;
+}
+EXPORT_SYMBOL_GPL(pci_iomul_switch_io_allocated);
+
@@ -1244,7 +1251,7 @@ Acked-by: jbeulich@novell.com
+
+ *swp = pci_iomul_find_switch_locked(pci_domain_nr(pdev->bus),
+ pci_dev_switch_busnr(pdev));
-+ if (*swp == NULL) {
++ if (!*swp) {
+ *slot = NULL;
+ goto out;
+ }
@@ -1252,7 +1259,7 @@ Acked-by: jbeulich@novell.com
+ mutex_lock(&(*swp)->lock);
+ *slot = pci_iomul_find_slot_locked(*swp, pdev->bus->number,
+ PCI_SLOT(pdev->devfn));
-+ if (*slot == NULL) {
++ if (!*slot) {
+ mutex_unlock(&(*swp)->lock);
+ *swp = NULL;
+ } else {
@@ -1263,8 +1270,8 @@ Acked-by: jbeulich@novell.com
+}
+EXPORT_SYMBOL_GPL(pci_iomul_get_lock_switch);
+
-+static struct pci_iomul_switch *pci_iomul_switch_alloc(int segment,
-+ uint8_t bus)
++static struct pci_iomul_switch *__devinit pci_iomul_switch_alloc(int segment,
++ uint8_t bus)
+{
+ struct pci_iomul_switch *sw;
+
@@ -1287,14 +1294,14 @@ Acked-by: jbeulich@novell.com
+ return sw;
+}
+
-+static void pci_iomul_switch_add_locked(struct pci_iomul_switch *sw)
++static void __devinit pci_iomul_switch_add_locked(struct pci_iomul_switch *sw)
+{
+ BUG_ON(!mutex_is_locked(&switch_list_lock));
+ list_add(&sw->list, &switch_list);
+}
+
+#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
-+static void pci_iomul_switch_del_locked(struct pci_iomul_switch *sw)
++static void __devinit pci_iomul_switch_del_locked(struct pci_iomul_switch *sw)
+{
+ BUG_ON(!mutex_is_locked(&switch_list_lock));
+ list_del(&sw->list);
@@ -1342,32 +1349,32 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+
-+static struct pci_iomul_slot *__devinit
-+pci_iomul_slot_alloc(struct pci_dev *pdev)
++static struct pci_iomul_slot *__devinit pci_iomul_slot_alloc(
++ struct pci_dev *pdev)
+{
+ struct pci_iomul_slot *slot;
+
+ slot = kzalloc(sizeof(*slot), GFP_KERNEL);
-+ if (slot == NULL)
++ if (!slot)
+ return NULL;
+
-+ if (pci_iomul_slot_init(pdev, slot) != 0) {
++ if (pci_iomul_slot_init(pdev, slot)) {
+ kfree(slot);
+ return NULL;
+ }
+ return slot;
+}
+
-+static void pci_iomul_slot_add_locked(struct pci_iomul_switch *sw,
-+ struct pci_iomul_slot *slot)
++static void __devinit pci_iomul_slot_add_locked(struct pci_iomul_switch *sw,
++ struct pci_iomul_slot *slot)
+{
+ BUG_ON(!mutex_is_locked(&sw->lock));
+ list_add(&slot->sibling, &sw->slots);
+}
+
+#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
-+static void pci_iomul_slot_del_locked(struct pci_iomul_switch *sw,
-+ struct pci_iomul_slot *slot)
++static void __devinit pci_iomul_slot_del_locked(struct pci_iomul_switch *sw,
++ struct pci_iomul_slot *slot)
+{
+ BUG_ON(!mutex_is_locked(&sw->lock));
+ list_del(&slot->sibling);
@@ -1375,8 +1382,8 @@ Acked-by: jbeulich@novell.com
+#endif
+
+/*****************************************************************************/
-+static int pci_get_sbd(const char *str,
-+ int *segment__, uint8_t *bus__, uint8_t *dev__)
++static int __devinit pci_get_sbd(const char *str, int *segment__,
++ uint8_t *bus__, uint8_t *dev__)
+{
+ int segment;
+ int bus;
@@ -1402,9 +1409,9 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+
-+static char iomul_param[COMMAND_LINE_SIZE];
++static char __devinitdata iomul_param[COMMAND_LINE_SIZE];
+#define TOKEN_MAX 10 /* SSSS:BB:DD length is 10 */
-+static int pci_is_iomul_dev_param(struct pci_dev *pdev)
++static int __devinit pci_is_iomul_dev_param(struct pci_dev *pdev)
+{
+ int len;
+ char *p;
@@ -1414,7 +1421,7 @@ Acked-by: jbeulich@novell.com
+ return 1;
+ for (p = &iomul_param[0]; *p != '\0'; p = next_str + 1) {
+ next_str = strchr(p, ',');
-+ if (next_str != NULL)
++ if (next_str)
+ len = next_str - p;
+ else
+ len = strlen(p);
@@ -1426,13 +1433,13 @@ Acked-by: jbeulich@novell.com
+ uint8_t dev;
+
+ strlcpy(tmp, p, len);
-+ if (pci_get_sbd(tmp, &seg, &bus, &dev) == 0 &&
++ if (!pci_get_sbd(tmp, &seg, &bus, &dev) &&
+ pci_domain_nr(pdev->bus) == seg &&
+ pdev->bus->number == bus &&
+ PCI_SLOT(pdev->devfn) == dev)
+ return 1;
+ }
-+ if (next_str == NULL)
++ if (!next_str)
+ break;
+ }
+
@@ -1445,7 +1452,7 @@ Acked-by: jbeulich@novell.com
+ */
+static int __init pci_iomul_param_setup(char *str)
+{
-+ if (strlen(str) >= COMMAND_LINE_SIZE)
++ if (!is_initial_xendomain() || strlen(str) >= COMMAND_LINE_SIZE)
+ return 0;
+
+ /* parse it after pci bus scanning */
@@ -1492,7 +1499,7 @@ Acked-by: jbeulich@novell.com
+ unsigned int i;
+
+ f = kzalloc(sizeof(*f), GFP_KERNEL);
-+ if (f == NULL)
++ if (!f)
+ return -ENOMEM;
+
+ f->segment = slot->segment;
@@ -1503,7 +1510,7 @@ Acked-by: jbeulich@novell.com
+ for (i = 0; i < PCI_NUM_BARS; i++) {
+ if (!(pci_resource_flags(pdev, i) & IORESOURCE_IO))
+ continue;
-+ if (pci_resource_len(pdev, i) == 0)
++ if (!pci_resource_len(pdev, i))
+ continue;
+
+ f->io_bar |= 1 << i;
@@ -1530,13 +1537,13 @@ Acked-by: jbeulich@novell.com
+ * we must prevent those resources from reassigning when pci hot plug.
+ * To achieve that, set r->parent to dummy resource.
+ */
-+static void __devinit pci_iomul_disable_resource(struct resource *r)
++static inline void __devinit pci_iomul_disable_resource(struct resource *r)
+{
+ /* don't allocate this resource */
+ r->flags = 0;
+}
+
-+static void __devinit pci_iomul_reenable_resource(
++static void __pcihp_init pci_iomul_reenable_resource(
+ struct resource *dummy_parent, struct resource *r)
+{
+ int ret;
@@ -1602,26 +1609,25 @@ Acked-by: jbeulich@novell.com
+ struct pci_iomul_func *f;
+ struct pci_iomul_func *__f;
+
-+ if (pci_iomul_func_scan(pdev, slot, PCI_FUNC(pdev->devfn)) != 0)
++ if (pci_iomul_func_scan(pdev, slot, PCI_FUNC(pdev->devfn)))
+ return;
+
+ f = slot->func[PCI_FUNC(pdev->devfn)];
-+ if (f == NULL)
++ if (!f)
+ return;
+
+ __f = sw->func;
+ /* sw->io_base == 0 means that we are called at boot time.
+ * != 0 means that we are called by php after boot. */
-+ if (sw->io_base == 0 &&
-+ (__f == NULL || __f->io_size < f->io_size)) {
-+ if (__f != NULL) {
++ if (!sw->io_base && (!__f || __f->io_size < f->io_size)) {
++ if (__f) {
+ struct pci_bus *__pbus;
+ struct pci_dev *__pdev;
+
+ __pbus = pci_find_bus(__f->segment, __f->bus);
-+ BUG_ON(__pbus == NULL);
++ BUG_ON(!__pbus);
+ __pdev = pci_get_slot(__pbus, __f->devfn);
-+ BUG_ON(__pdev == NULL);
++ BUG_ON(!__pdev);
+ pci_iomul_fixup_ioresource(__pdev, __f, 0, 1);
+ pci_dev_put(__pdev);
+ }
@@ -1648,10 +1654,10 @@ Acked-by: jbeulich@novell.com
+ mutex_lock(&switch_list_lock);
+ sw = pci_iomul_find_switch_locked(pci_domain_nr(pdev->bus),
+ pci_dev_switch_busnr(pdev));
-+ if (sw == NULL) {
++ if (!sw) {
+ sw = pci_iomul_switch_alloc(pci_domain_nr(pdev->bus),
+ pci_dev_switch_busnr(pdev));
-+ if (sw == NULL) {
++ if (!sw) {
+ mutex_unlock(&switch_list_lock);
+ pr_warn("PCI: can't allocate memory "
+ "for sw of IO multiplexing %s",
@@ -1666,9 +1672,9 @@ Acked-by: jbeulich@novell.com
+ mutex_lock(&sw->lock);
+ slot = pci_iomul_find_slot_locked(sw, pdev->bus->number,
+ PCI_SLOT(pdev->devfn));
-+ if (slot == NULL) {
++ if (!slot) {
+ slot = pci_iomul_slot_alloc(pdev);
-+ if (slot == NULL) {
++ if (!slot) {
+ mutex_unlock(&sw->lock);
+ pci_iomul_switch_put(sw);
+ pr_warn("PCI: can't allocate memory "
@@ -1690,7 +1696,7 @@ Acked-by: jbeulich@novell.com
+DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID,
+ quirk_iomul_dealloc_ioresource);
+
-+static void __devinit pci_iomul_read_bridge_io(struct pci_iomul_switch *sw)
++static void __pcihp_init pci_iomul_read_bridge_io(struct pci_iomul_switch *sw)
+{
+ struct pci_iomul_func *f = sw->func;
+
@@ -1705,10 +1711,10 @@ Acked-by: jbeulich@novell.com
+ uint32_t io_limit;
+
+ pbus = pci_find_bus(f->segment, f->bus);
-+ BUG_ON(pbus == NULL);
++ BUG_ON(!pbus);
+
+ pdev = pci_get_slot(pbus, f->devfn);
-+ BUG_ON(pdev == NULL);
++ BUG_ON(!pdev);
+
+ bridge = pdev->bus->self;
+ pci_read_config_word(bridge, PCI_IO_BASE, &l);
@@ -1729,9 +1735,9 @@ Acked-by: jbeulich@novell.com
+ pci_name(bridge), sw->io_base, sw->io_limit);
+}
+
-+static void __devinit pci_iomul_setup_brige(struct pci_dev *bridge,
-+ uint32_t io_base,
-+ uint32_t io_limit)
++static void __pcihp_init pci_iomul_setup_brige(struct pci_dev *bridge,
++ uint32_t io_base,
++ uint32_t io_limit)
+{
+ uint16_t cmd;
+
@@ -1755,16 +1761,16 @@ Acked-by: jbeulich@novell.com
+};
+
+/* decending order */
-+static int __devinit pci_iomul_bar_cmp(const void *lhs__, const void *rhs__)
++static int __pcihp_init pci_iomul_bar_cmp(const void *lhs__, const void *rhs__)
+{
+ const struct __bar *lhs = (struct __bar*)lhs__;
+ const struct __bar *rhs = (struct __bar*)rhs__;
+ return - (lhs->size - rhs->size);
+}
+
-+static void __devinit pci_iomul_setup_dev(struct pci_dev *pdev,
-+ struct pci_iomul_func *f,
-+ uint32_t io_base)
++static void __pcihp_init pci_iomul_setup_dev(struct pci_dev *pdev,
++ struct pci_iomul_func *f,
++ uint32_t io_base)
+{
+ struct __bar bars[PCI_NUM_BARS];
+ int i;
@@ -1791,7 +1797,7 @@ Acked-by: jbeulich@novell.com
+ struct resource *fr = &f->resource[bars[i].bar];
+ r = &pdev->resource[bars[i].bar];
+
-+ BUG_ON(r->start != 0);
++ BUG_ON(r->start);
+ r->start += io_base;
+ r->end += io_base;
+
@@ -1807,7 +1813,7 @@ Acked-by: jbeulich@novell.com
+ }
+}
+
-+static void __devinit pci_iomul_release_io_resource(
++static void __pcihp_init pci_iomul_release_io_resource(
+ struct pci_dev *pdev, struct pci_iomul_switch *sw,
+ struct pci_iomul_slot *slot, struct pci_iomul_func *f)
+{
@@ -1815,8 +1821,8 @@ Acked-by: jbeulich@novell.com
+ struct resource *r;
+
+ for (i = 0; i < PCI_NUM_BARS; i++) {
-+ if (pci_resource_flags(pdev, i) & IORESOURCE_IO &&
-+ pdev->resource[i].parent != NULL) {
++ if ((pci_resource_flags(pdev, i) & IORESOURCE_IO) &&
++ pdev->resource[i].parent) {
+ r = &pdev->resource[i];
+ f->resource[i] = *r;
+ release_resource(r);
@@ -1830,30 +1836,31 @@ Acked-by: jbeulich@novell.com
+ for (i = PCI_BRIDGE_RESOURCES; i < PCI_NUM_RESOURCES; i++) {
+ struct resource *parent = pdev->resource[i].parent;
+
-+ if (pci_resource_flags(pdev, i) & IORESOURCE_IO &&
-+ parent != NULL) {
-+ r = &pdev->resource[i];
++ if (!(pci_resource_flags(pdev, i) & IORESOURCE_IO) ||
++ !parent)
++ continue;
+
-+ sw->io_resource.flags = r->flags;
-+ sw->io_resource.start = sw->io_base;
-+ sw->io_resource.end = sw->io_limit;
-+ sw->io_resource.name = "PCI IO Multiplexer";
++ r = &pdev->resource[i];
+
-+ release_resource(r);
-+ pci_iomul_reenable_resource(
-+ &slot->dummy_parent[i - PCI_BRIDGE_RESOURCES], r);
++ sw->io_resource.flags = r->flags;
++ sw->io_resource.start = sw->io_base;
++ sw->io_resource.end = sw->io_limit;
++ sw->io_resource.name = "PCI IO Multiplexer";
+
-+ if (request_resource(parent,
-+ &sw->io_resource))
-+ pr_err("PCI IOMul: can't allocate "
-+ "resource. [0x%x, 0x%x]",
-+ sw->io_base, sw->io_limit);
-+ }
++ release_resource(r);
++ pci_iomul_reenable_resource(
++ &slot->dummy_parent[i - PCI_BRIDGE_RESOURCES],
++ r);
++
++ if (request_resource(parent, &sw->io_resource))
++ pr_err("PCI IOMul: can't allocate "
++ "resource. [0x%x, 0x%x]",
++ sw->io_base, sw->io_limit);
+ }
+ }
+}
+
-+static void __devinit quirk_iomul_reassign_ioresource(struct pci_dev *pdev)
++static void __pcihp_init quirk_iomul_reassign_ioresource(struct pci_dev *pdev)
+{
+ struct pci_iomul_switch *sw;
+ struct pci_iomul_slot *slot;
@@ -1861,34 +1868,34 @@ Acked-by: jbeulich@novell.com
+ struct pci_iomul_func *f;
+
+ pci_iomul_get_lock_switch(pdev, &sw, &slot);
-+ if (sw == NULL || slot == NULL)
++ if (!sw || !slot)
+ return;
+
-+ if (sw->io_base == 0)
++ if (!sw->io_base)
+ pci_iomul_read_bridge_io(sw);
+ if (!pci_iomul_switch_io_allocated(sw))
+ goto out;
+
+ sf = sw->func;
+ f = slot->func[PCI_FUNC(pdev->devfn)];
-+ if (f == NULL)
-+ /* (sf == NULL || f == NULL) case
-+ * can happen when all the specified devices
-+ * don't have io space
++ if (!f)
++ /*
++ * (!sf || !f) case can happen when all the
++ * specified devices don't have io space
+ */
+ goto out;
+
-+ if (sf != NULL &&
++ if (sf &&
+ (pci_domain_nr(pdev->bus) != sf->segment ||
+ pdev->bus->number != sf->bus ||
+ PCI_SLOT(pdev->devfn) != PCI_SLOT(sf->devfn)) &&
-+ PCI_FUNC(pdev->devfn) == 0) {
++ !PCI_FUNC(pdev->devfn)) {
+ pci_iomul_setup_brige(pdev->bus->self,
+ sw->io_base, sw->io_limit);
+ }
+
+ BUG_ON(f->io_size > sw->io_limit - sw->io_base + 1);
-+ if (/* f == sf */ sf != NULL &&
++ if (/* f == sf */ sf &&
+ pci_domain_nr(pdev->bus) == sf->segment &&
+ pdev->bus->number == sf->bus &&
+ pdev->devfn == sf->devfn)
@@ -1900,7 +1907,6 @@ Acked-by: jbeulich@novell.com
+ mutex_unlock(&sw->lock);
+ pci_iomul_switch_put(sw);
+}
-+
+DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID,
+ quirk_iomul_reassign_ioresource);
+
@@ -1913,7 +1919,7 @@ Acked-by: jbeulich@novell.com
+ int i;
+
+ pci_iomul_get_lock_switch(pdev, &sw, &slot);
-+ if (sw == NULL || slot == NULL)
++ if (!sw || !slot)
+ return 0;
+
+ if (sw->func == slot->func[PCI_FUNC(pdev->devfn)])
@@ -1921,7 +1927,7 @@ Acked-by: jbeulich@novell.com
+ kfree(slot->func[PCI_FUNC(pdev->devfn)]);
+ slot->func[PCI_FUNC(pdev->devfn)] = NULL;
+ for (i = 0; i < PCI_NUM_FUNC; i++) {
-+ if (slot->func[i] != NULL)
++ if (slot->func[i])
+ goto out;
+ }
+
@@ -1941,7 +1947,7 @@ Acked-by: jbeulich@novell.com
+ mutex_lock(&switch_list_lock);
+ sw = pci_iomul_find_switch_locked(pci_domain_nr(pdev->bus),
+ pdev->bus->number);
-+ if (sw == NULL)
++ if (!sw)
+ goto out;
+
+ pci_iomul_switch_del_locked(sw);
@@ -1991,13 +1997,11 @@ Acked-by: jbeulich@novell.com
+ quirk_iomul_reassign_ioresource(pdev);
+ break;
+ case BUS_NOTIFY_DEL_DEVICE:
-+ return pci_iomul_notifier_del_device(pdev);
-+ default:
-+ /* nothing */
++ pci_iomul_notifier_del_device(pdev);
+ break;
+ }
+
-+ return 0;
++ return NOTIFY_DONE;
+}
+
+static struct notifier_block __devinitdata pci_iomul_nb = {
@@ -2006,13 +2010,16 @@ Acked-by: jbeulich@novell.com
+
+static int __init pci_iomul_hotplug_init(void)
+{
++ if (!is_initial_xendomain())
++ return -ENODEV;
++
+ bus_register_notifier(&pci_bus_type, &pci_iomul_nb);
+ return 0;
+}
+late_initcall(pci_iomul_hotplug_init);
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/pci/iomulti.h 2011-01-31 14:31:28.000000000 +0100
++++ head-2011-09-07/drivers/pci/iomulti.h 2011-01-31 14:31:28.000000000 +0100
@@ -0,0 +1,122 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -2136,9 +2143,9 @@ Acked-by: jbeulich@novell.com
+int pci_iomul_switch_io_allocated(const struct pci_iomul_switch *);
+void pci_iomul_get_lock_switch(struct pci_dev *, struct pci_iomul_switch **,
+ struct pci_iomul_slot **);
---- head-2011-07-21.orig/drivers/pci/pci.c 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/pci/pci.c 2011-06-30 15:22:15.000000000 +0200
-@@ -3402,6 +3402,13 @@ resource_size_t pci_specified_resource_a
+--- head-2011-09-07.orig/drivers/pci/pci.c 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/pci/pci.c 2011-08-09 10:25:20.000000000 +0200
+@@ -3470,6 +3470,13 @@ resource_size_t pci_specified_resource_a
*/
int pci_is_reassigndev(struct pci_dev *dev)
{
@@ -2152,9 +2159,9 @@ Acked-by: jbeulich@novell.com
return (pci_specified_resource_alignment(dev) != 0);
}
---- head-2011-07-21.orig/drivers/pci/pci.h 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/pci/pci.h 2011-07-21 12:03:10.000000000 +0200
-@@ -314,4 +314,11 @@ static inline int pci_dev_specific_reset
+--- head-2011-09-07.orig/drivers/pci/pci.h 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/drivers/pci/pci.h 2011-07-21 12:03:10.000000000 +0200
+@@ -316,4 +316,11 @@ static inline int pci_dev_specific_reset
}
#endif
@@ -2167,8 +2174,8 @@ Acked-by: jbeulich@novell.com
+
#endif /* DRIVERS_PCI_H */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/pci/pci-iomul.c 2011-01-31 14:31:28.000000000 +0100
-@@ -0,0 +1,437 @@
++++ head-2011-09-07/drivers/pci/pci-iomul.c 2011-09-09 14:16:22.000000000 +0200
+@@ -0,0 +1,440 @@
+/*
+ * 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
@@ -2579,8 +2586,11 @@ Acked-by: jbeulich@novell.com
+{
+ int error;
+
++ if (!is_initial_xendomain())
++ return -ENODEV;
++
+ error = misc_register(&pci_iomul_miscdev);
-+ if (error != 0) {
++ if (error) {
+ pr_alert("Couldn't register /dev/xen/pci_iomul");
+ return error;
+ }
@@ -2606,9 +2616,9 @@ Acked-by: jbeulich@novell.com
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Isaku Yamahata <yamahata@valinux.co.jp>");
+MODULE_DESCRIPTION("PCI IO space multiplexing driver");
---- head-2011-07-21.orig/include/linux/acpi.h 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/include/linux/acpi.h 2011-06-30 15:21:54.000000000 +0200
-@@ -247,6 +247,8 @@ int acpi_check_region(resource_size_t st
+--- head-2011-09-07.orig/include/linux/acpi.h 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/include/linux/acpi.h 2011-06-30 15:21:54.000000000 +0200
+@@ -246,6 +246,8 @@ int acpi_check_region(resource_size_t st
int acpi_resources_are_enforced(void);
@@ -2617,11 +2627,11 @@ Acked-by: jbeulich@novell.com
#ifdef CONFIG_PM_SLEEP
void __init acpi_no_s4_hw_signature(void);
void __init acpi_old_suspend_ordering(void);
---- head-2011-07-21.orig/include/linux/pci.h 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/include/linux/pci.h 2011-06-30 15:21:48.000000000 +0200
-@@ -1589,5 +1589,11 @@ int pci_vpd_find_tag(const u8 *buf, unsi
- int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off,
- unsigned int len, const char *kw);
+--- head-2011-09-07.orig/include/linux/pci.h 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/include/linux/pci.h 2011-06-30 15:21:48.000000000 +0200
+@@ -1642,5 +1642,11 @@ static inline void pci_release_bus_of_no
+ */
+ struct pci_dev *pci_find_upstream_pcie_bridge(struct pci_dev *pdev);
+#ifdef CONFIG_PCI_GUESTDEV
+int pci_is_guestdev(struct pci_dev *dev);
@@ -2631,18 +2641,18 @@ Acked-by: jbeulich@novell.com
+
#endif /* __KERNEL__ */
#endif /* LINUX_PCI_H */
---- head-2011-07-21.orig/include/xen/Kbuild 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/include/xen/Kbuild 2011-01-31 14:31:28.000000000 +0100
+--- head-2011-09-07.orig/include/xen/Kbuild 2011-09-09 14:13:25.000000000 +0200
++++ head-2011-09-07/include/xen/Kbuild 2011-01-31 14:31:28.000000000 +0100
@@ -1,2 +1,3 @@
header-y += evtchn.h
header-y += privcmd.h
+header-y += public/
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/include/xen/public/Kbuild 2011-01-31 14:31:28.000000000 +0100
++++ head-2011-09-07/include/xen/public/Kbuild 2011-01-31 14:31:28.000000000 +0100
@@ -0,0 +1 @@
+header-y += iomulti.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/include/xen/public/iomulti.h 2011-01-31 14:31:28.000000000 +0100
++++ head-2011-09-07/include/xen/public/iomulti.h 2011-01-31 14:31:28.000000000 +0100
@@ -0,0 +1,50 @@
+#ifndef __LINUX_PUBLIC_IOMULTI_H__
+#define __LINUX_PUBLIC_IOMULTI_H__
diff --git a/patches.xen/pci-reserve b/patches.xen/pci-reserve
index 0ef5f841e6..dcf1281373 100644
--- a/patches.xen/pci-reserve
+++ b/patches.xen/pci-reserve
@@ -8,9 +8,9 @@ by PCI hotplug.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Acked-by: jbeulich@novell.com
---- head-2011-07-21.orig/Documentation/kernel-parameters.txt 2011-07-21 12:02:12.000000000 +0200
-+++ head-2011-07-21/Documentation/kernel-parameters.txt 2011-07-21 12:04:00.000000000 +0200
-@@ -2036,6 +2036,13 @@ bytes respectively. Such letter suffixes
+--- head-2011-09-07.orig/Documentation/kernel-parameters.txt 2011-07-21 12:02:12.000000000 +0200
++++ head-2011-09-07/Documentation/kernel-parameters.txt 2011-09-07 14:30:37.000000000 +0200
+@@ -2053,6 +2053,13 @@ bytes respectively. Such letter suffixes
realloc reallocate PCI resources if allocations done by BIOS
are erroneous.
@@ -24,8 +24,8 @@ Acked-by: jbeulich@novell.com
pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power
Management.
off Disable ASPM.
---- head-2011-07-21.orig/drivers/pci/Kconfig 2011-01-31 14:31:27.000000000 +0100
-+++ head-2011-07-21/drivers/pci/Kconfig 2011-01-31 14:32:40.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Kconfig 2011-01-31 14:31:27.000000000 +0100
++++ head-2011-09-07/drivers/pci/Kconfig 2011-01-31 14:32:40.000000000 +0100
@@ -45,6 +45,13 @@ config PCI_IOMULTI
help
Say Y here if you need io multiplexing.
@@ -40,8 +40,8 @@ Acked-by: jbeulich@novell.com
config PCI_STUB
tristate "PCI Stub driver"
depends on PCI
---- head-2011-07-21.orig/drivers/pci/Makefile 2011-01-31 14:31:28.000000000 +0100
-+++ head-2011-07-21/drivers/pci/Makefile 2011-01-31 14:32:40.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Makefile 2011-01-31 14:31:28.000000000 +0100
++++ head-2011-09-07/drivers/pci/Makefile 2011-01-31 14:32:40.000000000 +0100
@@ -11,6 +11,7 @@ obj-$(CONFIG_PCI_GUESTDEV) += guestdev.o
obj-$(CONFIG_PCI_IOMULTI) += pci-iomul.o
iomul-$(CONFIG_PCI_IOMULTI) := iomulti.o
@@ -50,9 +50,9 @@ Acked-by: jbeulich@novell.com
obj-$(CONFIG_PCI_QUIRKS) += quirks.o
---- head-2011-07-21.orig/drivers/pci/pci.h 2011-07-21 12:03:10.000000000 +0200
-+++ head-2011-07-21/drivers/pci/pci.h 2011-07-21 12:04:04.000000000 +0200
-@@ -321,4 +321,19 @@ extern int pci_is_iomuldev(struct pci_de
+--- head-2011-09-07.orig/drivers/pci/pci.h 2011-07-21 12:03:10.000000000 +0200
++++ head-2011-09-07/drivers/pci/pci.h 2011-09-07 14:30:28.000000000 +0200
+@@ -323,4 +323,19 @@ extern int pci_is_iomuldev(struct pci_de
#define pci_is_iomuldev(dev) 0
#endif
@@ -73,7 +73,7 @@ Acked-by: jbeulich@novell.com
+
#endif /* DRIVERS_PCI_H */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/pci/reserve.c 2011-01-31 14:32:40.000000000 +0100
++++ head-2011-09-07/drivers/pci/reserve.c 2011-01-31 14:32:40.000000000 +0100
@@ -0,0 +1,137 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -212,19 +212,19 @@ Acked-by: jbeulich@novell.com
+ return 1;
+}
+__setup("pci_reserve=", pci_reserve_setup);
---- head-2011-07-21.orig/drivers/pci/setup-bus.c 2011-07-21 12:00:02.000000000 +0200
-+++ head-2011-07-21/drivers/pci/setup-bus.c 2011-07-21 12:04:10.000000000 +0200
-@@ -561,7 +561,7 @@ static void pbus_size_io(struct pci_bus
+--- head-2011-09-07.orig/drivers/pci/setup-bus.c 2011-09-07 13:56:33.000000000 +0200
++++ head-2011-09-07/drivers/pci/setup-bus.c 2011-09-07 14:30:17.000000000 +0200
+@@ -580,7 +580,7 @@ static void pbus_size_io(struct pci_bus
{
struct pci_dev *dev;
struct resource *b_res = find_free_bus_resource(bus, IORESOURCE_IO);
- unsigned long size = 0, size0 = 0, size1 = 0;
+ unsigned long size = 0, size0 = 0, size1 = 0, res_size;
+ resource_size_t children_add_size = 0;
if (!b_res)
- return;
-@@ -589,6 +589,11 @@ static void pbus_size_io(struct pci_bus
- size1 = (!add_head || (add_head && !add_size)) ? size0 :
+@@ -614,6 +614,11 @@ static void pbus_size_io(struct pci_bus
+ size1 = (!realloc_head || (realloc_head && !add_size)) ? size0 :
calculate_iosize(size, min_size+add_size, size1,
resource_size(b_res), 4096);
+ res_size = pci_reserve_size_io(bus);
@@ -235,11 +235,11 @@ Acked-by: jbeulich@novell.com
if (!size0 && !size1) {
if (b_res->start || b_res->end)
dev_info(&bus->self->dev, "disabling bridge window "
-@@ -683,6 +688,7 @@ static int pbus_size_mem(struct pci_bus
+@@ -722,6 +727,7 @@ static int pbus_size_mem(struct pci_bus
min_align = align1 >> 1;
align += aligns[order];
}
+ size = max(size, (resource_size_t)pci_reserve_size_mem(bus));
size0 = calculate_memsize(size, min_size, 0, resource_size(b_res), min_align);
- size1 = (!add_head || (add_head && !add_size)) ? size0 :
- calculate_memsize(size, min_size+add_size, 0,
+ if (children_add_size > add_size)
+ add_size = children_add_size;
diff --git a/patches.xen/xen-blkback-cdrom b/patches.xen/xen-blkback-cdrom
index 2319e40888..cc82e15c47 100644
--- a/patches.xen/xen-blkback-cdrom
+++ b/patches.xen/xen-blkback-cdrom
@@ -3,8 +3,8 @@ From: plc@novell.com
Patch-mainline: obsolete
References: 159907
---- head-2011-06-30.orig/drivers/xen/blkback/Makefile 2009-06-09 15:01:37.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/Makefile 2010-03-25 14:38:02.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blkback/Makefile 2009-06-09 15:01:37.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/Makefile 2010-03-25 14:38:02.000000000 +0100
@@ -1,4 +1,4 @@
obj-$(CONFIG_XEN_BLKDEV_BACKEND) := blkbk.o
obj-$(CONFIG_XEN_BLKBACK_PAGEMAP) += blkback-pagemap.o
@@ -12,8 +12,8 @@ References: 159907
-blkbk-y := blkback.o xenbus.o interface.o vbd.o
+blkbk-y := blkback.o xenbus.o interface.o vbd.o cdrom.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/drivers/xen/blkback/cdrom.c 2010-10-11 10:34:44.000000000 +0200
-@@ -0,0 +1,162 @@
++++ head-2011-09-07/drivers/xen/blkback/cdrom.c 2011-05-27 17:41:57.000000000 +0200
+@@ -0,0 +1,154 @@
+/******************************************************************************
+ * blkback/cdrom.c
+ *
@@ -50,12 +50,6 @@ References: 159907
+
+#include "common.h"
+
-+#undef DPRINTK
-+#define DPRINTK(_f, _a...) \
-+ printk(KERN_DEBUG "(%s() file=%s, line=%d) " _f "\n", \
-+ __func__, __FILE__ , __LINE__ , ##_a )
-+
-+
+#define MEDIA_PRESENT "media-present"
+
+static void cdrom_media_changed(struct xenbus_watch *, const char **, unsigned int);
@@ -77,7 +71,7 @@ References: 159907
+ DPRINTK("already written err%d", err);
+ return(0);
+ }
-+ media_present = 1;
++ media_present = !!be->blkif->vbd.bdev;
+
+again:
+ err = xenbus_transaction_start(&xbt);
@@ -130,19 +124,18 @@ References: 159907
+ &be->cdrom_watch,
+ cdrom_media_changed);
+ if (err)
-+ DPRINTK( "media_present watch add failed" );
++ DPRINTK(MEDIA_PRESENT " watch add failed");
+ }
+ }
+}
+
+/**
-+ * Callback received when the "media_present" xenstore node is changed
++ * Callback received when the MEDIA_PRESENT xenstore node is changed
+ */
+static void cdrom_media_changed(struct xenbus_watch *watch,
+ const char **vec, unsigned int len)
+{
-+ int err;
-+ unsigned media_present;
++ int err, media_present;
+ struct backend_info *be
+ = container_of(watch, struct backend_info, cdrom_watch);
+ struct xenbus_device *dev = be->dev;
@@ -154,31 +147,30 @@ References: 159907
+
+ err = xenbus_scanf(XBT_NIL, dev->nodename, MEDIA_PRESENT, "%d",
+ &media_present);
-+ if (err == 0 || err == -ENOENT) {
-+ DPRINTK("xenbus_read of cdrom media_present node error:%d",err);
++ if (err <= 0) {
++ DPRINTK("read of " MEDIA_PRESENT " node error:%d", err);
+ return;
+ }
+
-+ if (media_present == 0)
++ if (!media_present)
+ vbd_free(&be->blkif->vbd);
-+ else {
++ else if (!be->blkif->vbd.bdev) {
+ char *p = strrchr(dev->otherend, '/') + 1;
+ long handle = simple_strtoul(p, NULL, 0);
+
-+ if (!be->blkif->vbd.bdev) {
-+ err = vbd_create(be->blkif, handle, be->major, be->minor,
-+ !strchr(be->mode, 'w'), 1);
-+ if (err) {
-+ be->major = be->minor = 0;
-+ xenbus_dev_fatal(dev, err, "creating vbd structure");
-+ return;
-+ }
++ err = vbd_create(be->blkif, handle, be->major, be->minor,
++ !strchr(be->mode, 'w'), 1);
++ if (err && err != -ENOMEDIUM) {
++ be->major = be->minor = 0;
++ xenbus_dev_fatal(dev, err, "creating vbd structure");
++ return;
+ }
++ vbd_resize(be->blkif);
+ }
+}
---- head-2011-06-30.orig/drivers/xen/blkback/common.h 2011-04-11 14:51:44.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/common.h 2011-04-04 14:51:29.000000000 +0200
-@@ -95,6 +95,7 @@ struct backend_info
+--- head-2011-09-07.orig/drivers/xen/blkback/common.h 2011-09-07 12:34:21.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/common.h 2011-09-09 15:43:07.000000000 +0200
+@@ -97,6 +97,7 @@ struct backend_info
struct xenbus_device *dev;
blkif_t *blkif;
struct xenbus_watch backend_watch;
@@ -186,29 +178,157 @@ References: 159907
unsigned major;
unsigned minor;
char *mode;
-@@ -141,4 +142,7 @@ int blkif_schedule(void *arg);
- int blkback_barrier(struct xenbus_transaction xbt,
- struct backend_info *be, int state);
+@@ -145,4 +146,7 @@ int blkback_barrier(struct xenbus_transa
+ int blkback_flush_diskcache(struct xenbus_transaction,
+ struct backend_info *, int state);
+/* cdrom media change */
+void cdrom_add_media_watch(struct backend_info *be);
+
#endif /* __BLKIF__BACKEND__COMMON_H__ */
---- head-2011-06-30.orig/drivers/xen/blkback/vbd.c 2011-06-30 17:19:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/vbd.c 2011-05-31 11:22:43.000000000 +0200
-@@ -112,6 +112,9 @@ int vbd_translate(struct phys_req *req,
+--- head-2011-09-07.orig/drivers/xen/blkback/vbd.c 2011-09-09 08:55:35.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/vbd.c 2011-09-09 15:43:06.000000000 +0200
+@@ -37,7 +37,7 @@
+
+ unsigned long long vbd_size(struct vbd *vbd)
+ {
+- return vbd_sz(vbd);
++ return vbd->bdev ? vbd_sz(vbd) : 0;
+ }
+
+ unsigned int vbd_info(struct vbd *vbd)
+@@ -47,7 +47,7 @@ unsigned int vbd_info(struct vbd *vbd)
+
+ unsigned long vbd_secsize(struct vbd *vbd)
+ {
+- return bdev_logical_block_size(vbd->bdev);
++ return vbd->bdev ? bdev_logical_block_size(vbd->bdev) : 0;
+ }
+
+ int vbd_create(blkif_t *blkif, blkif_vdev_t handle, unsigned major,
+@@ -56,23 +56,44 @@ int vbd_create(blkif_t *blkif, blkif_vde
+ struct vbd *vbd;
+ struct block_device *bdev;
+ struct request_queue *q;
++ fmode_t mode = FMODE_READ | (readonly ? 0 : FMODE_WRITE | FMODE_EXCL);
+
+ vbd = &blkif->vbd;
+ vbd->handle = handle;
+ vbd->readonly = readonly;
+- vbd->type = 0;
++ vbd->size = 0;
++ vbd->type = cdrom ? VDISK_CDROM : 0;
+
+ vbd->pdevice = MKDEV(major, minor);
+
+- bdev = blkdev_get_by_dev(vbd->pdevice,
+- FMODE_READ | (vbd->readonly ? 0
+- : FMODE_WRITE | FMODE_EXCL),
+- blkif);
++ bdev = blkdev_get_by_dev(vbd->pdevice, mode, blkif);
+
+ if (IS_ERR(bdev)) {
+- DPRINTK("vbd_creat: device %08x could not be opened.\n",
++ if (PTR_ERR(bdev) != -ENOMEDIUM) {
++ DPRINTK("vbd_creat: device %08x could not be opened\n",
++ vbd->pdevice);
++ return -ENOENT;
++ }
++
++ DPRINTK("vbd_creat: device %08x has no medium\n",
+ vbd->pdevice);
+- return -ENOENT;
++ if (cdrom)
++ return -ENOMEDIUM;
++
++ bdev = blkdev_get_by_dev(vbd->pdevice, mode | FMODE_NDELAY,
++ blkif);
++ if (IS_ERR(bdev))
++ return -ENOMEDIUM;
++
++ if (bdev->bd_disk) {
++ if (bdev->bd_disk->flags & GENHD_FL_CD)
++ vbd->type |= VDISK_CDROM;
++ if (bdev->bd_disk->flags & GENHD_FL_REMOVABLE)
++ vbd->type |= VDISK_REMOVABLE;
++ }
++
++ blkdev_put(bdev, mode);
++ return -ENOMEDIUM;
+ }
+
+ vbd->bdev = bdev;
+@@ -86,7 +107,7 @@ int vbd_create(blkif_t *blkif, blkif_vde
+
+ vbd->size = vbd_size(vbd);
+
+- if (vbd->bdev->bd_disk->flags & GENHD_FL_CD || cdrom)
++ if (bdev->bd_disk->flags & GENHD_FL_CD)
+ vbd->type |= VDISK_CDROM;
+ if (vbd->bdev->bd_disk->flags & GENHD_FL_REMOVABLE)
+ vbd->type |= VDISK_REMOVABLE;
+@@ -117,6 +138,11 @@ int vbd_translate(struct phys_req *req,
if ((operation != READ) && vbd->readonly)
goto out;
-+ if (vbd->bdev == NULL)
++ if (vbd->bdev == NULL) {
++ rc = -ENOMEDIUM;
+ goto out;
++ }
+
if (likely(req->nr_sects)) {
blkif_sector_t end = req->sector_number + req->nr_sects;
---- head-2011-06-30.orig/drivers/xen/blkback/xenbus.c 2011-06-28 14:08:47.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/xenbus.c 2011-06-10 12:08:31.000000000 +0200
-@@ -187,6 +187,12 @@ static int blkback_remove(struct xenbus_
+@@ -156,6 +182,14 @@ again:
+ pr_warning("Error %d writing new size", err);
+ goto abort;
+ }
++
++ err = xenbus_printf(xbt, dev->nodename, "sector-size", "%lu",
++ vbd_secsize(vbd));
++ if (err) {
++ pr_warning("Error writing new sector size");
++ goto abort;
++ }
++
+ /*
+ * Write the current state; we will use this to synchronize
+ * the front-end. If the current state is "connected" the
+--- head-2011-09-07.orig/drivers/xen/blkback/xenbus.c 2011-09-09 15:40:08.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/xenbus.c 2011-09-09 15:43:04.000000000 +0200
+@@ -59,7 +59,7 @@ static void update_blkif_status(blkif_t
+ char name[TASK_COMM_LEN];
+
+ /* Not ready to connect? */
+- if (!blkif->irq || !blkif->vbd.bdev)
++ if (!blkif->irq)
+ return;
+
+ /* Already connected? */
+@@ -77,12 +77,17 @@ static void update_blkif_status(blkif_t
+ return;
+ }
+
+- err = filemap_write_and_wait(blkif->vbd.bdev->bd_inode->i_mapping);
+- if (err) {
+- xenbus_dev_error(blkif->be->dev, err, "block flush");
+- return;
++ if (blkif->vbd.bdev) {
++ struct address_space *mapping
++ = blkif->vbd.bdev->bd_inode->i_mapping;
++
++ err = filemap_write_and_wait(mapping);
++ if (err) {
++ xenbus_dev_error(blkif->be->dev, err, "block flush");
++ return;
++ }
++ invalidate_inode_pages2(mapping);
+ }
+- invalidate_inode_pages2(blkif->vbd.bdev->bd_inode->i_mapping);
+
+ blkif->xenblkd = kthread_run(blkif_schedule, blkif, name);
+ if (IS_ERR(blkif->xenblkd)) {
+@@ -189,6 +194,12 @@ static int blkback_remove(struct xenbus_
be->backend_watch.node = NULL;
}
@@ -221,7 +341,22 @@ References: 159907
if (be->blkif) {
blkif_disconnect(be->blkif);
vbd_free(&be->blkif->vbd);
-@@ -342,6 +348,9 @@ static void backend_changed(struct xenbu
+@@ -342,7 +353,13 @@ static void backend_changed(struct xenbu
+
+ err = vbd_create(be->blkif, handle, major, minor,
+ (NULL == strchr(be->mode, 'w')), cdrom);
+- if (err) {
++ switch (err) {
++ case -ENOMEDIUM:
++ if (be->blkif->vbd.type
++ & (VDISK_CDROM | VDISK_REMOVABLE))
++ case 0:
++ break;
++ default:
+ be->major = be->minor = 0;
+ xenbus_dev_fatal(dev, err, "creating vbd structure");
+ return;
+@@ -358,6 +375,9 @@ static void backend_changed(struct xenbu
/* We're potentially connected now */
update_blkif_status(be->blkif);
@@ -231,3 +366,13 @@ References: 159907
}
}
+@@ -398,7 +418,8 @@ static void frontend_changed(struct xenb
+ err = connect_ring(be);
+ if (err)
+ break;
+- update_blkif_status(be->blkif);
++ if (be->blkif->vbd.bdev)
++ update_blkif_status(be->blkif);
+ break;
+
+ case XenbusStateClosing:
diff --git a/patches.xen/xen-blkfront-cdrom b/patches.xen/xen-blkfront-cdrom
index 5e802b313e..44caa079f4 100644
--- a/patches.xen/xen-blkfront-cdrom
+++ b/patches.xen/xen-blkfront-cdrom
@@ -3,8 +3,8 @@ Subject: implement forwarding of CD-ROM specific commands
Patch-mainline: obsolete
References: fate#300964
---- head-2011-06-30.orig/drivers/cdrom/Makefile 2008-04-17 04:49:44.000000000 +0200
-+++ head-2011-06-30/drivers/cdrom/Makefile 2010-11-23 15:06:54.000000000 +0100
+--- head-2011-09-07.orig/drivers/cdrom/Makefile 2008-04-17 04:49:44.000000000 +0200
++++ head-2011-09-07/drivers/cdrom/Makefile 2010-11-23 15:06:54.000000000 +0100
@@ -9,6 +9,7 @@ obj-$(CONFIG_BLK_DEV_IDECD) +=
obj-$(CONFIG_BLK_DEV_SR) += cdrom.o
obj-$(CONFIG_PARIDE_PCD) += cdrom.o
@@ -13,8 +13,8 @@ References: fate#300964
obj-$(CONFIG_VIOCD) += viocd.o cdrom.o
obj-$(CONFIG_GDROM) += gdrom.o cdrom.o
---- head-2011-06-30.orig/drivers/xen/blkfront/Makefile 2007-06-12 13:13:44.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkfront/Makefile 2010-11-23 15:06:54.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blkfront/Makefile 2007-06-12 13:13:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/Makefile 2010-11-23 15:06:54.000000000 +0100
@@ -1,5 +1,5 @@
obj-$(CONFIG_XEN_BLKDEV_FRONTEND) := xenblk.o
@@ -22,9 +22,23 @@ References: fate#300964
-xenblk-objs := blkfront.o vbd.o
+xenblk-objs := blkfront.o vbd.o vcd.o
---- head-2011-06-30.orig/drivers/xen/blkfront/blkfront.c 2011-07-04 10:17:23.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkfront/blkfront.c 2011-07-04 10:17:38.000000000 +0200
-@@ -424,6 +424,8 @@ static void connect(struct blkfront_info
+--- head-2011-09-07.orig/drivers/xen/blkfront/blkfront.c 2011-07-21 12:32:39.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/blkfront.c 2011-09-09 15:51:13.000000000 +0200
+@@ -340,6 +340,13 @@ static void connect(struct blkfront_info
+ "sectors", "%Lu", &sectors);
+ if (err != 1)
+ return;
++ err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
++ "sector-size", "%lu", &sector_size);
++ if (err != 1)
++ sector_size = 0;
++ if (sector_size)
++ blk_queue_logical_block_size(info->gd->queue,
++ sector_size);
+ pr_info("Setting capacity to %Lu\n", sectors);
+ set_capacity(info->gd, sectors);
+ revalidate_disk(info->gd);
+@@ -424,6 +431,8 @@ static void connect(struct blkfront_info
add_disk(info->gd);
info->is_ready = 1;
@@ -33,7 +47,7 @@ References: fate#300964
}
/**
-@@ -453,6 +455,8 @@ static void blkfront_closing(struct blkf
+@@ -453,6 +462,8 @@ static void blkfront_closing(struct blkf
xlvbd_sysfs_delif(info);
@@ -42,8 +56,8 @@ References: fate#300964
xlvbd_del(info);
out:
---- head-2011-06-30.orig/drivers/xen/blkfront/block.h 2011-07-01 16:34:26.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkfront/block.h 2011-07-04 10:17:41.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkfront/block.h 2011-09-09 09:39:27.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/block.h 2011-07-04 10:17:41.000000000 +0200
@@ -164,4 +164,8 @@ static inline void xlvbd_sysfs_delif(str
}
#endif
@@ -53,8 +67,8 @@ References: fate#300964
+extern void unregister_vcd(struct blkfront_info *info);
+
#endif /* __XEN_DRIVERS_BLOCK_H__ */
---- head-2011-06-30.orig/drivers/xen/blkfront/vbd.c 2011-07-01 16:37:54.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkfront/vbd.c 2010-11-23 15:06:54.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blkfront/vbd.c 2011-07-01 16:37:54.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/vbd.c 2010-11-23 15:06:54.000000000 +0100
@@ -367,7 +367,8 @@ xlvbd_add(blkif_sector_t capacity, int v
goto out;
info->mi = mi;
@@ -75,7 +89,7 @@ References: fate#300964
sprintf(gd->disk_name, "%s%c",
mi->type->diskname, 'a' + offset );
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/drivers/xen/blkfront/vcd.c 2010-11-23 15:06:54.000000000 +0100
++++ head-2011-09-07/drivers/xen/blkfront/vcd.c 2010-11-23 15:06:54.000000000 +0100
@@ -0,0 +1,507 @@
+/*******************************************************************************
+ * vcd.c
@@ -585,7 +599,7 @@ References: fate#300964
+}
+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/include/xen/interface/io/cdromif.h 2010-11-23 15:06:54.000000000 +0100
++++ head-2011-09-07/include/xen/interface/io/cdromif.h 2010-11-23 15:06:54.000000000 +0100
@@ -0,0 +1,120 @@
+/******************************************************************************
+ * cdromif.h
diff --git a/patches.xen/xen-blkfront-hvm-no-cdrom b/patches.xen/xen-blkfront-hvm-no-cdrom
new file mode 100644
index 0000000000..f7df37f21a
--- /dev/null
+++ b/patches.xen/xen-blkfront-hvm-no-cdrom
@@ -0,0 +1,38 @@
+From: K. Y. Srinivasan <ksrinivasan@novell.com>
+Subject: In HVM guests do not take over the CDROM device
+References: bnc#645893
+Patch-mainline: n/a
+
+Signed-off-by: K. Y. Srinivasan <ksrinivasan@novell.com>
+
+ohering@novell.com: return -ENXIO instead of 0 when ignoring (bnc#672004)
+
+--- sle10sp4-2010-11-08.orig/drivers/xen/blkfront/blkfront.c 2010-08-10 12:10:17.000000000 +0200
++++ sle10sp4-2010-11-08/drivers/xen/blkfront/blkfront.c 2011-02-22 16:58:42.000000000 +0100
+@@ -89,6 +89,26 @@ static int blkfront_probe(struct xenbus_
+ int err, vdevice, i;
+ struct blkfront_info *info;
+
++#ifndef CONFIG_XEN /* For HVM guests, do not take over CDROM devices. */
++ char *type;
++
++ type = xenbus_read(XBT_NIL, dev->nodename, "device-type", NULL);
++ if (IS_ERR(type)) {
++ xenbus_dev_fatal(dev, PTR_ERR(type), "reading dev type");
++ return PTR_ERR(type);
++ }
++ if (!strncmp(type, "cdrom", 5)) {
++ /*
++ * We are handed a cdrom device in a hvm guest; let the
++ * native cdrom driver handle this device.
++ */
++ kfree(type);
++ pr_notice("blkfront: ignoring CDROM %s\n", dev->nodename);
++ return -ENXIO;
++ }
++ kfree(type);
++#endif
++
+ /* FIXME: Use dynamic device id if this is not set. */
+ err = xenbus_scanf(XBT_NIL, dev->nodename,
+ "virtual-device", "%i", &vdevice);
diff --git a/patches.xen/xen-blkif-protocol-fallback-hack b/patches.xen/xen-blkif-protocol-fallback-hack
index 1b7cb41d07..c48c631e3e 100644
--- a/patches.xen/xen-blkif-protocol-fallback-hack
+++ b/patches.xen/xen-blkif-protocol-fallback-hack
@@ -5,8 +5,8 @@ Patch-mainline: never.
See the comment below. Oh well.
---- head-2011-06-30.orig/drivers/xen/Kconfig 2011-04-13 17:01:32.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Kconfig 2011-02-24 15:23:15.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-09-08 17:35:02.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-02-24 15:23:15.000000000 +0100
@@ -26,6 +26,9 @@ config XEN_PRIVCMD
def_bool y
depends on PROC_FS
@@ -33,8 +33,8 @@ See the comment below. Oh well.
help
The block tap driver is an alternative to the block back driver
and allows VM block requests to be redirected to userspace through
---- head-2011-06-30.orig/drivers/xen/blkback/xenbus.c 2011-06-10 12:04:24.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/xenbus.c 2011-06-28 14:08:47.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkback/xenbus.c 2011-09-07 12:37:53.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/xenbus.c 2011-09-09 15:40:08.000000000 +0200
@@ -21,6 +21,7 @@
#include <linux/module.h>
#include <linux/kthread.h>
@@ -43,7 +43,7 @@ See the comment below. Oh well.
#undef DPRINTK
#define DPRINTK(fmt, args...) \
-@@ -496,8 +497,10 @@ static int connect_ring(struct backend_i
+@@ -516,8 +517,10 @@ static int connect_ring(struct backend_i
be->blkif->blk_protocol = BLKIF_PROTOCOL_NATIVE;
err = xenbus_gather(XBT_NIL, dev->otherend, "protocol",
NULL, &protocol, NULL);
@@ -55,7 +55,7 @@ See the comment below. Oh well.
else if (0 == strcmp(protocol, XEN_IO_PROTO_ABI_NATIVE))
be->blkif->blk_protocol = BLKIF_PROTOCOL_NATIVE;
else if (0 == strcmp(protocol, XEN_IO_PROTO_ABI_X86_32))
-@@ -511,7 +514,7 @@ static int connect_ring(struct backend_i
+@@ -531,7 +534,7 @@ static int connect_ring(struct backend_i
}
pr_info("blkback: ring-ref %u, event-channel %u, protocol %d (%s)\n",
ring_ref, evtchn, be->blkif->blk_protocol,
@@ -64,8 +64,8 @@ See the comment below. Oh well.
kfree(protocol);
/* Map the shared frame, irq etc. */
---- head-2011-06-30.orig/drivers/xen/blktap/xenbus.c 2011-06-30 17:04:47.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blktap/xenbus.c 2011-06-28 14:08:59.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap/xenbus.c 2011-06-30 17:04:47.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap/xenbus.c 2011-06-28 14:08:59.000000000 +0200
@@ -39,6 +39,7 @@
#include <linux/kthread.h>
#include <xen/xenbus.h>
@@ -95,9 +95,9 @@ See the comment below. Oh well.
kfree(protocol);
/* Map the shared frame, irq etc. */
---- head-2011-06-30.orig/drivers/xen/core/Makefile 2011-02-01 14:44:12.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/Makefile 2010-04-19 14:55:02.000000000 +0200
-@@ -12,3 +12,6 @@ obj-$(CONFIG_XEN_SYSFS) += xen_sysfs.o
+--- head-2011-09-07.orig/drivers/xen/core/Makefile 2011-08-18 11:08:49.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/Makefile 2011-08-18 11:16:38.000000000 +0200
+@@ -11,3 +11,6 @@ obj-$(CONFIG_XEN_SYSFS) += xen_sysfs.o
obj-$(CONFIG_XEN_SMPBOOT) += smpboot.o
obj-$(CONFIG_SMP) += spinlock.o
obj-$(CONFIG_KEXEC) += machine_kexec.o
@@ -105,7 +105,7 @@ See the comment below. Oh well.
+CFLAGS_domctl.o := -D__XEN_PUBLIC_XEN_H__ -D__XEN_PUBLIC_GRANT_TABLE_H__
+CFLAGS_domctl.o += -D__XEN_TOOLS__ -imacros xen/interface/domctl.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/drivers/xen/core/domctl.c 2010-10-11 10:31:06.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/domctl.c 2010-10-11 10:31:06.000000000 +0200
@@ -0,0 +1,127 @@
+/*
+ * !!! dirty hack alert !!!
@@ -235,7 +235,7 @@ See the comment below. Oh well.
+
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/drivers/xen/core/domctl.h 2010-03-25 14:37:59.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/domctl.h 2010-03-25 14:37:59.000000000 +0100
@@ -0,0 +1,2 @@
+int xen_guest_address_size(int domid);
+int xen_guest_blkif_protocol(int domid);
diff --git a/patches.xen/xen-blktap2-use-after-free b/patches.xen/xen-blktap2-use-after-free
deleted file mode 100644
index ed6d01cb40..0000000000
--- a/patches.xen/xen-blktap2-use-after-free
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Dominic Curran <dominic.curran@citrix.com>
-Subject: blktap: Fix reference to freed struct request
-Patch-mainline: tbd
-
-The request will be freed by the call to __blktap_end_rq(), so rq->q
-is invalid before spin_unlock_irq().
-
-Signed-off-by: Dominic Curran <dominic.curran@citrix.com>
-Acked-by: Daniel Stodden <daniel.stodden@citrix.com>
-Acked-by: jbeulich@novell.com
-
---- head-2011-03-11.orig/drivers/xen/blktap2-new/device.c 2011-02-24 16:31:17.000000000 +0100
-+++ head-2011-03-11/drivers/xen/blktap2-new/device.c 2011-03-11 00:00:00.000000000 +0100
-@@ -135,9 +135,11 @@ __blktap_end_rq(struct request *rq, int
- static inline void
- blktap_end_rq(struct request *rq, int err)
- {
-- spin_lock_irq(rq->q->queue_lock);
-+ struct request_queue *q = rq->q;
-+
-+ spin_lock_irq(q->queue_lock);
- __blktap_end_rq(rq, err);
-- spin_unlock_irq(rq->q->queue_lock);
-+ spin_unlock_irq(q->queue_lock);
- }
-
- void
diff --git a/patches.xen/xen-clockevents b/patches.xen/xen-clockevents
index 0efb588af4..6c62c21d11 100644
--- a/patches.xen/xen-clockevents
+++ b/patches.xen/xen-clockevents
@@ -4,19 +4,19 @@ Patch-mainline: n/a
Once validated this could be merged into the 2.6.?? patch.
---- head-2011-07-21.orig/arch/x86/Kconfig 2011-06-30 17:25:32.000000000 +0200
-+++ head-2011-07-21/arch/x86/Kconfig 2011-07-04 10:26:08.000000000 +0200
-@@ -93,7 +93,6 @@ config CLOCKSOURCE_WATCHDOG
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-12 10:54:53.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-09 15:54:01.000000000 +0200
+@@ -96,7 +96,6 @@ config CLOCKSOURCE_WATCHDOG
config GENERIC_CLOCKEVENTS
def_bool y
- depends on !XEN
- config GENERIC_CLOCKEVENTS_BROADCAST
+ config ARCH_CLOCKSOURCE_DATA
def_bool y
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:19:45.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:33:02.000000000 +0200
-@@ -70,7 +70,6 @@ extern start_info_t *xen_start_info;
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:35:01.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:35:36.000000000 +0200
+@@ -68,7 +68,6 @@ extern start_info_t *xen_start_info;
#define init_hypervisor_platform() init_hypervisor(&boot_cpu_data)
DECLARE_PER_CPU(struct vcpu_runstate_info, runstate);
@@ -24,18 +24,17 @@ Once validated this could be merged into the 2.6.?? patch.
#define vcpu_running(cpu) (per_cpu(runstate.state, cpu) == RUNSTATE_running)
/* arch/xen/kernel/evtchn.c */
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/irqflags.h 2011-02-01 15:09:47.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/irqflags.h 2011-02-02 15:09:52.000000000 +0100
-@@ -4,6 +4,8 @@
- #include <asm/smp-processor-id.h>
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/irqflags.h 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/irqflags.h 2011-09-09 15:53:54.000000000 +0200
+@@ -5,6 +5,7 @@
#ifndef __ASSEMBLY__
-+#include <linux/types.h>
+ #include <linux/types.h>
+#include <xen/interface/vcpu.h>
/*
* The use of 'barrier' in the following reflects their use as local-lock
* operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
-@@ -43,10 +45,6 @@ do { \
+@@ -44,10 +45,6 @@ do { \
force_evtchn_callback(); \
} while (0)
@@ -46,7 +45,7 @@ Once validated this could be merged into the 2.6.?? patch.
#define arch_local_save_flags() xen_save_fl()
#define arch_local_irq_restore(flags) xen_restore_fl(flags)
-@@ -59,19 +57,16 @@ void xen_halt(void);
+@@ -60,19 +57,16 @@ void xen_halt(void);
* Used in the idle loop; sti takes one instruction cycle
* to complete:
*/
@@ -71,8 +70,8 @@ Once validated this could be merged into the 2.6.?? patch.
/*
* For spinlocks, etc:
---- head-2011-07-21.orig/arch/x86/kernel/time-xen.c 2011-07-11 15:30:50.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/time-xen.c 2011-07-11 15:30:55.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2011-09-12 11:05:20.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-09-12 11:05:24.000000000 +0200
@@ -20,15 +20,12 @@
#include <linux/clocksource.h>
#include <linux/sysdev.h>
@@ -90,7 +89,7 @@ Once validated this could be merged into the 2.6.?? patch.
#include <xen/sysctl.h>
#include <xen/interface/vcpu.h>
-@@ -58,13 +55,7 @@ static DEFINE_PER_CPU(struct shadow_time
+@@ -54,13 +51,7 @@ static DEFINE_PER_CPU(struct shadow_time
static struct timespec shadow_tv;
static u32 shadow_tv_version;
@@ -105,7 +104,7 @@ Once validated this could be merged into the 2.6.?? patch.
/* Current runstate of each CPU (updated automatically by the hypervisor). */
DEFINE_PER_CPU(struct vcpu_runstate_info, runstate);
-@@ -72,16 +63,6 @@ DEFINE_PER_CPU(struct vcpu_runstate_info
+@@ -68,16 +59,6 @@ DEFINE_PER_CPU(struct vcpu_runstate_info
/* Must be signed, as it's compared with s64 quantities which can be -ve. */
#define NS_PER_TICK (1000000000LL/HZ)
@@ -122,7 +121,7 @@ Once validated this could be merged into the 2.6.?? patch.
/* Does this guest OS track Xen time, or set its wall clock independently? */
static int independent_wallclock = 0;
static int __init __independent_wallclock(char *str)
-@@ -183,6 +164,11 @@ static u64 get_nsec_offset(struct shadow
+@@ -179,6 +160,11 @@ static u64 get_nsec_offset(struct shadow
return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift);
}
@@ -134,7 +133,7 @@ Once validated this could be merged into the 2.6.?? patch.
static void update_wallclock(bool local)
{
static DEFINE_MUTEX(uwc_mutex);
-@@ -199,7 +185,7 @@ static void update_wallclock(bool local)
+@@ -195,7 +181,7 @@ static void update_wallclock(bool local)
} while ((s->wc_version & 1) | (shadow_tv_version ^ s->wc_version));
if (local) {
@@ -143,7 +142,7 @@ Once validated this could be merged into the 2.6.?? patch.
long nsec = do_div(tmp, NSEC_PER_SEC);
struct timespec tv;
-@@ -217,6 +203,14 @@ static void _update_wallclock(struct wor
+@@ -213,6 +199,14 @@ static void _update_wallclock(struct wor
}
static DECLARE_WORK(update_wallclock_work, _update_wallclock);
@@ -158,7 +157,7 @@ Once validated this could be merged into the 2.6.?? patch.
/*
* Reads a consistent set of time-base values from Xen, into a shadow data
* area.
-@@ -319,7 +313,7 @@ static void sync_xen_wallclock(unsigned
+@@ -314,7 +308,7 @@ static void sync_xen_wallclock(unsigned
op.cmd = XENPF_settime;
op.u.settime.secs = now.tv_sec;
op.u.settime.nsecs = now.tv_nsec;
@@ -167,16 +166,16 @@ Once validated this could be merged into the 2.6.?? patch.
WARN_ON(HYPERVISOR_platform_op(&op));
update_wallclock(false);
-@@ -328,7 +322,7 @@ static void sync_xen_wallclock(unsigned
- mod_timer(&sync_xen_wallclock_timer, jiffies + 60*HZ);
+@@ -324,7 +318,7 @@ static void sync_xen_wallclock(unsigned
}
+ #endif /* CONFIG_XEN_PRIVILEGED_GUEST */
-static unsigned long long local_clock(void)
+unsigned long long xen_local_clock(void)
{
unsigned int cpu = get_cpu();
struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu);
-@@ -363,7 +357,7 @@ unsigned long xen_read_wallclock(void)
+@@ -359,7 +353,7 @@ unsigned long xen_read_wallclock(void)
rmb();
} while ((s->wc_version & 1) | (version ^ s->wc_version));
@@ -185,7 +184,7 @@ Once validated this could be merged into the 2.6.?? patch.
do_div(delta, NSEC_PER_SEC);
return delta;
-@@ -382,7 +376,7 @@ int xen_write_wallclock(unsigned long no
+@@ -380,7 +374,7 @@ int xen_write_wallclock(unsigned long no
/*
* Runstate accounting
*/
@@ -194,7 +193,7 @@ Once validated this could be merged into the 2.6.?? patch.
{
u64 state_time;
struct vcpu_runstate_info *state;
-@@ -418,7 +412,7 @@ unsigned long long sched_clock(void)
+@@ -416,7 +410,7 @@ unsigned long long sched_clock(void)
*/
preempt_disable();
@@ -203,7 +202,7 @@ Once validated this could be merged into the 2.6.?? patch.
get_runstate_snapshot(&runstate);
-@@ -461,139 +455,6 @@ unsigned long profile_pc(struct pt_regs
+@@ -459,139 +453,6 @@ unsigned long profile_pc(struct pt_regs
}
EXPORT_SYMBOL(profile_pc);
@@ -343,7 +342,7 @@ Once validated this could be merged into the 2.6.?? patch.
void mark_tsc_unstable(char *reason)
{
#ifndef CONFIG_XEN /* XXX Should tell the hypervisor about this fact. */
-@@ -602,24 +463,13 @@ void mark_tsc_unstable(char *reason)
+@@ -600,24 +461,13 @@ void mark_tsc_unstable(char *reason)
}
EXPORT_SYMBOL_GPL(mark_tsc_unstable);
@@ -369,7 +368,7 @@ Once validated this could be merged into the 2.6.?? patch.
if (unlikely((s64)(ret - last) < 0)) {
if (last - ret > permitted_clock_jitter
-@@ -645,7 +495,7 @@ static cycle_t xen_clocksource_read(stru
+@@ -643,7 +493,7 @@ static cycle_t xen_clocksource_read(stru
last = cur;
}
#else
@@ -378,7 +377,7 @@ Once validated this could be merged into the 2.6.?? patch.
#endif
}
-@@ -656,26 +506,13 @@ static void xen_clocksource_resume(struc
+@@ -654,26 +504,13 @@ static void xen_clocksource_resume(struc
init_cpu_khz();
@@ -409,7 +408,7 @@ Once validated this could be merged into the 2.6.?? patch.
}
static struct clocksource clocksource_xen = {
-@@ -706,24 +543,10 @@ struct vcpu_runstate_info *setup_runstat
+@@ -704,24 +541,10 @@ struct vcpu_runstate_info *setup_runstat
return rs;
}
@@ -435,7 +434,7 @@ Once validated this could be merged into the 2.6.?? patch.
}
void __init time_init(void)
-@@ -732,22 +555,11 @@ void __init time_init(void)
+@@ -730,22 +553,11 @@ void __init time_init(void)
printk(KERN_INFO "Xen reported: %u.%03u MHz processor.\n",
cpu_khz / 1000, cpu_khz % 1000);
@@ -461,7 +460,7 @@ Once validated this could be merged into the 2.6.?? patch.
clocksource_register_hz(&clocksource_xen, NSEC_PER_SEC);
-@@ -763,146 +575,23 @@ void __init time_init(void)
+@@ -761,146 +573,23 @@ void __init time_init(void)
/* Convert jiffies to system time. */
u64 jiffies_to_st(unsigned long j)
{
@@ -620,8 +619,8 @@ Once validated this could be merged into the 2.6.?? patch.
#ifdef CONFIG_CPU_FREQ
static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
void *data)
---- head-2011-07-21.orig/drivers/xen/Kconfig 2011-04-11 15:10:40.000000000 +0200
-+++ head-2011-07-21/drivers/xen/Kconfig 2011-04-14 11:21:30.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-04-11 15:10:40.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-04-14 11:21:30.000000000 +0200
@@ -366,9 +366,6 @@ endmenu
config HAVE_IRQ_IGNORE_UNHANDLED
def_bool y
@@ -632,9 +631,9 @@ Once validated this could be merged into the 2.6.?? patch.
config ARCH_HAS_WALK_MEMORY
def_bool y
depends on X86
---- head-2011-07-21.orig/drivers/xen/core/Makefile 2010-04-19 14:55:02.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/Makefile 2011-02-02 15:09:52.000000000 +0100
-@@ -12,6 +12,7 @@ obj-$(CONFIG_XEN_SYSFS) += xen_sysfs.o
+--- head-2011-09-07.orig/drivers/xen/core/Makefile 2011-08-18 11:16:38.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/Makefile 2011-08-18 11:16:50.000000000 +0200
+@@ -11,6 +11,7 @@ obj-$(CONFIG_XEN_SYSFS) += xen_sysfs.o
obj-$(CONFIG_XEN_SMPBOOT) += smpboot.o
obj-$(CONFIG_SMP) += spinlock.o
obj-$(CONFIG_KEXEC) += machine_kexec.o
@@ -643,7 +642,7 @@ Once validated this could be merged into the 2.6.?? patch.
CFLAGS_domctl.o := -D__XEN_PUBLIC_XEN_H__ -D__XEN_PUBLIC_GRANT_TABLE_H__
CFLAGS_domctl.o += -D__XEN_TOOLS__ -imacros xen/interface/domctl.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/xen/core/clockevents.c 2011-02-02 15:09:52.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/clockevents.c 2011-02-02 15:09:52.000000000 +0100
@@ -0,0 +1,298 @@
+/*
+ * Xen clockevent functions
@@ -943,8 +942,8 @@ Once validated this could be merged into the 2.6.?? patch.
+
+ xen_setup_cpu_clockevents();
+}
---- head-2011-07-21.orig/drivers/xen/core/evtchn.c 2011-04-14 16:36:14.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/evtchn.c 2011-04-13 16:49:13.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-04-14 16:36:14.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-13 16:49:13.000000000 +0200
@@ -382,6 +382,7 @@ asmlinkage void __irq_entry evtchn_do_up
wmb();
#endif
@@ -961,8 +960,8 @@ Once validated this could be merged into the 2.6.?? patch.
l1 = xchg(&vcpu_info->evtchn_pending_sel, 0);
---- head-2011-07-21.orig/drivers/xen/core/machine_reboot.c 2011-07-04 10:19:56.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/machine_reboot.c 2011-07-04 10:25:00.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/machine_reboot.c 2011-07-04 10:19:56.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/machine_reboot.c 2011-07-04 10:25:00.000000000 +0200
@@ -14,6 +14,7 @@
#include <asm/hypervisor.h>
#include <xen/xenbus.h>
@@ -986,8 +985,8 @@ Once validated this could be merged into the 2.6.?? patch.
if (!suspend_cancelled) {
#ifdef __x86_64__
/*
---- head-2011-07-21.orig/drivers/xen/core/smpboot.c 2011-04-14 16:36:14.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/smpboot.c 2011-02-07 12:28:20.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-04-14 16:36:14.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-02-07 12:28:20.000000000 +0100
@@ -18,6 +18,7 @@
#include <linux/percpu.h>
#include <asm/desc.h>
@@ -1004,8 +1003,8 @@ Once validated this could be merged into the 2.6.?? patch.
local_irq_enable();
}
---- head-2011-07-21.orig/drivers/xen/core/spinlock.c 2011-04-13 16:38:13.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/spinlock.c 2011-04-13 16:49:13.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/spinlock.c 2011-04-13 16:38:13.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/spinlock.c 2011-04-13 16:49:13.000000000 +0200
@@ -13,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
@@ -1015,7 +1014,7 @@ Once validated this could be merged into the 2.6.?? patch.
struct spinning {
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/include/xen/clock.h 2011-02-02 15:09:52.000000000 +0100
++++ head-2011-09-07/include/xen/clock.h 2011-02-02 15:09:52.000000000 +0100
@@ -0,0 +1,19 @@
+#ifndef __XEN_CPU_CLOCK_H__
+#define __XEN_CPU_CLOCK_H__
diff --git a/patches.xen/xen-cpufreq-report b/patches.xen/xen-cpufreq-report
index 01af2065c2..edefbbb16e 100644
--- a/patches.xen/xen-cpufreq-report
+++ b/patches.xen/xen-cpufreq-report
@@ -2,25 +2,23 @@ From: jbeulich@novell.com
Subject: make /proc/cpuinfo track CPU speed
Patch-mainline: obsolete
---- head-2011-06-30.orig/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-02-01 15:03:10.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/acpi/processor_extcntl_xen.c 2010-10-06 17:04:43.000000000 +0200
-@@ -208,3 +208,14 @@ static int __init init_extcntl(void)
+--- head-2011-09-07.orig/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-02-01 15:03:10.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-08-23 13:12:39.000000000 +0200
+@@ -208,3 +208,12 @@ static int __init init_extcntl(void)
return 0;
}
arch_initcall(init_extcntl);
+
+unsigned int cpufreq_quick_get(unsigned int cpu)
+{
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_get_cpu_freq,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ .u.get_cpu_freq.vcpu = cpu
-+ };
++ xen_platform_op_t op;
+
++ op.cmd = XENPF_get_cpu_freq;
++ op.u.get_cpu_freq.vcpu = cpu;
+ return HYPERVISOR_platform_op(&op) == 0 ? op.u.get_cpu_freq.freq : 0;
+}
---- head-2011-06-30.orig/include/linux/cpufreq.h 2011-06-30 15:04:24.000000000 +0200
-+++ head-2011-06-30/include/linux/cpufreq.h 2011-07-04 10:18:02.000000000 +0200
+--- head-2011-09-07.orig/include/linux/cpufreq.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/cpufreq.h 2011-09-09 15:52:26.000000000 +0200
@@ -322,7 +322,7 @@ static inline unsigned int cpufreq_get(u
#endif
@@ -28,11 +26,11 @@ Patch-mainline: obsolete
-#ifdef CONFIG_CPU_FREQ
+#if defined(CONFIG_CPU_FREQ) || defined(CONFIG_PROCESSOR_EXTERNAL_CONTROL)
unsigned int cpufreq_quick_get(unsigned int cpu);
+ unsigned int cpufreq_quick_get_max(unsigned int cpu);
#else
- static inline unsigned int cpufreq_quick_get(unsigned int cpu)
---- head-2011-06-30.orig/include/xen/interface/platform.h 2010-01-04 11:56:34.000000000 +0100
-+++ head-2011-06-30/include/xen/interface/platform.h 2010-06-22 15:48:58.000000000 +0200
-@@ -355,6 +355,14 @@ struct xenpf_mem_hotadd
+--- head-2011-09-07.orig/include/xen/interface/platform.h 2011-08-19 11:46:44.000000000 +0200
++++ head-2011-09-07/include/xen/interface/platform.h 2011-08-23 13:12:54.000000000 +0200
+@@ -451,6 +451,14 @@ struct xenpf_mem_hotadd
uint32_t flags;
};
@@ -47,7 +45,7 @@ Patch-mainline: obsolete
struct xen_platform_op {
uint32_t cmd;
uint32_t interface_version; /* XENPF_INTERFACE_VERSION */
-@@ -374,6 +382,7 @@ struct xen_platform_op {
+@@ -471,6 +479,7 @@ struct xen_platform_op {
struct xenpf_cpu_ol cpu_ol;
struct xenpf_cpu_hotadd cpu_add;
struct xenpf_mem_hotadd mem_add;
diff --git a/patches.xen/xen-cxgb3 b/patches.xen/xen-cxgb3
index d97e77a32d..3916abea40 100644
--- a/patches.xen/xen-cxgb3
+++ b/patches.xen/xen-cxgb3
@@ -17,9 +17,9 @@ hypervisor to open the Tx buffer.
Acked-by: bphilips@suse.de
---- head-2011-06-30.orig/drivers/net/cxgb3/cxgb3_main.c 2011-06-30 15:04:13.000000000 +0200
-+++ head-2011-06-30/drivers/net/cxgb3/cxgb3_main.c 2011-07-04 12:14:07.000000000 +0200
-@@ -3286,7 +3286,17 @@ static int __devinit init_one(struct pci
+--- head-2011-09-07.orig/drivers/net/cxgb3/cxgb3_main.c 2011-09-07 13:56:17.000000000 +0200
++++ head-2011-09-07/drivers/net/cxgb3/cxgb3_main.c 2011-09-09 15:54:36.000000000 +0200
+@@ -3312,7 +3312,17 @@ static int __devinit init_one(struct pci
* register at least one net device.
*/
for_each_port(adapter, i) {
@@ -37,8 +37,8 @@ Acked-by: bphilips@suse.de
if (err)
dev_warn(&pdev->dev,
"cannot register net device %s, skipping\n",
---- head-2011-06-30.orig/drivers/net/cxgb3/sge.c 2011-06-30 15:04:13.000000000 +0200
-+++ head-2011-06-30/drivers/net/cxgb3/sge.c 2011-07-04 10:44:14.000000000 +0200
+--- head-2011-09-07.orig/drivers/net/cxgb3/sge.c 2011-09-07 13:56:17.000000000 +0200
++++ head-2011-09-07/drivers/net/cxgb3/sge.c 2011-09-09 15:54:39.000000000 +0200
@@ -59,11 +59,24 @@
* It must be a divisor of PAGE_SIZE. If set to 0 FL0 will use sk_buffs
* directly.
@@ -92,7 +92,7 @@ Acked-by: bphilips@suse.de
q->unacked &= 7;
pidx = q->pidx;
q->pidx += ndesc;
-@@ -2177,8 +2210,35 @@ static inline void handle_rsp_cntrl_info
+@@ -2154,8 +2187,35 @@ static inline void handle_rsp_cntrl_info
#endif
credits = G_RSPD_TXQ0_CR(flags);
@@ -129,8 +129,8 @@ Acked-by: bphilips@suse.de
credits = G_RSPD_TXQ2_CR(flags);
if (credits)
---- head-2011-06-30.orig/drivers/net/cxgb3/version.h 2010-10-20 22:30:22.000000000 +0200
-+++ head-2011-06-30/drivers/net/cxgb3/version.h 2011-02-03 14:45:48.000000000 +0100
+--- head-2011-09-07.orig/drivers/net/cxgb3/version.h 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/drivers/net/cxgb3/version.h 2011-02-03 14:45:48.000000000 +0100
@@ -35,7 +35,11 @@
#define DRV_DESC "Chelsio T3 Network Driver"
#define DRV_NAME "cxgb3"
diff --git a/patches.xen/xen-frontswap b/patches.xen/xen-frontswap
deleted file mode 100644
index 7cc548d906..0000000000
--- a/patches.xen/xen-frontswap
+++ /dev/null
@@ -1,257 +0,0 @@
-From: Dan Magenheimer <dan.magenheimer@oracle.com>
-Subject: [PATCH] xen: prepare tmem shim to handle frontswap
-Patch-mainline: tbd
-
-Provide the shim code for frontswap even if the frontswap patchset
-is not present yet.
-
-Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
-Acked-by: jbeulich@novell.com
-
---- head-2011-06-30.orig/drivers/xen/Kconfig 2011-04-14 11:21:30.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Kconfig 2011-07-04 10:35:50.000000000 +0200
-@@ -490,6 +490,13 @@ config SWIOTLB_XEN
- depends on PARAVIRT_XEN && PCI
- select SWIOTLB
-
-+config XEN_TMEM
-+ bool
-+ default y if (CLEANCACHE || FRONTSWAP)
-+ help
-+ Shim to interface in-kernel Transcendent Memory hooks
-+ (e.g. cleancache and frontswap) to Xen tmem hypercalls.
-+
- config XEN_XENCOMM
- bool
-
---- head-2011-06-30.orig/drivers/xen/Makefile 2011-07-01 16:01:23.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Makefile 2011-07-04 10:35:35.000000000 +0200
-@@ -8,7 +8,6 @@ xen-balloon_$(CONFIG_XEN) := balloon/
- obj-$(CONFIG_XEN) += core/
- obj-$(CONFIG_XEN) += console/
- obj-y += xenbus/
--obj-y += tmem.o
- obj-$(CONFIG_XEN) += char/
-
- xen-backend-$(CONFIG_XEN_BACKEND) := util.o
-@@ -30,6 +29,7 @@ obj-$(CONFIG_XENFS) += xenfs/
- obj-$(CONFIG_XEN_GRANT_DEV_ALLOC) += xen-gntalloc.o
- obj-$(CONFIG_XEN_SYS_HYPERVISOR) += sys-hypervisor.o
- obj-$(CONFIG_XEN_PLATFORM_PCI) += xen-platform-pci.o
-+obj-$(CONFIG_XEN_TMEM) += tmem.o
- obj-$(CONFIG_SWIOTLB_XEN) += swiotlb-xen.o
- obj-$(CONFIG_XEN_DOM0) += pci.o
-
---- head-2011-06-30.orig/drivers/xen/tmem.c 2011-07-01 16:03:49.000000000 +0200
-+++ head-2011-06-30/drivers/xen/tmem.c 2011-07-04 10:35:27.000000000 +0200
-@@ -1,7 +1,7 @@
- /*
- * Xen implementation for transcendent memory (tmem)
- *
-- * Copyright (C) 2009-2010 Oracle Corp. All rights reserved.
-+ * Copyright (C) 2009-2011 Oracle Corp. All rights reserved.
- * Author: Dan Magenheimer
- */
-
-@@ -9,8 +9,14 @@
- #include <linux/types.h>
- #include <linux/init.h>
- #include <linux/pagemap.h>
-+#include <linux/module.h>
- #include <linux/cleancache.h>
-
-+/* temporary ifdef until include/linux/frontswap.h is upstream */
-+#ifdef CONFIG_FRONTSWAP
-+#include <linux/frontswap.h>
-+#endif
-+
- #include <xen/xen.h>
- #include <xen/interface/xen.h>
- #include <xen/interface/tmem.h>
-@@ -109,14 +115,8 @@ static int xen_tmem_flush_object(u32 poo
- return xen_tmem_op(TMEM_FLUSH_OBJECT, pool_id, oid, 0, 0, 0, 0, 0);
- }
-
--static int xen_tmem_destroy_pool(u32 pool_id)
--{
-- struct tmem_oid oid = { { 0 } };
--
-- return xen_tmem_op(TMEM_DESTROY_POOL, pool_id, oid, 0, 0, 0, 0, 0);
--}
--
--int tmem_enabled;
-+int tmem_enabled __read_mostly;
-+EXPORT_SYMBOL(tmem_enabled);
-
- static int __init enable_tmem(char *s)
- {
-@@ -127,6 +127,13 @@ static int __init enable_tmem(char *s)
- __setup("tmem", enable_tmem);
-
- #ifdef CONFIG_CLEANCACHE
-+static int xen_tmem_destroy_pool(u32 pool_id)
-+{
-+ struct tmem_oid oid = { { 0 } };
-+
-+ return xen_tmem_op(TMEM_DESTROY_POOL, pool_id, oid, 0, 0, 0, 0, 0);
-+}
-+
- /* cleancache ops */
-
- static void tmem_cleancache_put_page(int pool, struct cleancache_filekey key,
-@@ -230,17 +237,152 @@ static struct cleancache_ops tmem_cleanc
- };
- #endif
-
--static int __init xen_tmem_init(void)
-+#ifdef CONFIG_FRONTSWAP
-+/* frontswap tmem operations */
-+
-+/* a single tmem poolid is used for all frontswap "types" (swapfiles) */
-+static int tmem_frontswap_poolid;
-+
-+/*
-+ * Swizzling increases objects per swaptype, increasing tmem concurrency
-+ * for heavy swaploads. Later, larger nr_cpus -> larger SWIZ_BITS
-+ */
-+#define SWIZ_BITS 4
-+#define SWIZ_MASK ((1 << SWIZ_BITS) - 1)
-+#define _oswiz(_type, _ind) ((_type << SWIZ_BITS) | (_ind & SWIZ_MASK))
-+#define iswiz(_ind) (_ind >> SWIZ_BITS)
-+
-+static inline struct tmem_oid oswiz(unsigned type, u32 ind)
-+{
-+ struct tmem_oid oid = { .oid = { 0 } };
-+ oid.oid[0] = _oswiz(type, ind);
-+ return oid;
-+}
-+
-+/* returns 0 if the page was successfully put into frontswap, -1 if not */
-+static int tmem_frontswap_put_page(unsigned type, pgoff_t offset,
-+ struct page *page)
-+{
-+ u64 ind64 = (u64)offset;
-+ u32 ind = (u32)offset;
-+ unsigned long pfn = page_to_pfn(page);
-+ int pool = tmem_frontswap_poolid;
-+ int ret;
-+
-+ if (pool < 0)
-+ return -1;
-+ if (ind64 != ind)
-+ return -1;
-+ mb(); /* ensure page is quiescent; tmem may address it with an alias */
-+ ret = xen_tmem_put_page(pool, oswiz(type, ind), iswiz(ind), pfn);
-+ /* translate Xen tmem return values to linux semantics */
-+ if (ret == 1)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+/* returns 0 if the page was successfully gotten from frontswap, -1 if
-+ * was not present (should never happen!) */
-+static int tmem_frontswap_get_page(unsigned type, pgoff_t offset,
-+ struct page *page)
-+{
-+ u64 ind64 = (u64)offset;
-+ u32 ind = (u32)offset;
-+ unsigned long pfn = page_to_pfn(page);
-+ int pool = tmem_frontswap_poolid;
-+ int ret;
-+
-+ if (pool < 0)
-+ return -1;
-+ if (ind64 != ind)
-+ return -1;
-+ ret = xen_tmem_get_page(pool, oswiz(type, ind), iswiz(ind), pfn);
-+ /* translate Xen tmem return values to linux semantics */
-+ if (ret == 1)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+/* flush a single page from frontswap */
-+static void tmem_frontswap_flush_page(unsigned type, pgoff_t offset)
- {
-- struct cleancache_ops old_ops;
-+ u64 ind64 = (u64)offset;
-+ u32 ind = (u32)offset;
-+ int pool = tmem_frontswap_poolid;
-
-+ if (pool < 0)
-+ return;
-+ if (ind64 != ind)
-+ return;
-+ (void) xen_tmem_flush_page(pool, oswiz(type, ind), iswiz(ind));
-+}
-+
-+/* flush all pages from the passed swaptype */
-+static void tmem_frontswap_flush_area(unsigned type)
-+{
-+ int pool = tmem_frontswap_poolid;
-+ int ind;
-+
-+ if (pool < 0)
-+ return;
-+ for (ind = SWIZ_MASK; ind >= 0; ind--)
-+ (void)xen_tmem_flush_object(pool, oswiz(type, ind));
-+}
-+
-+static void tmem_frontswap_init(unsigned ignored)
-+{
-+ struct tmem_pool_uuid private = TMEM_POOL_PRIVATE_UUID;
-+
-+ /* a single tmem poolid is used for all frontswap "types" (swapfiles) */
-+ if (tmem_frontswap_poolid < 0)
-+ tmem_frontswap_poolid =
-+ xen_tmem_new_pool(private, TMEM_POOL_PERSIST, PAGE_SIZE);
-+}
-+
-+static int use_frontswap = 1;
-+
-+static int __init no_frontswap(char *s)
-+{
-+ use_frontswap = 0;
-+ return 1;
-+}
-+
-+__setup("nofrontswap", no_frontswap);
-+
-+static struct frontswap_ops tmem_frontswap_ops = {
-+ .put_page = tmem_frontswap_put_page,
-+ .get_page = tmem_frontswap_get_page,
-+ .flush_page = tmem_frontswap_flush_page,
-+ .flush_area = tmem_frontswap_flush_area,
-+ .init = tmem_frontswap_init
-+};
-+#endif
-+
-+static int __init xen_tmem_init(void)
-+{
- if (!xen_domain())
- return 0;
-+#ifdef CONFIG_FRONTSWAP
-+ if (tmem_enabled && use_frontswap) {
-+ char *s = "";
-+ struct frontswap_ops old_ops =
-+ frontswap_register_ops(&tmem_frontswap_ops);
-+
-+ tmem_frontswap_poolid = -1;
-+ if (old_ops.init != NULL)
-+ s = " (WARNING: frontswap_ops overridden)";
-+ printk(KERN_INFO "frontswap enabled, RAM provided by "
-+ "Xen Transcendent Memory\n");
-+ }
-+#endif
- #ifdef CONFIG_CLEANCACHE
- BUILD_BUG_ON(sizeof(struct cleancache_filekey) != sizeof(struct tmem_oid));
- if (tmem_enabled && use_cleancache) {
- char *s = "";
-- old_ops = cleancache_register_ops(&tmem_cleancache_ops);
-+ struct cleancache_ops old_ops =
-+ cleancache_register_ops(&tmem_cleancache_ops);
- if (old_ops.init_fs != NULL)
- s = " (WARNING: cleancache_ops overridden)";
- printk(KERN_INFO "cleancache enabled, RAM provided by "
diff --git a/patches.xen/xen-ipi-per-cpu-irq b/patches.xen/xen-ipi-per-cpu-irq
index 175c2744b4..242fad8d39 100644
--- a/patches.xen/xen-ipi-per-cpu-irq
+++ b/patches.xen/xen-ipi-per-cpu-irq
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: fold IPIs onto a single IRQ each
Patch-mainline: n/a
---- head-2011-06-30.orig/arch/x86/include/asm/hw_irq.h 2011-04-13 14:05:37.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/hw_irq.h 2011-04-13 16:48:09.000000000 +0200
-@@ -156,7 +156,6 @@ extern void smp_error_interrupt(struct p
+--- head-2011-09-07.orig/arch/x86/include/asm/hw_irq.h 2011-09-07 16:07:24.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/hw_irq.h 2011-09-09 15:52:40.000000000 +0200
+@@ -155,7 +155,6 @@ extern void smp_error_interrupt(struct p
extern asmlinkage void smp_irq_move_cleanup_interrupt(void);
#endif
#ifdef CONFIG_SMP
@@ -12,7 +12,7 @@ Patch-mainline: n/a
extern void smp_reschedule_interrupt(struct pt_regs *);
extern void smp_call_function_interrupt(struct pt_regs *);
extern void smp_call_function_single_interrupt(struct pt_regs *);
-@@ -165,13 +164,9 @@ extern void smp_invalidate_interrupt(str
+@@ -164,13 +163,9 @@ extern void smp_invalidate_interrupt(str
#else
extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *);
#endif
@@ -29,8 +29,8 @@ Patch-mainline: n/a
#endif
#endif
---- head-2011-06-30.orig/arch/x86/kernel/apic/ipi-xen.c 2011-03-18 11:29:10.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/apic/ipi-xen.c 2011-03-18 11:29:49.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/apic/ipi-xen.c 2011-03-18 11:29:10.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/apic/ipi-xen.c 2011-03-18 11:29:49.000000000 +0100
@@ -7,25 +7,6 @@
#ifdef CONFIG_SMP
#include <xen/evtchn.h>
@@ -83,8 +83,8 @@ Patch-mainline: n/a
+ notify_remote_via_ipi(vector, smp_processor_id());
}
#endif
---- head-2011-06-30.orig/arch/x86/kernel/irq_work-xen.c 2011-02-03 11:19:35.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/irq_work-xen.c 2011-02-03 13:56:43.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/irq_work-xen.c 2011-02-03 11:19:35.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/irq_work-xen.c 2011-02-03 13:56:43.000000000 +0100
@@ -8,12 +8,10 @@
#include <asm/ipi.h>
@@ -99,8 +99,8 @@ Patch-mainline: n/a
}
void arch_irq_work_raise(void)
---- head-2011-06-30.orig/arch/x86/kernel/smp-xen.c 2011-07-01 15:47:44.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/smp-xen.c 2011-07-04 10:22:35.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/smp-xen.c 2011-07-01 15:47:44.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/smp-xen.c 2011-07-04 10:22:35.000000000 +0200
@@ -136,11 +136,9 @@ void xen_send_call_func_ipi(const struct
* this function calls the 'stop' function on all other CPUs in the system.
*/
@@ -143,8 +143,8 @@ Patch-mainline: n/a
-
- return IRQ_HANDLED;
}
---- head-2011-06-30.orig/drivers/xen/core/evtchn.c 2011-04-14 13:58:21.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/evtchn.c 2011-04-14 14:02:49.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-04-14 13:58:21.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-14 14:02:49.000000000 +0200
@@ -59,6 +59,20 @@ static DEFINE_SPINLOCK(irq_mapping_updat
static int evtchn_to_irq[NR_EVENT_CHANNELS] = {
[0 ... NR_EVENT_CHANNELS-1] = -1 };
@@ -654,8 +654,8 @@ Patch-mainline: n/a
if (irq >= 0) {
BUG_ON(type_from_irq_cfg(cfg) != IRQT_UNBOUND);
cfg->bindcount++;
---- head-2011-06-30.orig/drivers/xen/core/smpboot.c 2011-03-03 16:13:04.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/smpboot.c 2011-03-03 16:14:20.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-03-03 16:13:04.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-03-03 16:14:20.000000000 +0100
@@ -36,19 +36,7 @@ cpumask_var_t vcpu_initialized_mask;
DEFINE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info);
EXPORT_PER_CPU_SYMBOL(cpu_info);
@@ -835,8 +835,8 @@ Patch-mainline: n/a
xen_spinlock_cleanup(cpu);
}
#endif
---- head-2011-06-30.orig/include/xen/evtchn.h 2010-11-23 15:07:01.000000000 +0100
-+++ head-2011-06-30/include/xen/evtchn.h 2011-02-02 15:09:43.000000000 +0100
+--- head-2011-09-07.orig/include/xen/evtchn.h 2010-11-23 15:07:01.000000000 +0100
++++ head-2011-09-07/include/xen/evtchn.h 2011-02-02 15:09:43.000000000 +0100
@@ -94,6 +94,8 @@ int bind_virq_to_irqhandler(
unsigned long irqflags,
const char *devname,
diff --git a/patches.xen/xen-kconfig-compat b/patches.xen/xen-kconfig-compat
index 5f11fef4ff..71daee3b02 100644
--- a/patches.xen/xen-kconfig-compat
+++ b/patches.xen/xen-kconfig-compat
@@ -2,8 +2,8 @@ From: jbeulich@novell.com
Subject: add backward-compatibility configure options
Patch-mainline: n/a
---- head-2011-04-11.orig/drivers/xen/Kconfig 2011-04-11 15:09:58.000000000 +0200
-+++ head-2011-04-11/drivers/xen/Kconfig 2011-04-11 15:10:40.000000000 +0200
+--- head-2011-08-09.orig/drivers/xen/Kconfig 2011-04-11 15:09:58.000000000 +0200
++++ head-2011-08-09/drivers/xen/Kconfig 2011-04-11 15:10:40.000000000 +0200
@@ -328,6 +328,21 @@ choice
config XEN_COMPAT_030100_AND_LATER
bool "3.1.0 and later"
diff --git a/patches.xen/xen-kzalloc b/patches.xen/xen-kzalloc
index d5092ed29c..cf50fabeea 100644
--- a/patches.xen/xen-kzalloc
+++ b/patches.xen/xen-kzalloc
@@ -4,8 +4,8 @@ Patch-mainline: n/a
Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
---- head-2011-06-30.orig/arch/x86/mm/init_32-xen.c 2011-07-01 15:19:35.000000000 +0200
-+++ head-2011-06-30/arch/x86/mm/init_32-xen.c 2011-07-04 12:15:21.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/init_32-xen.c 2011-07-01 15:19:35.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_32-xen.c 2011-07-04 12:15:21.000000000 +0200
@@ -725,7 +725,7 @@ unsigned long __init extend_init_mapping
if (pmd_none(*pmd)) {
unsigned long pa = start_pfn++ << PAGE_SHIFT;
@@ -15,9 +15,9 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
make_lowmem_page_readonly(__va(pa),
XENFEAT_writable_page_tables);
xen_l2_entry_update(pmd, __pmd(pa | _KERNPG_TABLE));
---- head-2011-06-30.orig/arch/x86/mm/init_64-xen.c 2011-07-01 15:19:35.000000000 +0200
-+++ head-2011-06-30/arch/x86/mm/init_64-xen.c 2011-04-13 16:54:38.000000000 +0200
-@@ -213,7 +213,7 @@ static __ref void *spp_getpage(void)
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-08-09 11:14:57.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-08-09 11:16:50.000000000 +0200
+@@ -214,7 +214,7 @@ static __ref void *spp_getpage(void)
else if (pgt_buf_end < pgt_buf_top) {
ptr = __va(pgt_buf_end << PAGE_SHIFT);
pgt_buf_end++;
@@ -26,9 +26,9 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
} else
ptr = alloc_bootmem_pages(PAGE_SIZE);
---- head-2011-06-30.orig/drivers/xen/blkback/blkback.c 2011-04-14 17:16:19.000000000 +0200
-+++ head-2011-06-30/drivers/xen/blkback/blkback.c 2011-04-14 17:21:11.000000000 +0200
-@@ -639,7 +639,7 @@ static int __init blkif_init(void)
+--- head-2011-09-07.orig/drivers/xen/blkback/blkback.c 2011-09-09 15:50:37.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/blkback.c 2011-09-09 15:54:53.000000000 +0200
+@@ -651,7 +651,7 @@ static int __init blkif_init(void)
mmap_pages = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST;
@@ -37,7 +37,7 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
blkif_reqs, GFP_KERNEL);
pending_grant_handles = kmalloc(sizeof(pending_grant_handles[0]) *
mmap_pages, GFP_KERNEL);
-@@ -656,7 +656,6 @@ static int __init blkif_init(void)
+@@ -668,7 +668,6 @@ static int __init blkif_init(void)
blkif_interface_init();
@@ -45,8 +45,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
INIT_LIST_HEAD(&pending_free);
for (i = 0; i < blkif_reqs; i++)
---- head-2011-06-30.orig/drivers/xen/core/gnttab.c 2011-04-14 17:21:05.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/gnttab.c 2011-02-02 15:10:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/gnttab.c 2011-04-14 17:21:05.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/gnttab.c 2011-02-02 15:10:16.000000000 +0100
@@ -546,7 +546,7 @@ int gnttab_copy_grant_page(grant_ref_t r
new_addr = page_address(new_page);
@@ -56,8 +56,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
pfn = page_to_pfn(page);
mfn = pfn_to_mfn(pfn);
---- head-2011-06-30.orig/drivers/xen/core/machine_reboot.c 2011-07-04 10:25:00.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/machine_reboot.c 2011-04-14 17:32:26.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/machine_reboot.c 2011-07-04 10:25:00.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/machine_reboot.c 2011-04-14 17:32:26.000000000 +0200
@@ -98,7 +98,7 @@ static void post_suspend(int suspend_can
BUG();
HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
@@ -67,8 +67,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
fpp = PAGE_SIZE/sizeof(unsigned long);
for (i = 0, j = 0, k = -1; i < max_pfn; i += fpp, j++) {
---- head-2011-06-30.orig/drivers/xen/core/smpboot.c 2011-02-07 12:28:20.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/smpboot.c 2011-02-02 15:10:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-02-07 12:28:20.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-02-02 15:10:16.000000000 +0100
@@ -176,17 +176,12 @@ static void __cpuinit cpu_initialize_con
ctxt.flags = VGCF_IN_KERNEL;
ctxt.user_regs.ds = __USER_DS;
@@ -87,8 +87,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
ctxt.gdt_frames[0] = arbitrary_virt_to_mfn(get_cpu_gdt_table(cpu));
ctxt.gdt_ents = GDT_SIZE / 8;
---- head-2011-06-30.orig/drivers/xen/netback/interface.c 2011-07-04 10:36:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/netback/interface.c 2011-07-04 12:15:32.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netback/interface.c 2011-07-04 10:36:53.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/interface.c 2011-07-04 12:15:32.000000000 +0200
@@ -215,7 +215,6 @@ netif_t *netif_alloc(struct device *pare
SET_NETDEV_DEV(dev, parent);
@@ -97,8 +97,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
netif->domid = domid;
netif->group = UINT_MAX;
netif->handle = handle;
---- head-2011-06-30.orig/drivers/xen/scsiback/emulate.c 2011-02-08 10:04:09.000000000 +0100
-+++ head-2011-06-30/drivers/xen/scsiback/emulate.c 2011-02-08 10:45:57.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/scsiback/emulate.c 2011-02-08 10:04:09.000000000 +0100
++++ head-2011-09-07/drivers/xen/scsiback/emulate.c 2011-02-08 10:45:57.000000000 +0100
@@ -243,13 +243,11 @@ static void __report_luns(pending_req_t
alloc_len = sizeof(struct scsi_lun) * alloc_luns
+ VSCSI_REPORT_LUNS_HEADER;
@@ -114,8 +114,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
one_lun = (struct scsi_lun *) &buff[8];
spin_lock_irqsave(&info->v2p_lock, flags);
list_for_each_entry(entry, head, l) {
---- head-2011-06-30.orig/drivers/xen/scsiback/scsiback.c 2011-04-11 15:06:01.000000000 +0200
-+++ head-2011-06-30/drivers/xen/scsiback/scsiback.c 2011-04-13 16:54:02.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/scsiback/scsiback.c 2011-04-11 15:06:01.000000000 +0200
++++ head-2011-09-07/drivers/xen/scsiback/scsiback.c 2011-04-13 16:54:02.000000000 +0200
@@ -670,7 +670,7 @@ static int __init scsiback_init(void)
mmap_pages = vscsiif_reqs * VSCSIIF_SG_TABLESIZE;
@@ -133,8 +133,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
INIT_LIST_HEAD(&pending_free);
for (i = 0; i < vscsiif_reqs; i++)
---- head-2011-06-30.orig/drivers/xen/sfc_netutil/accel_cuckoo_hash.c 2011-02-01 15:03:03.000000000 +0100
-+++ head-2011-06-30/drivers/xen/sfc_netutil/accel_cuckoo_hash.c 2011-02-02 15:10:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/sfc_netutil/accel_cuckoo_hash.c 2011-02-01 15:03:03.000000000 +0100
++++ head-2011-09-07/drivers/xen/sfc_netutil/accel_cuckoo_hash.c 2011-02-02 15:10:16.000000000 +0100
@@ -77,7 +77,7 @@ int cuckoo_hash_init(cuckoo_hash_table *
BUG_ON(length_bits >= sizeof(unsigned) * 8);
BUG_ON(key_length > sizeof(cuckoo_hash_key));
@@ -154,8 +154,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
return 0;
}
EXPORT_SYMBOL_GPL(cuckoo_hash_init);
---- head-2011-06-30.orig/drivers/xen/tpmback/interface.c 2011-04-11 15:00:49.000000000 +0200
-+++ head-2011-06-30/drivers/xen/tpmback/interface.c 2011-04-13 16:54:02.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/tpmback/interface.c 2011-04-11 15:00:49.000000000 +0200
++++ head-2011-09-07/drivers/xen/tpmback/interface.c 2011-04-13 16:54:02.000000000 +0200
@@ -94,7 +94,7 @@ int tpmif_map(tpmif_t *tpmif, grant_ref_
tpmif->tx_area = area;
@@ -165,8 +165,8 @@ Also use clear_page() in favor of memset(, 0, PAGE_SIZE).
err = bind_interdomain_evtchn_to_irqhandler(
tpmif->domid, evtchn, tpmif_be_int, 0, tpmif->devname, tpmif);
---- head-2011-06-30.orig/drivers/xen/usbback/usbback.c 2011-04-11 15:05:47.000000000 +0200
-+++ head-2011-06-30/drivers/xen/usbback/usbback.c 2011-04-13 16:54:02.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/usbback/usbback.c 2011-04-11 15:05:47.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbback/usbback.c 2011-04-13 16:54:02.000000000 +0200
@@ -1142,7 +1142,7 @@ static int __init usbback_init(void)
return -ENODEV;
diff --git a/patches.xen/xen-mem-hotplug b/patches.xen/xen-mem-hotplug
index d7aea3f42a..1d1201005e 100644
--- a/patches.xen/xen-mem-hotplug
+++ b/patches.xen/xen-mem-hotplug
@@ -90,7 +90,7 @@ Acked-by: jbeulich@novell.com
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ head-2011-06-30/drivers/xen/core/acpi_memhotplug.c 2011-02-02 15:10:06.000000000 +0100
-@@ -0,0 +1,192 @@
+@@ -0,0 +1,190 @@
+/*
+ * xen_acpi_memhotplug.c - interface to notify Xen on memory device hotadd
+ *
@@ -137,11 +137,9 @@ Acked-by: jbeulich@novell.com
+
+static int xen_hyper_addmem(struct xen_hotmem_entry *entry)
+{
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_mem_hotadd,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ };
++ xen_platform_op_t op;
+
++ op.cmd = XENPF_mem_hotadd;
+ op.u.mem_add.spfn = entry->start >> PAGE_SHIFT;
+ op.u.mem_add.epfn = entry->end >> PAGE_SHIFT;
+ op.u.mem_add.flags = entry->flags;
diff --git a/patches.xen/xen-op-packet b/patches.xen/xen-op-packet
index a1e2a60488..8a67fec015 100644
--- a/patches.xen/xen-op-packet
+++ b/patches.xen/xen-op-packet
@@ -3,28 +3,30 @@ Subject: add support for new operation type BLKIF_OP_PACKET
Patch-mainline: n/a
References: fate#300964
---- head-2011-07-21.orig/drivers/xen/blkback/blkback.c 2011-04-14 17:15:22.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkback/blkback.c 2011-04-14 17:16:19.000000000 +0200
-@@ -194,13 +194,15 @@ static void fast_flush_area(pending_req_
-
+--- head-2011-09-07.orig/drivers/xen/blkback/blkback.c 2011-09-08 18:01:23.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/blkback.c 2011-09-09 15:50:37.000000000 +0200
+@@ -195,16 +195,17 @@ static void fast_flush_area(pending_req_
static void print_stats(blkif_t *blkif)
{
-- printk(KERN_DEBUG "%s: oo %3d | rd %4d | wr %4d | br %4d\n",
-+ printk(KERN_DEBUG "%s: oo %3d | rd %4d | wr %4d | br %4d | pk %4d\n",
+ printk(KERN_DEBUG "%s: oo %3d | rd %4d | wr %4d | br %4d"
+- " | fl %4d\n",
++ " | fl %4d | pk %4d\n",
current->comm, blkif->st_oo_req,
-- blkif->st_rd_req, blkif->st_wr_req, blkif->st_br_req);
-+ blkif->st_rd_req, blkif->st_wr_req, blkif->st_br_req,
-+ blkif->st_pk_req);
+ blkif->st_rd_req, blkif->st_wr_req,
+- blkif->st_br_req, blkif->st_fl_req);
++ blkif->st_br_req, blkif->st_fl_req, blkif->st_pk_req);
blkif->st_print = jiffies + msecs_to_jiffies(10 * 1000);
blkif->st_rd_req = 0;
blkif->st_wr_req = 0;
blkif->st_oo_req = 0;
+ blkif->st_br_req = 0;
+ blkif->st_fl_req = 0;
+ blkif->st_pk_req = 0;
}
int blkif_schedule(void *arg)
-@@ -365,6 +367,13 @@ static int do_block_io_op(blkif_t *blkif
- blkif->st_wr_req++;
+@@ -369,6 +370,13 @@ static int _do_block_io_op(blkif_t *blki
+ case BLKIF_OP_FLUSH_DISKCACHE:
dispatch_rw_block_io(blkif, &req, pending_req);
break;
+ case BLKIF_OP_PACKET:
@@ -37,18 +39,18 @@ References: fate#300964
default:
/* A good sign something is wrong: sleep for a while to
* avoid excessive CPU consumption by a bad guest. */
---- head-2011-07-21.orig/drivers/xen/blkback/common.h 2011-04-04 14:51:29.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkback/common.h 2011-04-04 14:51:59.000000000 +0200
-@@ -84,6 +84,7 @@ typedef struct blkif_st {
- int st_wr_req;
+--- head-2011-09-07.orig/drivers/xen/blkback/common.h 2011-09-09 15:43:07.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/common.h 2011-09-09 15:50:15.000000000 +0200
+@@ -86,6 +86,7 @@ typedef struct blkif_st {
int st_oo_req;
int st_br_req;
+ int st_fl_req;
+ int st_pk_req;
int st_rd_sect;
int st_wr_sect;
---- head-2011-07-21.orig/drivers/xen/blkfront/blkfront.c 2011-07-21 12:22:31.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkfront/blkfront.c 2011-07-21 12:32:39.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkfront/blkfront.c 2011-09-09 08:55:39.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/blkfront.c 2011-07-21 12:32:39.000000000 +0200
@@ -718,6 +718,8 @@ static int blkif_queue_request(struct re
if (req->cmd_flags & REQ_HARDBARRIER)
#endif
@@ -76,8 +78,8 @@ References: fate#300964
if (unlikely(bret->status != BLKIF_RSP_OKAY))
DPRINTK("Bad return from blkdev data "
"request: %x\n", bret->status);
---- head-2011-07-21.orig/drivers/xen/blktap/blktap.c 2011-07-04 10:15:07.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap/blktap.c 2011-07-04 10:17:28.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap/blktap.c 2011-07-04 10:15:07.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap/blktap.c 2011-07-04 10:17:28.000000000 +0200
@@ -1125,13 +1125,14 @@ static void fast_flush_area(pending_req_
static void print_stats(blkif_t *blkif)
@@ -107,8 +109,8 @@ References: fate#300964
default:
/* A good sign something is wrong: sleep for a while to
* avoid excessive CPU consumption by a bad guest. */
---- head-2011-07-21.orig/drivers/xen/blktap/common.h 2011-04-11 15:01:35.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap/common.h 2011-04-04 14:51:50.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap/common.h 2011-04-11 15:01:35.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap/common.h 2011-04-04 14:51:50.000000000 +0200
@@ -70,6 +70,7 @@ typedef struct blkif_st {
int st_rd_req;
int st_wr_req;
@@ -117,8 +119,8 @@ References: fate#300964
int st_rd_sect;
int st_wr_sect;
---- head-2011-07-21.orig/drivers/xen/blktap2/blktap.h 2011-04-11 15:10:09.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap2/blktap.h 2011-04-11 15:10:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap2/blktap.h 2011-04-11 15:10:09.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap2/blktap.h 2011-04-11 15:10:29.000000000 +0200
@@ -138,6 +138,7 @@ struct blktap_statistics {
int st_rd_req;
int st_wr_req;
@@ -127,8 +129,8 @@ References: fate#300964
int st_rd_sect;
int st_wr_sect;
s64 st_rd_cnt;
---- head-2011-07-21.orig/drivers/xen/blktap2/device.c 2011-02-07 14:13:37.000000000 +0100
-+++ head-2011-07-21/drivers/xen/blktap2/device.c 2010-11-23 15:06:50.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2/device.c 2011-02-07 14:13:37.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2/device.c 2010-11-23 15:06:50.000000000 +0100
@@ -366,7 +366,8 @@ blktap_device_fail_pending_requests(stru
BTERR("%u:%u: failing pending %s of %d pages\n",
@@ -167,8 +169,8 @@ References: fate#300964
tap->stats.st_wr_sect += nr_sects;
tap->stats.st_wr_req++;
} else {
---- head-2011-07-21.orig/drivers/xen/blktap2-new/blktap.h 2011-02-24 16:01:23.000000000 +0100
-+++ head-2011-07-21/drivers/xen/blktap2-new/blktap.h 2011-04-11 15:10:27.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/blktap.h 2011-02-24 16:01:23.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/blktap.h 2011-04-11 15:10:27.000000000 +0200
@@ -111,6 +111,7 @@ struct blktap_statistics {
int st_rd_req;
int st_wr_req;
@@ -177,8 +179,8 @@ References: fate#300964
int st_rd_sect;
int st_wr_sect;
s64 st_rd_cnt;
---- head-2011-07-21.orig/drivers/xen/blktap2-new/device.c 2011-03-11 00:00:00.000000000 +0100
-+++ head-2011-07-21/drivers/xen/blktap2-new/device.c 2011-03-11 11:09:10.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/device.c 2011-08-09 11:10:09.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap2-new/device.c 2011-03-11 11:09:10.000000000 +0100
@@ -189,6 +189,8 @@ blktap_device_make_request(struct blktap
request->rq = rq;
@@ -188,8 +190,8 @@ References: fate#300964
err = blktap_request_get_pages(tap, request, nsegs);
if (err)
---- head-2011-07-21.orig/drivers/xen/blktap2-new/ring.c 2011-04-11 15:10:17.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap2-new/ring.c 2011-02-24 15:39:28.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/ring.c 2011-04-11 15:10:17.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap2-new/ring.c 2011-02-24 15:39:28.000000000 +0100
@@ -153,11 +153,11 @@ blktap_ring_map_request(struct blktap *t
int seg, err = 0;
int write;
@@ -270,8 +272,8 @@ References: fate#300964
time->tv_sec, time->tv_usec);
}
---- head-2011-07-21.orig/include/xen/interface/io/blkif.h 2011-06-30 17:26:34.000000000 +0200
-+++ head-2011-07-21/include/xen/interface/io/blkif.h 2011-03-17 14:34:04.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/blkif.h 2011-06-30 17:26:34.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/blkif.h 2011-03-17 14:34:04.000000000 +0100
@@ -77,10 +77,9 @@
*/
#define BLKIF_OP_FLUSH_DISKCACHE 3
diff --git a/patches.xen/xen-pcpu-hotplug b/patches.xen/xen-pcpu-hotplug
index c1ce4f025c..4b31fd1321 100644
--- a/patches.xen/xen-pcpu-hotplug
+++ b/patches.xen/xen-pcpu-hotplug
@@ -29,9 +29,9 @@ jb: ported over glue logic; retry loops around XENPF_get_cpuinfo;
cleanup.
Acked-by: jbeulich@novell.com
---- head-2011-06-30.orig/arch/x86/kernel/acpi/processor_extcntl_xen.c 2010-10-06 17:04:43.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-02-02 15:09:57.000000000 +0100
-@@ -181,9 +181,67 @@ static int xen_tx_notifier(struct acpi_p
+--- head-2011-08-09.orig/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-08-15 11:07:43.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/acpi/processor_extcntl_xen.c 2011-02-02 15:09:57.000000000 +0100
+@@ -181,9 +181,65 @@ static int xen_tx_notifier(struct acpi_p
{
return -EINVAL;
}
@@ -46,9 +46,7 @@ Acked-by: jbeulich@novell.com
+ uint32_t apic_id;
+ int device_decl = 0;
+ unsigned long long pxm;
-+ xen_platform_op_t op = {
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ };
++ xen_platform_op_t op;
+
+ status = acpi_get_type(pr->handle, &type);
+ if (ACPI_FAILURE(status)) {
@@ -111,8 +109,8 @@ Acked-by: jbeulich@novell.com
if (pmbits & XEN_PROCESSOR_PM_CX)
xen_extcntl_ops.pm_ops[PM_TYPE_IDLE] = xen_cx_notifier;
if (pmbits & XEN_PROCESSOR_PM_PX)
---- head-2011-06-30.orig/drivers/acpi/processor_driver.c 2011-02-01 15:03:10.000000000 +0100
-+++ head-2011-06-30/drivers/acpi/processor_driver.c 2011-02-02 15:09:57.000000000 +0100
+--- head-2011-08-09.orig/drivers/acpi/processor_driver.c 2011-02-01 15:03:10.000000000 +0100
++++ head-2011-08-09/drivers/acpi/processor_driver.c 2011-02-02 15:09:57.000000000 +0100
@@ -82,7 +82,7 @@ MODULE_LICENSE("GPL");
static int acpi_processor_add(struct acpi_device *device);
static int acpi_processor_remove(struct acpi_device *device, int type);
@@ -184,8 +182,8 @@ Acked-by: jbeulich@novell.com
{
return AE_ERROR;
}
---- head-2011-06-30.orig/drivers/acpi/processor_extcntl.c 2011-02-01 15:03:03.000000000 +0100
-+++ head-2011-06-30/drivers/acpi/processor_extcntl.c 2011-02-02 15:09:57.000000000 +0100
+--- head-2011-08-09.orig/drivers/acpi/processor_extcntl.c 2011-02-01 15:03:03.000000000 +0100
++++ head-2011-08-09/drivers/acpi/processor_extcntl.c 2011-02-02 15:09:57.000000000 +0100
@@ -83,10 +83,13 @@ int processor_notify_external(struct acp
ret = processor_extcntl_ops->pm_ops[type](pr, event);
@@ -200,19 +198,19 @@ Acked-by: jbeulich@novell.com
default:
pr_err("Unsupported processor event %d.\n", event);
break;
---- head-2011-06-30.orig/drivers/xen/core/Makefile 2011-02-02 15:09:52.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/Makefile 2011-02-02 15:09:57.000000000 +0100
-@@ -5,6 +5,7 @@
+--- head-2011-08-09.orig/drivers/xen/core/Makefile 2011-08-18 11:16:50.000000000 +0200
++++ head-2011-08-09/drivers/xen/core/Makefile 2011-08-18 11:17:15.000000000 +0200
+@@ -4,6 +4,7 @@
+
obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o firmware.o
- obj-$(CONFIG_PCI) += pci.o
+obj-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
obj-$(CONFIG_PROC_FS) += xen_proc.o
obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor_sysfs.o
obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/drivers/xen/core/pcpu.c 2011-02-02 15:09:57.000000000 +0100
-@@ -0,0 +1,415 @@
++++ head-2011-08-09/drivers/xen/core/pcpu.c 2011-02-02 15:09:57.000000000 +0100
+@@ -0,0 +1,407 @@
+/*
+ * pcpu.c - management physical cpu in dom0 environment
+ */
@@ -252,23 +250,19 @@ Acked-by: jbeulich@novell.com
+
+static int xen_pcpu_down(uint32_t xen_id)
+{
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_cpu_offline,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ .u.cpu_ol.cpuid = xen_id,
-+ };
++ xen_platform_op_t op;
+
++ op.cmd = XENPF_cpu_offline;
++ op.u.cpu_ol.cpuid = xen_id;
+ return HYPERVISOR_platform_op(&op);
+}
+
+static int xen_pcpu_up(uint32_t xen_id)
+{
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_cpu_online,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ .u.cpu_ol.cpuid = xen_id,
-+ };
++ xen_platform_op_t op;
+
++ op.cmd = XENPF_cpu_online;
++ op.u.cpu_ol.cpuid = xen_id;
+ return HYPERVISOR_platform_op(&op);
+}
+
@@ -451,14 +445,12 @@ Acked-by: jbeulich@novell.com
+{
+ struct pcpu *pcpu;
+ struct xenpf_pcpuinfo *info;
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_get_cpuinfo,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ };
++ xen_platform_op_t op;
+ int ret;
+
+ *result = -1;
+
++ op.cmd = XENPF_get_cpuinfo;
+ info = &op.u.pcpu_info;
+ info->xen_cpuid = cpu_num;
+
@@ -575,12 +567,10 @@ Acked-by: jbeulich@novell.com
+int xen_pcpu_index(uint32_t id, bool is_acpiid)
+{
+ unsigned int cpu_num, max_id;
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_get_cpuinfo,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ };
++ xen_platform_op_t op;
+ struct xenpf_pcpuinfo *info = &op.u.pcpu_info;
+
++ op.cmd = XENPF_get_cpuinfo;
+ for (max_id = cpu_num = 0; cpu_num <= max_id; ++cpu_num) {
+ int ret;
+
@@ -628,8 +618,8 @@ Acked-by: jbeulich@novell.com
+ return err;
+}
+subsys_initcall(xen_pcpu_init);
---- head-2011-06-30.orig/include/acpi/processor.h 2011-02-01 15:03:10.000000000 +0100
-+++ head-2011-06-30/include/acpi/processor.h 2011-07-04 10:26:23.000000000 +0200
+--- head-2011-08-09.orig/include/acpi/processor.h 2011-02-01 15:03:10.000000000 +0100
++++ head-2011-08-09/include/acpi/processor.h 2011-07-04 10:26:23.000000000 +0200
@@ -502,6 +502,8 @@ static inline void xen_convert_psd_pack(
xpsd->num_processors = apsd->num_processors;
}
diff --git a/patches.xen/xen-setup-gsi b/patches.xen/xen-setup-gsi
index 4206e0cbbf..f1afcd3671 100644
--- a/patches.xen/xen-setup-gsi
+++ b/patches.xen/xen-setup-gsi
@@ -6,9 +6,9 @@ For Xen to be able to use non-legacy IRQs e.g. for its serial console,
it needs to know trigger mode and polarity for them regardless of
whether the kernel is also going to (try to) use those interrupts.
---- head-2011-06-30.orig/arch/x86/kernel/apic/io_apic-xen.c 2011-07-01 15:38:25.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/apic/io_apic-xen.c 2011-07-04 12:20:28.000000000 +0200
-@@ -1394,6 +1394,42 @@ static void setup_ioapic_irq(int apic_id
+--- head-2011-09-07.orig/arch/x86/kernel/apic/io_apic-xen.c 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/apic/io_apic-xen.c 2011-09-09 15:55:45.000000000 +0200
+@@ -1404,6 +1404,42 @@ static void setup_ioapic_irq(int apic_id
*/
if (irq < legacy_pic->nr_legacy_irqs && cpumask_test_cpu(0, cfg->domain))
apic->vector_allocation_domain(0, cfg->domain);
@@ -51,9 +51,9 @@ whether the kernel is also going to (try to) use those interrupts.
#endif
if (assign_irq_vector(irq, cfg, apic->target_cpus()))
---- head-2011-06-30.orig/drivers/acpi/pci_irq.c 2011-01-05 01:50:19.000000000 +0100
-+++ head-2011-06-30/drivers/acpi/pci_irq.c 2011-02-02 15:10:38.000000000 +0100
-@@ -469,3 +469,80 @@ void acpi_pci_irq_disable(struct pci_dev
+--- head-2011-09-07.orig/drivers/acpi/pci_irq.c 2011-09-07 13:56:14.000000000 +0200
++++ head-2011-09-07/drivers/acpi/pci_irq.c 2011-09-09 15:55:35.000000000 +0200
+@@ -527,3 +527,80 @@ void acpi_pci_irq_disable(struct pci_dev
dev_info(&dev->dev, "PCI INT %c disabled\n", pin_name(pin));
acpi_unregister_gsi(gsi);
}
diff --git a/patches.xen/xen-spinlock-poll-early b/patches.xen/xen-spinlock-poll-early
index 0e69294b10..e0449f55f4 100644
--- a/patches.xen/xen-spinlock-poll-early
+++ b/patches.xen/xen-spinlock-poll-early
@@ -6,9 +6,9 @@ This could be merged into the original ticket spinlock code once
validated, if there wasn't the dependency on smp-processor-id.h, which
only gets introduced in the 2.6.32 merge.
---- head-2011-06-30.orig/arch/x86/include/mach-xen/asm/spinlock.h 2011-07-12 11:15:37.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/spinlock.h 2011-07-12 11:16:28.000000000 +0200
-@@ -45,11 +45,12 @@
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/spinlock.h 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/spinlock.h 2011-09-09 15:54:13.000000000 +0200
+@@ -44,11 +44,12 @@
#ifdef TICKET_SHIFT
#include <asm/irqflags.h>
@@ -23,7 +23,7 @@ only gets introduced in the 2.6.32 merge.
unsigned int xen_spin_adjust(const arch_spinlock_t *, unsigned int token);
void xen_spin_kick(arch_spinlock_t *, unsigned int token);
-@@ -117,6 +118,9 @@ static __always_inline int __ticket_spin
+@@ -116,6 +117,9 @@ static __always_inline int __ticket_spin
:
: "memory", "cc");
@@ -33,7 +33,7 @@ only gets introduced in the 2.6.32 merge.
return tmp;
}
#elif TICKET_SHIFT == 16
-@@ -183,10 +187,15 @@ static __always_inline int __ticket_spin
+@@ -182,10 +186,15 @@ static __always_inline int __ticket_spin
:
: "memory", "cc");
@@ -49,7 +49,7 @@ only gets introduced in the 2.6.32 merge.
static inline int __ticket_spin_is_locked(arch_spinlock_t *lock)
{
int tmp = ACCESS_ONCE(lock->slock);
-@@ -208,16 +217,18 @@ static __always_inline void __ticket_spi
+@@ -207,16 +216,18 @@ static __always_inline void __ticket_spi
bool free;
__ticket_spin_lock_preamble;
@@ -76,7 +76,7 @@ only gets introduced in the 2.6.32 merge.
}
static __always_inline void __ticket_spin_lock_flags(arch_spinlock_t *lock,
-@@ -227,13 +238,15 @@ static __always_inline void __ticket_spi
+@@ -226,13 +237,15 @@ static __always_inline void __ticket_spi
bool free;
__ticket_spin_lock_preamble;
@@ -99,7 +99,7 @@ only gets introduced in the 2.6.32 merge.
}
static __always_inline void __ticket_spin_unlock(arch_spinlock_t *lock)
-@@ -250,6 +263,7 @@ static __always_inline void __ticket_spi
+@@ -249,6 +262,7 @@ static __always_inline void __ticket_spi
#undef __ticket_spin_lock_preamble
#undef __ticket_spin_lock_body
#undef __ticket_spin_unlock_body
@@ -107,8 +107,8 @@ only gets introduced in the 2.6.32 merge.
#endif
#define __arch_spin(n) __ticket_spin_##n
---- head-2011-06-30.orig/arch/x86/include/mach-xen/asm/spinlock_types.h 2011-02-01 14:55:46.000000000 +0100
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/spinlock_types.h 2010-01-26 11:27:24.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/spinlock_types.h 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/spinlock_types.h 2010-01-26 11:27:24.000000000 +0100
@@ -26,6 +26,11 @@ typedef union {
# define TICKET_SHIFT 16
u16 cur, seq;
@@ -121,8 +121,8 @@ only gets introduced in the 2.6.32 merge.
#else
/*
* This differs from the pre-2.6.24 spinlock by always using xchgb
---- head-2011-06-30.orig/drivers/xen/core/spinlock.c 2011-04-13 16:49:13.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/spinlock.c 2011-04-14 17:50:59.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/spinlock.c 2011-04-13 16:49:13.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/spinlock.c 2011-04-14 17:50:59.000000000 +0200
@@ -39,6 +39,8 @@ int __cpuinit xen_spinlock_init(unsigned
struct evtchn_bind_ipi bind_ipi;
int rc;
diff --git a/patches.xen/xen-sys-suspend b/patches.xen/xen-sys-suspend
index b7c4cf3abe..63ce1eae30 100644
--- a/patches.xen/xen-sys-suspend
+++ b/patches.xen/xen-sys-suspend
@@ -4,9 +4,9 @@ Patch-mainline: n/a
... rather than calling just a few functions explicitly.
---- head-2011-06-30.orig/arch/x86/kernel/time-xen.c 2011-07-11 15:29:59.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/time-xen.c 2011-07-11 15:30:38.000000000 +0200
-@@ -72,6 +72,10 @@ DEFINE_PER_CPU(struct vcpu_runstate_info
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2011-09-12 10:55:04.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-09-12 11:05:10.000000000 +0200
+@@ -68,6 +68,10 @@ DEFINE_PER_CPU(struct vcpu_runstate_info
/* Must be signed, as it's compared with s64 quantities which can be -ve. */
#define NS_PER_TICK (1000000000LL/HZ)
@@ -17,7 +17,7 @@ Patch-mainline: n/a
/*
* GCC 4.3 can turn loops over an induction variable into division. We do
* not support arbitrary 64-bit division, and so must break the induction.
-@@ -598,6 +602,17 @@ void mark_tsc_unstable(char *reason)
+@@ -596,6 +600,17 @@ void mark_tsc_unstable(char *reason)
}
EXPORT_SYMBOL_GPL(mark_tsc_unstable);
@@ -35,7 +35,7 @@ Patch-mainline: n/a
static cycle_t cs_last;
static cycle_t xen_clocksource_read(struct clocksource *cs)
-@@ -634,11 +649,32 @@ static cycle_t xen_clocksource_read(stru
+@@ -632,11 +647,32 @@ static cycle_t xen_clocksource_read(stru
#endif
}
@@ -70,7 +70,7 @@ Patch-mainline: n/a
cs_last = local_clock();
}
-@@ -670,17 +706,6 @@ struct vcpu_runstate_info *setup_runstat
+@@ -668,17 +704,6 @@ struct vcpu_runstate_info *setup_runstat
return rs;
}
@@ -88,7 +88,7 @@ Patch-mainline: n/a
/* Dynamically-mapped IRQ. */
DEFINE_PER_CPU(int, timer_irq);
-@@ -697,10 +722,6 @@ static void setup_cpu0_timer_irq(void)
+@@ -695,10 +720,6 @@ static void setup_cpu0_timer_irq(void)
BUG_ON(per_cpu(timer_irq, 0) < 0);
}
@@ -99,7 +99,7 @@ Patch-mainline: n/a
static void __init _late_time_init(void)
{
update_wallclock(false);
-@@ -843,35 +864,6 @@ void xen_halt(void)
+@@ -841,35 +862,6 @@ void xen_halt(void)
VOID(HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL));
}
@@ -135,8 +135,8 @@ Patch-mainline: n/a
#ifdef CONFIG_SMP
static char timer_name[NR_CPUS][15];
---- head-2011-06-30.orig/drivers/xen/core/evtchn.c 2011-04-14 17:11:44.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/evtchn.c 2011-04-14 13:58:21.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-09-09 09:39:05.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-14 13:58:21.000000000 +0200
@@ -1085,6 +1085,8 @@ int xen_test_irq_pending(int irq)
}
@@ -188,8 +188,8 @@ Patch-mainline: n/a
#endif
int __init arch_early_irq_init(void)
---- head-2011-06-30.orig/drivers/xen/core/gnttab.c 2011-02-01 15:03:03.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/gnttab.c 2011-04-14 17:19:31.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/gnttab.c 2011-02-01 15:03:03.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/gnttab.c 2011-04-14 17:19:31.000000000 +0200
@@ -710,20 +710,35 @@ EXPORT_SYMBOL(gnttab_post_map_adjust);
int gnttab_resume(void)
{
@@ -242,8 +242,8 @@ Patch-mainline: n/a
return 0;
ini_nomem:
---- head-2011-06-30.orig/drivers/xen/core/machine_reboot.c 2011-02-01 15:03:10.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/machine_reboot.c 2011-07-04 10:19:56.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/machine_reboot.c 2011-02-01 15:03:10.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/machine_reboot.c 2011-07-04 10:19:56.000000000 +0200
@@ -7,6 +7,7 @@
#include <linux/sysrq.h>
#include <linux/stringify.h>
@@ -442,8 +442,8 @@ Patch-mainline: n/a
+ return err;
}
#endif
---- head-2011-06-30.orig/drivers/xen/core/spinlock.c 2011-03-03 16:11:45.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/spinlock.c 2011-04-13 16:38:13.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/spinlock.c 2011-03-03 16:11:45.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/spinlock.c 2011-04-13 16:38:13.000000000 +0200
@@ -60,7 +60,9 @@ void __cpuinit xen_spinlock_cleanup(unsi
}
@@ -474,8 +474,8 @@ Patch-mainline: n/a
#endif
static unsigned int spin_adjust(struct spinning *spinning,
---- head-2011-06-30.orig/include/xen/evtchn.h 2011-02-01 15:09:47.000000000 +0100
-+++ head-2011-06-30/include/xen/evtchn.h 2010-11-23 15:07:01.000000000 +0100
+--- head-2011-09-07.orig/include/xen/evtchn.h 2011-02-01 15:09:47.000000000 +0100
++++ head-2011-09-07/include/xen/evtchn.h 2010-11-23 15:07:01.000000000 +0100
@@ -109,7 +109,9 @@ int bind_ipi_to_irqhandler(
*/
void unbind_from_irqhandler(unsigned int irq, void *dev_id);
@@ -486,8 +486,8 @@ Patch-mainline: n/a
/* Entry point for notifications into Linux subsystems. */
asmlinkage void evtchn_do_upcall(struct pt_regs *regs);
---- head-2011-06-30.orig/include/xen/gnttab.h 2011-01-31 17:56:27.000000000 +0100
-+++ head-2011-06-30/include/xen/gnttab.h 2010-11-23 15:07:01.000000000 +0100
+--- head-2011-09-07.orig/include/xen/gnttab.h 2011-01-31 17:56:27.000000000 +0100
++++ head-2011-09-07/include/xen/gnttab.h 2010-11-23 15:07:01.000000000 +0100
@@ -111,8 +111,9 @@ static inline void __gnttab_dma_unmap_pa
void gnttab_reset_grant_page(struct page *page);
diff --git a/patches.xen/xen-unpriv-build b/patches.xen/xen-unpriv-build
index d8789b9f5c..9b367eef74 100644
--- a/patches.xen/xen-unpriv-build
+++ b/patches.xen/xen-unpriv-build
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: no need to build certain bits when building non-privileged kernel
Patch-mainline: n/a
---- head-2011-07-21.orig/arch/x86/Kconfig 2011-07-04 10:26:08.000000000 +0200
-+++ head-2011-07-21/arch/x86/Kconfig 2011-07-04 12:15:51.000000000 +0200
-@@ -661,6 +661,7 @@ config APB_TIMER
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-09 15:54:01.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-09 15:55:02.000000000 +0200
+@@ -692,6 +692,7 @@ config APB_TIMER
config DMI
default y
bool "Enable DMI scanning" if EXPERT
@@ -12,7 +12,7 @@ Patch-mainline: n/a
---help---
Enabled scanning of DMI to identify machine quirks. Say Y
here unless you have verified that your setup is not
-@@ -742,6 +743,7 @@ config AMD_IOMMU_STATS
+@@ -746,6 +747,7 @@ config CALGARY_IOMMU_ENABLED_BY_DEFAULT
# need this always selected by IOMMU for the VIA workaround
config SWIOTLB
def_bool y if X86_64 || XEN
@@ -20,7 +20,7 @@ Patch-mainline: n/a
---help---
Support for software bounce buffers used on x86-64 systems
which don't have a hardware IOMMU (e.g. the current generation
-@@ -1943,13 +1945,15 @@ config PCI_GOBIOS
+@@ -1944,13 +1946,15 @@ config PCI_GOBIOS
config PCI_GOMMCONFIG
bool "MMConfig"
@@ -37,7 +37,7 @@ Patch-mainline: n/a
config PCI_GOXEN_FE
bool "Xen PCI Frontend"
-@@ -1960,6 +1964,7 @@ config PCI_GOXEN_FE
+@@ -1961,6 +1965,7 @@ config PCI_GOXEN_FE
config PCI_GOANY
bool "Any"
@@ -45,7 +45,7 @@ Patch-mainline: n/a
endchoice
-@@ -2150,7 +2155,7 @@ endif # X86_32
+@@ -2135,7 +2140,7 @@ endif # X86_32
config AMD_NB
def_bool y
@@ -54,7 +54,7 @@ Patch-mainline: n/a
source "drivers/pcmcia/Kconfig"
-@@ -2220,7 +2225,9 @@ source "net/Kconfig"
+@@ -2205,7 +2210,9 @@ source "net/Kconfig"
source "drivers/Kconfig"
@@ -64,8 +64,8 @@ Patch-mainline: n/a
source "fs/Kconfig"
---- head-2011-07-21.orig/arch/x86/Kconfig.debug 2011-06-30 16:39:08.000000000 +0200
-+++ head-2011-07-21/arch/x86/Kconfig.debug 2011-07-21 12:33:36.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/Kconfig.debug 2011-06-30 16:39:08.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig.debug 2011-07-21 12:33:36.000000000 +0200
@@ -33,6 +33,7 @@ config X86_VERBOSE_BOOTUP
config EARLY_PRINTK
@@ -74,8 +74,8 @@ Patch-mainline: n/a
default y
---help---
Write kernel log output directly into the VGA buffer or to a serial
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/swiotlb.h 2011-02-01 15:09:47.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/swiotlb.h 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/swiotlb.h 2011-02-01 15:09:47.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/swiotlb.h 2011-02-02 15:10:34.000000000 +0100
@@ -1,4 +1,8 @@
#include_next <asm/swiotlb.h>
@@ -85,8 +85,8 @@ Patch-mainline: n/a
+
dma_addr_t swiotlb_map_single_phys(struct device *, phys_addr_t, size_t size,
int dir);
---- head-2011-07-21.orig/drivers/firmware/Kconfig 2010-11-23 16:20:20.000000000 +0100
-+++ head-2011-07-21/drivers/firmware/Kconfig 2011-04-13 16:55:00.000000000 +0200
+--- head-2011-09-07.orig/drivers/firmware/Kconfig 2010-11-23 16:20:20.000000000 +0100
++++ head-2011-09-07/drivers/firmware/Kconfig 2011-04-13 16:55:00.000000000 +0200
@@ -127,7 +127,7 @@ config DMI_SYSFS
config ISCSI_IBFT_FIND
@@ -96,8 +96,8 @@ Patch-mainline: n/a
default n
help
This option enables the kernel to find the region of memory
---- head-2011-07-21.orig/drivers/pci/Kconfig 2011-02-01 15:09:47.000000000 +0100
-+++ head-2011-07-21/drivers/pci/Kconfig 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Kconfig 2011-02-01 15:09:47.000000000 +0100
++++ head-2011-09-07/drivers/pci/Kconfig 2011-02-02 15:10:34.000000000 +0100
@@ -74,7 +74,7 @@ config PARAVIRT_XEN_PCIDEV_FRONTEND
config XEN_PCIDEV_FRONTEND
@@ -107,8 +107,8 @@ Patch-mainline: n/a
depends on PCI && XEN && (PCI_GOXEN_FE || PCI_GOANY || X86_64)
select HOTPLUG
help
---- head-2011-07-21.orig/drivers/video/Kconfig 2011-06-30 16:35:51.000000000 +0200
-+++ head-2011-07-21/drivers/video/Kconfig 2011-07-04 12:16:02.000000000 +0200
+--- head-2011-09-07.orig/drivers/video/Kconfig 2011-06-30 16:35:51.000000000 +0200
++++ head-2011-09-07/drivers/video/Kconfig 2011-07-04 12:16:02.000000000 +0200
@@ -745,7 +745,7 @@ config FB_UVESA
config FB_VESA
@@ -118,8 +118,8 @@ Patch-mainline: n/a
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---- head-2011-07-21.orig/drivers/xen/Kconfig 2011-04-14 11:28:14.000000000 +0200
-+++ head-2011-07-21/drivers/xen/Kconfig 2011-04-14 11:28:24.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-04-14 11:28:14.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-04-14 11:28:24.000000000 +0200
@@ -18,7 +18,8 @@ config XEN_PRIVILEGED_GUEST
Support for privileged operation (domain 0)
@@ -138,8 +138,8 @@ Patch-mainline: n/a
default XEN_PRIVILEGED_GUEST
help
Device for accessing (in user-space) pages that have been granted
---- head-2011-07-21.orig/drivers/xen/balloon/balloon.c 2010-11-25 13:47:01.000000000 +0100
-+++ head-2011-07-21/drivers/xen/balloon/balloon.c 2011-03-23 08:54:09.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/balloon/balloon.c 2010-11-25 13:47:01.000000000 +0100
++++ head-2011-09-07/drivers/xen/balloon/balloon.c 2011-03-23 08:54:09.000000000 +0100
@@ -656,6 +656,9 @@ void balloon_update_driver_allowance(lon
bs.driver_pages += delta;
balloon_unlock(flags);
@@ -179,8 +179,8 @@ Patch-mainline: n/a
EXPORT_SYMBOL_GPL(balloon_release_driver_page);
MODULE_LICENSE("Dual BSD/GPL");
---- head-2011-07-21.orig/drivers/xen/console/console.c 2011-02-01 15:04:27.000000000 +0100
-+++ head-2011-07-21/drivers/xen/console/console.c 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/console/console.c 2011-02-01 15:04:27.000000000 +0100
++++ head-2011-09-07/drivers/xen/console/console.c 2011-02-02 15:10:34.000000000 +0100
@@ -47,7 +47,6 @@
#include <linux/init.h>
#include <linux/console.h>
@@ -223,25 +223,22 @@ Patch-mainline: n/a
/******************** User-space console driver (/dev/console) ************/
---- head-2011-07-21.orig/drivers/xen/core/Makefile 2011-02-02 15:09:57.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/Makefile 2011-02-02 15:10:34.000000000 +0100
-@@ -2,10 +2,11 @@
+--- head-2011-09-07.orig/drivers/xen/core/Makefile 2011-08-18 11:17:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/Makefile 2011-08-18 11:17:50.000000000 +0200
+@@ -2,9 +2,10 @@
# Makefile for the linux kernel.
#
-obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o firmware.o
+obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o
--obj-$(CONFIG_PCI) += pci.o
--obj-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
-+priv-$(CONFIG_PCI) += pci.o
-+priv-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
-+obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o $(priv-y)
+ obj-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
++obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o
obj-$(CONFIG_PROC_FS) += xen_proc.o
obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor_sysfs.o
obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
---- head-2011-07-21.orig/drivers/xen/core/evtchn.c 2011-04-14 16:37:16.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/evtchn.c 2011-04-14 16:37:32.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-04-14 16:37:16.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-14 16:37:32.000000000 +0200
@@ -1834,6 +1834,7 @@ void evtchn_register_pirq(int irq)
"fasteoi");
}
@@ -258,8 +255,8 @@ Patch-mainline: n/a
int evtchn_get_xen_pirq(int irq)
{
---- head-2011-07-21.orig/drivers/xen/core/gnttab.c 2011-02-02 15:10:16.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/gnttab.c 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/gnttab.c 2011-02-02 15:10:16.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/gnttab.c 2011-02-02 15:10:34.000000000 +0100
@@ -436,8 +436,6 @@ static inline unsigned int max_nr_grant_
#ifdef CONFIG_XEN
@@ -289,8 +286,8 @@ Patch-mainline: n/a
#ifdef __HAVE_ARCH_PTE_SPECIAL
static unsigned int GNTMAP_pte_special;
---- head-2011-07-21.orig/drivers/xen/privcmd/Makefile 2007-07-10 09:42:30.000000000 +0200
-+++ head-2011-07-21/drivers/xen/privcmd/Makefile 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/privcmd/Makefile 2007-07-10 09:42:30.000000000 +0200
++++ head-2011-09-07/drivers/xen/privcmd/Makefile 2011-02-02 15:10:34.000000000 +0100
@@ -1,3 +1,3 @@
-
-obj-y += privcmd.o
@@ -298,8 +295,8 @@ Patch-mainline: n/a
+priv-$(CONFIG_COMPAT) := compat_privcmd.o
+obj-y := privcmd.o
+obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += $(priv-y)
---- head-2011-07-21.orig/drivers/xen/privcmd/privcmd.c 2011-02-01 15:09:47.000000000 +0100
-+++ head-2011-07-21/drivers/xen/privcmd/privcmd.c 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/privcmd/privcmd.c 2011-02-01 15:09:47.000000000 +0100
++++ head-2011-09-07/drivers/xen/privcmd/privcmd.c 2011-02-02 15:10:34.000000000 +0100
@@ -32,6 +32,9 @@
static struct proc_dir_entry *privcmd_intf;
static struct proc_dir_entry *capabilities_intf;
@@ -353,8 +350,8 @@ Patch-mainline: n/a
};
static int capabilities_read(char *page, char **start, off_t off,
---- head-2011-07-21.orig/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 15:03:17.000000000 +0200
-+++ head-2011-07-21/drivers/xen/xenbus/xenbus_comms.c 2011-04-01 10:23:25.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 15:03:17.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_comms.c 2011-04-01 10:23:25.000000000 +0200
@@ -52,12 +52,12 @@
static int xenbus_irq;
@@ -378,8 +375,8 @@ Patch-mainline: n/a
wake_up(&xb_waitq);
return IRQ_HANDLED;
}
---- head-2011-07-21.orig/drivers/xen/xenbus/xenbus_probe.c 2011-06-10 12:08:06.000000000 +0200
-+++ head-2011-07-21/drivers/xen/xenbus/xenbus_probe.c 2011-07-04 12:15:46.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_probe.c 2011-09-09 09:52:35.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_probe.c 2011-09-09 15:55:11.000000000 +0200
@@ -92,7 +92,11 @@ static unsigned long xen_store_mfn;
extern struct mutex xenwatch_mutex;
@@ -393,7 +390,7 @@ Patch-mainline: n/a
#if defined(CONFIG_XEN) || defined(MODULE)
static void wait_for_devices(struct xenbus_driver *xendrv);
-@@ -1066,7 +1070,13 @@ static void xenbus_reset_state(void)
+@@ -1048,7 +1052,13 @@ static void xenbus_reset_state(void)
}
#endif
@@ -408,9 +405,9 @@ Patch-mainline: n/a
{
BUG_ON(!is_xenstored_ready());
---- head-2011-07-21.orig/fs/compat_ioctl.c 2011-02-01 14:55:46.000000000 +0100
-+++ head-2011-07-21/fs/compat_ioctl.c 2011-02-02 15:10:34.000000000 +0100
-@@ -1481,7 +1481,7 @@ static long do_ioctl_trans(int fd, unsig
+--- head-2011-09-07.orig/fs/compat_ioctl.c 2011-09-07 16:00:52.000000000 +0200
++++ head-2011-09-07/fs/compat_ioctl.c 2011-09-09 15:55:19.000000000 +0200
+@@ -1487,7 +1487,7 @@ static long do_ioctl_trans(int fd, unsig
return do_video_stillpicture(fd, cmd, argp);
case VIDEO_SET_SPU_PALETTE:
return do_video_set_spu_palette(fd, cmd, argp);
@@ -419,8 +416,8 @@ Patch-mainline: n/a
case IOCTL_PRIVCMD_MMAP_32:
case IOCTL_PRIVCMD_MMAPBATCH_32:
case IOCTL_PRIVCMD_MMAPBATCH_V2_32:
---- head-2011-07-21.orig/include/xen/firmware.h 2007-07-02 08:16:19.000000000 +0200
-+++ head-2011-07-21/include/xen/firmware.h 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/include/xen/firmware.h 2007-07-02 08:16:19.000000000 +0200
++++ head-2011-09-07/include/xen/firmware.h 2011-02-02 15:10:34.000000000 +0100
@@ -5,6 +5,10 @@
void copy_edd(void);
#endif
@@ -432,8 +429,8 @@ Patch-mainline: n/a
+#endif
#endif /* __XEN_FIRMWARE_H__ */
---- head-2011-07-21.orig/include/xen/gnttab.h 2010-11-23 15:07:01.000000000 +0100
-+++ head-2011-07-21/include/xen/gnttab.h 2011-02-02 15:10:34.000000000 +0100
+--- head-2011-09-07.orig/include/xen/gnttab.h 2010-11-23 15:07:01.000000000 +0100
++++ head-2011-09-07/include/xen/gnttab.h 2011-02-02 15:10:34.000000000 +0100
@@ -104,7 +104,11 @@ void gnttab_grant_foreign_transfer_ref(g
unsigned long pfn);
diff --git a/patches.xen/xen-virq-per-cpu-irq b/patches.xen/xen-virq-per-cpu-irq
index 827d44eb5a..10a0dce7e5 100644
--- a/patches.xen/xen-virq-per-cpu-irq
+++ b/patches.xen/xen-virq-per-cpu-irq
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: fold per-CPU VIRQs onto a single IRQ each
Patch-mainline: n/a
---- head-2011-06-30.orig/arch/x86/kernel/time-xen.c 2011-07-11 15:30:38.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/time-xen.c 2011-07-11 15:30:50.000000000 +0200
-@@ -707,19 +707,17 @@ struct vcpu_runstate_info *setup_runstat
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2011-09-12 11:05:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-09-12 11:05:20.000000000 +0200
+@@ -705,19 +705,17 @@ struct vcpu_runstate_info *setup_runstat
}
/* Dynamically-mapped IRQ. */
@@ -32,7 +32,7 @@ Patch-mainline: n/a
}
static void __init _late_time_init(void)
-@@ -865,8 +863,6 @@ void xen_halt(void)
+@@ -863,8 +861,6 @@ void xen_halt(void)
}
#ifdef CONFIG_SMP
@@ -41,7 +41,7 @@ Patch-mainline: n/a
int __cpuinit local_setup_timer(unsigned int cpu)
{
int seq, irq;
-@@ -892,16 +888,10 @@ int __cpuinit local_setup_timer(unsigned
+@@ -890,16 +886,10 @@ int __cpuinit local_setup_timer(unsigned
init_missing_ticks_accounting(cpu);
} while (read_seqretry(&xtime_lock, seq));
@@ -60,7 +60,7 @@ Patch-mainline: n/a
return 0;
}
-@@ -909,7 +899,7 @@ int __cpuinit local_setup_timer(unsigned
+@@ -907,7 +897,7 @@ int __cpuinit local_setup_timer(unsigned
void __cpuinit local_teardown_timer(unsigned int cpu)
{
BUG_ON(cpu == 0);
@@ -69,8 +69,8 @@ Patch-mainline: n/a
}
#endif
---- head-2011-06-30.orig/drivers/xen/core/evtchn.c 2011-04-14 14:02:49.000000000 +0200
-+++ head-2011-06-30/drivers/xen/core/evtchn.c 2011-04-14 16:36:14.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-04-14 14:02:49.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-14 16:36:14.000000000 +0200
@@ -59,6 +59,23 @@ static DEFINE_SPINLOCK(irq_mapping_updat
static int evtchn_to_irq[NR_EVENT_CHANNELS] = {
[0 ... NR_EVENT_CHANNELS-1] = -1 };
@@ -530,8 +530,8 @@ Patch-mainline: n/a
init_evtchn_cpu_bindings();
#ifdef CONFIG_SPARSE_IRQ
---- head-2011-06-30.orig/drivers/xen/core/smpboot.c 2011-03-03 16:14:20.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/smpboot.c 2011-04-14 16:36:14.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-03-03 16:14:20.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-04-14 16:36:14.000000000 +0200
@@ -125,7 +125,7 @@ static int __cpuinit xen_smp_intr_init(u
fail:
xen_spinlock_cleanup(cpu);
@@ -550,8 +550,8 @@ Patch-mainline: n/a
xen_spinlock_cleanup(cpu);
}
#endif
---- head-2011-06-30.orig/drivers/xen/netback/netback.c 2011-04-13 17:01:32.000000000 +0200
-+++ head-2011-06-30/drivers/xen/netback/netback.c 2011-04-13 16:48:30.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netback/netback.c 2011-09-09 08:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/netback.c 2011-04-13 16:48:30.000000000 +0200
@@ -1633,6 +1633,12 @@ static irqreturn_t netif_be_dbg(int irq,
return IRQ_HANDLED;
@@ -581,8 +581,8 @@ Patch-mainline: n/a
#endif
return 0;
---- head-2011-06-30.orig/drivers/xen/xenoprof/xenoprofile.c 2011-04-15 12:46:57.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenoprof/xenoprofile.c 2011-04-15 12:47:52.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenoprof/xenoprofile.c 2011-04-15 12:46:57.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenoprof/xenoprofile.c 2011-04-15 12:47:52.000000000 +0200
@@ -198,6 +198,11 @@ static irqreturn_t xenoprof_ovf_interrup
return IRQ_HANDLED;
}
@@ -618,8 +618,8 @@ Patch-mainline: n/a
if (result < 0) {
unbind_virq();
---- head-2011-06-30.orig/include/xen/evtchn.h 2011-02-02 15:09:43.000000000 +0100
-+++ head-2011-06-30/include/xen/evtchn.h 2010-11-23 16:18:23.000000000 +0100
+--- head-2011-09-07.orig/include/xen/evtchn.h 2011-02-02 15:09:43.000000000 +0100
++++ head-2011-09-07/include/xen/evtchn.h 2010-11-23 16:18:23.000000000 +0100
@@ -94,6 +94,17 @@ int bind_virq_to_irqhandler(
unsigned long irqflags,
const char *devname,
diff --git a/patches.xen/xen-x86-EFI b/patches.xen/xen-x86-EFI
index 070dd4cc62..c1c0cde744 100644
--- a/patches.xen/xen-x86-EFI
+++ b/patches.xen/xen-x86-EFI
@@ -3,9 +3,9 @@ From: jbeulich@novell.com
Patch-mainline: n/a
References: fate#311376, fate#311529, bnc#578927, bnc#628554
---- head-2011-07-21.orig/arch/x86/Kconfig 2011-07-04 12:31:30.000000000 +0200
-+++ head-2011-07-21/arch/x86/Kconfig 2011-07-04 12:31:53.000000000 +0200
-@@ -1502,7 +1502,7 @@ config ARCH_USES_PG_UNCACHED
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-09 15:58:52.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-09 15:58:58.000000000 +0200
+@@ -1503,7 +1503,7 @@ config ARCH_USES_PG_UNCACHED
config EFI
bool "EFI runtime service support"
@@ -14,8 +14,8 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
---help---
This enables the kernel to use EFI runtime services that are
available (such as the EFI variable services).
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/setup.h 2011-02-01 14:54:13.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:32:43.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/setup.h 2011-02-01 14:54:13.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:32:43.000000000 +0200
@@ -3,6 +3,12 @@
void xen_start_kernel(void);
void xen_arch_setup(void);
@@ -29,8 +29,8 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
#endif
#include_next <asm/setup.h>
---- head-2011-07-21.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:41:22.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup-xen.c 2011-07-21 12:45:13.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:41:22.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/setup-xen.c 2011-07-21 12:45:13.000000000 +0200
@@ -919,6 +919,8 @@ void __init setup_arch(char **cmdline_p)
xen_start_info->console.dom0.info_size);
xen_start_info->console.domU.mfn = 0;
@@ -40,14 +40,14 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
} else
screen_info.orig_video_isVGA = 0;
copy_edid();
---- head-2011-07-21.orig/arch/x86/platform/efi/Makefile 2011-07-21 11:59:58.000000000 +0200
-+++ head-2011-07-21/arch/x86/platform/efi/Makefile 2011-06-09 17:06:13.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/platform/efi/Makefile 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/arch/x86/platform/efi/Makefile 2011-06-09 17:06:13.000000000 +0200
@@ -1 +1,2 @@
obj-$(CONFIG_EFI) += efi.o efi_$(BITS).o efi_stub_$(BITS).o
+disabled-obj-$(CONFIG_XEN) := efi_%$(BITS).o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/arch/x86/platform/efi/efi-xen.c 2011-07-01 16:16:55.000000000 +0200
-@@ -0,0 +1,432 @@
++++ head-2011-09-07/arch/x86/platform/efi/efi-xen.c 2011-09-07 16:36:55.000000000 +0200
+@@ -0,0 +1,467 @@
+/*
+ * Common EFI (Extensible Firmware Interface) support functions
+ * Based on Extensible Firmware Interface Specification version 1.0
@@ -230,7 +230,7 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+
+static efi_status_t xen_efi_set_variable(efi_char16_t *name,
+ efi_guid_t *vendor,
-+ unsigned long attr,
++ u32 attr,
+ unsigned long data_size,
+ void *data)
+{
@@ -247,6 +247,17 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+ return HYPERVISOR_platform_op(&op) ? EFI_UNSUPPORTED : call.status;
+}
+
++static efi_status_t xen_efi_query_variable_info(u32 attr,
++ u64 *storage_space,
++ u64 *remaining_space,
++ u64 *max_variable_size)
++{
++ if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
++ return EFI_UNSUPPORTED;
++
++ return EFI_UNSUPPORTED;//todo
++}
++
+static efi_status_t xen_efi_get_next_high_mono_count(u32 *count)
+{
+ int err;
@@ -261,6 +272,27 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+ return call.status;
+}
+
++static efi_status_t xen_efi_update_capsule(efi_capsule_header_t **capsules,
++ unsigned long count,
++ unsigned long sg_list)
++{
++ if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
++ return EFI_UNSUPPORTED;
++
++ return EFI_UNSUPPORTED;//todo
++}
++
++static efi_status_t xen_efi_query_capsule_caps(efi_capsule_header_t **capsules,
++ unsigned long count,
++ u64 *max_size,
++ int *reset_type)
++{
++ if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
++ return EFI_UNSUPPORTED;
++
++ return EFI_UNSUPPORTED;//todo
++}
++
+#undef DECLARE_CALL
+#undef call
+
@@ -282,6 +314,9 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+ .get_next_variable = xen_efi_get_next_variable,
+ .set_variable = xen_efi_set_variable,
+ .get_next_high_mono_count = xen_efi_get_next_high_mono_count,
++ .query_variable_info = xen_efi_query_variable_info,
++ .update_capsule = xen_efi_update_capsule,
++ .query_capsule_caps = xen_efi_query_capsule_caps,
+};
+EXPORT_SYMBOL(efi);
+
@@ -480,8 +515,8 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+ info->mem.size = 0;
+ return HYPERVISOR_platform_op(&op) ? 0 : info->mem.attr;
+}
---- head-2011-07-21.orig/drivers/rtc/Kconfig 2011-07-21 11:59:58.000000000 +0200
-+++ head-2011-07-21/drivers/rtc/Kconfig 2011-07-04 12:33:03.000000000 +0200
+--- head-2011-09-07.orig/drivers/rtc/Kconfig 2011-09-07 13:56:34.000000000 +0200
++++ head-2011-09-07/drivers/rtc/Kconfig 2011-07-04 12:33:03.000000000 +0200
@@ -556,7 +556,7 @@ config RTC_DRV_DS1742
config RTC_DRV_EFI
@@ -491,8 +526,8 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
help
If you say yes here you will get support for the EFI
Real Time Clock.
---- head-2011-07-21.orig/drivers/xen/console/console.c 2011-02-02 15:10:34.000000000 +0100
-+++ head-2011-07-21/drivers/xen/console/console.c 2011-06-15 15:41:36.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/console/console.c 2011-02-02 15:10:34.000000000 +0100
++++ head-2011-09-07/drivers/xen/console/console.c 2011-06-15 15:41:36.000000000 +0200
@@ -315,6 +315,7 @@ void __init dom0_init_screen_info(const
break;
@@ -512,21 +547,21 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
if (size >= offsetof(struct dom0_vga_console_info,
u.vesa_lfb.gbl_caps)
+ sizeof(info->u.vesa_lfb.gbl_caps))
---- head-2011-07-21.orig/include/linux/efi.h 2011-07-21 11:59:58.000000000 +0200
-+++ head-2011-07-21/include/linux/efi.h 2011-06-10 11:12:39.000000000 +0200
-@@ -249,7 +249,9 @@ struct efi_memory_map {
+--- head-2011-09-07.orig/include/linux/efi.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/efi.h 2011-09-09 15:59:07.000000000 +0200
+@@ -281,7 +281,9 @@ struct efi_memory_map {
* All runtime access to EFI goes through this structure:
*/
extern struct efi {
+#ifndef CONFIG_XEN
efi_system_table_t *systab; /* EFI system table */
+#endif
+ unsigned int runtime_version; /* Runtime services version */
unsigned long mps; /* MPS table */
unsigned long acpi; /* ACPI table (IA64 ext 0.71) */
- unsigned long acpi20; /* ACPI table (ACPI 2.0) */
-@@ -267,8 +269,10 @@ extern struct efi {
- efi_get_next_variable_t *get_next_variable;
- efi_set_variable_t *set_variable;
+@@ -303,8 +305,10 @@ extern struct efi {
+ efi_update_capsule_t *update_capsule;
+ efi_query_capsule_caps_t *query_capsule_caps;
efi_get_next_high_mono_count_t *get_next_high_mono_count;
+#ifndef CONFIG_XEN
efi_reset_system_t *reset_system;
@@ -535,135 +570,3 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
} efi;
static inline int
---- head-2011-07-21.orig/include/xen/interface/platform.h 2010-06-22 15:48:58.000000000 +0200
-+++ head-2011-07-21/include/xen/interface/platform.h 2011-06-17 16:07:28.000000000 +0200
-@@ -114,10 +114,86 @@ struct xenpf_platform_quirk {
- typedef struct xenpf_platform_quirk xenpf_platform_quirk_t;
- DEFINE_XEN_GUEST_HANDLE(xenpf_platform_quirk_t);
-
-+#define XENPF_efi_runtime_call 49
-+#define XEN_EFI_get_time 1
-+#define XEN_EFI_set_time 2
-+#define XEN_EFI_get_wakeup_time 3
-+#define XEN_EFI_set_wakeup_time 4
-+#define XEN_EFI_get_next_high_monotonic_count 5
-+#define XEN_EFI_get_variable 6
-+#define XEN_EFI_set_variable 7
-+#define XEN_EFI_get_next_variable_name 8
-+struct xenpf_efi_runtime_call {
-+ uint32_t function;
-+ /*
-+ * This field is generally used for per sub-function flags (defined
-+ * below), except for the XEN_EFI_get_next_high_monotonic_count case,
-+ * where it holds the single returned value.
-+ */
-+ uint32_t misc;
-+ unsigned long status;
-+ union {
-+#define XEN_EFI_GET_TIME_SET_CLEARS_NS 0x00000001
-+ struct {
-+ struct xenpf_efi_time {
-+ uint16_t year;
-+ uint8_t month;
-+ uint8_t day;
-+ uint8_t hour;
-+ uint8_t min;
-+ uint8_t sec;
-+ uint32_t ns;
-+ int16_t tz;
-+ uint8_t daylight;
-+ } time;
-+ uint32_t resolution;
-+ uint32_t accuracy;
-+ } get_time;
-+
-+ struct xenpf_efi_time set_time;
-+
-+#define XEN_EFI_GET_WAKEUP_TIME_ENABLED 0x00000001
-+#define XEN_EFI_GET_WAKEUP_TIME_PENDING 0x00000002
-+ struct xenpf_efi_time get_wakeup_time;
-+
-+#define XEN_EFI_SET_WAKEUP_TIME_ENABLE 0x00000001
-+#define XEN_EFI_SET_WAKEUP_TIME_ENABLE_ONLY 0x00000002
-+ struct xenpf_efi_time set_wakeup_time;
-+
-+#define XEN_EFI_VARIABLE_NON_VOLATILE 0x00000001
-+#define XEN_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
-+#define XEN_EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
-+ struct {
-+ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
-+ unsigned long size;
-+ XEN_GUEST_HANDLE(void) data;
-+ struct xenpf_efi_guid {
-+ uint32_t data1;
-+ uint16_t data2;
-+ uint16_t data3;
-+ uint8_t data4[8];
-+ } vendor_guid;
-+ } get_variable, set_variable;
-+
-+ struct {
-+ unsigned long size;
-+ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
-+ struct xenpf_efi_guid vendor_guid;
-+ } get_next_variable_name;
-+ } u;
-+};
-+typedef struct xenpf_efi_runtime_call xenpf_efi_runtime_call_t;
-+DEFINE_XEN_GUEST_HANDLE(xenpf_efi_runtime_call_t);
-+
- #define XENPF_firmware_info 50
- #define XEN_FW_DISK_INFO 1 /* from int 13 AH=08/41/48 */
- #define XEN_FW_DISK_MBR_SIGNATURE 2 /* from MBR offset 0x1b8 */
- #define XEN_FW_VBEDDC_INFO 3 /* from int 10 AX=4f15 */
-+#define XEN_FW_EFI_INFO 4 /* from EFI */
-+#define XEN_FW_EFI_VERSION 0
-+#define XEN_FW_EFI_CONFIG_TABLE 1
-+#define XEN_FW_EFI_VENDOR 2
-+#define XEN_FW_EFI_MEM_INFO 3
- struct xenpf_firmware_info {
- /* IN variables. */
- uint32_t type;
-@@ -148,6 +224,24 @@ struct xenpf_firmware_info {
- /* must refer to 128-byte buffer */
- XEN_GUEST_HANDLE(uint8) edid;
- } vbeddc_info; /* XEN_FW_VBEDDC_INFO */
-+ union xenpf_efi_info {
-+ uint32_t version;
-+ struct {
-+ uint64_t addr; /* EFI_CONFIGURATION_TABLE */
-+ uint32_t nent;
-+ } cfg;
-+ struct {
-+ uint32_t revision;
-+ uint32_t bufsz; /* input, in bytes */
-+ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
-+ } vendor;
-+ struct {
-+ uint64_t addr;
-+ uint64_t size;
-+ uint64_t attr;
-+ uint32_t type;
-+ } mem;
-+ } efi_info; /* XEN_FW_EFI_INFO */
- } u;
- };
- typedef struct xenpf_firmware_info xenpf_firmware_info_t;
-@@ -373,6 +467,7 @@ struct xen_platform_op {
- struct xenpf_read_memtype read_memtype;
- struct xenpf_microcode_update microcode;
- struct xenpf_platform_quirk platform_quirk;
-+ struct xenpf_efi_runtime_call efi_runtime_call;
- struct xenpf_firmware_info firmware_info;
- struct xenpf_enter_acpi_sleep enter_acpi_sleep;
- struct xenpf_change_freq change_freq;
---- head-2011-07-21.orig/include/xen/interface/xen.h 2011-04-13 12:42:17.000000000 +0200
-+++ head-2011-07-21/include/xen/interface/xen.h 2011-06-07 13:55:11.000000000 +0200
-@@ -660,6 +660,7 @@ typedef struct dom0_vga_console_info {
- uint8_t video_type; /* DOM0_VGA_CONSOLE_??? */
- #define XEN_VGATYPE_TEXT_MODE_3 0x03
- #define XEN_VGATYPE_VESA_LFB 0x23
-+#define XEN_VGATYPE_EFI_LFB 0x70
-
- union {
- struct {
diff --git a/patches.xen/xen-x86-bigmem b/patches.xen/xen-x86-bigmem
index f641ab2b0f..8617b43171 100644
--- a/patches.xen/xen-x86-bigmem
+++ b/patches.xen/xen-x86-bigmem
@@ -3,9 +3,9 @@ Subject: fix issues with the assignment of huge amounts of memory
Patch-mainline: obsolete
References: bnc#482614, bnc#537435, bnc#700856
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:40:47.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-20 15:47:08.000000000 +0200
-@@ -102,6 +102,10 @@ void xen_pgd_pin(unsigned long ptr);
+--- head-2011-08-09.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:35:55.000000000 +0200
++++ head-2011-08-09/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:00.000000000 +0200
+@@ -100,6 +100,10 @@ void xen_pgd_pin(unsigned long ptr);
void xen_pgd_unpin(unsigned long ptr);
void xen_init_pgd_pin(void);
@@ -16,8 +16,8 @@ References: bnc#482614, bnc#537435, bnc#700856
void xen_set_ldt(const void *ptr, unsigned int ents);
---- head-2011-07-21.orig/arch/x86/kernel/e820-xen.c 2011-04-26 09:20:05.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/e820-xen.c 2011-04-13 17:05:50.000000000 +0200
+--- head-2011-08-09.orig/arch/x86/kernel/e820-xen.c 2011-04-26 09:20:05.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/e820-xen.c 2011-04-13 17:05:50.000000000 +0200
@@ -954,6 +954,26 @@ static int __init parse_memopt(char *p)
/* don't remove all of memory when handling "mem={invalid}" param */
if (mem_size == 0)
@@ -76,8 +76,8 @@ References: bnc#482614, bnc#537435, bnc#700856
if (is_initial_xendomain()) {
memmap.nr_entries = E820MAX;
set_xen_guest_handle(memmap.buffer, machine_e820.map);
---- head-2011-07-21.orig/arch/x86/kernel/setup-xen.c 2011-07-04 12:21:52.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup-xen.c 2011-07-21 12:41:22.000000000 +0200
+--- head-2011-08-09.orig/arch/x86/kernel/setup-xen.c 2011-07-04 12:21:52.000000000 +0200
++++ head-2011-08-09/arch/x86/kernel/setup-xen.c 2011-07-21 12:41:22.000000000 +0200
@@ -133,12 +133,7 @@ static struct notifier_block xen_panic_b
unsigned long *phys_to_machine_mapping;
EXPORT_SYMBOL(phys_to_machine_mapping);
@@ -221,8 +221,8 @@ References: bnc#482614, bnc#537435, bnc#700856
}
/* Mark all ISA DMA channels in-use - using them wouldn't work. */
---- head-2011-07-21.orig/drivers/xen/core/machine_reboot.c 2011-04-14 17:32:26.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/machine_reboot.c 2011-07-20 16:09:26.000000000 +0200
+--- head-2011-08-09.orig/drivers/xen/core/machine_reboot.c 2011-04-14 17:32:26.000000000 +0200
++++ head-2011-08-09/drivers/xen/core/machine_reboot.c 2011-07-20 16:09:26.000000000 +0200
@@ -72,11 +72,7 @@ static void pre_suspend(void)
static void post_suspend(int suspend_cancelled)
diff --git a/patches.xen/xen-x86-dcr-fallback b/patches.xen/xen-x86-dcr-fallback
index c37bdff41a..807b941dbd 100644
--- a/patches.xen/xen-x86-dcr-fallback
+++ b/patches.xen/xen-x86-dcr-fallback
@@ -6,9 +6,9 @@ References: 181869
This avoids losing precious special memory in places where any memory can be
used.
---- head-2011-05-09.orig/arch/x86/mm/hypervisor.c 2011-05-09 08:54:01.000000000 +0200
-+++ head-2011-05-09/arch/x86/mm/hypervisor.c 2011-05-09 11:54:21.000000000 +0200
-@@ -720,6 +720,83 @@ void xen_destroy_contiguous_region(unsig
+--- head-2011-08-09.orig/arch/x86/mm/hypervisor.c 2011-08-09 14:31:55.000000000 +0200
++++ head-2011-08-09/arch/x86/mm/hypervisor.c 2011-08-09 14:33:18.000000000 +0200
+@@ -779,6 +779,83 @@ void xen_destroy_contiguous_region(unsig
BUG();
balloon_unlock(flags);
@@ -92,8 +92,8 @@ used.
}
EXPORT_SYMBOL_GPL(xen_destroy_contiguous_region);
---- head-2011-05-09.orig/drivers/xen/balloon/balloon.c 2011-03-23 08:54:09.000000000 +0100
-+++ head-2011-05-09/drivers/xen/balloon/balloon.c 2011-03-23 08:54:18.000000000 +0100
+--- head-2011-08-09.orig/drivers/xen/balloon/balloon.c 2011-03-23 08:54:09.000000000 +0100
++++ head-2011-08-09/drivers/xen/balloon/balloon.c 2011-03-23 08:54:18.000000000 +0100
@@ -769,7 +769,11 @@ struct page **alloc_empty_pages_and_page
}
EXPORT_SYMBOL_GPL(alloc_empty_pages_and_pagevec);
@@ -145,8 +145,8 @@ used.
void balloon_release_driver_page(struct page *page)
{
---- head-2011-05-09.orig/include/xen/balloon.h 2011-04-13 17:01:31.000000000 +0200
-+++ head-2011-05-09/include/xen/balloon.h 2009-06-09 15:52:17.000000000 +0200
+--- head-2011-08-09.orig/include/xen/balloon.h 2011-04-13 17:01:31.000000000 +0200
++++ head-2011-08-09/include/xen/balloon.h 2009-06-09 15:52:17.000000000 +0200
@@ -47,6 +47,10 @@ void balloon_update_driver_allowance(lon
struct page **alloc_empty_pages_and_pagevec(int nr_pages);
void free_empty_pages_and_pagevec(struct page **pagevec, int nr_pages);
diff --git a/patches.xen/xen-x86-mmcfg-ACPI-reserved b/patches.xen/xen-x86-mmcfg-ACPI-reserved
new file mode 100644
index 0000000000..8f2b6262e1
--- /dev/null
+++ b/patches.xen/xen-x86-mmcfg-ACPI-reserved
@@ -0,0 +1,73 @@
+Subject: x86: report ACPI-reserved state of PCI MMCONFIG region to hypervisor
+From: jbeulich@novell.com
+Patch-mainline: n/a
+
+To be merged into xen3-patch-2.6.27.
+
+--- head-2011-06-30.orig/include/xen/interface/physdev.h 2011-03-17 13:50:24.000000000 +0100
++++ head-2011-06-30/include/xen/interface/physdev.h 2011-07-05 17:23:43.000000000 +0200
+@@ -251,6 +251,19 @@ struct physdev_get_free_pirq {
+ typedef struct physdev_get_free_pirq physdev_get_free_pirq_t;
+ DEFINE_XEN_GUEST_HANDLE(physdev_get_free_pirq_t);
+
++#define XEN_PCI_MMCFG_RESERVED 0x1
++
++#define PHYSDEVOP_pci_mmcfg_reserved 24
++struct physdev_pci_mmcfg_reserved {
++ uint64_t address;
++ uint16_t segment;
++ uint8_t start_bus;
++ uint8_t end_bus;
++ uint32_t flags;
++};
++typedef struct physdev_pci_mmcfg_reserved physdev_pci_mmcfg_reserved_t;
++DEFINE_XEN_GUEST_HANDLE(physdev_pci_mmcfg_reserved_t);
++
+ /*
+ * Notify that some PIRQ-bound event channels have been unmasked.
+ * ** This command is obsolete since interface version 0x00030202 and is **
+--- head-2011-06-30.orig/arch/x86/pci/mmconfig-shared.c 2011-06-30 15:04:12.000000000 +0200
++++ head-2011-06-30/arch/x86/pci/mmconfig-shared.c 2011-07-06 12:20:45.000000000 +0200
+@@ -21,6 +21,10 @@
+ #include <asm/pci_x86.h>
+ #include <asm/acpi.h>
+
++#ifdef CONFIG_XEN
++#include <xen/interface/physdev.h>
++#endif
++
+ #define PREFIX "PCI: "
+
+ /* Indicate if the mmcfg resources have been placed into the resource table. */
+@@ -471,6 +475,31 @@ static int __init is_mmconf_reserved(che
+ }
+ }
+
++#ifdef CONFIG_XEN
++ if (!with_e820) {
++ struct physdev_pci_mmcfg_reserved r = {
++ .address = cfg->address,
++ .segment = cfg->segment,
++ .start_bus = cfg->start_bus,
++ .end_bus = cfg->end_bus,
++ .flags = valid ? XEN_PCI_MMCFG_RESERVED : 0
++ };
++ int rc;
++
++ rc = HYPERVISOR_physdev_op(PHYSDEVOP_pci_mmcfg_reserved, &r);
++ switch (rc) {
++ case 0: case -ENOSYS:
++ break;
++ default:
++ pr_warn(PREFIX "Failed to report MMCONFIG reservation"
++ " state for %04x [bus%02x-%02x] to hypervisor"
++ " (%d)\n",
++ cfg->segment, cfg->start_bus, cfg->end_bus,
++ rc);
++ }
++ }
++#endif
++
+ return valid;
+ }
+
diff --git a/patches.xen/xen-x86-msr-on-pcpu b/patches.xen/xen-x86-msr-on-pcpu
index 6603e87358..5808d3bc11 100644
--- a/patches.xen/xen-x86-msr-on-pcpu
+++ b/patches.xen/xen-x86-msr-on-pcpu
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: introduce {rd,wr}msr_safe_on_pcpu() and add/enable users
Patch-mainline: n/a
---- head-2011-06-30.orig/arch/x86/Kconfig 2011-07-04 12:15:51.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig 2011-07-04 12:31:30.000000000 +0200
-@@ -1038,6 +1038,7 @@ config MICROCODE_OLD_INTERFACE
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-09 15:55:02.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-09 15:58:52.000000000 +0200
+@@ -1039,6 +1039,7 @@ config MICROCODE_OLD_INTERFACE
config X86_MSR
tristate "/dev/cpu/*/msr - Model-specific register support"
@@ -13,8 +13,8 @@ Patch-mainline: n/a
This device gives privileged processes access to the x86
Model-Specific Registers (MSRs). It is a character device with
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/arch/x86/kernel/msr-xen.c 2011-02-03 14:42:26.000000000 +0100
-@@ -0,0 +1,339 @@
++++ head-2011-09-07/arch/x86/kernel/msr-xen.c 2011-02-03 14:42:26.000000000 +0100
+@@ -0,0 +1,337 @@
+#ifndef CONFIG_XEN_PRIVILEGED_GUEST
+#include "msr.c"
+#else
@@ -272,16 +272,14 @@ Patch-mainline: n/a
+static int __init msr_init(void)
+{
+ int err;
-+ xen_platform_op_t op = {
-+ .cmd = XENPF_get_cpuinfo,
-+ .interface_version = XENPF_INTERFACE_VERSION,
-+ .u.pcpu_info.xen_cpuid = 0
-+ };
++ xen_platform_op_t op;
+
+ err = _msr_init();
+ if (err || !is_initial_xendomain())
+ return err;
+
++ op.cmd = XENPF_get_cpuinfo;
++ op.u.pcpu_info.xen_cpuid = 0;
+ do {
+ err = HYPERVISOR_platform_op(&op);
+ } while (err == -EBUSY);
@@ -354,8 +352,8 @@ Patch-mainline: n/a
+ _msr_exit();
+}
+#endif /* CONFIG_XEN_PRIVILEGED_GUEST */
---- head-2011-06-30.orig/drivers/hwmon/Kconfig 2011-06-30 17:10:07.000000000 +0200
-+++ head-2011-06-30/drivers/hwmon/Kconfig 2011-07-04 12:31:41.000000000 +0200
+--- head-2011-09-07.orig/drivers/hwmon/Kconfig 2011-09-07 16:00:44.000000000 +0200
++++ head-2011-09-07/drivers/hwmon/Kconfig 2011-09-09 15:58:47.000000000 +0200
@@ -412,7 +412,8 @@ config SENSORS_GPIO_FAN
config SENSORS_CORETEMP
@@ -366,36 +364,37 @@ Patch-mainline: n/a
help
If you say yes here you get support for the temperature
sensor inside your CPU. Most of the family 6 CPUs
-@@ -1141,7 +1142,8 @@ config SENSORS_TWL4030_MADC
+@@ -1110,8 +1111,9 @@ config SENSORS_TWL4030_MADC
config SENSORS_VIA_CPUTEMP
tristate "VIA CPU temperature sensor"
- depends on X86 && !XEN
+ depends on X86 && !XEN_UNPRIVILEGED_GUEST
+ select HWMON_VID
+ select XEN_DOMCTL if XEN
help
If you say yes here you get support for the temperature
sensor inside your CPU. Supported are all known variants of
---- head-2011-06-30.orig/drivers/xen/core/Makefile 2011-02-02 15:10:34.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/Makefile 2011-02-03 14:42:26.000000000 +0100
-@@ -5,8 +5,7 @@
+--- head-2011-09-07.orig/drivers/xen/core/Makefile 2011-08-18 11:17:50.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/Makefile 2011-08-18 11:19:09.000000000 +0200
+@@ -4,8 +4,7 @@
+
obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o
- priv-$(CONFIG_PCI) += pci.o
--priv-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
--obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o $(priv-y)
-+obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o pcpu.o $(priv-y)
+-obj-$(CONFIG_ACPI_HOTPLUG_CPU) += pcpu.o
+-obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o
++obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o pcpu.o
obj-$(CONFIG_PROC_FS) += xen_proc.o
obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor_sysfs.o
obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
-@@ -17,4 +16,4 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o
+@@ -16,4 +15,4 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o
obj-$(CONFIG_GENERIC_CLOCKEVENTS) += clockevents.o
obj-$(CONFIG_XEN_DOMCTL) += domctl.o
CFLAGS_domctl.o := -D__XEN_PUBLIC_XEN_H__ -D__XEN_PUBLIC_GRANT_TABLE_H__
-CFLAGS_domctl.o += -D__XEN_TOOLS__ -imacros xen/interface/domctl.h
+CFLAGS_domctl.o += -D__XEN_TOOLS__ -imacros xen/interface/domctl.h -imacros xen/interface/sysctl.h
---- head-2011-06-30.orig/drivers/xen/core/domctl.c 2010-11-23 16:20:20.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/domctl.c 2011-02-03 14:42:26.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/domctl.c 2010-11-23 16:20:20.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/domctl.c 2011-02-03 14:42:26.000000000 +0100
@@ -92,6 +92,110 @@ union xen_domctl {
} v5, v6, v7;
};
@@ -692,15 +691,15 @@ Patch-mainline: n/a
#endif /* CONFIG_X86 */
MODULE_LICENSE("GPL");
---- head-2011-06-30.orig/drivers/xen/core/domctl.h 2010-11-23 16:20:20.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/domctl.h 2011-02-03 14:42:26.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/domctl.h 2010-11-23 16:20:20.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/domctl.h 2011-02-03 14:42:26.000000000 +0100
@@ -1,3 +1,4 @@
int xen_guest_address_size(int domid);
int xen_guest_blkif_protocol(int domid);
int xen_set_physical_cpu_affinity(int pcpu);
+int xen_get_topology_info(unsigned int cpu, u32 *core, u32 *socket, u32 *node);
---- head-2011-06-30.orig/drivers/xen/core/pcpu.c 2011-02-02 15:09:57.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/pcpu.c 2011-03-23 10:12:33.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/pcpu.c 2011-02-02 15:09:57.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/pcpu.c 2011-08-23 13:13:45.000000000 +0200
@@ -11,6 +11,7 @@
#include <asm/hypervisor.h>
#include <xen/interface/platform.h>
@@ -753,8 +752,8 @@ Patch-mainline: n/a
+
static int xen_pcpu_down(uint32_t xen_id)
{
- xen_platform_op_t op = {
-@@ -151,12 +190,16 @@ static int xen_pcpu_online_check(struct
+ xen_platform_op_t op;
+@@ -147,12 +186,16 @@ static int xen_pcpu_online_check(struct
if (xen_pcpu_online(info->flags) && !xen_pcpu_online(pcpu->flags)) {
/* the pcpu is onlined */
pcpu->flags |= XEN_PCPU_FLAGS_ONLINE;
@@ -771,7 +770,7 @@ Patch-mainline: n/a
kobject_uevent(&pcpu->sysdev.kobj, KOBJ_OFFLINE);
result = 1;
}
-@@ -349,6 +392,8 @@ static irqreturn_t xen_pcpu_interrupt(in
+@@ -343,6 +386,8 @@ static irqreturn_t xen_pcpu_interrupt(in
return IRQ_HANDLED;
}
@@ -780,7 +779,7 @@ Patch-mainline: n/a
int xen_pcpu_hotplug(int type)
{
schedule_work(&xen_pcpu_work);
-@@ -386,6 +431,8 @@ int xen_pcpu_index(uint32_t id, bool is_
+@@ -378,6 +423,8 @@ int xen_pcpu_index(uint32_t id, bool is_
}
EXPORT_SYMBOL_GPL(xen_pcpu_index);
@@ -790,7 +789,7 @@ Patch-mainline: n/a
{
int err;
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/include/xen/pcpu.h 2011-02-03 14:42:26.000000000 +0100
++++ head-2011-09-07/include/xen/pcpu.h 2011-02-03 14:42:26.000000000 +0100
@@ -0,0 +1,18 @@
+#ifndef _XEN_SYSCTL_H
+#define _XEN_SYSCTL_H
diff --git a/patches.xen/xen-x86-no-lapic b/patches.xen/xen-x86-no-lapic
index 44fa2cc6cc..b2992834a4 100644
--- a/patches.xen/xen-x86-no-lapic
+++ b/patches.xen/xen-x86-no-lapic
@@ -3,12 +3,12 @@ Subject: Disallow all accesses to the local APIC page
Patch-mainline: n/a
References: bnc#191115
---- head-2011-06-30.orig/arch/x86/include/asm/apic.h 2011-04-13 14:08:57.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/apic.h 2011-07-04 12:28:47.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/apic.h 2011-04-13 14:08:57.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/apic.h 2011-09-09 15:56:48.000000000 +0200
@@ -9,7 +9,9 @@
#include <asm/processor.h>
#include <asm/apicdef.h>
- #include <asm/atomic.h>
+ #include <linux/atomic.h>
+#ifndef CONFIG_XEN
#include <asm/fixmap.h>
+#endif
@@ -121,8 +121,8 @@ References: bnc#191115
#endif /* CONFIG_X86_LOCAL_APIC */
#endif /* _ASM_X86_APIC_H */
---- head-2011-06-30.orig/arch/x86/include/asm/apicdef.h 2011-05-19 06:06:34.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/apicdef.h 2011-05-23 11:41:00.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/apicdef.h 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/apicdef.h 2011-05-23 11:41:00.000000000 +0200
@@ -17,6 +17,8 @@
*/
#define IO_APIC_SLOT_SIZE 1024
@@ -167,8 +167,8 @@ References: bnc#191115
#ifdef CONFIG_X86_32
#define BAD_APICID 0xFFu
#else
---- head-2011-06-30.orig/arch/x86/include/mach-xen/asm/fixmap.h 2011-02-01 15:41:35.000000000 +0100
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/fixmap.h 2011-02-03 14:34:58.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/fixmap.h 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/fixmap.h 2011-09-09 15:56:55.000000000 +0200
@@ -17,7 +17,6 @@
#ifndef __ASSEMBLY__
#include <linux/kernel.h>
@@ -177,7 +177,7 @@ References: bnc#191115
#include <asm/page.h>
#ifdef CONFIG_X86_32
#include <linux/threads.h>
-@@ -85,10 +84,10 @@ enum fixed_addresses {
+@@ -86,10 +85,10 @@ enum fixed_addresses {
#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
FIX_OHCI1394_BASE,
#endif
@@ -189,8 +189,8 @@ References: bnc#191115
#ifdef CONFIG_X86_IO_APIC
FIX_IO_APIC_BASE_0,
FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS - 1,
---- head-2011-06-30.orig/arch/x86/include/mach-xen/asm/smp.h 2011-04-13 17:01:31.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/smp.h 2011-03-03 16:50:42.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/smp.h 2011-04-13 17:01:31.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/smp.h 2011-03-03 16:50:42.000000000 +0100
@@ -15,7 +15,7 @@
# include <asm/io_apic.h>
# endif
@@ -209,8 +209,8 @@ References: bnc#191115
#ifndef CONFIG_X86_64
static inline int logical_smp_processor_id(void)
---- head-2011-06-30.orig/arch/x86/kernel/acpi/boot.c 2011-04-13 14:08:57.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/acpi/boot.c 2011-03-11 11:17:06.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/acpi/boot.c 2011-04-13 14:08:57.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/acpi/boot.c 2011-03-11 11:17:06.000000000 +0100
@@ -74,14 +74,14 @@ int acpi_sci_override_gsi __initdata;
int acpi_skip_timer_override __initdata;
int acpi_use_timer_override __initdata;
@@ -262,8 +262,8 @@ References: bnc#191115
return 0;
}
---- head-2011-06-30.orig/arch/x86/kernel/irq-xen.c 2011-07-01 15:19:34.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/irq-xen.c 2011-04-13 17:01:22.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/irq-xen.c 2011-07-01 15:19:34.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/irq-xen.c 2011-04-13 17:01:22.000000000 +0200
@@ -17,9 +17,9 @@
#include <asm/mce.h>
#include <asm/hw_irq.h>
@@ -314,8 +314,8 @@ References: bnc#191115
}
---- head-2011-06-30.orig/drivers/xen/core/smpboot.c 2011-02-02 15:10:16.000000000 +0100
-+++ head-2011-06-30/drivers/xen/core/smpboot.c 2011-03-03 16:50:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-02-02 15:10:16.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-03-03 16:50:49.000000000 +0100
@@ -283,7 +283,7 @@ void __init smp_prepare_cpus(unsigned in
* Here we can be sure that there is an IO-APIC in the system. Let's
* go and set it up:
diff --git a/patches.xen/xen-x86-per-cpu-vcpu-info b/patches.xen/xen-x86-per-cpu-vcpu-info
index 3bc2ed9b56..7cd6e7bf43 100644
--- a/patches.xen/xen-x86-per-cpu-vcpu-info
+++ b/patches.xen/xen-x86-per-cpu-vcpu-info
@@ -5,8 +5,8 @@ Patch-mainline: obsolete
... reducing access code size and latency, as well as being the
prerequisite for removing the limitation on 32 vCPU-s per guest.
---- head-2011-07-21.orig/arch/x86/include/asm/percpu.h 2011-07-21 11:59:58.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/asm/percpu.h 2011-04-13 17:06:05.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/percpu.h 2011-09-12 10:54:14.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/percpu.h 2011-04-13 17:06:05.000000000 +0200
@@ -311,6 +311,40 @@ do { \
pxo_ret__; \
})
@@ -59,9 +59,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#define __this_cpu_read_1(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
#define __this_cpu_read_2(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-20 15:47:08.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:42:38.000000000 +0200
-@@ -47,12 +47,26 @@
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:00.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:07.000000000 +0200
+@@ -45,12 +45,26 @@
extern shared_info_t *HYPERVISOR_shared_info;
@@ -88,8 +88,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#ifdef CONFIG_X86_32
extern unsigned long hypervisor_virt_start;
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/irqflags.h 2011-02-02 15:09:52.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/irqflags.h 2011-02-03 14:42:15.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/irqflags.h 2011-09-09 15:53:54.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/irqflags.h 2011-02-03 14:42:15.000000000 +0100
@@ -14,7 +14,7 @@
* includes these barriers, for example.
*/
@@ -165,8 +165,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
TRACE_IRQS_OFF ; \
sysexit_ecrit: /**** END OF SYSEXIT CRITICAL REGION ****/ ; \
mov $__KERNEL_PERCPU, %ecx ; \
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:11:13.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:12:10.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:11:13.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:12:10.000000000 +0100
@@ -123,6 +123,8 @@ static inline void xen_set_pgd(pgd_t *pg
#define __pte_mfn(_pte) (((_pte).pte & PTE_PFN_MASK) >> PAGE_SHIFT)
@@ -176,8 +176,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
extern void sync_global_pgds(unsigned long start, unsigned long end);
/*
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/system.h 2011-04-13 16:26:43.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/system.h 2011-04-13 17:06:13.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/system.h 2011-04-13 16:26:43.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/system.h 2011-04-13 17:06:13.000000000 +0200
@@ -245,8 +245,8 @@ static inline void xen_write_cr0(unsigne
asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order));
}
@@ -189,8 +189,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
static inline unsigned long xen_read_cr3(void)
{
---- head-2011-07-21.orig/arch/x86/kernel/cpu/common-xen.c 2011-07-01 15:19:34.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:30:47.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/common-xen.c 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:30:47.000000000 +0200
@@ -365,8 +365,16 @@ static const char *__cpuinit table_looku
__u32 cpu_caps_cleared[NCAPINTS] __cpuinitdata;
__u32 cpu_caps_set[NCAPINTS] __cpuinitdata;
@@ -209,9 +209,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#ifdef CONFIG_X86_32
loadsegment(fs, __KERNEL_PERCPU);
#else
---- head-2011-07-21.orig/arch/x86/kernel/entry_32-xen.S 2011-04-26 09:44:50.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/entry_32-xen.S 2011-04-13 17:06:21.000000000 +0200
-@@ -441,6 +441,9 @@ sysenter_exit:
+--- head-2011-09-07.orig/arch/x86/kernel/entry_32-xen.S 2011-09-09 15:07:26.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/entry_32-xen.S 2011-09-09 15:57:08.000000000 +0200
+@@ -442,6 +442,9 @@ sysenter_exit:
movl PT_EIP(%esp), %edx
movl PT_OLDESP(%esp), %ecx
xorl %ebp,%ebp
@@ -221,7 +221,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
TRACE_IRQS_ON
1: mov PT_FS(%esp), %fs
PTGS_TO_GS
-@@ -999,7 +1002,9 @@ critical_region_fixup:
+@@ -1000,7 +1003,9 @@ critical_region_fixup:
.section .rodata,"a"
critical_fixup_table:
@@ -232,7 +232,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
.byte -1,-1 # jnz 14f
.byte 0 # pop %ebx
.byte 1 # pop %ecx
-@@ -1018,7 +1023,9 @@ critical_fixup_table:
+@@ -1019,7 +1024,9 @@ critical_fixup_table:
.byte 10,10,10 # add $8,%esp
#endif
.byte 12 # iret
@@ -243,9 +243,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
.previous
# Hypervisor uses this for application faults while it executes.
---- head-2011-07-21.orig/arch/x86/kernel/head-xen.c 2011-07-11 15:41:28.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head-xen.c 2011-07-11 15:41:49.000000000 +0200
-@@ -145,6 +145,8 @@ void __init xen_start_kernel(void)
+--- head-2011-09-07.orig/arch/x86/kernel/head-xen.c 2011-09-07 16:15:33.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head-xen.c 2011-09-09 15:57:10.000000000 +0200
+@@ -146,6 +146,8 @@ void __init xen_start_kernel(void)
HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
clear_page(empty_zero_page);
@@ -254,9 +254,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
/* Set up mapping of lowest 1MB of physical memory. */
for (i = 0; i < NR_FIX_ISAMAPS; i++)
if (is_initial_xendomain())
---- head-2011-07-21.orig/arch/x86/kernel/time-xen.c 2011-07-11 15:30:55.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/time-xen.c 2011-07-11 15:31:45.000000000 +0200
-@@ -243,16 +243,10 @@ static void get_time_values_from_xen(uns
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2011-09-12 11:05:24.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-09-12 11:05:42.000000000 +0200
+@@ -239,16 +239,10 @@ static void get_time_values_from_xen(uns
local_irq_restore(flags);
}
@@ -275,7 +275,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
}
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
-@@ -260,15 +254,13 @@ int xen_update_wallclock(const struct ti
+@@ -256,15 +250,13 @@ int xen_update_wallclock(const struct ti
{
struct timespec now;
s64 nsec;
@@ -292,7 +292,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
/*
* Ensure we don't get blocked for a long time so that our time delta
-@@ -277,9 +269,9 @@ int xen_update_wallclock(const struct ti
+@@ -273,9 +265,9 @@ int xen_update_wallclock(const struct ti
*/
for (;;) {
nsec = tv->tv_nsec - get_nsec_offset(shadow);
@@ -304,7 +304,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
}
set_normalized_timespec(&now, tv->tv_sec, nsec);
-@@ -290,8 +282,6 @@ int xen_update_wallclock(const struct ti
+@@ -286,8 +278,6 @@ int xen_update_wallclock(const struct ti
WARN_ON(HYPERVISOR_platform_op(&op));
update_wallclock(false);
@@ -312,8 +312,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
-
return 0;
}
- #endif
-@@ -333,7 +323,7 @@ unsigned long long xen_local_clock(void)
+
+@@ -329,7 +319,7 @@ unsigned long long xen_local_clock(void)
local_time_version = shadow->version;
rdtsc_barrier();
time = shadow->system_timestamp + get_nsec_offset(shadow);
@@ -322,9 +322,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
get_time_values_from_xen(cpu);
barrier();
} while (local_time_version != shadow->version);
---- head-2011-07-21.orig/arch/x86/mm/hypervisor.c 2011-05-09 11:54:29.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/hypervisor.c 2011-05-09 11:55:04.000000000 +0200
-@@ -41,6 +41,7 @@
+--- head-2011-09-07.orig/arch/x86/mm/hypervisor.c 2011-08-09 14:33:23.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/hypervisor.c 2011-08-09 14:33:28.000000000 +0200
+@@ -42,6 +42,7 @@
#include <xen/balloon.h>
#include <xen/features.h>
#include <xen/interface/memory.h>
@@ -332,7 +332,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#include <linux/module.h>
#include <linux/percpu.h>
#include <asm/tlbflush.h>
-@@ -52,7 +53,103 @@
+@@ -53,7 +54,103 @@
EXPORT_SYMBOL(hypercall_page);
shared_info_t *__read_mostly HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
@@ -436,9 +436,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#define NR_MC BITS_PER_LONG
#define NR_MMU BITS_PER_LONG
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-07-04 12:30:03.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-02-03 14:42:15.000000000 +0100
-@@ -118,6 +118,26 @@ void __meminit early_make_page_readonly(
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-08-09 11:17:07.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-08-09 11:17:15.000000000 +0200
+@@ -119,6 +119,26 @@ void __meminit early_make_page_readonly(
BUG();
}
@@ -465,8 +465,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#ifndef CONFIG_XEN
static int __init parse_direct_gbpages_off(char *arg)
{
---- head-2011-07-21.orig/drivers/xen/Kconfig 2011-04-14 11:28:24.000000000 +0200
-+++ head-2011-07-21/drivers/xen/Kconfig 2011-04-14 11:28:35.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-04-14 11:28:24.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-04-14 11:28:35.000000000 +0200
@@ -382,6 +382,18 @@ config XEN_COMPAT
default 0x030002 if XEN_COMPAT_030002_AND_LATER
default 0
@@ -486,8 +486,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
endmenu
config HAVE_IRQ_IGNORE_UNHANDLED
---- head-2011-07-21.orig/drivers/xen/core/evtchn.c 2011-04-14 16:37:32.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/evtchn.c 2011-04-14 16:37:51.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2011-04-14 16:37:32.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-04-14 16:37:51.000000000 +0200
@@ -355,6 +355,24 @@ static DEFINE_PER_CPU(unsigned int, upca
static DEFINE_PER_CPU(unsigned int, current_l1i);
static DEFINE_PER_CPU(unsigned int, current_l2i);
@@ -576,8 +576,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
}
EXPORT_SYMBOL_GPL(unmask_evtchn);
---- head-2011-07-21.orig/drivers/xen/core/machine_reboot.c 2011-07-20 16:09:26.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/machine_reboot.c 2011-07-21 12:42:42.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/machine_reboot.c 2011-07-20 16:09:26.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/machine_reboot.c 2011-07-22 09:35:29.000000000 +0200
@@ -70,7 +70,7 @@ static void pre_suspend(void)
mfn_to_pfn(xen_start_info->console.domU.mfn);
}
@@ -587,7 +587,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
{
unsigned long shinfo_mfn;
-@@ -85,8 +85,21 @@ static void post_suspend(int suspend_can
+@@ -85,8 +85,23 @@ static void post_suspend(int suspend_can
#ifdef CONFIG_SMP
cpumask_copy(vcpu_initialized_mask, cpu_online_mask);
#endif
@@ -597,12 +597,14 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
+
+#ifdef CONFIG_XEN_VCPU_INFO_PLACEMENT
+ if (fast_suspend && i != smp_processor_id()
++ && cpu_online(i)
+ && HYPERVISOR_vcpu_op(VCPUOP_down, i, NULL))
+ BUG();
+
+ setup_vcpu_info(i);
+
+ if (fast_suspend && i != smp_processor_id()
++ && cpu_online(i)
+ && HYPERVISOR_vcpu_op(VCPUOP_up, i, NULL))
+ BUG();
+#endif
@@ -610,7 +612,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
}
shinfo_mfn = xen_start_info->shared_info >> PAGE_SHIFT;
-@@ -116,7 +129,7 @@ static void post_suspend(int suspend_can
+@@ -116,7 +131,7 @@ static void post_suspend(int suspend_can
#define switch_idle_mm() ((void)0)
#define mm_pin_all() ((void)0)
#define pre_suspend() xen_pre_suspend()
@@ -619,7 +621,7 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
#endif
-@@ -147,7 +160,7 @@ static int take_machine_down(void *_susp
+@@ -147,7 +162,7 @@ static int take_machine_down(void *_susp
BUG_ON(suspend_cancelled > 0);
suspend->resume_notifier(suspend_cancelled);
if (suspend_cancelled >= 0)
@@ -628,8 +630,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
if (!suspend_cancelled)
xen_clockevents_resume();
if (suspend_cancelled >= 0)
---- head-2011-07-21.orig/drivers/xen/core/smpboot.c 2011-03-03 16:50:49.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/smpboot.c 2011-02-03 14:42:15.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-03-03 16:50:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-02-03 14:42:15.000000000 +0100
@@ -290,8 +290,13 @@ void __init smp_prepare_cpus(unsigned in
void __init smp_prepare_boot_cpu(void)
@@ -644,8 +646,8 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
}
#ifdef CONFIG_HOTPLUG_CPU
---- head-2011-07-21.orig/drivers/xen/core/spinlock.c 2011-04-14 17:50:59.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/spinlock.c 2011-04-14 17:51:20.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/core/spinlock.c 2011-04-14 17:50:59.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/spinlock.c 2011-04-14 17:51:20.000000000 +0200
@@ -130,7 +130,7 @@ unsigned int xen_spin_wait(arch_spinlock
spinning.prev = percpu_read(_spinning);
smp_wmb();
diff --git a/patches.xen/xen-x86-pmd-handling b/patches.xen/xen-x86-pmd-handling
index b7ba373716..dcad721bc5 100644
--- a/patches.xen/xen-x86-pmd-handling
+++ b/patches.xen/xen-x86-pmd-handling
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: consolidate pmd/pud/pgd entry handling
Patch-mainline: obsolete
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:33:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:40:47.000000000 +0200
-@@ -97,10 +97,12 @@ void xen_invlpg(unsigned long ptr);
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:35:36.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:35:55.000000000 +0200
+@@ -95,10 +95,12 @@ void xen_invlpg(unsigned long ptr);
void xen_l1_entry_update(pte_t *ptr, pte_t val);
void xen_l2_entry_update(pmd_t *ptr, pmd_t val);
void xen_l3_entry_update(pud_t *ptr, pud_t val); /* x86_64/PAE */
@@ -18,7 +18,7 @@ Patch-mainline: obsolete
void xen_set_ldt(const void *ptr, unsigned int ents);
#ifdef CONFIG_SMP
-@@ -335,6 +337,18 @@ MULTI_update_va_mapping(
+@@ -333,6 +335,18 @@ MULTI_update_va_mapping(
}
static inline void
@@ -37,8 +37,8 @@ Patch-mainline: obsolete
MULTI_grant_table_op(multicall_entry_t *mcl, unsigned int cmd,
void *uop, unsigned int count)
{
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-01 15:41:35.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:41:13.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-01 15:41:35.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:41:13.000000000 +0100
@@ -75,20 +75,16 @@ static inline void pmd_populate(struct m
struct page *pte)
{
@@ -118,8 +118,8 @@ Patch-mainline: obsolete
}
static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable.h 2011-03-23 10:10:00.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable.h 2011-03-23 10:11:19.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable.h 2011-03-23 10:10:00.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable.h 2011-03-23 10:11:19.000000000 +0100
@@ -618,7 +618,7 @@ static inline pmd_t xen_local_pmdp_get_a
{
pmd_t res = *pmdp;
@@ -129,8 +129,8 @@ Patch-mainline: obsolete
return res;
}
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-04-12 15:59:10.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-04-11 16:12:34.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-04-12 15:59:10.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-04-11 16:12:34.000000000 +0200
@@ -56,12 +56,15 @@ static inline void __xen_pte_clear(pte_t
ptep->pte_high = 0;
}
@@ -167,8 +167,8 @@ Patch-mainline: obsolete
#ifdef CONFIG_SMP
static inline pte_t xen_ptep_get_and_clear(pte_t *ptep, pte_t res)
{
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-04-12 15:59:10.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:11:13.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-04-12 15:59:10.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:11:13.000000000 +0100
@@ -65,10 +65,13 @@ static inline void xen_set_pmd(pmd_t *pm
xen_l2_entry_update(pmdp, pmd);
}
@@ -226,9 +226,9 @@ Patch-mainline: obsolete
#define __pte_mfn(_pte) (((_pte).pte & PTE_PFN_MASK) >> PAGE_SHIFT)
---- head-2011-07-21.orig/arch/x86/mm/hypervisor.c 2011-05-09 11:54:21.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/hypervisor.c 2011-05-09 11:54:29.000000000 +0200
-@@ -360,31 +360,91 @@ void xen_l1_entry_update(pte_t *ptr, pte
+--- head-2011-09-07.orig/arch/x86/mm/hypervisor.c 2011-08-09 14:33:18.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/hypervisor.c 2011-08-09 14:33:23.000000000 +0200
+@@ -361,31 +361,91 @@ void xen_l1_entry_update(pte_t *ptr, pte
}
EXPORT_SYMBOL_GPL(xen_l1_entry_update);
@@ -327,8 +327,8 @@ Patch-mainline: obsolete
}
#endif /* CONFIG_X86_64 */
---- head-2011-07-21.orig/arch/x86/mm/init_32-xen.c 2011-07-04 12:15:21.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_32-xen.c 2011-07-04 12:29:02.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/init_32-xen.c 2011-07-04 12:15:21.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_32-xen.c 2011-07-04 12:29:02.000000000 +0200
@@ -690,6 +690,8 @@ static void __init zone_sizes_init(void)
#endif
@@ -347,9 +347,9 @@ Patch-mainline: obsolete
}
#ifdef CONFIG_MEMORY_HOTPLUG
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-04-13 16:54:38.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-07-04 12:30:03.000000000 +0200
-@@ -231,8 +231,11 @@ static pud_t *fill_pud(pgd_t *pgd, unsig
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-08-09 11:16:50.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:27.000000000 +0200
+@@ -232,8 +232,11 @@ static pud_t *fill_pud(pgd_t *pgd, unsig
{
if (pgd_none(*pgd)) {
pud_t *pud = (pud_t *)spp_getpage();
@@ -363,7 +363,7 @@ Patch-mainline: obsolete
if (pud != pud_offset(pgd, 0))
printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n",
pud, pud_offset(pgd, 0));
-@@ -244,8 +247,11 @@ static pmd_t *fill_pmd(pud_t *pud, unsig
+@@ -245,8 +248,11 @@ static pmd_t *fill_pmd(pud_t *pud, unsig
{
if (pud_none(*pud)) {
pmd_t *pmd = (pmd_t *) spp_getpage();
@@ -377,7 +377,7 @@ Patch-mainline: obsolete
if (pmd != pmd_offset(pud, 0))
printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n",
pmd, pmd_offset(pud, 0));
-@@ -595,7 +601,6 @@ phys_pmd_init(pmd_t *pmd_page, unsigned
+@@ -591,7 +597,6 @@ phys_pmd_init(pmd_t *pmd_page, unsigned
} else
*pmd = __pmd(pte_phys | _PAGE_TABLE);
} else {
@@ -385,7 +385,7 @@ Patch-mainline: obsolete
spin_lock(&init_mm.page_table_lock);
pmd_populate_kernel(&init_mm, pmd, __va(pte_phys));
spin_unlock(&init_mm.page_table_lock);
-@@ -682,7 +687,6 @@ phys_pud_init(pud_t *pud_page, unsigned
+@@ -678,7 +683,6 @@ phys_pud_init(pud_t *pud_page, unsigned
} else
*pud = __pud(pmd_phys | _PAGE_TABLE);
} else {
@@ -393,7 +393,7 @@ Patch-mainline: obsolete
spin_lock(&init_mm.page_table_lock);
pud_populate(&init_mm, pud, __va(pmd_phys));
spin_unlock(&init_mm.page_table_lock);
-@@ -849,7 +853,6 @@ kernel_physical_mapping_init(unsigned lo
+@@ -845,7 +849,6 @@ kernel_physical_mapping_init(unsigned lo
XENFEAT_writable_page_tables);
xen_l4_entry_update(pgd, __pgd(pud_phys | _PAGE_TABLE));
} else {
@@ -401,7 +401,7 @@ Patch-mainline: obsolete
spin_lock(&init_mm.page_table_lock);
pgd_populate(&init_mm, pgd, __va(pud_phys));
spin_unlock(&init_mm.page_table_lock);
-@@ -899,7 +902,7 @@ void __init paging_init(void)
+@@ -895,7 +898,7 @@ void __init paging_init(void)
free_area_init_nodes(max_zone_pfns);
@@ -410,8 +410,8 @@ Patch-mainline: obsolete
}
/*
---- head-2011-07-21.orig/arch/x86/mm/pgtable-xen.c 2011-04-12 15:59:10.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/pgtable-xen.c 2011-04-11 16:12:44.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/pgtable-xen.c 2011-09-08 17:12:17.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/pgtable-xen.c 2011-04-11 16:12:44.000000000 +0200
@@ -66,16 +66,16 @@ early_param("userpte", setup_userpte);
void __pte_free(pgtable_t pte)
{
diff --git a/patches.xen/xen-x86_64-dump-user-pgt b/patches.xen/xen-x86_64-dump-user-pgt
index 9b9e8a39e6..0f0dec3d9e 100644
--- a/patches.xen/xen-x86_64-dump-user-pgt
+++ b/patches.xen/xen-x86_64-dump-user-pgt
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: dump the correct page tables for user mode faults
Patch-mainline: obsolete
---- head-2011-06-30.orig/arch/x86/mm/fault-xen.c 2011-07-01 15:19:35.000000000 +0200
-+++ head-2011-06-30/arch/x86/mm/fault-xen.c 2011-07-04 12:33:46.000000000 +0200
-@@ -346,6 +346,7 @@ static void dump_pagetable(unsigned long
+--- head-2011-08-09.orig/arch/x86/mm/fault-xen.c 2011-08-15 11:06:42.000000000 +0200
++++ head-2011-08-09/arch/x86/mm/fault-xen.c 2011-08-15 11:08:12.000000000 +0200
+@@ -347,6 +347,7 @@ static void dump_pagetable(unsigned long
out:
printk(KERN_CONT "\n");
}
@@ -12,7 +12,7 @@ Patch-mainline: obsolete
#else /* CONFIG_X86_64: */
-@@ -450,7 +451,7 @@ static int bad_address(void *p)
+@@ -451,7 +452,7 @@ static int bad_address(void *p)
return probe_kernel_address((unsigned long *)p, dummy);
}
@@ -21,7 +21,7 @@ Patch-mainline: obsolete
{
pgd_t *base = __va(read_cr3() & PHYSICAL_PAGE_MASK);
pgd_t *pgd = base + pgd_index(address);
-@@ -458,6 +459,9 @@ static void dump_pagetable(unsigned long
+@@ -459,6 +460,9 @@ static void dump_pagetable(unsigned long
pmd_t *pmd;
pte_t *pte;
@@ -31,7 +31,7 @@ Patch-mainline: obsolete
if (bad_address(pgd))
goto bad;
-@@ -596,7 +600,7 @@ show_fault_oops(struct pt_regs *regs, un
+@@ -598,7 +602,7 @@ show_fault_oops(struct pt_regs *regs, un
printk(KERN_ALERT "IP:");
printk_address(regs->ip, 1);
@@ -40,7 +40,7 @@ Patch-mainline: obsolete
}
static noinline void
-@@ -613,7 +617,7 @@ pgtable_bad(struct pt_regs *regs, unsign
+@@ -615,7 +619,7 @@ pgtable_bad(struct pt_regs *regs, unsign
printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
tsk->comm, address);
diff --git a/patches.xen/xen-x86_64-note-init-p2m b/patches.xen/xen-x86_64-note-init-p2m
index be2cc9b31e..fa0e6e06df 100644
--- a/patches.xen/xen-x86_64-note-init-p2m
+++ b/patches.xen/xen-x86_64-note-init-p2m
@@ -18,8 +18,8 @@ shouldn't be as expensive (and hence can be viewed as an optimization
avoiding the spurious page fault on the local CPU), but is required
when the functions are used before the page fault handler gets set up.
---- head-2011-07-21.orig/arch/x86/kernel/head64-xen.c 2011-04-12 15:59:10.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:44.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/head64-xen.c 2011-04-12 15:59:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:44.000000000 +0200
@@ -121,6 +121,14 @@ void __init x86_64_start_reservations(ch
memblock_x86_reserve_range(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS");
@@ -35,8 +35,8 @@ when the functions are used before the page fault handler gets set up.
/*
* At this point everything still needed from the boot loader
* or BIOS or kernel text should be early reserved or marked not
---- head-2011-07-21.orig/arch/x86/kernel/head_64-xen.S 2011-02-03 14:42:36.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/head_64-xen.S 2011-02-03 14:42:41.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/head_64-xen.S 2011-08-09 11:17:44.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_64-xen.S 2011-08-09 11:19:00.000000000 +0200
@@ -17,6 +17,7 @@
#include <linux/elfnote.h>
#include <asm/segment.h>
@@ -45,16 +45,16 @@ when the functions are used before the page fault handler gets set up.
#include <asm/msr.h>
#include <asm/cache.h>
#include <asm/dwarf2.h>
-@@ -146,6 +147,7 @@ ENTRY(empty_zero_page)
+@@ -159,6 +160,7 @@ ENTRY(empty_zero_page)
ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .quad startup_64)
ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad hypercall_page)
ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .quad _PAGE_PRESENT, _PAGE_PRESENT)
+ ELFNOTE(Xen, XEN_ELFNOTE_INIT_P2M, .quad VMEMMAP_START)
- ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel")
- ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic")
- ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long 1)
---- head-2011-07-21.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:45:13.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup-xen.c 2011-07-21 12:50:48.000000000 +0200
+ ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .ascii "writable_page_tables";
+ .ascii "|writable_descriptor_tables";
+ .ascii "|auto_translated_physmap";
+--- head-2011-09-07.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:45:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/setup-xen.c 2011-07-21 12:50:48.000000000 +0200
@@ -1109,6 +1109,54 @@ void __init setup_arch(char **cmdline_p)
init_gbpages();
@@ -222,8 +222,8 @@ when the functions are used before the page fault handler gets set up.
#ifndef CONFIG_KEXEC
if (!is_initial_xendomain())
---- head-2011-07-21.orig/arch/x86/mm/init-xen.c 2011-07-01 15:48:40.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init-xen.c 2011-07-04 12:34:33.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/init-xen.c 2011-07-01 15:48:40.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init-xen.c 2011-07-04 12:34:33.000000000 +0200
@@ -351,9 +351,20 @@ unsigned long __init_refok init_memory_m
* RO all the pagetable pages, including the ones that are beyond
* pgt_buf_end at that time.
@@ -246,9 +246,9 @@ when the functions are used before the page fault handler gets set up.
if (!after_bootmem)
early_memtest(start, end);
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:26.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:56.000000000 +0200
-@@ -220,6 +220,17 @@ void sync_global_pgds(unsigned long star
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:46.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:52.000000000 +0200
+@@ -221,6 +221,17 @@ void sync_global_pgds(unsigned long star
}
}
@@ -266,7 +266,7 @@ when the functions are used before the page fault handler gets set up.
/*
* NOTE: This function is marked __ref because it calls __init function
* (alloc_bootmem_pages). It's safe to do it ONLY when after_bootmem == 0.
-@@ -231,8 +242,7 @@ static __ref void *spp_getpage(void)
+@@ -232,8 +243,7 @@ static __ref void *spp_getpage(void)
if (after_bootmem)
ptr = (void *) get_zeroed_page(GFP_ATOMIC | __GFP_NOTRACK);
else if (pgt_buf_end < pgt_buf_top) {
@@ -276,7 +276,7 @@ when the functions are used before the page fault handler gets set up.
clear_page(ptr);
} else
ptr = alloc_bootmem_pages(PAGE_SIZE);
-@@ -427,8 +437,7 @@ static __ref void *alloc_low_page(unsign
+@@ -428,8 +438,7 @@ static __ref void *alloc_low_page(unsign
return adr;
}
@@ -319,7 +319,7 @@ when the functions are used before the page fault handler gets set up.
/*
* No need for writable mapping of kernel image. This also ensures that
-@@ -553,7 +577,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned
+@@ -549,7 +573,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned
int i = pmd_index(address);
@@ -328,7 +328,7 @@ when the functions are used before the page fault handler gets set up.
unsigned long pte_phys;
pmd_t *pmd = pmd_page + pmd_index(address);
pte_t *pte;
-@@ -765,6 +789,12 @@ void __init xen_init_pt(void)
+@@ -761,6 +785,12 @@ void __init xen_init_pt(void)
(PTRS_PER_PUD - pud_index(__START_KERNEL_map))
* sizeof(*level3_kernel_pgt));
@@ -341,7 +341,7 @@ when the functions are used before the page fault handler gets set up.
/* Do an early initialization of the fixmap area. */
addr = __fix_to_virt(FIX_EARLYCON_MEM_BASE);
if (pud_present(level3_kernel_pgt[pud_index(addr)])) {
-@@ -796,22 +826,27 @@ void __init xen_init_pt(void)
+@@ -792,22 +822,27 @@ void __init xen_init_pt(void)
void __init xen_finish_init_mapping(void)
{
unsigned long start, end;
@@ -373,8 +373,8 @@ when the functions are used before the page fault handler gets set up.
/* Destroy the Xen-created mappings beyond the kernel image. */
start = PAGE_ALIGN(_brk_end);
end = __START_KERNEL_map + (pgt_buf_start << PAGE_SHIFT);
---- head-2011-07-21.orig/arch/x86/mm/pageattr-xen.c 2011-04-13 17:01:32.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/pageattr-xen.c 2011-04-28 11:36:37.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/pageattr-xen.c 2011-04-13 17:01:32.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/pageattr-xen.c 2011-04-28 11:36:37.000000000 +0200
@@ -1496,7 +1496,7 @@ static void __make_page_writable(unsigne
pte = lookup_address(va, &level);
@@ -384,8 +384,8 @@ when the functions are used before the page fault handler gets set up.
BUG();
if (in_secondary_range(va)) {
unsigned long pfn = pte_pfn(*pte);
---- head-2011-07-21.orig/arch/x86/mm/pgtable-xen.c 2011-04-11 16:14:31.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/pgtable-xen.c 2011-02-03 14:42:41.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/pgtable-xen.c 2011-04-11 16:14:31.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/pgtable-xen.c 2011-02-03 14:42:41.000000000 +0100
@@ -344,7 +344,7 @@ void __init xen_init_pgd_pin(void)
if (PTRS_PER_PUD > 1) /* not folded */
SetPagePinned(virt_to_page(pud));
@@ -404,8 +404,8 @@ when the functions are used before the page fault handler gets set up.
continue;
SetPagePinned(pmd_page(*pmd));
}
---- head-2011-07-21.orig/arch/x86/mm/pgtable_32-xen.c 2011-02-01 15:03:10.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/pgtable_32-xen.c 2011-02-03 14:42:41.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/pgtable_32-xen.c 2011-02-01 15:03:10.000000000 +0100
++++ head-2011-09-07/arch/x86/mm/pgtable_32-xen.c 2011-02-03 14:42:41.000000000 +0100
@@ -174,6 +174,6 @@ void make_lowmem_page_writable(void *va,
pte = lookup_address((unsigned long)va, &level);
BUG_ON(!pte || level != PG_LEVEL_4K || !pte_present(*pte));
diff --git a/patches.xen/xen-x86_64-pgd-alloc-order b/patches.xen/xen-x86_64-pgd-alloc-order
index e7bb70abf9..660d481640 100644
--- a/patches.xen/xen-x86_64-pgd-alloc-order
+++ b/patches.xen/xen-x86_64-pgd-alloc-order
@@ -4,9 +4,9 @@ Patch-mainline: n/a
At the same time remove the useless user mode pair of init_level4_pgt.
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:45:30.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:45:52.000000000 +0200
-@@ -102,8 +102,8 @@ void do_hypervisor_callback(struct pt_re
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:14.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:18.000000000 +0200
+@@ -100,8 +100,8 @@ void do_hypervisor_callback(struct pt_re
* be MACHINE addresses.
*/
@@ -17,7 +17,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
void xen_load_gs(unsigned int selector); /* x86_64 only */
void xen_tlb_flush(void);
void xen_invlpg(unsigned long ptr);
-@@ -111,7 +111,7 @@ void xen_invlpg(unsigned long ptr);
+@@ -109,7 +109,7 @@ void xen_invlpg(unsigned long ptr);
void xen_l1_entry_update(pte_t *ptr, pte_t val);
void xen_l2_entry_update(pmd_t *ptr, pmd_t val);
void xen_l3_entry_update(pud_t *ptr, pud_t val); /* x86_64/PAE */
@@ -26,8 +26,8 @@ At the same time remove the useless user mode pair of init_level4_pgt.
void xen_pgd_pin(pgd_t *);
void xen_pgd_unpin(pgd_t *);
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/mmu_context.h 2011-02-08 10:25:49.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/mmu_context.h 2011-02-08 10:46:27.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/mmu_context.h 2011-09-08 16:54:08.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/mmu_context.h 2011-02-08 10:46:27.000000000 +0100
@@ -82,6 +82,9 @@ static inline void switch_mm(struct mm_s
{
unsigned cpu = smp_processor_id();
@@ -61,8 +61,8 @@ At the same time remove the useless user mode pair of init_level4_pgt.
load_LDT_nolock(&next->context);
}
}
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:41:13.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:42:36.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:41:13.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgalloc.h 2011-02-03 14:42:36.000000000 +0100
@@ -123,15 +123,13 @@ static inline void pud_populate(struct m
#endif /* CONFIG_X86_PAE */
@@ -80,8 +80,8 @@ At the same time remove the useless user mode pair of init_level4_pgt.
else
*__user_pgd(pgd) = *pgd = ent;
}
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:12:10.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:13:50.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:12:10.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-03-23 10:13:50.000000000 +0100
@@ -106,18 +106,25 @@ static inline void xen_set_pud(pud_t *pu
: (void)(*__pudp = xen_make_pud(0)); \
})
@@ -111,8 +111,8 @@ At the same time remove the useless user mode pair of init_level4_pgt.
: (void)(*__user_pgd(__pgdp) = *__pgdp = xen_make_pgd(0)); \
})
---- head-2011-07-21.orig/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:30:47.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:33:38.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:30:47.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/common-xen.c 2011-07-04 12:33:38.000000000 +0200
@@ -1083,8 +1083,7 @@ DEFINE_PER_CPU_FIRST(union irq_stack_uni
void xen_switch_pt(void)
{
@@ -123,9 +123,9 @@ At the same time remove the useless user mode pair of init_level4_pgt.
#endif
}
---- head-2011-07-21.orig/arch/x86/kernel/head_64-xen.S 2011-02-01 14:55:46.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/head_64-xen.S 2011-02-03 14:42:36.000000000 +0100
-@@ -56,14 +56,6 @@ ENTRY(name)
+--- head-2011-09-07.orig/arch/x86/kernel/head_64-xen.S 2011-08-09 11:07:15.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_64-xen.S 2011-08-09 11:17:44.000000000 +0200
+@@ -57,14 +57,6 @@ ENTRY(name)
__PAGE_ALIGNED_BSS
NEXT_PAGE(init_level4_pgt)
.fill 512,8,0
@@ -140,9 +140,9 @@ At the same time remove the useless user mode pair of init_level4_pgt.
NEXT_PAGE(level3_kernel_pgt)
.fill 512,8,0
---- head-2011-07-21.orig/arch/x86/mm/hypervisor.c 2011-05-09 11:55:22.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/hypervisor.c 2011-05-09 11:55:28.000000000 +0200
-@@ -523,7 +523,7 @@ void xen_l3_entry_update(pud_t *ptr, pud
+--- head-2011-09-07.orig/arch/x86/mm/hypervisor.c 2011-08-09 14:33:37.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/hypervisor.c 2011-08-09 14:33:41.000000000 +0200
+@@ -524,7 +524,7 @@ void xen_l3_entry_update(pud_t *ptr, pud
#endif
#ifdef CONFIG_X86_64
@@ -151,7 +151,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
{
mmu_update_t u[2];
struct page *page = NULL;
-@@ -536,8 +536,11 @@ void xen_l4_entry_update(pgd_t *ptr, int
+@@ -537,8 +537,11 @@ void xen_l4_entry_update(pgd_t *ptr, int
}
u[0].ptr = virt_to_machine(ptr);
u[0].val = __pgd_val(val);
@@ -165,7 +165,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
u[1].val = __pgd_val(val);
do_lN_entry_update(u, 2, page);
} else
-@@ -545,21 +548,25 @@ void xen_l4_entry_update(pgd_t *ptr, int
+@@ -546,21 +549,25 @@ void xen_l4_entry_update(pgd_t *ptr, int
}
#endif /* CONFIG_X86_64 */
@@ -195,7 +195,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
void xen_tlb_flush(void)
{
-@@ -636,7 +643,14 @@ void xen_pgd_pin(pgd_t *pgd)
+@@ -637,7 +644,14 @@ void xen_pgd_pin(pgd_t *pgd)
op[0].arg1.mfn = virt_to_mfn(pgd);
#ifdef CONFIG_X86_64
op[1].cmd = op[0].cmd = MMUEXT_PIN_L4_TABLE;
@@ -211,7 +211,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
#endif
if (HYPERVISOR_mmuext_op(op, NR_PGD_PIN_OPS, NULL, DOMID_SELF) < 0)
BUG();
-@@ -649,8 +663,10 @@ void xen_pgd_unpin(pgd_t *pgd)
+@@ -650,8 +664,10 @@ void xen_pgd_unpin(pgd_t *pgd)
op[0].cmd = MMUEXT_UNPIN_TABLE;
op[0].arg1.mfn = virt_to_mfn(pgd);
#ifdef CONFIG_X86_64
@@ -223,9 +223,9 @@ At the same time remove the useless user mode pair of init_level4_pgt.
#endif
if (HYPERVISOR_mmuext_op(op, NR_PGD_PIN_OPS, NULL, DOMID_SELF) < 0)
BUG();
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:18.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:26.000000000 +0200
-@@ -765,9 +765,6 @@ void __init xen_init_pt(void)
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:41.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:46.000000000 +0200
+@@ -761,9 +761,6 @@ void __init xen_init_pt(void)
(PTRS_PER_PUD - pud_index(__START_KERNEL_map))
* sizeof(*level3_kernel_pgt));
@@ -235,7 +235,7 @@ At the same time remove the useless user mode pair of init_level4_pgt.
/* Do an early initialization of the fixmap area. */
addr = __fix_to_virt(FIX_EARLYCON_MEM_BASE);
if (pud_present(level3_kernel_pgt[pud_index(addr)])) {
-@@ -783,8 +780,6 @@ void __init xen_init_pt(void)
+@@ -779,8 +776,6 @@ void __init xen_init_pt(void)
early_make_page_readonly(init_level4_pgt,
XENFEAT_writable_page_tables);
@@ -244,8 +244,8 @@ At the same time remove the useless user mode pair of init_level4_pgt.
early_make_page_readonly(level3_kernel_pgt,
XENFEAT_writable_page_tables);
early_make_page_readonly(level3_user_pgt,
---- head-2011-07-21.orig/arch/x86/mm/pgtable-xen.c 2010-11-23 16:31:40.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/pgtable-xen.c 2011-04-11 16:14:31.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/pgtable-xen.c 2010-11-23 16:31:40.000000000 +0100
++++ head-2011-09-07/arch/x86/mm/pgtable-xen.c 2011-04-11 16:14:31.000000000 +0200
@@ -291,9 +291,11 @@ static void pgd_walk(pgd_t *pgd_base, pg
BUG();
seq = 0;
@@ -323,9 +323,9 @@ At the same time remove the useless user mode pair of init_level4_pgt.
}
/* blktap and gntdev need this, as otherwise they would implicitly (and
---- head-2011-07-21.orig/drivers/xen/core/machine_reboot.c 2011-07-21 12:42:42.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/machine_reboot.c 2011-07-21 12:45:54.000000000 +0200
-@@ -173,8 +173,7 @@ static int take_machine_down(void *_susp
+--- head-2011-09-07.orig/drivers/xen/core/machine_reboot.c 2011-07-22 09:35:29.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/machine_reboot.c 2011-07-22 09:36:42.000000000 +0200
+@@ -175,8 +175,7 @@ static int take_machine_down(void *_susp
* in fast-suspend mode as that implies a new enough Xen.
*/
if (!suspend->fast_suspend)
diff --git a/patches.xen/xen-x86_64-pgd-pin b/patches.xen/xen-x86_64-pgd-pin
index f52c93ff82..02f4fe3435 100644
--- a/patches.xen/xen-x86_64-pgd-pin
+++ b/patches.xen/xen-x86_64-pgd-pin
@@ -2,9 +2,9 @@ From: jbeulich@novell.com
Subject: make pinning of pgd pairs transparent to callers
Patch-mainline: obsolete
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:42:38.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-07-21 12:45:30.000000000 +0200
-@@ -112,8 +112,8 @@ void xen_l1_entry_update(pte_t *ptr, pte
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:07.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-08-23 13:36:14.000000000 +0200
+@@ -110,8 +110,8 @@ void xen_l1_entry_update(pte_t *ptr, pte
void xen_l2_entry_update(pmd_t *ptr, pmd_t val);
void xen_l3_entry_update(pud_t *ptr, pud_t val); /* x86_64/PAE */
void xen_l4_entry_update(pgd_t *ptr, int user, pgd_t val); /* x86_64 only */
@@ -15,9 +15,9 @@ Patch-mainline: obsolete
void xen_init_pgd_pin(void);
#ifdef CONFIG_PM_SLEEP
---- head-2011-07-21.orig/arch/x86/mm/hypervisor.c 2011-05-09 11:55:04.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/hypervisor.c 2011-05-09 11:55:22.000000000 +0200
-@@ -622,26 +622,38 @@ EXPORT_SYMBOL_GPL(xen_invlpg_mask);
+--- head-2011-09-07.orig/arch/x86/mm/hypervisor.c 2011-08-09 14:33:28.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/hypervisor.c 2011-08-09 14:33:37.000000000 +0200
+@@ -623,26 +623,38 @@ EXPORT_SYMBOL_GPL(xen_invlpg_mask);
#endif /* CONFIG_SMP */
@@ -70,9 +70,9 @@ Patch-mainline: obsolete
}
void xen_set_ldt(const void *ptr, unsigned int ents)
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-02-03 14:42:15.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:18.000000000 +0200
-@@ -794,10 +794,8 @@ void __init xen_init_pt(void)
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-08-09 11:17:15.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:41.000000000 +0200
+@@ -790,10 +790,8 @@ void __init xen_init_pt(void)
early_make_page_readonly(level1_fixmap_pgt,
XENFEAT_writable_page_tables);
@@ -85,8 +85,8 @@ Patch-mainline: obsolete
}
void __init xen_finish_init_mapping(void)
---- head-2011-07-21.orig/arch/x86/mm/pgtable-xen.c 2010-04-15 11:48:29.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/pgtable-xen.c 2010-11-23 16:31:40.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/pgtable-xen.c 2010-04-15 11:48:29.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/pgtable-xen.c 2010-11-23 16:31:40.000000000 +0100
@@ -368,19 +368,13 @@ static void __pgd_pin(pgd_t *pgd)
{
pgd_walk(pgd, PAGE_KERNEL_RO);
diff --git a/patches.xen/xen-x86_64-unmapped-initrd b/patches.xen/xen-x86_64-unmapped-initrd
index e070713d69..053c3d5254 100644
--- a/patches.xen/xen-x86_64-unmapped-initrd
+++ b/patches.xen/xen-x86_64-unmapped-initrd
@@ -7,8 +7,8 @@ getting mapped into the initial mapping. The kernel doesn't really need
the initrd to be mapped, so use new infrastructure available in 4.1+
Xen to avoid the mapping and hence the restriction.
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:32:43.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:35:19.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:32:43.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:35:19.000000000 +0200
@@ -3,6 +3,13 @@
void xen_start_kernel(void);
void xen_arch_setup(void);
@@ -23,8 +23,8 @@ Xen to avoid the mapping and hence the restriction.
#ifdef CONFIG_EFI
void efi_probe(void);
#else
---- head-2011-07-21.orig/arch/x86/kernel/head-xen.c 2011-07-11 15:41:49.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head-xen.c 2011-07-11 15:42:00.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/head-xen.c 2011-09-09 15:57:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head-xen.c 2011-07-11 15:42:00.000000000 +0200
@@ -76,6 +76,8 @@ extern void nmi(void);
#define CALLBACK_ADDR(fn) { __KERNEL_CS, (unsigned long)(fn) }
#endif
@@ -34,8 +34,8 @@ Xen to avoid the mapping and hence the restriction.
unsigned long *__read_mostly machine_to_phys_mapping =
(void *)MACH2PHYS_VIRT_START;
EXPORT_SYMBOL(machine_to_phys_mapping);
---- head-2011-07-21.orig/arch/x86/kernel/head32-xen.c 2011-07-01 15:19:34.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head32-xen.c 2011-07-04 12:34:54.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/head32-xen.c 2011-07-01 15:19:34.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head32-xen.c 2011-07-04 12:34:54.000000000 +0200
@@ -76,6 +76,11 @@ void __init i386_start_kernel(void)
break;
}
@@ -48,8 +48,8 @@ Xen to avoid the mapping and hence the restriction.
{
int max_cmdline;
---- head-2011-07-21.orig/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:44.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:59.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:44.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head64-xen.c 2011-04-11 16:14:59.000000000 +0200
@@ -121,13 +121,23 @@ void __init x86_64_start_reservations(ch
memblock_x86_reserve_range(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS");
@@ -78,18 +78,18 @@ Xen to avoid the mapping and hence the restriction.
/*
* At this point everything still needed from the boot loader
---- head-2011-07-21.orig/arch/x86/kernel/head_64-xen.S 2011-02-03 14:42:41.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/head_64-xen.S 2011-02-03 14:42:45.000000000 +0100
-@@ -147,6 +147,7 @@ ENTRY(empty_zero_page)
+--- head-2011-09-07.orig/arch/x86/kernel/head_64-xen.S 2011-08-09 11:19:00.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_64-xen.S 2011-08-09 11:19:40.000000000 +0200
+@@ -160,6 +160,7 @@ ENTRY(empty_zero_page)
ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .quad startup_64)
ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad hypercall_page)
ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .quad _PAGE_PRESENT, _PAGE_PRESENT)
+ ELFNOTE(Xen, XEN_ELFNOTE_MOD_START_PFN, .long 1)
ELFNOTE(Xen, XEN_ELFNOTE_INIT_P2M, .quad VMEMMAP_START)
- ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel")
- ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic")
---- head-2011-07-21.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:50:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup-xen.c 2011-07-21 12:51:23.000000000 +0200
+ ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .ascii "writable_page_tables";
+ .ascii "|writable_descriptor_tables";
+--- head-2011-09-07.orig/arch/x86/kernel/setup-xen.c 2011-07-21 12:50:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/setup-xen.c 2011-07-21 12:51:23.000000000 +0200
@@ -460,7 +460,7 @@ static void __init relocate_initrd(void)
#else
printk(KERN_ERR "initrd extends beyond end of memory "
@@ -108,8 +108,8 @@ Xen to avoid the mapping and hence the restriction.
unsigned long ramdisk_size = xen_start_info->mod_len;
unsigned long ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size);
unsigned long end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
---- head-2011-07-21.orig/arch/x86/mm/init-xen.c 2011-07-04 12:34:33.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init-xen.c 2011-07-04 12:35:03.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/init-xen.c 2011-07-04 12:34:33.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init-xen.c 2011-07-04 12:35:03.000000000 +0200
@@ -353,14 +353,7 @@ unsigned long __init_refok init_memory_m
*/
if (!after_bootmem && pgt_buf_top > pgt_buf_start) {
@@ -126,9 +126,9 @@ Xen to avoid the mapping and hence the restriction.
#endif
x86_init.mapping.pagetable_reserve(PFN_PHYS(pgt_buf_start),
PFN_PHYS(pgt_buf_top));
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2011-07-04 12:33:56.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-07-04 12:35:04.000000000 +0200
-@@ -220,13 +220,71 @@ void sync_global_pgds(unsigned long star
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:52.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-09-12 13:56:59.000000000 +0200
+@@ -221,13 +221,71 @@ void sync_global_pgds(unsigned long star
}
}
@@ -236,7 +236,7 @@ Xen to avoid the mapping and hence the restriction.
}
/* Make old page tables read-only. */
if (!xen_feature(XENFEAT_writable_page_tables)
-@@ -837,9 +906,6 @@ void __init xen_finish_init_mapping(void
+@@ -833,9 +902,6 @@ void __init xen_finish_init_mapping(void
&& xen_start_info->mfn_list >= __START_KERNEL_map)
phys_to_machine_mapping =
__va(__pa(xen_start_info->mfn_list));
diff --git a/patches.xen/xen3-auto-arch-i386.diff b/patches.xen/xen3-auto-arch-i386.diff
index cd415b8065..57efc0bfd7 100644
--- a/patches.xen/xen3-auto-arch-i386.diff
+++ b/patches.xen/xen3-auto-arch-i386.diff
@@ -1,10 +1,10 @@
Subject: xen3 arch-i386
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
---- head-2011-04-13.orig/arch/x86/kernel/asm-offsets_32.c 2011-04-13 10:06:58.000000000 +0200
-+++ head-2011-04-13/arch/x86/kernel/asm-offsets_32.c 2011-04-13 11:32:32.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/asm-offsets_32.c 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/asm-offsets_32.c 2011-04-13 11:32:32.000000000 +0200
@@ -55,9 +55,14 @@ void foo(void)
OFFSET(IA32_RT_SIGFRAME_sigcontext, rt_sigframe, uc.uc_mcontext);
BLANK();
@@ -21,9 +21,9 @@ Acked-by: jbeulich@novell.com
#if defined(CONFIG_LGUEST) || defined(CONFIG_LGUEST_GUEST) || defined(CONFIG_LGUEST_MODULE)
BLANK();
---- head-2011-04-13.orig/arch/x86/kernel/entry_32.S 2011-04-13 10:07:24.000000000 +0200
-+++ head-2011-04-13/arch/x86/kernel/entry_32.S 2011-04-13 11:32:39.000000000 +0200
-@@ -377,7 +377,7 @@ ENTRY(ia32_sysenter_target)
+--- head-2011-09-07.orig/arch/x86/kernel/entry_32.S 2011-09-07 13:57:00.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/entry_32.S 2011-09-07 14:44:06.000000000 +0200
+@@ -378,7 +378,7 @@ ENTRY(ia32_sysenter_target)
CFI_SIGNAL_FRAME
CFI_DEF_CFA esp, 0
CFI_REGISTER esp, ebp
@@ -32,7 +32,7 @@ Acked-by: jbeulich@novell.com
sysenter_past_esp:
/*
* Interrupts are disabled here, but we can't trace it until
-@@ -1309,7 +1309,7 @@ END(page_fault)
+@@ -1305,7 +1305,7 @@ END(page_fault)
* that sets up the real kernel stack. Check here, since we can't
* allow the wrong stack to be used.
*
@@ -41,7 +41,7 @@ Acked-by: jbeulich@novell.com
* already pushed 3 words if it hits on the sysenter instruction:
* eflags, cs and eip.
*
-@@ -1321,7 +1321,7 @@ END(page_fault)
+@@ -1317,7 +1317,7 @@ END(page_fault)
cmpw $__KERNEL_CS, 4(%esp)
jne \ok
\label:
@@ -50,8 +50,8 @@ Acked-by: jbeulich@novell.com
CFI_DEF_CFA esp, 0
CFI_UNDEFINED eip
pushfl_cfi
---- head-2011-04-13.orig/arch/x86/kernel/machine_kexec_32.c 2010-01-19 14:51:07.000000000 +0100
-+++ head-2011-04-13/arch/x86/kernel/machine_kexec_32.c 2011-01-31 14:54:00.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/machine_kexec_32.c 2010-01-19 14:51:07.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/machine_kexec_32.c 2011-01-31 14:54:00.000000000 +0100
@@ -27,6 +27,10 @@
#include <asm/cacheflush.h>
#include <asm/debugreg.h>
@@ -135,8 +135,8 @@ Acked-by: jbeulich@novell.com
void arch_crash_save_vmcoreinfo(void)
{
---- head-2011-04-13.orig/arch/x86/kernel/vm86_32.c 2011-03-15 02:20:32.000000000 +0100
-+++ head-2011-04-13/arch/x86/kernel/vm86_32.c 2011-01-31 14:54:00.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/vm86_32.c 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/vm86_32.c 2011-01-31 14:54:00.000000000 +0100
@@ -125,7 +125,9 @@ static int copy_vm86_regs_from_user(stru
struct pt_regs *save_v86_state(struct kernel_vm86_regs *regs)
diff --git a/patches.xen/xen3-auto-arch-x86.diff b/patches.xen/xen3-auto-arch-x86.diff
index 98dde57c31..35d68c069b 100644
--- a/patches.xen/xen3-auto-arch-x86.diff
+++ b/patches.xen/xen3-auto-arch-x86.diff
@@ -1,5 +1,5 @@
Subject: xen3 arch-x86
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
@@ -9,8 +9,8 @@ take the forward porting patches:
2.6.26/arch/x86/kernel/crash.c
2.6.30/arch/x86/kernel/acpi/boot.c
---- head-2011-06-30.orig/arch/x86/Makefile 2011-06-30 15:04:43.000000000 +0200
-+++ head-2011-06-30/arch/x86/Makefile 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/Makefile 2011-09-07 13:57:00.000000000 +0200
++++ head-2011-09-07/arch/x86/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -116,6 +116,10 @@ endif
# prevent gcc from generating any FP code by mistake
KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
@@ -58,8 +58,8 @@ take the forward porting patches:
PHONY += install
install:
---- head-2011-06-30.orig/arch/x86/boot/Makefile 2011-06-30 15:04:42.000000000 +0200
-+++ head-2011-06-30/arch/x86/boot/Makefile 2011-06-30 15:39:28.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/boot/Makefile 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/boot/Makefile 2011-06-30 15:39:28.000000000 +0200
@@ -17,6 +17,7 @@
SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
@@ -83,9 +83,9 @@ take the forward porting patches:
install:
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
System.map "$(INSTALL_PATH)"
---- head-2011-06-30.orig/arch/x86/kernel/Makefile 2011-06-30 15:04:07.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/Makefile 2011-06-30 15:39:36.000000000 +0200
-@@ -116,9 +116,12 @@ obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION)
+--- head-2011-09-07.orig/arch/x86/kernel/Makefile 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/Makefile 2011-09-07 14:40:45.000000000 +0200
+@@ -99,9 +99,12 @@ obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION)
obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
obj-$(CONFIG_OF) += devicetree.o
@@ -98,7 +98,7 @@ take the forward porting patches:
obj-$(CONFIG_AUDIT) += audit_64.o
obj-$(CONFIG_GART_IOMMU) += amd_gart_64.o aperture_64.o
-@@ -127,4 +130,10 @@ ifeq ($(CONFIG_X86_64),y)
+@@ -109,4 +112,10 @@ ifeq ($(CONFIG_X86_64),y)
obj-$(CONFIG_PCI_MMCONFIG) += mmconf-fam10h_64.o
obj-y += vsmp_64.o
@@ -109,8 +109,8 @@ take the forward porting patches:
+
+disabled-obj-$(CONFIG_XEN) := i8259_$(BITS).o reboot.o smpboot_$(BITS).o
+%/head_$(BITS).o %/head_$(BITS).s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
---- head-2011-06-30.orig/arch/x86/kernel/acpi/Makefile 2010-02-24 19:52:17.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/acpi/Makefile 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/acpi/Makefile 2010-02-24 19:52:17.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/acpi/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -5,6 +5,9 @@ obj-$(CONFIG_ACPI_SLEEP) += sleep.o wake
ifneq ($(CONFIG_ACPI_PROCESSOR),)
@@ -126,8 +126,8 @@ take the forward porting patches:
$(Q)$(MAKE) $(build)=$(obj)/realmode
+disabled-obj-$(CONFIG_XEN) := cstate.o wakeup_$(BITS).o
---- head-2011-06-30.orig/arch/x86/kernel/cpu/mcheck/Makefile 2010-08-02 00:11:14.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/cpu/mcheck/Makefile 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mcheck/Makefile 2010-08-02 00:11:14.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/mcheck/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -3,6 +3,7 @@ obj-y = mce.o mce-severity.o
obj-$(CONFIG_X86_ANCIENT_MCE) += winchip.o p5.o
obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o
@@ -136,9 +136,9 @@ take the forward porting patches:
obj-$(CONFIG_X86_MCE_THRESHOLD) += threshold.o
obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o
---- head-2011-06-30.orig/arch/x86/kernel/cpu/mcheck/mce.c 2011-06-30 15:04:08.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/cpu/mcheck/mce.c 2011-06-30 15:39:46.000000000 +0200
-@@ -1138,8 +1138,15 @@ void mce_log_therm_throt_event(__u64 sta
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mcheck/mce.c 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/mcheck/mce.c 2011-09-07 14:41:01.000000000 +0200
+@@ -1108,8 +1108,15 @@ void mce_log_therm_throt_event(__u64 sta
* Periodic polling timer for "silent" machine check errors. If the
* poller finds an MCE, poll 2x faster. When the poller finds no more
* errors, poll 2x slower (up to check_interval seconds).
@@ -154,7 +154,7 @@ take the forward porting patches:
static DEFINE_PER_CPU(int, mce_next_interval); /* in jiffies */
static DEFINE_PER_CPU(struct timer_list, mce_timer);
-@@ -1304,6 +1311,7 @@ static int __cpuinit __mcheck_cpu_apply_
+@@ -1275,6 +1282,7 @@ static int __cpuinit __mcheck_cpu_apply_
/* This should be disabled by the BIOS, but isn't always */
if (c->x86_vendor == X86_VENDOR_AMD) {
@@ -162,7 +162,7 @@ take the forward porting patches:
if (c->x86 == 15 && banks > 4) {
/*
* disable GART TBL walk error reporting, which
-@@ -1312,6 +1320,7 @@ static int __cpuinit __mcheck_cpu_apply_
+@@ -1283,6 +1291,7 @@ static int __cpuinit __mcheck_cpu_apply_
*/
clear_bit(10, (unsigned long *)&mce_banks[4].ctl);
}
@@ -170,7 +170,7 @@ take the forward porting patches:
if (c->x86 <= 17 && mce_bootlog < 0) {
/*
* Lots of broken BIOS around that don't clear them
-@@ -1379,6 +1388,7 @@ static void __cpuinit __mcheck_cpu_ancie
+@@ -1355,6 +1364,7 @@ static int __cpuinit __mcheck_cpu_ancien
static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
{
@@ -178,7 +178,7 @@ take the forward porting patches:
switch (c->x86_vendor) {
case X86_VENDOR_INTEL:
mce_intel_feature_init(c);
-@@ -1389,6 +1399,7 @@ static void __mcheck_cpu_init_vendor(str
+@@ -1365,6 +1375,7 @@ static void __mcheck_cpu_init_vendor(str
default:
break;
}
@@ -186,9 +186,9 @@ take the forward porting patches:
}
static void __mcheck_cpu_init_timer(void)
-@@ -2134,6 +2145,16 @@ static __init int mcheck_init_device(voi
- register_hotcpu_notifier(&mce_cpu_notifier);
- misc_register(&mce_log_device);
+@@ -2119,6 +2130,16 @@ static __init int mcheck_init_device(voi
+ /* register character device /dev/mcelog */
+ misc_register(&mce_chrdev_device);
+#ifdef CONFIG_X86_XEN_MCE
+ if (is_initial_xendomain()) {
@@ -202,24 +202,24 @@ take the forward porting patches:
+
return err;
}
-
---- head-2011-06-30.orig/arch/x86/kernel/cpu/mtrr/Makefile 2010-05-16 23:17:36.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/cpu/mtrr/Makefile 2011-04-13 11:31:41.000000000 +0200
+ device_initcall(mcheck_init_device);
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mtrr/Makefile 2010-05-16 23:17:36.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/mtrr/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -1,3 +1,4 @@
obj-y := main.o if.o generic.o cleanup.o
obj-$(CONFIG_X86_32) += amd.o cyrix.o centaur.o
+obj-$(CONFIG_XEN) := main.o if.o
---- head-2011-06-30.orig/arch/x86/lib/Makefile 2011-05-19 06:06:34.000000000 +0200
-+++ head-2011-06-30/arch/x86/lib/Makefile 2011-04-13 11:31:41.000000000 +0200
-@@ -44,3 +44,5 @@ else
- lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem_64.o
+--- head-2011-09-07.orig/arch/x86/lib/Makefile 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/lib/Makefile 2011-09-07 14:42:45.000000000 +0200
+@@ -45,3 +45,5 @@ else
+ lib-y += copy_user_64.o copy_user_nocache_64.o
lib-y += cmpxchg16b_emu.o
endif
+
+lib-$(CONFIG_XEN_SCRUB_PAGES) += scrub.o
---- head-2011-06-30.orig/arch/x86/mm/Makefile 2011-06-30 15:04:11.000000000 +0200
-+++ head-2011-06-30/arch/x86/mm/Makefile 2011-06-30 15:40:00.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/Makefile 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/Makefile 2011-06-30 15:40:00.000000000 +0200
@@ -27,6 +27,8 @@ obj-$(CONFIG_AMD_NUMA) += amdtopology.o
obj-$(CONFIG_ACPI_NUMA) += srat.o
obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
@@ -229,8 +229,8 @@ take the forward porting patches:
obj-$(CONFIG_HAVE_MEMBLOCK) += memblock.o
obj-$(CONFIG_MEMTEST) += memtest.o
---- head-2011-06-30.orig/arch/x86/oprofile/Makefile 2008-12-25 00:26:37.000000000 +0100
-+++ head-2011-06-30/arch/x86/oprofile/Makefile 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/oprofile/Makefile 2008-12-25 00:26:37.000000000 +0100
++++ head-2011-09-07/arch/x86/oprofile/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -6,7 +6,14 @@ DRIVER_OBJS = $(addprefix ../../../drive
oprofilefs.o oprofile_stats.o \
timer_int.o )
@@ -246,8 +246,8 @@ take the forward porting patches:
op_model_ppro.o op_model_p4.o
oprofile-$(CONFIG_X86_IO_APIC) += nmi_timer_int.o
+endif
---- head-2011-06-30.orig/arch/x86/pci/Makefile 2011-03-15 02:20:32.000000000 +0100
-+++ head-2011-06-30/arch/x86/pci/Makefile 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/pci/Makefile 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/arch/x86/pci/Makefile 2011-04-13 11:31:41.000000000 +0200
@@ -5,6 +5,9 @@ obj-$(CONFIG_PCI_MMCONFIG) += mmconfig_$
obj-$(CONFIG_PCI_DIRECT) += direct.o
obj-$(CONFIG_PCI_OLPC) += olpc.o
@@ -258,8 +258,8 @@ take the forward porting patches:
obj-y += fixup.o
obj-$(CONFIG_X86_INTEL_CE) += ce4100.o
---- head-2011-06-30.orig/arch/x86/power/cpu.c 2010-10-20 22:30:22.000000000 +0200
-+++ head-2011-06-30/arch/x86/power/cpu.c 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/power/cpu.c 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/arch/x86/power/cpu.c 2011-04-13 11:31:41.000000000 +0200
@@ -129,6 +129,7 @@ static void do_fpu_end(void)
static void fix_processor_context(void)
@@ -279,8 +279,8 @@ take the forward porting patches:
syscall_init(); /* This sets MSR_*STAR and related */
#endif
load_TR_desc(); /* This does ltr */
---- head-2011-06-30.orig/arch/x86/include/asm/acpi.h 2011-06-30 15:04:05.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/acpi.h 2011-06-30 15:41:07.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/acpi.h 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/acpi.h 2011-06-30 15:41:07.000000000 +0200
@@ -31,6 +31,10 @@
#include <asm/mpspec.h>
#include <asm/trampoline.h>
@@ -330,8 +330,8 @@ take the forward porting patches:
#ifdef CONFIG_ACPI_NUMA
extern int acpi_numa;
---- head-2011-06-30.orig/arch/x86/include/asm/apic.h 2011-06-30 15:04:05.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/apic.h 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/apic.h 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/apic.h 2011-04-13 11:31:41.000000000 +0200
@@ -14,7 +14,9 @@
#include <asm/system.h>
#include <asm/msr.h>
@@ -342,8 +342,8 @@ take the forward porting patches:
/*
* Debugging macros
---- head-2011-06-30.orig/arch/x86/include/asm/kexec.h 2009-06-10 05:05:27.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/kexec.h 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/kexec.h 2009-06-10 05:05:27.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/kexec.h 2011-04-13 11:31:41.000000000 +0200
@@ -163,6 +163,19 @@ struct kimage_arch {
};
#endif
@@ -364,8 +364,8 @@ take the forward porting patches:
#endif /* __ASSEMBLY__ */
#endif /* _ASM_X86_KEXEC_H */
---- head-2011-06-30.orig/arch/x86/include/asm/topology.h 2011-06-30 15:04:06.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/topology.h 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/include/asm/topology.h 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/topology.h 2011-04-13 11:31:41.000000000 +0200
@@ -30,7 +30,7 @@
# define ENABLE_TOPO_DEFINES
# endif
@@ -375,9 +375,9 @@ take the forward porting patches:
# define ENABLE_TOPO_DEFINES
# endif
#endif
---- head-2011-06-30.orig/arch/x86/vdso/Makefile 2011-06-30 15:04:12.000000000 +0200
-+++ head-2011-06-30/arch/x86/vdso/Makefile 2011-06-30 15:41:26.000000000 +0200
-@@ -78,6 +78,8 @@ obj-$(VDSO32-y) += vdso32-syms.lds
+--- head-2011-09-07.orig/arch/x86/vdso/Makefile 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/vdso/Makefile 2011-09-07 14:43:48.000000000 +0200
+@@ -79,6 +79,8 @@ obj-$(VDSO32-y) += vdso32-syms.lds
vdso32.so-$(VDSO32-y) += int80
vdso32.so-$(CONFIG_COMPAT) += syscall
vdso32.so-$(VDSO32-y) += sysenter
@@ -386,8 +386,8 @@ take the forward porting patches:
vdso32-images = $(vdso32.so-y:%=vdso32-%.so)
---- head-2011-06-30.orig/arch/x86/vdso/vdso32-setup.c 2011-05-19 06:06:34.000000000 +0200
-+++ head-2011-06-30/arch/x86/vdso/vdso32-setup.c 2011-04-13 11:31:41.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/vdso/vdso32-setup.c 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/arch/x86/vdso/vdso32-setup.c 2011-04-13 11:31:41.000000000 +0200
@@ -26,6 +26,10 @@
#include <asm/vdso.h>
#include <asm/proto.h>
diff --git a/patches.xen/xen3-auto-arch-x86_64.diff b/patches.xen/xen3-auto-arch-x86_64.diff
index ba0856c1e5..e24d2805d3 100644
--- a/patches.xen/xen3-auto-arch-x86_64.diff
+++ b/patches.xen/xen3-auto-arch-x86_64.diff
@@ -1,5 +1,5 @@
Subject: xen3 arch-x86_64
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
diff --git a/patches.xen/xen3-auto-blktap2-pvops.diff b/patches.xen/xen3-auto-blktap2-pvops.diff
index ee8965039a..288d80dcde 100644
--- a/patches.xen/xen3-auto-blktap2-pvops.diff
+++ b/patches.xen/xen3-auto-blktap2-pvops.diff
@@ -1,16 +1,16 @@
Subject: pv-ops blktap2
-From: https://git.kernel.org/?p=linux/kernel/git/jeremy/xen.git (commit 892d2f052e979cf1916647c752b94cf62ec1c6dc)
+From: https://git.kernel.org/?p=linux/kernel/git/jeremy/xen.git (commit ada3f6a1ba43e163aab95c7808f11b88fc7c79e6)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/Makefile 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/Makefile 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,3 @@
+obj-$(CONFIG_XEN_BLKDEV_TAP) := blktap.o
+
+blktap-objs := control.o ring.o device.o request.o sysfs.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/blktap.h 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/blktap.h 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,209 @@
+#ifndef _BLKTAP_H_
+#define _BLKTAP_H_
@@ -222,7 +222,7 @@ Acked-by: jbeulich@novell.com
+
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/control.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/control.c 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,315 @@
+#include <linux/module.h>
+#include <linux/sched.h>
@@ -540,8 +540,8 @@ Acked-by: jbeulich@novell.com
+module_exit(blktap_exit);
+MODULE_LICENSE("Dual BSD/GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/device.c 2011-02-24 13:49:49.000000000 +0100
-@@ -0,0 +1,564 @@
++++ head-2011-08-09/drivers/xen/blktap2-new/device.c 2011-08-09 10:31:33.000000000 +0200
+@@ -0,0 +1,566 @@
+#include <linux/fs.h>
+#include <linux/blkdev.h>
+#include <linux/cdrom.h>
@@ -679,9 +679,11 @@ Acked-by: jbeulich@novell.com
+static inline void
+blktap_end_rq(struct request *rq, int err)
+{
-+ spin_lock_irq(rq->q->queue_lock);
++ struct request_queue *q = rq->q;
++
++ spin_lock_irq(q->queue_lock);
+ __blktap_end_rq(rq, err);
-+ spin_unlock_irq(rq->q->queue_lock);
++ spin_unlock_irq(q->queue_lock);
+}
+
+void
@@ -1107,7 +1109,7 @@ Acked-by: jbeulich@novell.com
+ unregister_blkdev(blktap_device_major, "tapdev");
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/request.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/request.c 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,418 @@
+#include <linux/mempool.h>
+#include <linux/spinlock.h>
@@ -1528,7 +1530,7 @@ Acked-by: jbeulich@novell.com
+ }
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/ring.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/ring.c 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,550 @@
+
+#include <linux/device.h>
@@ -2081,7 +2083,7 @@ Acked-by: jbeulich@novell.com
+ blktap_ring_major = 0;
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/blktap2-new/sysfs.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-08-09/drivers/xen/blktap2-new/sysfs.c 2011-02-24 13:49:49.000000000 +0100
@@ -0,0 +1,288 @@
+#include <linux/types.h>
+#include <linux/device.h>
diff --git a/patches.xen/xen3-auto-common.diff b/patches.xen/xen3-auto-common.diff
index 4ccf864f02..d265871d69 100644
--- a/patches.xen/xen3-auto-common.diff
+++ b/patches.xen/xen3-auto-common.diff
@@ -1,5 +1,5 @@
Subject: xen3 common
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
@@ -19,8 +19,8 @@ take the forward porting patches:
2.6.30/include/linux/pci_regs.h
2.6.35/kernel/time.c
---- head-2011-07-21.orig/drivers/Makefile 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/Makefile 2011-06-30 15:36:40.000000000 +0200
+--- head-2011-09-07.orig/drivers/Makefile 2011-09-07 13:56:14.000000000 +0200
++++ head-2011-09-07/drivers/Makefile 2011-06-30 15:36:40.000000000 +0200
@@ -45,6 +45,7 @@ obj-$(CONFIG_PARPORT) += parport/
obj-y += base/ block/ misc/ mfd/ nfc/
obj-$(CONFIG_NUBUS) += nubus/
@@ -29,8 +29,8 @@ take the forward porting patches:
obj-$(CONFIG_IDE) += ide/
obj-$(CONFIG_SCSI) += scsi/
obj-$(CONFIG_ATA) += ata/
---- head-2011-07-21.orig/drivers/acpi/Makefile 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/Makefile 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/Makefile 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/acpi/Makefile 2011-04-13 11:25:29.000000000 +0200
@@ -67,6 +67,9 @@ obj-$(CONFIG_ACPI_CUSTOM_METHOD)+= custo
processor-y := processor_driver.o processor_throttling.o
processor-y += processor_idle.o processor_thermal.o
@@ -41,8 +41,8 @@ take the forward porting patches:
obj-$(CONFIG_ACPI_PROCESSOR_AGGREGATOR) += acpi_pad.o
obj-$(CONFIG_ACPI_IPMI) += acpi_ipmi.o
---- head-2011-07-21.orig/drivers/acpi/acpica/hwsleep.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/acpica/hwsleep.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/acpica/hwsleep.c 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/drivers/acpi/acpica/hwsleep.c 2011-04-13 11:25:29.000000000 +0200
@@ -236,7 +236,11 @@ acpi_status asmlinkage acpi_enter_sleep_
u32 pm1b_control;
struct acpi_bit_register_info *sleep_type_reg_info;
@@ -80,8 +80,8 @@ take the forward porting patches:
return_ACPI_STATUS(AE_OK);
}
---- head-2011-07-21.orig/drivers/acpi/processor_driver.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/processor_driver.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/processor_driver.c 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/drivers/acpi/processor_driver.c 2011-04-13 11:25:29.000000000 +0200
@@ -325,7 +325,8 @@ static int acpi_processor_get_info(struc
*/
if (pr->id == -1) {
@@ -256,7 +256,7 @@ take the forward porting patches:
cpu_down(pr->id);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/acpi/processor_extcntl.c 2011-01-31 14:53:38.000000000 +0100
++++ head-2011-09-07/drivers/acpi/processor_extcntl.c 2011-01-31 14:53:38.000000000 +0100
@@ -0,0 +1,241 @@
+/*
+ * processor_extcntl.c - channel to external control logic
@@ -499,8 +499,8 @@ take the forward porting patches:
+ kfree(perf);
+ return ret;
+}
---- head-2011-07-21.orig/drivers/acpi/processor_idle.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/processor_idle.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/processor_idle.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/acpi/processor_idle.c 2011-09-07 14:39:37.000000000 +0200
@@ -458,7 +458,8 @@ static int acpi_processor_get_power_info
*/
cx.entry_method = ACPI_CSTATE_HALT;
@@ -524,6 +524,15 @@ take the forward porting patches:
current_count++;
memcpy(&(pr->power.states[current_count]), &cx, sizeof(cx));
+@@ -518,7 +525,7 @@ static int acpi_processor_get_power_info
+ current_count));
+
+ /* Validate number of power states discovered */
+- if (current_count < 2)
++ if (current_count < (processor_pm_external() ? 1 : 2))
+ status = -EFAULT;
+
+ end:
@@ -1130,6 +1137,11 @@ int __cpuinit acpi_processor_power_init(
if (cpuidle_register_device(&pr->power.dev))
return -EIO;
@@ -536,8 +545,8 @@ take the forward porting patches:
return 0;
}
---- head-2011-07-21.orig/drivers/acpi/processor_perflib.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/processor_perflib.c 2011-06-30 15:36:54.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/processor_perflib.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/acpi/processor_perflib.c 2011-06-30 15:36:54.000000000 +0200
@@ -75,6 +75,7 @@ MODULE_PARM_DESC(ignore_ppc, "If the fre
static int acpi_processor_ppc_status;
@@ -617,8 +626,8 @@ take the forward porting patches:
{
int result = 0;
acpi_status status = AE_OK;
---- head-2011-07-21.orig/drivers/acpi/sleep.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/sleep.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/sleep.c 2011-09-07 13:56:14.000000000 +0200
++++ head-2011-09-07/drivers/acpi/sleep.c 2011-04-13 11:25:29.000000000 +0200
@@ -61,6 +61,7 @@ static struct notifier_block tts_notifie
static int acpi_sleep_prepare(u32 acpi_state)
{
@@ -635,8 +644,8 @@ take the forward porting patches:
ACPI_FLUSH_CPU_CACHE();
#endif
printk(KERN_INFO PREFIX "Preparing to enter system sleep state S%d\n",
---- head-2011-07-21.orig/drivers/char/agp/intel-gtt.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/char/agp/intel-gtt.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/char/agp/intel-gtt.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/char/agp/intel-gtt.c 2011-04-13 11:25:29.000000000 +0200
@@ -147,8 +147,19 @@ static struct page *i8xx_alloc_pages(voi
if (page == NULL)
return NULL;
@@ -667,8 +676,8 @@ take the forward porting patches:
put_page(page);
__free_pages(page, 2);
atomic_dec(&agp_bridge->current_memory_agp);
---- head-2011-07-21.orig/drivers/char/mem.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/char/mem.c 2011-05-23 10:56:58.000000000 +0200
+--- head-2011-09-07.orig/drivers/char/mem.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/char/mem.c 2011-05-23 10:56:58.000000000 +0200
@@ -86,6 +86,7 @@ void __weak unxlate_dev_mem_ptr(unsigned
{
}
@@ -727,17 +736,17 @@ take the forward porting patches:
#ifdef CONFIG_DEVKMEM
static const struct file_operations kmem_fops = {
---- head-2011-07-21.orig/drivers/char/tpm/Makefile 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/char/tpm/Makefile 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/char/tpm/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ head-2011-09-07/drivers/char/tpm/Makefile 2011-04-13 11:25:29.000000000 +0200
@@ -9,3 +9,5 @@ obj-$(CONFIG_TCG_TIS) += tpm_tis.o
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
---- head-2011-07-21.orig/drivers/char/tpm/tpm.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/char/tpm/tpm.h 2011-04-13 11:25:29.000000000 +0200
-@@ -108,6 +108,9 @@ struct tpm_chip {
+--- head-2011-09-07.orig/drivers/char/tpm/tpm.h 2011-09-07 13:56:14.000000000 +0200
++++ head-2011-09-07/drivers/char/tpm/tpm.h 2011-09-07 14:38:52.000000000 +0200
+@@ -115,6 +115,9 @@ struct tpm_chip {
struct dentry **bios_dir;
struct list_head list;
@@ -747,7 +756,7 @@ take the forward porting patches:
void (*release) (struct device *);
};
-@@ -272,6 +275,18 @@ struct tpm_cmd_t {
+@@ -279,6 +282,18 @@ struct tpm_cmd_t {
ssize_t tpm_getcap(struct device *, __be32, cap_t *, const char *);
@@ -767,7 +776,7 @@ take the forward porting patches:
extern void tpm_gen_interrupt(struct tpm_chip *);
extern void tpm_continue_selftest(struct tpm_chip *);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/char/tpm/tpm_vtpm.c 2011-01-31 14:53:38.000000000 +0100
++++ head-2011-09-07/drivers/char/tpm/tpm_vtpm.c 2011-01-31 14:53:38.000000000 +0100
@@ -0,0 +1,542 @@
+/*
+ * Copyright (C) 2006 IBM Corporation
@@ -1312,7 +1321,7 @@ take the forward porting patches:
+ kfree(vtpms);
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/char/tpm/tpm_vtpm.h 2011-01-31 14:53:38.000000000 +0100
++++ head-2011-09-07/drivers/char/tpm/tpm_vtpm.h 2011-01-31 14:53:38.000000000 +0100
@@ -0,0 +1,55 @@
+#ifndef TPM_VTPM_H
+#define TPM_VTPM_H
@@ -1370,7 +1379,7 @@ take the forward porting patches:
+
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/drivers/char/tpm/tpm_xen.c 2011-01-31 14:53:38.000000000 +0100
++++ head-2011-09-07/drivers/char/tpm/tpm_xen.c 2011-01-31 14:53:38.000000000 +0100
@@ -0,0 +1,722 @@
+/*
+ * Copyright (c) 2005, IBM Corporation
@@ -2094,8 +2103,8 @@ take the forward porting patches:
+module_init(tpmif_init);
+
+MODULE_LICENSE("Dual BSD/GPL");
---- head-2011-07-21.orig/drivers/edac/edac_mc.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/edac/edac_mc.c 2011-06-30 15:37:01.000000000 +0200
+--- head-2011-09-07.orig/drivers/edac/edac_mc.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/edac/edac_mc.c 2011-06-30 15:37:01.000000000 +0200
@@ -611,6 +611,10 @@ static void edac_mc_scrub_block(unsigned
debugf3("%s()\n", __func__);
@@ -2107,8 +2116,8 @@ take the forward porting patches:
/* ECC error page was not in our memory. Ignore it. */
if (!pfn_valid(page))
return;
---- head-2011-07-21.orig/drivers/firmware/dell_rbu.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/firmware/dell_rbu.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/firmware/dell_rbu.c 2010-08-02 00:11:14.000000000 +0200
++++ head-2011-09-07/drivers/firmware/dell_rbu.c 2011-04-13 11:25:29.000000000 +0200
@@ -170,9 +170,28 @@ static int create_packet(void *data, siz
spin_lock(&rbu_data.lock);
goto out_alloc_packet_array;
@@ -2215,8 +2224,8 @@ take the forward porting patches:
spin_lock_init(&rbu_data.lock);
init_packet_head();
---- head-2011-07-21.orig/drivers/ide/ide-lib.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/ide/ide-lib.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/ide/ide-lib.c 2009-09-10 00:13:59.000000000 +0200
++++ head-2011-09-07/drivers/ide/ide-lib.c 2011-04-13 11:25:29.000000000 +0200
@@ -18,12 +18,12 @@ void ide_toggle_bounce(ide_drive_t *driv
{
u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */
@@ -2234,8 +2243,8 @@ take the forward porting patches:
addr = *dev->dma_mask;
}
---- head-2011-07-21.orig/drivers/oprofile/buffer_sync.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/buffer_sync.c 2011-06-30 15:37:10.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/buffer_sync.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/buffer_sync.c 2011-06-30 15:37:10.000000000 +0200
@@ -8,6 +8,10 @@
* @author Barry Kasindorf
* @author Robert Richter <robert.richter@amd.com>
@@ -2412,8 +2421,8 @@ take the forward porting patches:
mark_done(cpu);
mutex_unlock(&buffer_mutex);
---- head-2011-07-21.orig/drivers/oprofile/cpu_buffer.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/cpu_buffer.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/cpu_buffer.c 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/cpu_buffer.c 2011-04-13 11:25:29.000000000 +0200
@@ -8,6 +8,10 @@
* @author Barry Kasindorf <barry.kasindorf@amd.com>
* @author Robert Richter <robert.richter@amd.com>
@@ -2529,8 +2538,8 @@ take the forward porting patches:
/*
* This serves to avoid cpu buffer overflow, and makes sure
* the task mortuary progresses
---- head-2011-07-21.orig/drivers/oprofile/cpu_buffer.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/cpu_buffer.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/cpu_buffer.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/drivers/oprofile/cpu_buffer.h 2011-04-13 11:25:29.000000000 +0200
@@ -41,7 +41,7 @@ struct op_entry;
struct oprofile_cpu_buffer {
unsigned long buffer_size;
@@ -2565,8 +2574,8 @@ take the forward porting patches:
+#define DOMAIN_SWITCH (1UL << 5)
#endif /* OPROFILE_CPU_BUFFER_H */
---- head-2011-07-21.orig/drivers/oprofile/event_buffer.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/event_buffer.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/event_buffer.h 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/event_buffer.h 2011-04-13 11:25:29.000000000 +0200
@@ -30,6 +30,9 @@ void wake_up_buffer_waiter(void);
#define INVALID_COOKIE ~0UL
#define NO_COOKIE 0UL
@@ -2577,8 +2586,8 @@ take the forward porting patches:
extern const struct file_operations event_buffer_fops;
/* mutex between sync_cpu_buffers() and the
---- head-2011-07-21.orig/drivers/oprofile/oprof.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/oprof.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/oprof.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/oprof.c 2011-04-13 11:25:29.000000000 +0200
@@ -5,6 +5,10 @@
* @remark Read the file COPYING
*
@@ -2623,8 +2632,8 @@ take the forward porting patches:
int oprofile_setup(void)
{
int err;
---- head-2011-07-21.orig/drivers/oprofile/oprof.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/oprof.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/oprof.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/drivers/oprofile/oprof.h 2011-04-13 11:25:29.000000000 +0200
@@ -40,4 +40,7 @@ void oprofile_timer_exit(void);
int oprofile_set_ulong(unsigned long *addr, unsigned long val);
int oprofile_set_timeout(unsigned long time);
@@ -2633,8 +2642,8 @@ take the forward porting patches:
+int oprofile_set_passive(int passive_domains[], unsigned int pdomains);
+
#endif /* OPROF_H */
---- head-2011-07-21.orig/drivers/oprofile/oprofile_files.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/oprofile_files.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/oprofile_files.c 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/drivers/oprofile/oprofile_files.c 2011-04-13 11:25:29.000000000 +0200
@@ -5,11 +5,17 @@
* @remark Read the file COPYING
*
@@ -2858,8 +2867,8 @@ take the forward porting patches:
oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
oprofilefs_create_ulong(sb, root, "buffer_size", &oprofile_buffer_size);
oprofilefs_create_ulong(sb, root, "buffer_watershed", &oprofile_buffer_watershed);
---- head-2011-07-21.orig/fs/aio.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/fs/aio.c 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/fs/aio.c 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/fs/aio.c 2011-04-13 11:25:29.000000000 +0200
@@ -39,6 +39,11 @@
#include <asm/kmap_types.h>
#include <asm/uaccess.h>
@@ -3047,9 +3056,9 @@ take the forward porting patches:
get_ioctx(ioctx); /* io_destroy() expects us to hold a ref */
io_destroy(ioctx);
---- head-2011-07-21.orig/fs/compat_ioctl.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/fs/compat_ioctl.c 2011-04-13 11:25:29.000000000 +0200
-@@ -114,6 +114,13 @@
+--- head-2011-09-07.orig/fs/compat_ioctl.c 2011-09-07 13:56:37.000000000 +0200
++++ head-2011-09-07/fs/compat_ioctl.c 2011-09-07 14:38:39.000000000 +0200
+@@ -116,6 +116,13 @@
#include <asm/fbio.h>
#endif
@@ -3063,7 +3072,7 @@ take the forward porting patches:
static int w_long(unsigned int fd, unsigned int cmd,
compat_ulong_t __user *argp)
{
-@@ -1408,6 +1415,19 @@ IGNORE_IOCTL(FBIOGETCMAP32)
+@@ -1414,6 +1421,19 @@ IGNORE_IOCTL(FBIOGETCMAP32)
IGNORE_IOCTL(FBIOSCURSOR32)
IGNORE_IOCTL(FBIOGCURSOR32)
#endif
@@ -3083,8 +3092,8 @@ take the forward porting patches:
};
/*
---- head-2011-07-21.orig/include/acpi/processor.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/acpi/processor.h 2011-06-30 15:37:24.000000000 +0200
+--- head-2011-09-07.orig/include/acpi/processor.h 2011-09-07 13:56:37.000000000 +0200
++++ head-2011-09-07/include/acpi/processor.h 2011-06-30 15:37:24.000000000 +0200
@@ -17,6 +17,12 @@
#define ACPI_PROCESSOR_MAX_THROTTLE 250 /* 25% */
#define ACPI_PROCESSOR_MAX_DUTY_WIDTH 4
@@ -3268,8 +3277,8 @@ take the forward porting patches:
+#endif /* CONFIG_XEN */
+
#endif
---- head-2011-07-21.orig/include/asm-generic/pgtable.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/asm-generic/pgtable.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/asm-generic/pgtable.h 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/include/asm-generic/pgtable.h 2011-04-13 11:25:29.000000000 +0200
@@ -156,6 +156,10 @@ static inline void pmdp_set_wrprotect(st
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
#endif
@@ -3281,8 +3290,8 @@ take the forward porting patches:
#ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH
extern pmd_t pmdp_splitting_flush(struct vm_area_struct *vma,
unsigned long address,
---- head-2011-07-21.orig/include/linux/aio.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/aio.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/linux/aio.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/aio.h 2011-04-13 11:25:29.000000000 +0200
@@ -199,6 +199,12 @@ struct kioctx {
struct delayed_work wq;
@@ -3296,8 +3305,8 @@ take the forward porting patches:
struct rcu_head rcu_head;
};
---- head-2011-07-21.orig/include/linux/highmem.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/highmem.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/linux/highmem.h 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/include/linux/highmem.h 2011-04-13 11:25:29.000000000 +0200
@@ -178,12 +178,14 @@ alloc_zeroed_user_highpage_movable(struc
return __alloc_zeroed_user_highpage(__GFP_MOVABLE, vma, vaddr);
}
@@ -3329,8 +3338,8 @@ take the forward porting patches:
+#endif
+
#endif /* _LINUX_HIGHMEM_H */
---- head-2011-07-21.orig/include/linux/interrupt.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/interrupt.h 2011-04-13 11:26:32.000000000 +0200
+--- head-2011-09-07.orig/include/linux/interrupt.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/interrupt.h 2011-04-13 11:26:32.000000000 +0200
@@ -375,6 +375,11 @@ static inline int disable_irq_wake(unsig
}
#endif /* CONFIG_GENERIC_HARDIRQS */
@@ -3343,8 +3352,8 @@ take the forward porting patches:
#ifdef CONFIG_IRQ_FORCED_THREADING
extern bool force_irqthreads;
---- head-2011-07-21.orig/include/linux/kexec.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/kexec.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/linux/kexec.h 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/include/linux/kexec.h 2011-04-13 11:25:29.000000000 +0200
@@ -46,6 +46,13 @@
KEXEC_CORE_NOTE_NAME_BYTES + \
KEXEC_CORE_NOTE_DESC_BYTES )
@@ -3372,9 +3381,9 @@ take the forward porting patches:
extern asmlinkage long sys_kexec_load(unsigned long entry,
unsigned long nr_segments,
struct kexec_segment __user *segments,
---- head-2011-07-21.orig/include/linux/mm.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/mm.h 2011-06-30 15:37:34.000000000 +0200
-@@ -113,7 +113,12 @@ extern unsigned int kobjsize(const void
+--- head-2011-09-07.orig/include/linux/mm.h 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/include/linux/mm.h 2011-09-07 14:38:06.000000000 +0200
+@@ -114,7 +114,12 @@ extern unsigned int kobjsize(const void
#define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
#define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
@@ -3387,7 +3396,7 @@ take the forward porting patches:
#define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
#define VM_MERGEABLE 0x80000000 /* KSM may merge identical pages */
-@@ -142,6 +147,12 @@ extern unsigned int kobjsize(const void
+@@ -143,6 +148,12 @@ extern unsigned int kobjsize(const void
*/
#define VM_SPECIAL (VM_IO | VM_DONTEXPAND | VM_RESERVED | VM_PFNMAP)
@@ -3400,7 +3409,7 @@ take the forward porting patches:
/*
* mapping from the currently active vm_flags protection bits (the
* low four bits) to a page protection mask..
-@@ -213,6 +224,15 @@ struct vm_operations_struct {
+@@ -214,6 +225,15 @@ struct vm_operations_struct {
*/
int (*access)(struct vm_area_struct *vma, unsigned long addr,
void *buf, int len, int write);
@@ -3416,12 +3425,12 @@ take the forward porting patches:
#ifdef CONFIG_NUMA
/*
* set_policy() op must add a reference to any non-NULL @new mempolicy
---- head-2011-07-21.orig/include/linux/oprofile.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/oprofile.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/linux/oprofile.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/oprofile.h 2011-09-07 14:37:55.000000000 +0200
@@ -19,6 +19,8 @@
#include <linux/errno.h>
#include <linux/printk.h>
- #include <asm/atomic.h>
+ #include <linux/atomic.h>
+
+#include <xen/interface/xenoprof.h>
@@ -3469,8 +3478,8 @@ take the forward porting patches:
/**
* Create a file of the given name as a child of the given root, with
---- head-2011-07-21.orig/include/linux/page-flags.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/page-flags.h 2011-04-28 11:06:45.000000000 +0200
+--- head-2011-09-07.orig/include/linux/page-flags.h 2011-09-07 13:56:38.000000000 +0200
++++ head-2011-09-07/include/linux/page-flags.h 2011-09-07 14:38:10.000000000 +0200
@@ -107,6 +107,11 @@ enum pageflags {
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
PG_compound_lock,
@@ -3483,7 +3492,7 @@ take the forward porting patches:
__NR_PAGEFLAGS,
/* Filesystems */
-@@ -325,6 +330,27 @@ static inline void SetPageUptodate(struc
+@@ -320,6 +325,27 @@ static inline void SetPageUptodate(struc
CLEARPAGEFLAG(Uptodate, uptodate)
@@ -3511,7 +3520,7 @@ take the forward porting patches:
extern void cancel_dirty_page(struct page *page, unsigned int account_size);
int test_clear_page_writeback(struct page *page);
-@@ -449,6 +475,14 @@ static inline int PageTransCompound(stru
+@@ -444,6 +470,14 @@ static inline int PageTransCompound(stru
#define __PG_COMPOUND_LOCK 0
#endif
@@ -3526,7 +3535,7 @@ take the forward porting patches:
/*
* Flags checked when a page is freed. Pages being freed should not have
* these flags set. It they are, there is a problem.
-@@ -459,7 +493,7 @@ static inline int PageTransCompound(stru
+@@ -454,7 +488,7 @@ static inline int PageTransCompound(stru
1 << PG_writeback | 1 << PG_reserved | \
1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \
1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON | \
@@ -3535,9 +3544,9 @@ take the forward porting patches:
/*
* Flags checked when a page is prepped for return by the page allocator.
---- head-2011-07-21.orig/include/linux/pci.h 2011-06-30 15:21:48.000000000 +0200
-+++ head-2011-07-21/include/linux/pci.h 2011-06-30 15:37:41.000000000 +0200
-@@ -1008,6 +1008,11 @@ static inline int pci_msi_enabled(void)
+--- head-2011-09-07.orig/include/linux/pci.h 2011-06-30 15:21:48.000000000 +0200
++++ head-2011-09-07/include/linux/pci.h 2011-09-07 14:38:16.000000000 +0200
+@@ -1022,6 +1022,11 @@ static inline int pci_msi_enabled(void)
{
return 0;
}
@@ -3549,7 +3558,7 @@ take the forward porting patches:
#else
extern int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec);
extern void pci_msi_shutdown(struct pci_dev *dev);
-@@ -1020,6 +1025,10 @@ extern void pci_disable_msix(struct pci_
+@@ -1034,6 +1039,10 @@ extern void pci_disable_msix(struct pci_
extern void msi_remove_pci_irq_vectors(struct pci_dev *dev);
extern void pci_restore_msi_state(struct pci_dev *dev);
extern int pci_msi_enabled(void);
@@ -3560,8 +3569,8 @@ take the forward porting patches:
#endif
#ifdef CONFIG_PCIEPORTBUS
---- head-2011-07-21.orig/include/linux/vermagic.h 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/include/linux/vermagic.h 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/include/linux/vermagic.h 2010-02-24 19:52:17.000000000 +0100
++++ head-2011-09-07/include/linux/vermagic.h 2011-04-13 11:25:29.000000000 +0200
@@ -22,6 +22,11 @@
#else
#define MODULE_VERMAGIC_MODVERSIONS ""
@@ -3581,8 +3590,8 @@ take the forward porting patches:
- MODULE_ARCH_VERMAGIC
+ MODULE_VERMAGIC_XEN MODULE_ARCH_VERMAGIC
---- head-2011-07-21.orig/kernel/irq/spurious.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/kernel/irq/spurious.c 2011-06-30 15:38:11.000000000 +0200
+--- head-2011-09-07.orig/kernel/irq/spurious.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/kernel/irq/spurious.c 2011-06-30 15:38:11.000000000 +0200
@@ -288,7 +288,7 @@ void note_interrupt(unsigned int irq, st
*/
if (time_after(jiffies, desc->last_unhandled + HZ/10))
@@ -3592,8 +3601,8 @@ take the forward porting patches:
desc->irqs_unhandled++;
desc->last_unhandled = jiffies;
}
---- head-2011-07-21.orig/kernel/kexec.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/kernel/kexec.c 2011-04-28 11:06:56.000000000 +0200
+--- head-2011-09-07.orig/kernel/kexec.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/kernel/kexec.c 2011-04-28 11:06:56.000000000 +0200
@@ -357,13 +357,26 @@ static int kimage_is_destination_range(s
return 0;
}
@@ -3794,8 +3803,8 @@ take the forward porting patches:
/* Install the new kernel, and Uninstall the old */
image = xchg(dest_image, image);
---- head-2011-07-21.orig/kernel/sysctl.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/kernel/sysctl.c 2011-06-30 15:38:23.000000000 +0200
+--- head-2011-09-07.orig/kernel/sysctl.c 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/kernel/sysctl.c 2011-06-30 15:38:23.000000000 +0200
@@ -855,7 +855,7 @@ static struct ctl_table kern_table[] = {
.proc_handler = proc_dointvec,
},
@@ -3805,8 +3814,8 @@ take the forward porting patches:
{
.procname = "acpi_video_flags",
.data = &acpi_realmode_flags,
---- head-2011-07-21.orig/mm/memory.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/mm/memory.c 2011-07-21 12:07:08.000000000 +0200
+--- head-2011-09-07.orig/mm/memory.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/mm/memory.c 2011-09-07 14:38:26.000000000 +0200
@@ -802,6 +802,12 @@ struct page *vm_normal_page(struct vm_ar
{
unsigned long pfn = pte_pfn(pte);
@@ -3845,7 +3854,7 @@ take the forward porting patches:
tlb_remove_tlb_entry(tlb, pte, addr);
if (unlikely(!page))
continue;
-@@ -1396,6 +1409,7 @@ unsigned long zap_page_range(struct vm_a
+@@ -1385,6 +1398,7 @@ unsigned long zap_page_range(struct vm_a
tlb_finish_mmu(&tlb, address, end);
return end;
}
@@ -3853,7 +3862,7 @@ take the forward porting patches:
/**
* zap_vma_ptes - remove ptes mapping the vma
-@@ -1706,6 +1720,28 @@ int __get_user_pages(struct task_struct
+@@ -1695,6 +1709,28 @@ int __get_user_pages(struct task_struct
goto next_page;
}
@@ -3882,9 +3891,9 @@ take the forward porting patches:
if (!vma ||
(vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
!(vm_flags & vma->vm_flags))
---- head-2011-07-21.orig/mm/mmap.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/mm/mmap.c 2011-06-30 15:38:40.000000000 +0200
-@@ -1898,6 +1898,12 @@ static void unmap_region(struct mm_struc
+--- head-2011-09-07.orig/mm/mmap.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/mm/mmap.c 2011-09-07 14:38:29.000000000 +0200
+@@ -1890,6 +1890,12 @@ static void unmap_region(struct mm_struc
tlb_finish_mmu(&tlb, start, end);
}
@@ -3897,7 +3906,7 @@ take the forward porting patches:
/*
* Create a list of vma's touched by the unmap, removing them from the mm's
* vma list as we go..
-@@ -1914,6 +1920,7 @@ detach_vmas_to_be_unmapped(struct mm_str
+@@ -1906,6 +1912,7 @@ detach_vmas_to_be_unmapped(struct mm_str
vma->vm_prev = NULL;
do {
rb_erase(&vma->vm_rb, &mm->mm_rb);
@@ -3905,7 +3914,7 @@ take the forward porting patches:
mm->map_count--;
tail_vma = vma;
vma = vma->vm_next;
-@@ -2257,6 +2264,9 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2249,6 +2256,9 @@ void exit_mmap(struct mm_struct *mm)
arch_exit_mmap(mm);
@@ -3915,8 +3924,8 @@ take the forward porting patches:
vma = mm->mmap;
if (!vma) /* Can happen if dup_mmap() received an OOM */
return;
---- head-2011-07-21.orig/mm/mprotect.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/mm/mprotect.c 2011-06-30 15:38:52.000000000 +0200
+--- head-2011-09-07.orig/mm/mprotect.c 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/mm/mprotect.c 2011-06-30 15:38:52.000000000 +0200
@@ -97,6 +97,8 @@ static inline void change_pmd_range(stru
}
if (pmd_none_or_clear_bad(pmd))
@@ -3926,8 +3935,8 @@ take the forward porting patches:
change_pte_range(vma->vm_mm, pmd, addr, next, newprot,
dirty_accountable);
} while (pmd++, addr = next, addr != end);
---- head-2011-07-21.orig/mm/page_alloc.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/mm/page_alloc.c 2011-06-30 15:38:58.000000000 +0200
+--- head-2011-09-07.orig/mm/page_alloc.c 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/mm/page_alloc.c 2011-06-30 15:38:58.000000000 +0200
@@ -653,6 +653,13 @@ static bool free_pages_prepare(struct pa
int i;
int bad = 0;
@@ -3942,8 +3951,8 @@ take the forward porting patches:
trace_mm_page_free_direct(page, order);
kmemcheck_free_shadow(page, order);
---- head-2011-07-21.orig/scripts/Makefile.build 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/scripts/Makefile.build 2011-06-30 15:39:08.000000000 +0200
+--- head-2011-09-07.orig/scripts/Makefile.build 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/scripts/Makefile.build 2011-06-30 15:39:08.000000000 +0200
@@ -126,6 +126,21 @@ ifndef obj
$(warning kbuild: Makefile.build is included improperly)
endif
@@ -3966,8 +3975,8 @@ take the forward porting patches:
# ===========================================================================
ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),)
---- head-2011-07-21.orig/scripts/Makefile.lib 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/scripts/Makefile.lib 2011-04-13 11:25:29.000000000 +0200
+--- head-2011-09-07.orig/scripts/Makefile.lib 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/scripts/Makefile.lib 2011-04-13 11:25:29.000000000 +0200
@@ -22,6 +22,12 @@ obj-m := $(filter-out $(obj-y),$(obj-m))
lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m)))
diff --git a/patches.xen/xen3-auto-include-xen-interface.diff b/patches.xen/xen3-auto-include-xen-interface.diff
index c7e827afb7..dd630fdf9c 100644
--- a/patches.xen/xen3-auto-include-xen-interface.diff
+++ b/patches.xen/xen3-auto-include-xen-interface.diff
@@ -1,5 +1,5 @@
Subject: xen3 include-xen-interface
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
@@ -1916,8 +1916,8 @@ Acked-by: jbeulich@novell.com
+ * End:
+ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/include/xen/interface/domctl.h 2011-03-17 13:50:24.000000000 +0100
-@@ -0,0 +1,968 @@
++++ b/include/xen/interface/domctl.h 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,969 @@
+/******************************************************************************
+ * domctl.h
+ *
@@ -2053,6 +2053,7 @@ Acked-by: jbeulich@novell.com
+#define XEN_DOMCTL_PFINFO_LTABTYPE_MASK (0x7U<<28)
+#define XEN_DOMCTL_PFINFO_LPINTAB (0x1U<<31)
+#define XEN_DOMCTL_PFINFO_XTAB (0xfU<<28) /* invalid page */
++#define XEN_DOMCTL_PFINFO_XALLOC (0xeU<<28) /* allocate-only page */
+#define XEN_DOMCTL_PFINFO_PAGEDTAB (0x8U<<28)
+#define XEN_DOMCTL_PFINFO_LTAB_MASK (0xfU<<28)
+
@@ -3145,8 +3146,8 @@ Acked-by: jbeulich@novell.com
+ * End:
+ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/include/xen/interface/hvm/save.h 2011-05-23 10:40:00.000000000 +0200
-@@ -0,0 +1,110 @@
++++ b/include/xen/interface/hvm/save.h 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,111 @@
+/*
+ * hvm/save.h
+ *
@@ -3216,6 +3217,7 @@ Acked-by: jbeulich@novell.com
+ struct __HVM_SAVE_TYPE_##_x { _type t; char c[_code]; char cpt[2];}; \
+ struct __HVM_SAVE_TYPE_COMPAT_##_x { _ctype t; }
+
++# include <xen/lib.h> /* BUG() */
+# define DECLARE_HVM_SAVE_TYPE(_x, _code, _type) \
+ static inline int __HVM_SAVE_FIX_COMPAT_##_x(void *h) { BUG(); return -1; } \
+ struct __HVM_SAVE_TYPE_##_x { _type t; char c[_code]; char cpt[1];}; \
@@ -3966,8 +3968,8 @@ Acked-by: jbeulich@novell.com
+ * End:
+ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/include/xen/interface/mem_event.h 2011-05-23 10:40:00.000000000 +0200
-@@ -0,0 +1,86 @@
++++ b/include/xen/interface/mem_event.h 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,87 @@
+/******************************************************************************
+ * mem_event.h
+ *
@@ -4016,6 +4018,7 @@ Acked-by: jbeulich@novell.com
+#define MEM_EVENT_REASON_CR3 3 /* CR3 was hit: gfn is CR3 value */
+#define MEM_EVENT_REASON_CR4 4 /* CR4 was hit: gfn is CR4 value */
+#define MEM_EVENT_REASON_INT3 5 /* int3 was hit: gla/gfn are RIP */
++#define MEM_EVENT_REASON_SINGLESTEP 6 /* single step was invoked: gla/gfn are RIP */
+
+typedef struct mem_event_shared_page {
+ uint32_t port;
@@ -4138,8 +4141,8 @@ Acked-by: jbeulich@novell.com
+ * End:
+ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/include/xen/interface/platform.h 2010-01-04 11:56:34.000000000 +0100
-@@ -0,0 +1,393 @@
++++ b/include/xen/interface/platform.h 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,488 @@
+/******************************************************************************
+ * platform.h
+ *
@@ -4256,10 +4259,86 @@ Acked-by: jbeulich@novell.com
+typedef struct xenpf_platform_quirk xenpf_platform_quirk_t;
+DEFINE_XEN_GUEST_HANDLE(xenpf_platform_quirk_t);
+
++#define XENPF_efi_runtime_call 49
++#define XEN_EFI_get_time 1
++#define XEN_EFI_set_time 2
++#define XEN_EFI_get_wakeup_time 3
++#define XEN_EFI_set_wakeup_time 4
++#define XEN_EFI_get_next_high_monotonic_count 5
++#define XEN_EFI_get_variable 6
++#define XEN_EFI_set_variable 7
++#define XEN_EFI_get_next_variable_name 8
++struct xenpf_efi_runtime_call {
++ uint32_t function;
++ /*
++ * This field is generally used for per sub-function flags (defined
++ * below), except for the XEN_EFI_get_next_high_monotonic_count case,
++ * where it holds the single returned value.
++ */
++ uint32_t misc;
++ unsigned long status;
++ union {
++#define XEN_EFI_GET_TIME_SET_CLEARS_NS 0x00000001
++ struct {
++ struct xenpf_efi_time {
++ uint16_t year;
++ uint8_t month;
++ uint8_t day;
++ uint8_t hour;
++ uint8_t min;
++ uint8_t sec;
++ uint32_t ns;
++ int16_t tz;
++ uint8_t daylight;
++ } time;
++ uint32_t resolution;
++ uint32_t accuracy;
++ } get_time;
++
++ struct xenpf_efi_time set_time;
++
++#define XEN_EFI_GET_WAKEUP_TIME_ENABLED 0x00000001
++#define XEN_EFI_GET_WAKEUP_TIME_PENDING 0x00000002
++ struct xenpf_efi_time get_wakeup_time;
++
++#define XEN_EFI_SET_WAKEUP_TIME_ENABLE 0x00000001
++#define XEN_EFI_SET_WAKEUP_TIME_ENABLE_ONLY 0x00000002
++ struct xenpf_efi_time set_wakeup_time;
++
++#define XEN_EFI_VARIABLE_NON_VOLATILE 0x00000001
++#define XEN_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
++#define XEN_EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
++ struct {
++ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
++ unsigned long size;
++ XEN_GUEST_HANDLE(void) data;
++ struct xenpf_efi_guid {
++ uint32_t data1;
++ uint16_t data2;
++ uint16_t data3;
++ uint8_t data4[8];
++ } vendor_guid;
++ } get_variable, set_variable;
++
++ struct {
++ unsigned long size;
++ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
++ struct xenpf_efi_guid vendor_guid;
++ } get_next_variable_name;
++ } u;
++};
++typedef struct xenpf_efi_runtime_call xenpf_efi_runtime_call_t;
++DEFINE_XEN_GUEST_HANDLE(xenpf_efi_runtime_call_t);
++
+#define XENPF_firmware_info 50
+#define XEN_FW_DISK_INFO 1 /* from int 13 AH=08/41/48 */
+#define XEN_FW_DISK_MBR_SIGNATURE 2 /* from MBR offset 0x1b8 */
+#define XEN_FW_VBEDDC_INFO 3 /* from int 10 AX=4f15 */
++#define XEN_FW_EFI_INFO 4 /* from EFI */
++#define XEN_FW_EFI_VERSION 0
++#define XEN_FW_EFI_CONFIG_TABLE 1
++#define XEN_FW_EFI_VENDOR 2
++#define XEN_FW_EFI_MEM_INFO 3
+struct xenpf_firmware_info {
+ /* IN variables. */
+ uint32_t type;
@@ -4290,6 +4369,24 @@ Acked-by: jbeulich@novell.com
+ /* must refer to 128-byte buffer */
+ XEN_GUEST_HANDLE(uint8) edid;
+ } vbeddc_info; /* XEN_FW_VBEDDC_INFO */
++ union xenpf_efi_info {
++ uint32_t version;
++ struct {
++ uint64_t addr; /* EFI_CONFIGURATION_TABLE */
++ uint32_t nent;
++ } cfg;
++ struct {
++ uint32_t revision;
++ uint32_t bufsz; /* input, in bytes */
++ XEN_GUEST_HANDLE(void) name; /* UCS-2/UTF-16 string */
++ } vendor;
++ struct {
++ uint64_t addr;
++ uint64_t size;
++ uint64_t attr;
++ uint32_t type;
++ } mem;
++ } efi_info; /* XEN_FW_EFI_INFO */
+ } u;
+};
+typedef struct xenpf_firmware_info xenpf_firmware_info_t;
@@ -4507,6 +4604,7 @@ Acked-by: jbeulich@novell.com
+ struct xenpf_read_memtype read_memtype;
+ struct xenpf_microcode_update microcode;
+ struct xenpf_platform_quirk platform_quirk;
++ struct xenpf_efi_runtime_call efi_runtime_call;
+ struct xenpf_firmware_info firmware_info;
+ struct xenpf_enter_acpi_sleep enter_acpi_sleep;
+ struct xenpf_change_freq change_freq;
@@ -5325,8 +5423,8 @@ Acked-by: jbeulich@novell.com
+ * End:
+ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/include/xen/interface/trace.h 2011-05-23 10:40:00.000000000 +0200
-@@ -0,0 +1,231 @@
++++ b/include/xen/interface/trace.h 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,241 @@
+/******************************************************************************
+ * include/public/trace.h
+ *
@@ -5367,7 +5465,7 @@ Acked-by: jbeulich@novell.com
+#define TRC_MEM 0x0010f000 /* Xen memory trace */
+#define TRC_PV 0x0020f000 /* Xen PV traces */
+#define TRC_SHADOW 0x0040f000 /* Xen shadow tracing */
-+#define TRC_PM 0x0080f000 /* Xen power management trace */
++#define TRC_HW 0x0080f000 /* Xen hardware-related traces */
+#define TRC_GUEST 0x0800f000 /* Guest-generated traces */
+#define TRC_ALL 0x0ffff000
+#define TRC_HD_TO_EVENT(x) ((x)&0x0fffffff)
@@ -5386,11 +5484,14 @@ Acked-by: jbeulich@novell.com
+#define TRC_SCHED_CLASS 0x00022000 /* Scheduler-specific */
+#define TRC_SCHED_VERBOSE 0x00028000 /* More inclusive scheduling */
+
++/* Trace classes for Hardware */
++#define TRC_HW_PM 0x00801000 /* Power management traces */
++#define TRC_HW_IRQ 0x00802000 /* Traces relating to the handling of IRQs */
++
+/* Trace events per class */
+#define TRC_LOST_RECORDS (TRC_GEN + 1)
+#define TRC_TRACE_WRAP_BUFFER (TRC_GEN + 2)
+#define TRC_TRACE_CPU_CHANGE (TRC_GEN + 3)
-+#define TRC_TRACE_IRQ (TRC_GEN + 4)
+
+#define TRC_SCHED_RUNSTATE_CHANGE (TRC_SCHED_MIN + 1)
+#define TRC_SCHED_CONTINUE_RUNNING (TRC_SCHED_MIN + 2)
@@ -5494,14 +5595,21 @@ Acked-by: jbeulich@novell.com
+#define TRC_HVM_IOPORT_WRITE (TRC_HVM_HANDLER + 0x216)
+#define TRC_HVM_IOMEM_WRITE (TRC_HVM_HANDLER + 0x217)
+
-+/* trace subclasses for power management */
-+#define TRC_PM_FREQ 0x00801000 /* xen cpu freq events */
-+#define TRC_PM_IDLE 0x00802000 /* xen cpu idle events */
-+
+/* trace events for per class */
-+#define TRC_PM_FREQ_CHANGE (TRC_PM_FREQ + 0x01)
-+#define TRC_PM_IDLE_ENTRY (TRC_PM_IDLE + 0x01)
-+#define TRC_PM_IDLE_EXIT (TRC_PM_IDLE + 0x02)
++#define TRC_PM_FREQ_CHANGE (TRC_HW_PM + 0x01)
++#define TRC_PM_IDLE_ENTRY (TRC_HW_PM + 0x02)
++#define TRC_PM_IDLE_EXIT (TRC_HW_PM + 0x03)
++
++/* Trace events for IRQs */
++#define TRC_HW_IRQ_MOVE_CLEANUP_DELAY (TRC_HW_IRQ + 0x1)
++#define TRC_HW_IRQ_MOVE_CLEANUP (TRC_HW_IRQ + 0x2)
++#define TRC_HW_IRQ_BIND_VECTOR (TRC_HW_IRQ + 0x3)
++#define TRC_HW_IRQ_CLEAR_VECTOR (TRC_HW_IRQ + 0x4)
++#define TRC_HW_IRQ_MOVE_FINISH (TRC_HW_IRQ + 0x5)
++#define TRC_HW_IRQ_ASSIGN_VECTOR (TRC_HW_IRQ + 0x6)
++#define TRC_HW_IRQ_UNMAPPED_VECTOR (TRC_HW_IRQ + 0x7)
++#define TRC_HW_IRQ_HANDLED (TRC_HW_IRQ + 0x8)
++
+
+/* This structure represents a single trace buffer record. */
+struct t_rec {
diff --git a/patches.xen/xen3-auto-xen-arch.diff b/patches.xen/xen3-auto-xen-arch.diff
index 9ff9e60514..02f8b15fe2 100644
--- a/patches.xen/xen3-auto-xen-arch.diff
+++ b/patches.xen/xen3-auto-xen-arch.diff
@@ -1,5 +1,5 @@
Subject: xen3 xen-arch
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
@@ -74,6 +74,7 @@ for reference, prefixed with the version the removal occured):
2.6.18/arch/x86/kernel/quirks-xen.c
2.6.18/arch/x86/include/mach-xen/asm/pgtable-2level.h
2.6.18/arch/x86/include/mach-xen/asm/pgtable-2level-defs.h
+2.6.18/arch/x86/pci/irq-xen.c
2.6.19/arch/x86/include/mach-xen/asm/ptrace.h
2.6.23/arch/x86/include/mach-xen/asm/ptrace_64.h
2.6.23/arch/x86/kernel/vsyscall-note_32-xen.S
@@ -2925,8 +2926,8 @@ for reference, prefixed with the version the removal occured):
+}
+__initcall(fixup_init);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/kernel/head_32-xen.S 2007-06-12 13:12:48.000000000 +0200
-@@ -0,0 +1,207 @@
++++ b/arch/x86/kernel/head_32-xen.S 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,231 @@
+
+
+.text
@@ -2941,6 +2942,7 @@ for reference, prefixed with the version the removal occured):
+#include <asm/dwarf2.h>
+#include <xen/interface/xen.h>
+#include <xen/interface/elfnote.h>
++#include <xen/interface/features.h>
+
+/*
+ * References to members of the new_cpu_data structure.
@@ -3071,6 +3073,18 @@ for reference, prefixed with the version the removal occured):
+ .quad 0x0000000000000000 /* 0xf0 - unused */
+ .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
+
++#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
++# define XEN_DOM0_CAP 0
++# define XEN_DOM0_CAP_STR ""
++#else
++# define XEN_DOM0_CAP (1 << XENFEAT_dom0)
++# if CONFIG_XEN_COMPAT < 0x040200
++# define XEN_DOM0_CAP_STR ""
++# else
++# define XEN_DOM0_CAP_STR "|dom0"
++# endif
++#endif
++
+#if CONFIG_XEN_COMPAT <= 0x030002
+/*
+ * __xen_guest information
@@ -3124,7 +3138,18 @@ for reference, prefixed with the version the removal occured):
+ ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .long, startup_32)
+ ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long, hypercall_page)
+ ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW, .long, HYPERVISOR_VIRT_START)
-+ 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_FEATURES, .ascii, "writable_page_tables";
++ .ascii "|writable_descriptor_tables";
++ .ascii "|auto_translated_physmap";
++ .ascii "|pae_pgdir_above_4gb";
++ .ascii "|supervisor_mode_kernel";
++ .asciz XEN_DOM0_CAP_STR)
++ ELFNOTE(Xen, XEN_ELFNOTE_SUPPORTED_FEATURES, .long, XEN_DOM0_CAP |
++ (1 << XENFEAT_writable_page_tables) |
++ (1 << XENFEAT_writable_descriptor_tables) |
++ (1 << XENFEAT_auto_translated_physmap) |
++ (1 << XENFEAT_pae_pgdir_above_4gb) |
++ (1 << XENFEAT_supervisor_mode_kernel))
+#ifdef CONFIG_X86_PAE
+ ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz, "yes")
+ ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .quad, _PAGE_PRESENT,_PAGE_PRESENT)
@@ -13923,7 +13948,7 @@ for reference, prefixed with the version the removal occured):
+
+obj-y := setup.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/mach-xen/setup.c 2008-04-02 12:34:02.000000000 +0200
++++ b/arch/x86/mach-xen/setup.c 2011-09-07 14:16:54.000000000 +0200
@@ -0,0 +1,158 @@
+/*
+ * Machine specific setup for generic
@@ -14017,13 +14042,12 @@ for reference, prefixed with the version the removal occured):
+
+unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START;
+EXPORT_SYMBOL(machine_to_phys_mapping);
-+unsigned int machine_to_phys_order;
-+EXPORT_SYMBOL(machine_to_phys_order);
++unsigned long machine_to_phys_nr;
++EXPORT_SYMBOL(machine_to_phys_nr);
+
+void __init pre_setup_arch_hook(void)
+{
+ struct xen_machphys_mapping mapping;
-+ unsigned long machine_to_phys_nr_ents;
+ struct xen_platform_parameters pp;
+
+ init_mm.pgd = swapper_pg_dir = (pgd_t *)xen_start_info->pt_base;
@@ -14035,10 +14059,11 @@ for reference, prefixed with the version the removal occured):
+
+ if (HYPERVISOR_memory_op(XENMEM_machphys_mapping, &mapping) == 0) {
+ machine_to_phys_mapping = (unsigned long *)mapping.v_start;
-+ machine_to_phys_nr_ents = mapping.max_mfn + 1;
++ machine_to_phys_nr = mapping.max_mfn + 1;
+ } else
-+ machine_to_phys_nr_ents = MACH2PHYS_NR_ENTRIES;
-+ machine_to_phys_order = fls(machine_to_phys_nr_ents - 1);
++ machine_to_phys_nr = MACH2PHYS_NR_ENTRIES;
++ WARN_ON(machine_to_phys_mapping + (machine_to_phys_nr - 1)
++ < machine_to_phys_mapping);
+
+ if (!xen_feature(XENFEAT_auto_translated_physmap))
+ phys_to_machine_mapping =
@@ -15089,8 +15114,8 @@ for reference, prefixed with the version the removal occured):
+EXPORT_SYMBOL(clear_highpage);
+EXPORT_SYMBOL(copy_highpage);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/mm/hypervisor.c 2009-06-09 15:01:37.000000000 +0200
-@@ -0,0 +1,579 @@
++++ b/arch/x86/mm/hypervisor.c 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,651 @@
+/******************************************************************************
+ * mm/hypervisor.c
+ *
@@ -15283,17 +15308,71 @@ for reference, prefixed with the version the removal occured):
+}
+
+/* Protected by balloon_lock. */
-+#define MAX_CONTIG_ORDER 9 /* 2MB */
-+static unsigned long discontig_frames[1<<MAX_CONTIG_ORDER];
-+static unsigned long limited_frames[1<<MAX_CONTIG_ORDER];
-+static multicall_entry_t cr_mcl[1<<MAX_CONTIG_ORDER];
++#define INIT_CONTIG_ORDER 6 /* 256kB */
++static unsigned int __read_mostly max_contig_order = INIT_CONTIG_ORDER;
++static unsigned long __initdata init_df[1U << INIT_CONTIG_ORDER];
++static unsigned long *__read_mostly discontig_frames = init_df;
++static multicall_entry_t __initdata init_mc[1U << INIT_CONTIG_ORDER];
++static multicall_entry_t *__read_mostly cr_mcl = init_mc;
++
++static int __init init_contig_order(void)
++{
++ discontig_frames = vmalloc((sizeof(*discontig_frames)
++ + sizeof(*cr_mcl)) << INIT_CONTIG_ORDER);
++ BUG_ON(!discontig_frames);
++
++ cr_mcl = (void *)(discontig_frames + (1U << INIT_CONTIG_ORDER));
++
++ return 0;
++}
++core_initcall(init_contig_order);
++
++static int check_contig_order(unsigned int order)
++{
++#ifdef CONFIG_64BIT
++ if (unlikely(order >= 32))
++#else
++ if (unlikely(order > BITS_PER_LONG - fls(sizeof(*cr_mcl))))
++#endif
++ return -ENOMEM;
++
++ if (unlikely(order > max_contig_order))
++ {
++ unsigned long *df = __vmalloc((sizeof(*discontig_frames)
++ + sizeof(*cr_mcl)) << order,
++ GFP_ATOMIC, PAGE_KERNEL);
++ unsigned long flags;
++
++ if (!df) {
++ vfree(df);
++ return -ENOMEM;
++ }
++ balloon_lock(flags);
++ if (order > max_contig_order) {
++ void *temp = discontig_frames;
++
++ discontig_frames = df;
++ cr_mcl = (void *)(df + (1U << order));
++ df = temp;
++
++ wmb();
++ max_contig_order = order;
++ }
++ balloon_unlock(flags);
++ vfree(df);
++ printk(KERN_INFO
++ "Adjusted maximum contiguous region order to %u\n",
++ order);
++ }
++
++ return 0;
++}
+
+/* Ensure multi-page extents are contiguous in machine memory. */
+int xen_create_contiguous_region(
+ unsigned long vstart, unsigned int order, unsigned int address_bits)
+{
-+ unsigned long *in_frames = discontig_frames, out_frame;
-+ unsigned long frame, flags;
++ unsigned long *in_frames, out_frame, frame, flags;
+ unsigned int i;
+ int rc, success;
+ struct xen_memory_exchange exchange = {
@@ -15318,16 +15397,19 @@ for reference, prefixed with the version the removal occured):
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return 0;
+
-+ if (unlikely(order > MAX_CONTIG_ORDER))
-+ return -ENOMEM;
++ rc = check_contig_order(order);
++ if (unlikely(rc))
++ return rc;
+
-+ set_xen_guest_handle(exchange.in.extent_start, in_frames);
+ set_xen_guest_handle(exchange.out.extent_start, &out_frame);
+
+ scrub_pages((void *)vstart, 1 << order);
+
+ balloon_lock(flags);
+
++ in_frames = discontig_frames;
++ set_xen_guest_handle(exchange.in.extent_start, in_frames);
++
+ /* 1. Zap current PTEs, remembering MFNs. */
+ for (i = 0; i < (1U<<order); i++) {
+ in_frames[i] = pfn_to_mfn((__pa(vstart) >> PAGE_SHIFT) + i);
@@ -15386,8 +15468,7 @@ for reference, prefixed with the version the removal occured):
+
+void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order)
+{
-+ unsigned long *out_frames = discontig_frames, in_frame;
-+ unsigned long frame, flags;
++ unsigned long *out_frames, in_frame, frame, flags;
+ unsigned int i;
+ int rc, success;
+ struct xen_memory_exchange exchange = {
@@ -15406,16 +15487,18 @@ for reference, prefixed with the version the removal occured):
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return;
+
-+ if (unlikely(order > MAX_CONTIG_ORDER))
++ if (unlikely(order > max_contig_order))
+ return;
+
+ set_xen_guest_handle(exchange.in.extent_start, &in_frame);
-+ set_xen_guest_handle(exchange.out.extent_start, out_frames);
+
+ scrub_pages((void *)vstart, 1 << order);
+
+ balloon_lock(flags);
+
++ out_frames = discontig_frames;
++ set_xen_guest_handle(exchange.out.extent_start, out_frames);
++
+ /* 1. Find start MFN of contiguous extent. */
+ in_frame = pfn_to_mfn(__pa(vstart) >> PAGE_SHIFT);
+
@@ -15469,7 +15552,7 @@ for reference, prefixed with the version the removal occured):
+static void undo_limit_pages(struct page *pages, unsigned int order)
+{
+ BUG_ON(xen_feature(XENFEAT_auto_translated_physmap));
-+ BUG_ON(order > MAX_CONTIG_ORDER);
++ BUG_ON(order > max_contig_order);
+ xen_limit_pages_to_max_mfn(pages, order, 0);
+ ClearPageForeign(pages);
+ __free_pages(pages, order);
@@ -15478,12 +15561,11 @@ for reference, prefixed with the version the removal occured):
+int xen_limit_pages_to_max_mfn(
+ struct page *pages, unsigned int order, unsigned int address_bits)
+{
-+ unsigned long flags, frame;
-+ unsigned long *in_frames = discontig_frames, *out_frames = limited_frames;
++ unsigned long flags, frame, *limit_map, _limit_map;
++ unsigned long *in_frames, *out_frames;
+ struct page *page;
+ unsigned int i, n, nr_mcl;
+ int rc, success;
-+ DECLARE_BITMAP(limit_map, 1 << MAX_CONTIG_ORDER);
+
+ struct xen_memory_exchange exchange = {
+ .in = {
@@ -15500,23 +15582,30 @@ for reference, prefixed with the version the removal occured):
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return 0;
+
-+ if (unlikely(order > MAX_CONTIG_ORDER))
-+ return -ENOMEM;
++ if (address_bits && address_bits < PAGE_SHIFT)
++ return -EINVAL;
+
-+ if (address_bits) {
-+ if (address_bits < PAGE_SHIFT)
-+ return -EINVAL;
++ rc = check_contig_order(order + 1);
++ if (unlikely(rc))
++ return rc;
++
++ if (BITS_PER_LONG >> order) {
++ limit_map = kmalloc(BITS_TO_LONGS(1U << order)
++ * sizeof(*limit_map), GFP_ATOMIC);
++ if (unlikely(!limit_map))
++ return -ENOMEM;
++ } else
++ limit_map = &_limit_map;
++
++ if (address_bits)
+ bitmap_zero(limit_map, 1U << order);
-+ } else if (order) {
++ else if (order) {
+ BUILD_BUG_ON(sizeof(pages->index) != sizeof(*limit_map));
+ for (i = 0; i < BITS_TO_LONGS(1U << order); ++i)
+ limit_map[i] = pages[i + 1].index;
+ } else
+ __set_bit(0, limit_map);
+
-+ set_xen_guest_handle(exchange.in.extent_start, in_frames);
-+ set_xen_guest_handle(exchange.out.extent_start, out_frames);
-+
+ /* 0. Scrub the pages. */
+ for (i = 0, n = 0; i < 1U<<order ; i++) {
+ page = &pages[i];
@@ -15536,14 +15625,22 @@ for reference, prefixed with the version the removal occured):
+ }
+#endif
+ }
-+ if (bitmap_empty(limit_map, 1U << order))
++ if (bitmap_empty(limit_map, 1U << order)) {
++ if (limit_map != &_limit_map)
++ kfree(limit_map);
+ return 0;
++ }
+
+ if (n)
+ kmap_flush_unused();
+
+ balloon_lock(flags);
+
++ in_frames = discontig_frames;
++ set_xen_guest_handle(exchange.in.extent_start, in_frames);
++ out_frames = in_frames + (1U << order);
++ set_xen_guest_handle(exchange.out.extent_start, out_frames);
++
+ /* 1. Zap current PTEs (if any), remembering MFNs. */
+ for (i = 0, n = 0, nr_mcl = 0; i < (1U<<order); i++) {
+ if(!test_bit(i, limit_map))
@@ -15610,10 +15707,7 @@ for reference, prefixed with the version the removal occured):
+
+ balloon_unlock(flags);
+
-+ if (!success)
-+ return -ENOMEM;
-+
-+ if (address_bits) {
++ if (success && address_bits) {
+ if (order) {
+ BUILD_BUG_ON(sizeof(*limit_map) != sizeof(pages->index));
+ for (i = 0; i < BITS_TO_LONGS(1U << order); ++i)
@@ -15622,7 +15716,10 @@ for reference, prefixed with the version the removal occured):
+ SetPageForeign(pages, undo_limit_pages);
+ }
+
-+ return 0;
++ if (limit_map != &_limit_map)
++ kfree(limit_map);
++
++ return success ? 0 : -ENOMEM;
+}
+EXPORT_SYMBOL_GPL(xen_limit_pages_to_max_mfn);
+
@@ -17864,1220 +17961,6 @@ for reference, prefixed with the version the removal occured):
+ xenoprofile_exit();
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/pci/irq-xen.c 2008-03-06 08:54:32.000000000 +0100
-@@ -0,0 +1,1211 @@
-+/*
-+ * Low-Level PCI Support for PC -- Routing of Interrupts
-+ *
-+ * (c) 1999--2000 Martin Mares <mj@ucw.cz>
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/pci.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/interrupt.h>
-+#include <linux/dmi.h>
-+#include <asm/io.h>
-+#include <asm/smp.h>
-+#include <asm/io_apic.h>
-+#include <linux/irq.h>
-+#include <linux/acpi.h>
-+
-+#include "pci.h"
-+
-+#define PIRQ_SIGNATURE (('$' << 0) + ('P' << 8) + ('I' << 16) + ('R' << 24))
-+#define PIRQ_VERSION 0x0100
-+
-+static int broken_hp_bios_irq9;
-+static int acer_tm360_irqrouting;
-+
-+static struct irq_routing_table *pirq_table;
-+
-+static int pirq_enable_irq(struct pci_dev *dev);
-+
-+/*
-+ * Never use: 0, 1, 2 (timer, keyboard, and cascade)
-+ * Avoid using: 13, 14 and 15 (FP error and IDE).
-+ * Penalize: 3, 4, 6, 7, 12 (known ISA uses: serial, floppy, parallel and mouse)
-+ */
-+unsigned int pcibios_irq_mask = 0xfff8;
-+
-+static int pirq_penalty[16] = {
-+ 1000000, 1000000, 1000000, 1000, 1000, 0, 1000, 1000,
-+ 0, 0, 0, 0, 1000, 100000, 100000, 100000
-+};
-+
-+struct irq_router {
-+ char *name;
-+ u16 vendor, device;
-+ int (*get)(struct pci_dev *router, struct pci_dev *dev, int pirq);
-+ int (*set)(struct pci_dev *router, struct pci_dev *dev, int pirq, int new);
-+};
-+
-+struct irq_router_handler {
-+ u16 vendor;
-+ int (*probe)(struct irq_router *r, struct pci_dev *router, u16 device);
-+};
-+
-+int (*pcibios_enable_irq)(struct pci_dev *dev) = NULL;
-+void (*pcibios_disable_irq)(struct pci_dev *dev) = NULL;
-+
-+/*
-+ * Check passed address for the PCI IRQ Routing Table signature
-+ * and perform checksum verification.
-+ */
-+
-+static inline struct irq_routing_table * pirq_check_routing_table(u8 *addr)
-+{
-+ struct irq_routing_table *rt;
-+ int i;
-+ u8 sum;
-+
-+ rt = (struct irq_routing_table *) addr;
-+ if (rt->signature != PIRQ_SIGNATURE ||
-+ rt->version != PIRQ_VERSION ||
-+ rt->size % 16 ||
-+ rt->size < sizeof(struct irq_routing_table))
-+ return NULL;
-+ sum = 0;
-+ for (i=0; i < rt->size; i++)
-+ sum += addr[i];
-+ if (!sum) {
-+ DBG(KERN_DEBUG "PCI: Interrupt Routing Table found at 0x%p\n", rt);
-+ return rt;
-+ }
-+ return NULL;
-+}
-+
-+
-+
-+/*
-+ * Search 0xf0000 -- 0xfffff for the PCI IRQ Routing Table.
-+ */
-+
-+static struct irq_routing_table * __init pirq_find_routing_table(void)
-+{
-+ u8 *addr;
-+ struct irq_routing_table *rt;
-+
-+#ifdef CONFIG_XEN
-+ if (!is_initial_xendomain())
-+ return NULL;
-+#endif
-+ if (pirq_table_addr) {
-+ rt = pirq_check_routing_table((u8 *) isa_bus_to_virt(pirq_table_addr));
-+ if (rt)
-+ return rt;
-+ printk(KERN_WARNING "PCI: PIRQ table NOT found at pirqaddr\n");
-+ }
-+ for(addr = (u8 *) isa_bus_to_virt(0xf0000); addr < (u8 *) isa_bus_to_virt(0x100000); addr += 16) {
-+ rt = pirq_check_routing_table(addr);
-+ if (rt)
-+ return rt;
-+ }
-+ return NULL;
-+}
-+
-+/*
-+ * If we have a IRQ routing table, use it to search for peer host
-+ * bridges. It's a gross hack, but since there are no other known
-+ * ways how to get a list of buses, we have to go this way.
-+ */
-+
-+static void __init pirq_peer_trick(void)
-+{
-+ struct irq_routing_table *rt = pirq_table;
-+ u8 busmap[256];
-+ int i;
-+ struct irq_info *e;
-+
-+ memset(busmap, 0, sizeof(busmap));
-+ for(i=0; i < (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info); i++) {
-+ e = &rt->slots[i];
-+#ifdef DEBUG
-+ {
-+ int j;
-+ DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot);
-+ for(j=0; j<4; j++)
-+ DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap);
-+ DBG("\n");
-+ }
-+#endif
-+ busmap[e->bus] = 1;
-+ }
-+ for(i = 1; i < 256; i++) {
-+ if (!busmap[i] || pci_find_bus(0, i))
-+ continue;
-+ if (pci_scan_bus(i, &pci_root_ops, NULL))
-+ printk(KERN_INFO "PCI: Discovered primary peer bus %02x [IRQ]\n", i);
-+ }
-+ pcibios_last_bus = -1;
-+}
-+
-+/*
-+ * Code for querying and setting of IRQ routes on various interrupt routers.
-+ */
-+
-+void eisa_set_level_irq(unsigned int irq)
-+{
-+ unsigned char mask = 1 << (irq & 7);
-+ unsigned int port = 0x4d0 + (irq >> 3);
-+ unsigned char val;
-+ static u16 eisa_irq_mask;
-+
-+ if (irq >= 16 || (1 << irq) & eisa_irq_mask)
-+ return;
-+
-+ eisa_irq_mask |= (1 << irq);
-+ printk(KERN_DEBUG "PCI: setting IRQ %u as level-triggered\n", irq);
-+ val = inb(port);
-+ if (!(val & mask)) {
-+ DBG(KERN_DEBUG " -> edge");
-+ outb(val | mask, port);
-+ }
-+}
-+
-+/*
-+ * Common IRQ routing practice: nybbles in config space,
-+ * offset by some magic constant.
-+ */
-+static unsigned int read_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr)
-+{
-+ u8 x;
-+ unsigned reg = offset + (nr >> 1);
-+
-+ pci_read_config_byte(router, reg, &x);
-+ return (nr & 1) ? (x >> 4) : (x & 0xf);
-+}
-+
-+static void write_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr, unsigned int val)
-+{
-+ u8 x;
-+ unsigned reg = offset + (nr >> 1);
-+
-+ pci_read_config_byte(router, reg, &x);
-+ x = (nr & 1) ? ((x & 0x0f) | (val << 4)) : ((x & 0xf0) | val);
-+ pci_write_config_byte(router, reg, x);
-+}
-+
-+/*
-+ * ALI pirq entries are damn ugly, and completely undocumented.
-+ * This has been figured out from pirq tables, and it's not a pretty
-+ * picture.
-+ */
-+static int pirq_ali_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ static const unsigned char irqmap[16] = { 0, 9, 3, 10, 4, 5, 7, 6, 1, 11, 0, 12, 0, 14, 0, 15 };
-+
-+ return irqmap[read_config_nybble(router, 0x48, pirq-1)];
-+}
-+
-+static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ static const unsigned char irqmap[16] = { 0, 8, 0, 2, 4, 5, 7, 6, 0, 1, 3, 9, 11, 0, 13, 15 };
-+ unsigned int val = irqmap[irq];
-+
-+ if (val) {
-+ write_config_nybble(router, 0x48, pirq-1, val);
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * The Intel PIIX4 pirq rules are fairly simple: "pirq" is
-+ * just a pointer to the config space.
-+ */
-+static int pirq_piix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ u8 x;
-+
-+ pci_read_config_byte(router, pirq, &x);
-+ return (x < 16) ? x : 0;
-+}
-+
-+static int pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ pci_write_config_byte(router, pirq, irq);
-+ return 1;
-+}
-+
-+/*
-+ * The VIA pirq rules are nibble-based, like ALI,
-+ * but without the ugly irq number munging.
-+ * However, PIRQD is in the upper instead of lower 4 bits.
-+ */
-+static int pirq_via_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq);
-+}
-+
-+static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq);
-+ return 1;
-+}
-+
-+/*
-+ * The VIA pirq rules are nibble-based, like ALI,
-+ * but without the ugly irq number munging.
-+ * However, for 82C586, nibble map is different .
-+ */
-+static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
-+ return read_config_nybble(router, 0x55, pirqmap[pirq-1]);
-+}
-+
-+static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
-+ write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
-+ return 1;
-+}
-+
-+/*
-+ * ITE 8330G pirq rules are nibble-based
-+ * FIXME: pirqmap may be { 1, 0, 3, 2 },
-+ * 2+3 are both mapped to irq 9 on my system
-+ */
-+static int pirq_ite_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ static const unsigned char pirqmap[4] = { 1, 0, 2, 3 };
-+ return read_config_nybble(router,0x43, pirqmap[pirq-1]);
-+}
-+
-+static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ static const unsigned char pirqmap[4] = { 1, 0, 2, 3 };
-+ write_config_nybble(router, 0x43, pirqmap[pirq-1], irq);
-+ return 1;
-+}
-+
-+/*
-+ * OPTI: high four bits are nibble pointer..
-+ * I wonder what the low bits do?
-+ */
-+static int pirq_opti_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ return read_config_nybble(router, 0xb8, pirq >> 4);
-+}
-+
-+static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ write_config_nybble(router, 0xb8, pirq >> 4, irq);
-+ return 1;
-+}
-+
-+/*
-+ * Cyrix: nibble offset 0x5C
-+ * 0x5C bits 7:4 is INTB bits 3:0 is INTA
-+ * 0x5D bits 7:4 is INTD bits 3:0 is INTC
-+ */
-+static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ return read_config_nybble(router, 0x5C, (pirq-1)^1);
-+}
-+
-+static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ write_config_nybble(router, 0x5C, (pirq-1)^1, irq);
-+ return 1;
-+}
-+
-+/*
-+ * PIRQ routing for SiS 85C503 router used in several SiS chipsets.
-+ * We have to deal with the following issues here:
-+ * - vendors have different ideas about the meaning of link values
-+ * - some onboard devices (integrated in the chipset) have special
-+ * links and are thus routed differently (i.e. not via PCI INTA-INTD)
-+ * - different revision of the router have a different layout for
-+ * the routing registers, particularly for the onchip devices
-+ *
-+ * For all routing registers the common thing is we have one byte
-+ * per routeable link which is defined as:
-+ * bit 7 IRQ mapping enabled (0) or disabled (1)
-+ * bits [6:4] reserved (sometimes used for onchip devices)
-+ * bits [3:0] IRQ to map to
-+ * allowed: 3-7, 9-12, 14-15
-+ * reserved: 0, 1, 2, 8, 13
-+ *
-+ * The config-space registers located at 0x41/0x42/0x43/0x44 are
-+ * always used to route the normal PCI INT A/B/C/D respectively.
-+ * Apparently there are systems implementing PCI routing table using
-+ * link values 0x01-0x04 and others using 0x41-0x44 for PCI INTA..D.
-+ * We try our best to handle both link mappings.
-+ *
-+ * Currently (2003-05-21) it appears most SiS chipsets follow the
-+ * definition of routing registers from the SiS-5595 southbridge.
-+ * According to the SiS 5595 datasheets the revision id's of the
-+ * router (ISA-bridge) should be 0x01 or 0xb0.
-+ *
-+ * Furthermore we've also seen lspci dumps with revision 0x00 and 0xb1.
-+ * Looks like these are used in a number of SiS 5xx/6xx/7xx chipsets.
-+ * They seem to work with the current routing code. However there is
-+ * some concern because of the two USB-OHCI HCs (original SiS 5595
-+ * had only one). YMMV.
-+ *
-+ * Onchip routing for router rev-id 0x01/0xb0 and probably 0x00/0xb1:
-+ *
-+ * 0x61: IDEIRQ:
-+ * bits [6:5] must be written 01
-+ * bit 4 channel-select primary (0), secondary (1)
-+ *
-+ * 0x62: USBIRQ:
-+ * bit 6 OHCI function disabled (0), enabled (1)
-+ *
-+ * 0x6a: ACPI/SCI IRQ: bits 4-6 reserved
-+ *
-+ * 0x7e: Data Acq. Module IRQ - bits 4-6 reserved
-+ *
-+ * We support USBIRQ (in addition to INTA-INTD) and keep the
-+ * IDE, ACPI and DAQ routing untouched as set by the BIOS.
-+ *
-+ * Currently the only reported exception is the new SiS 65x chipset
-+ * which includes the SiS 69x southbridge. Here we have the 85C503
-+ * router revision 0x04 and there are changes in the register layout
-+ * mostly related to the different USB HCs with USB 2.0 support.
-+ *
-+ * Onchip routing for router rev-id 0x04 (try-and-error observation)
-+ *
-+ * 0x60/0x61/0x62/0x63: 1xEHCI and 3xOHCI (companion) USB-HCs
-+ * bit 6-4 are probably unused, not like 5595
-+ */
-+
-+#define PIRQ_SIS_IRQ_MASK 0x0f
-+#define PIRQ_SIS_IRQ_DISABLE 0x80
-+#define PIRQ_SIS_USB_ENABLE 0x40
-+
-+static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ u8 x;
-+ int reg;
-+
-+ reg = pirq;
-+ if (reg >= 0x01 && reg <= 0x04)
-+ reg += 0x40;
-+ pci_read_config_byte(router, reg, &x);
-+ return (x & PIRQ_SIS_IRQ_DISABLE) ? 0 : (x & PIRQ_SIS_IRQ_MASK);
-+}
-+
-+static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ u8 x;
-+ int reg;
-+
-+ reg = pirq;
-+ if (reg >= 0x01 && reg <= 0x04)
-+ reg += 0x40;
-+ pci_read_config_byte(router, reg, &x);
-+ x &= ~(PIRQ_SIS_IRQ_MASK | PIRQ_SIS_IRQ_DISABLE);
-+ x |= irq ? irq: PIRQ_SIS_IRQ_DISABLE;
-+ pci_write_config_byte(router, reg, x);
-+ return 1;
-+}
-+
-+
-+/*
-+ * VLSI: nibble offset 0x74 - educated guess due to routing table and
-+ * config space of VLSI 82C534 PCI-bridge/router (1004:0102)
-+ * Tested on HP OmniBook 800 covering PIRQ 1, 2, 4, 8 for onboard
-+ * devices, PIRQ 3 for non-pci(!) soundchip and (untested) PIRQ 6
-+ * for the busbridge to the docking station.
-+ */
-+
-+static int pirq_vlsi_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ if (pirq > 8) {
-+ printk(KERN_INFO "VLSI router pirq escape (%d)\n", pirq);
-+ return 0;
-+ }
-+ return read_config_nybble(router, 0x74, pirq-1);
-+}
-+
-+static int pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ if (pirq > 8) {
-+ printk(KERN_INFO "VLSI router pirq escape (%d)\n", pirq);
-+ return 0;
-+ }
-+ write_config_nybble(router, 0x74, pirq-1, irq);
-+ return 1;
-+}
-+
-+/*
-+ * ServerWorks: PCI interrupts mapped to system IRQ lines through Index
-+ * and Redirect I/O registers (0x0c00 and 0x0c01). The Index register
-+ * format is (PCIIRQ## | 0x10), e.g.: PCIIRQ10=0x1a. The Redirect
-+ * register is a straight binary coding of desired PIC IRQ (low nibble).
-+ *
-+ * The 'link' value in the PIRQ table is already in the correct format
-+ * for the Index register. There are some special index values:
-+ * 0x00 for ACPI (SCI), 0x01 for USB, 0x02 for IDE0, 0x04 for IDE1,
-+ * and 0x03 for SMBus.
-+ */
-+static int pirq_serverworks_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ outb_p(pirq, 0xc00);
-+ return inb(0xc01) & 0xf;
-+}
-+
-+static int pirq_serverworks_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ outb_p(pirq, 0xc00);
-+ outb_p(irq, 0xc01);
-+ return 1;
-+}
-+
-+/* Support for AMD756 PCI IRQ Routing
-+ * Jhon H. Caicedo <jhcaiced@osso.org.co>
-+ * Jun/21/2001 0.2.0 Release, fixed to use "nybble" functions... (jhcaiced)
-+ * Jun/19/2001 Alpha Release 0.1.0 (jhcaiced)
-+ * The AMD756 pirq rules are nibble-based
-+ * offset 0x56 0-3 PIRQA 4-7 PIRQB
-+ * offset 0x57 0-3 PIRQC 4-7 PIRQD
-+ */
-+static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
-+{
-+ u8 irq;
-+ irq = 0;
-+ if (pirq <= 4)
-+ {
-+ irq = read_config_nybble(router, 0x56, pirq - 1);
-+ }
-+ printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d get irq : %2d\n",
-+ dev->vendor, dev->device, pirq, irq);
-+ return irq;
-+}
-+
-+static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d SET irq : %2d\n",
-+ dev->vendor, dev->device, pirq, irq);
-+ if (pirq <= 4)
-+ {
-+ write_config_nybble(router, 0x56, pirq - 1, irq);
-+ }
-+ return 1;
-+}
-+
-+#ifdef CONFIG_PCI_BIOS
-+
-+static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
-+{
-+ struct pci_dev *bridge;
-+ int pin = pci_get_interrupt_pin(dev, &bridge);
-+ return pcibios_set_irq_routing(bridge, pin, irq);
-+}
-+
-+#endif
-+
-+static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ static struct pci_device_id __initdata pirq_440gx[] = {
-+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0) },
-+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_2) },
-+ { },
-+ };
-+
-+ /* 440GX has a proprietary PIRQ router -- don't use it */
-+ if (pci_dev_present(pirq_440gx))
-+ return 0;
-+
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_INTEL_82371FB_0:
-+ case PCI_DEVICE_ID_INTEL_82371SB_0:
-+ case PCI_DEVICE_ID_INTEL_82371AB_0:
-+ case PCI_DEVICE_ID_INTEL_82371MX:
-+ case PCI_DEVICE_ID_INTEL_82443MX_0:
-+ case PCI_DEVICE_ID_INTEL_82801AA_0:
-+ case PCI_DEVICE_ID_INTEL_82801AB_0:
-+ case PCI_DEVICE_ID_INTEL_82801BA_0:
-+ case PCI_DEVICE_ID_INTEL_82801BA_10:
-+ case PCI_DEVICE_ID_INTEL_82801CA_0:
-+ case PCI_DEVICE_ID_INTEL_82801CA_12:
-+ case PCI_DEVICE_ID_INTEL_82801DB_0:
-+ case PCI_DEVICE_ID_INTEL_82801E_0:
-+ case PCI_DEVICE_ID_INTEL_82801EB_0:
-+ case PCI_DEVICE_ID_INTEL_ESB_1:
-+ case PCI_DEVICE_ID_INTEL_ICH6_0:
-+ case PCI_DEVICE_ID_INTEL_ICH6_1:
-+ case PCI_DEVICE_ID_INTEL_ICH7_0:
-+ case PCI_DEVICE_ID_INTEL_ICH7_1:
-+ case PCI_DEVICE_ID_INTEL_ICH7_30:
-+ case PCI_DEVICE_ID_INTEL_ICH7_31:
-+ case PCI_DEVICE_ID_INTEL_ESB2_0:
-+ case PCI_DEVICE_ID_INTEL_ICH8_0:
-+ case PCI_DEVICE_ID_INTEL_ICH8_1:
-+ case PCI_DEVICE_ID_INTEL_ICH8_2:
-+ case PCI_DEVICE_ID_INTEL_ICH8_3:
-+ case PCI_DEVICE_ID_INTEL_ICH8_4:
-+ case PCI_DEVICE_ID_INTEL_ICH9_0:
-+ case PCI_DEVICE_ID_INTEL_ICH9_1:
-+ case PCI_DEVICE_ID_INTEL_ICH9_2:
-+ case PCI_DEVICE_ID_INTEL_ICH9_3:
-+ case PCI_DEVICE_ID_INTEL_ICH9_4:
-+ case PCI_DEVICE_ID_INTEL_ICH9_5:
-+ r->name = "PIIX/ICH";
-+ r->get = pirq_piix_get;
-+ r->set = pirq_piix_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int via_router_probe(struct irq_router *r,
-+ struct pci_dev *router, u16 device)
-+{
-+ /* FIXME: We should move some of the quirk fixup stuff here */
-+
-+ /*
-+ * work arounds for some buggy BIOSes
-+ */
-+ if (device == PCI_DEVICE_ID_VIA_82C586_0) {
-+ switch(router->device) {
-+ case PCI_DEVICE_ID_VIA_82C686:
-+ /*
-+ * Asus k7m bios wrongly reports 82C686A
-+ * as 586-compatible
-+ */
-+ device = PCI_DEVICE_ID_VIA_82C686;
-+ break;
-+ case PCI_DEVICE_ID_VIA_8235:
-+ /**
-+ * Asus a7v-x bios wrongly reports 8235
-+ * as 586-compatible
-+ */
-+ device = PCI_DEVICE_ID_VIA_8235;
-+ break;
-+ }
-+ }
-+
-+ switch(device) {
-+ case PCI_DEVICE_ID_VIA_82C586_0:
-+ r->name = "VIA";
-+ r->get = pirq_via586_get;
-+ r->set = pirq_via586_set;
-+ return 1;
-+ case PCI_DEVICE_ID_VIA_82C596:
-+ case PCI_DEVICE_ID_VIA_82C686:
-+ case PCI_DEVICE_ID_VIA_8231:
-+ case PCI_DEVICE_ID_VIA_8233A:
-+ case PCI_DEVICE_ID_VIA_8235:
-+ case PCI_DEVICE_ID_VIA_8237:
-+ /* FIXME: add new ones for 8233/5 */
-+ r->name = "VIA";
-+ r->get = pirq_via_get;
-+ r->set = pirq_via_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_VLSI_82C534:
-+ r->name = "VLSI 82C534";
-+ r->get = pirq_vlsi_get;
-+ r->set = pirq_vlsi_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+
-+static __init int serverworks_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_SERVERWORKS_OSB4:
-+ case PCI_DEVICE_ID_SERVERWORKS_CSB5:
-+ r->name = "ServerWorks";
-+ r->get = pirq_serverworks_get;
-+ r->set = pirq_serverworks_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ if (device != PCI_DEVICE_ID_SI_503)
-+ return 0;
-+
-+ r->name = "SIS";
-+ r->get = pirq_sis_get;
-+ r->set = pirq_sis_set;
-+ return 1;
-+}
-+
-+static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_CYRIX_5520:
-+ r->name = "NatSemi";
-+ r->get = pirq_cyrix_get;
-+ r->set = pirq_cyrix_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_OPTI_82C700:
-+ r->name = "OPTI";
-+ r->get = pirq_opti_get;
-+ r->set = pirq_opti_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_ITE_IT8330G_0:
-+ r->name = "ITE";
-+ r->get = pirq_ite_get;
-+ r->set = pirq_ite_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_AL_M1533:
-+ case PCI_DEVICE_ID_AL_M1563:
-+ printk(KERN_DEBUG "PCI: Using ALI IRQ Router\n");
-+ r->name = "ALI";
-+ r->get = pirq_ali_get;
-+ r->set = pirq_ali_set;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
-+{
-+ switch(device)
-+ {
-+ case PCI_DEVICE_ID_AMD_VIPER_740B:
-+ r->name = "AMD756";
-+ break;
-+ case PCI_DEVICE_ID_AMD_VIPER_7413:
-+ r->name = "AMD766";
-+ break;
-+ case PCI_DEVICE_ID_AMD_VIPER_7443:
-+ r->name = "AMD768";
-+ break;
-+ default:
-+ return 0;
-+ }
-+ r->get = pirq_amd756_get;
-+ r->set = pirq_amd756_set;
-+ return 1;
-+}
-+
-+static __initdata struct irq_router_handler pirq_routers[] = {
-+ { PCI_VENDOR_ID_INTEL, intel_router_probe },
-+ { PCI_VENDOR_ID_AL, ali_router_probe },
-+ { PCI_VENDOR_ID_ITE, ite_router_probe },
-+ { PCI_VENDOR_ID_VIA, via_router_probe },
-+ { PCI_VENDOR_ID_OPTI, opti_router_probe },
-+ { PCI_VENDOR_ID_SI, sis_router_probe },
-+ { PCI_VENDOR_ID_CYRIX, cyrix_router_probe },
-+ { PCI_VENDOR_ID_VLSI, vlsi_router_probe },
-+ { PCI_VENDOR_ID_SERVERWORKS, serverworks_router_probe },
-+ { PCI_VENDOR_ID_AMD, amd_router_probe },
-+ /* Someone with docs needs to add the ATI Radeon IGP */
-+ { 0, NULL }
-+};
-+static struct irq_router pirq_router;
-+static struct pci_dev *pirq_router_dev;
-+
-+
-+/*
-+ * FIXME: should we have an option to say "generic for
-+ * chipset" ?
-+ */
-+
-+static void __init pirq_find_router(struct irq_router *r)
-+{
-+ struct irq_routing_table *rt = pirq_table;
-+ struct irq_router_handler *h;
-+
-+#ifdef CONFIG_PCI_BIOS
-+ if (!rt->signature) {
-+ printk(KERN_INFO "PCI: Using BIOS for IRQ routing\n");
-+ r->set = pirq_bios_set;
-+ r->name = "BIOS";
-+ return;
-+ }
-+#endif
-+
-+ /* Default unless a driver reloads it */
-+ r->name = "default";
-+ r->get = NULL;
-+ r->set = NULL;
-+
-+ DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for %04x:%04x\n",
-+ rt->rtr_vendor, rt->rtr_device);
-+
-+ pirq_router_dev = pci_find_slot(rt->rtr_bus, rt->rtr_devfn);
-+ if (!pirq_router_dev) {
-+ DBG(KERN_DEBUG "PCI: Interrupt router not found at "
-+ "%02x:%02x\n", rt->rtr_bus, rt->rtr_devfn);
-+ return;
-+ }
-+
-+ for( h = pirq_routers; h->vendor; h++) {
-+ /* First look for a router match */
-+ if (rt->rtr_vendor == h->vendor && h->probe(r, pirq_router_dev, rt->rtr_device))
-+ break;
-+ /* Fall back to a device match */
-+ if (pirq_router_dev->vendor == h->vendor && h->probe(r, pirq_router_dev, pirq_router_dev->device))
-+ break;
-+ }
-+ printk(KERN_INFO "PCI: Using IRQ router %s [%04x/%04x] at %s\n",
-+ pirq_router.name,
-+ pirq_router_dev->vendor,
-+ pirq_router_dev->device,
-+ pci_name(pirq_router_dev));
-+}
-+
-+static struct irq_info *pirq_get_info(struct pci_dev *dev)
-+{
-+ struct irq_routing_table *rt = pirq_table;
-+ int entries = (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info);
-+ struct irq_info *info;
-+
-+ for (info = rt->slots; entries--; info++)
-+ if (info->bus == dev->bus->number && PCI_SLOT(info->devfn) == PCI_SLOT(dev->devfn))
-+ return info;
-+ return NULL;
-+}
-+
-+static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
-+{
-+ u8 pin;
-+ struct irq_info *info;
-+ int i, pirq, newirq;
-+ int irq = 0;
-+ u32 mask;
-+ struct irq_router *r = &pirq_router;
-+ struct pci_dev *dev2 = NULL;
-+ char *msg = NULL;
-+
-+ /* Find IRQ pin */
-+ pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
-+ if (!pin) {
-+ DBG(KERN_DEBUG " -> no interrupt pin\n");
-+ return 0;
-+ }
-+ pin = pin - 1;
-+
-+ /* Find IRQ routing entry */
-+
-+ if (!pirq_table)
-+ return 0;
-+
-+ DBG(KERN_DEBUG "IRQ for %s[%c]", pci_name(dev), 'A' + pin);
-+ info = pirq_get_info(dev);
-+ if (!info) {
-+ DBG(" -> not found in routing table\n" KERN_DEBUG);
-+ return 0;
-+ }
-+ pirq = info->irq[pin].link;
-+ mask = info->irq[pin].bitmap;
-+ if (!pirq) {
-+ DBG(" -> not routed\n" KERN_DEBUG);
-+ return 0;
-+ }
-+ DBG(" -> PIRQ %02x, mask %04x, excl %04x", pirq, mask, pirq_table->exclusive_irqs);
-+ mask &= pcibios_irq_mask;
-+
-+ /* Work around broken HP Pavilion Notebooks which assign USB to
-+ IRQ 9 even though it is actually wired to IRQ 11 */
-+
-+ if (broken_hp_bios_irq9 && pirq == 0x59 && dev->irq == 9) {
-+ dev->irq = 11;
-+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11);
-+ r->set(pirq_router_dev, dev, pirq, 11);
-+ }
-+
-+ /* same for Acer Travelmate 360, but with CB and irq 11 -> 10 */
-+ if (acer_tm360_irqrouting && dev->irq == 11 && dev->vendor == PCI_VENDOR_ID_O2) {
-+ pirq = 0x68;
-+ mask = 0x400;
-+ dev->irq = r->get(pirq_router_dev, dev, pirq);
-+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
-+ }
-+
-+ /*
-+ * Find the best IRQ to assign: use the one
-+ * reported by the device if possible.
-+ */
-+ newirq = dev->irq;
-+ if (newirq && !((1 << newirq) & mask)) {
-+ if ( pci_probe & PCI_USE_PIRQ_MASK) newirq = 0;
-+ else printk("\n" KERN_WARNING
-+ "PCI: IRQ %i for device %s doesn't match PIRQ mask "
-+ "- try pci=usepirqmask\n" KERN_DEBUG, newirq,
-+ pci_name(dev));
-+ }
-+ if (!newirq && assign) {
-+ for (i = 0; i < 16; i++) {
-+ if (!(mask & (1 << i)))
-+ continue;
-+ if (pirq_penalty[i] < pirq_penalty[newirq] && can_request_irq(i, IRQF_SHARED))
-+ newirq = i;
-+ }
-+ }
-+ DBG(" -> newirq=%d", newirq);
-+
-+ /* Check if it is hardcoded */
-+ if ((pirq & 0xf0) == 0xf0) {
-+ irq = pirq & 0xf;
-+ DBG(" -> hardcoded IRQ %d\n", irq);
-+ msg = "Hardcoded";
-+ } else if ( r->get && (irq = r->get(pirq_router_dev, dev, pirq)) && \
-+ ((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) {
-+ DBG(" -> got IRQ %d\n", irq);
-+ msg = "Found";
-+ eisa_set_level_irq(irq);
-+ } else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
-+ DBG(" -> assigning IRQ %d", newirq);
-+ if (r->set(pirq_router_dev, dev, pirq, newirq)) {
-+ eisa_set_level_irq(newirq);
-+ DBG(" ... OK\n");
-+ msg = "Assigned";
-+ irq = newirq;
-+ }
-+ }
-+
-+ if (!irq) {
-+ DBG(" ... failed\n");
-+ if (newirq && mask == (1 << newirq)) {
-+ msg = "Guessed";
-+ irq = newirq;
-+ } else
-+ return 0;
-+ }
-+ printk(KERN_INFO "PCI: %s IRQ %d for device %s\n", msg, irq, pci_name(dev));
-+
-+ /* Update IRQ for all devices with the same pirq value */
-+ while ((dev2 = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev2)) != NULL) {
-+ pci_read_config_byte(dev2, PCI_INTERRUPT_PIN, &pin);
-+ if (!pin)
-+ continue;
-+ pin--;
-+ info = pirq_get_info(dev2);
-+ if (!info)
-+ continue;
-+ if (info->irq[pin].link == pirq) {
-+ /* We refuse to override the dev->irq information. Give a warning! */
-+ if ( dev2->irq && dev2->irq != irq && \
-+ (!(pci_probe & PCI_USE_PIRQ_MASK) || \
-+ ((1 << dev2->irq) & mask)) ) {
-+#ifndef CONFIG_PCI_MSI
-+ printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
-+ pci_name(dev2), dev2->irq, irq);
-+#endif
-+ continue;
-+ }
-+ dev2->irq = irq;
-+ pirq_penalty[irq]++;
-+ if (dev != dev2)
-+ printk(KERN_INFO "PCI: Sharing IRQ %d with %s\n", irq, pci_name(dev2));
-+ }
-+ }
-+ return 1;
-+}
-+
-+static void __init pcibios_fixup_irqs(void)
-+{
-+ struct pci_dev *dev = NULL;
-+ u8 pin;
-+
-+ DBG(KERN_DEBUG "PCI: IRQ fixup\n");
-+ while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-+ /*
-+ * If the BIOS has set an out of range IRQ number, just ignore it.
-+ * Also keep track of which IRQ's are already in use.
-+ */
-+ if (dev->irq >= 16) {
-+ DBG(KERN_DEBUG "%s: ignoring bogus IRQ %d\n", pci_name(dev), dev->irq);
-+ dev->irq = 0;
-+ }
-+ /* If the IRQ is already assigned to a PCI device, ignore its ISA use penalty */
-+ if (pirq_penalty[dev->irq] >= 100 && pirq_penalty[dev->irq] < 100000)
-+ pirq_penalty[dev->irq] = 0;
-+ pirq_penalty[dev->irq]++;
-+ }
-+
-+ dev = NULL;
-+ while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-+ pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
-+#ifdef CONFIG_X86_IO_APIC
-+ /*
-+ * Recalculate IRQ numbers if we use the I/O APIC.
-+ */
-+ if (io_apic_assign_pci_irqs)
-+ {
-+ int irq;
-+
-+ if (pin) {
-+ pin--; /* interrupt pins are numbered starting from 1 */
-+ irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, PCI_SLOT(dev->devfn), pin);
-+ /*
-+ * Busses behind bridges are typically not listed in the MP-table.
-+ * In this case we have to look up the IRQ based on the parent bus,
-+ * parent slot, and pin number. The SMP code detects such bridged
-+ * busses itself so we should get into this branch reliably.
-+ */
-+ if (irq < 0 && dev->bus->parent) { /* go back to the bridge */
-+ struct pci_dev * bridge = dev->bus->self;
-+
-+ pin = (pin + PCI_SLOT(dev->devfn)) % 4;
-+ irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
-+ PCI_SLOT(bridge->devfn), pin);
-+ if (irq >= 0)
-+ printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n",
-+ pci_name(bridge), 'A' + pin, irq);
-+ }
-+ if (irq >= 0) {
-+ if (use_pci_vector() &&
-+ !platform_legacy_irq(irq))
-+ irq = IO_APIC_VECTOR(irq);
-+
-+ printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
-+ pci_name(dev), 'A' + pin, irq);
-+ dev->irq = irq;
-+ }
-+ }
-+ }
-+#endif
-+ /*
-+ * Still no IRQ? Try to lookup one...
-+ */
-+ if (pin && !dev->irq)
-+ pcibios_lookup_irq(dev, 0);
-+ }
-+}
-+
-+/*
-+ * Work around broken HP Pavilion Notebooks which assign USB to
-+ * IRQ 9 even though it is actually wired to IRQ 11
-+ */
-+static int __init fix_broken_hp_bios_irq9(struct dmi_system_id *d)
-+{
-+ if (!broken_hp_bios_irq9) {
-+ broken_hp_bios_irq9 = 1;
-+ printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident);
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * Work around broken Acer TravelMate 360 Notebooks which assign
-+ * Cardbus to IRQ 11 even though it is actually wired to IRQ 10
-+ */
-+static int __init fix_acer_tm360_irqrouting(struct dmi_system_id *d)
-+{
-+ if (!acer_tm360_irqrouting) {
-+ acer_tm360_irqrouting = 1;
-+ printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident);
-+ }
-+ return 0;
-+}
-+
-+static struct dmi_system_id __initdata pciirq_dmi_table[] = {
-+ {
-+ .callback = fix_broken_hp_bios_irq9,
-+ .ident = "HP Pavilion N5400 Series Laptop",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-+ DMI_MATCH(DMI_BIOS_VERSION, "GE.M1.03"),
-+ DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"),
-+ DMI_MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736"),
-+ },
-+ },
-+ {
-+ .callback = fix_acer_tm360_irqrouting,
-+ .ident = "Acer TravelMate 36x Laptop",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
-+ },
-+ },
-+ { }
-+};
-+
-+static int __init pcibios_irq_init(void)
-+{
-+ DBG(KERN_DEBUG "PCI: IRQ init\n");
-+
-+ if (pcibios_enable_irq || raw_pci_ops == NULL)
-+ return 0;
-+
-+ dmi_check_system(pciirq_dmi_table);
-+
-+ pirq_table = pirq_find_routing_table();
-+
-+#ifdef CONFIG_PCI_BIOS
-+ if (!pirq_table && (pci_probe & PCI_BIOS_IRQ_SCAN))
-+ pirq_table = pcibios_get_irq_routing_table();
-+#endif
-+ if (pirq_table) {
-+ pirq_peer_trick();
-+ pirq_find_router(&pirq_router);
-+ if (pirq_table->exclusive_irqs) {
-+ int i;
-+ for (i=0; i<16; i++)
-+ if (!(pirq_table->exclusive_irqs & (1 << i)))
-+ pirq_penalty[i] += 100;
-+ }
-+ /* If we're using the I/O APIC, avoid using the PCI IRQ routing table */
-+ if (io_apic_assign_pci_irqs)
-+ pirq_table = NULL;
-+ }
-+
-+ pcibios_enable_irq = pirq_enable_irq;
-+
-+ pcibios_fixup_irqs();
-+ return 0;
-+}
-+
-+subsys_initcall(pcibios_irq_init);
-+
-+
-+static void pirq_penalize_isa_irq(int irq, int active)
-+{
-+ /*
-+ * If any ISAPnP device reports an IRQ in its list of possible
-+ * IRQ's, we try to avoid assigning it to PCI devices.
-+ */
-+ if (irq < 16) {
-+ if (active)
-+ pirq_penalty[irq] += 1000;
-+ else
-+ pirq_penalty[irq] += 100;
-+ }
-+}
-+
-+void pcibios_penalize_isa_irq(int irq, int active)
-+{
-+#ifdef CONFIG_ACPI
-+ if (!acpi_noirq)
-+ acpi_penalize_isa_irq(irq, active);
-+ else
-+#endif
-+ pirq_penalize_isa_irq(irq, active);
-+}
-+
-+static int pirq_enable_irq(struct pci_dev *dev)
-+{
-+ u8 pin;
-+ struct pci_dev *temp_dev;
-+
-+ pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
-+ if (pin && !pcibios_lookup_irq(dev, 1) && !dev->irq) {
-+ char *msg = "";
-+
-+ pin--; /* interrupt pins are numbered starting from 1 */
-+
-+ if (io_apic_assign_pci_irqs) {
-+ int irq;
-+
-+ irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, PCI_SLOT(dev->devfn), pin);
-+ /*
-+ * Busses behind bridges are typically not listed in the MP-table.
-+ * In this case we have to look up the IRQ based on the parent bus,
-+ * parent slot, and pin number. The SMP code detects such bridged
-+ * busses itself so we should get into this branch reliably.
-+ */
-+ temp_dev = dev;
-+ while (irq < 0 && dev->bus->parent) { /* go back to the bridge */
-+ struct pci_dev * bridge = dev->bus->self;
-+
-+ pin = (pin + PCI_SLOT(dev->devfn)) % 4;
-+ irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
-+ PCI_SLOT(bridge->devfn), pin);
-+ if (irq >= 0)
-+ printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n",
-+ pci_name(bridge), 'A' + pin, irq);
-+ dev = bridge;
-+ }
-+ dev = temp_dev;
-+ if (irq >= 0) {
-+#ifdef CONFIG_PCI_MSI
-+ if (!platform_legacy_irq(irq))
-+ irq = IO_APIC_VECTOR(irq);
-+#endif
-+ printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
-+ pci_name(dev), 'A' + pin, irq);
-+ dev->irq = irq;
-+ return 0;
-+ } else
-+ msg = " Probably buggy MP table.";
-+ } else if (pci_probe & PCI_BIOS_IRQ_SCAN)
-+ msg = "";
-+ else
-+ msg = " Please try using pci=biosirq.";
-+
-+ /* With IDE legacy devices the IRQ lookup failure is not a problem.. */
-+ if (dev->class >> 8 == PCI_CLASS_STORAGE_IDE && !(dev->class & 0x5))
-+ return 0;
-+
-+ printk(KERN_WARNING "PCI: No IRQ known for interrupt pin %c of device %s.%s\n",
-+ 'A' + pin, pci_name(dev), msg);
-+ }
-+ return 0;
-+}
-+
-+int pci_vector_resources(int last, int nr_released)
-+{
-+ int count = nr_released;
-+
-+ int next = last;
-+ int offset = (last % 8);
-+
-+ while (next < FIRST_SYSTEM_VECTOR) {
-+ next += 8;
-+#ifdef CONFIG_X86_64
-+ if (next == IA32_SYSCALL_VECTOR)
-+ continue;
-+#else
-+ if (next == SYSCALL_VECTOR)
-+ continue;
-+#endif
-+ count++;
-+ if (next >= FIRST_SYSTEM_VECTOR) {
-+ if (offset%8) {
-+ next = FIRST_DEVICE_VECTOR + offset;
-+ offset++;
-+ continue;
-+ }
-+ count--;
-+ }
-+ }
-+
-+ return count;
-+}
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ b/arch/x86/pci/pcifront.c 2009-03-18 10:39:31.000000000 +0100
@@ -0,0 +1,57 @@
+/*
@@ -22235,8 +21118,8 @@ for reference, prefixed with the version the removal occured):
+ENDPROC(arch_unwind_init_running)
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/kernel/head_64-xen.S 2010-11-08 17:27:03.000000000 +0100
-@@ -0,0 +1,211 @@
++++ b/arch/x86/kernel/head_64-xen.S 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,233 @@
+/*
+ * linux/arch/x86_64/kernel/head.S -- start in 32bit and switch to 64bit
+ *
@@ -22263,6 +21146,7 @@ for reference, prefixed with the version the removal occured):
+#include <asm/cache.h>
+#include <asm/dwarf2.h>
+#include <xen/interface/elfnote.h>
++#include <xen/interface/features.h>
+
+ .section .bootstrap.text, "ax", @progbits
+ .code64
@@ -22399,6 +21283,18 @@ for reference, prefixed with the version the removal occured):
+ENTRY(empty_zero_page)
+ .skip PAGE_SIZE
+
++#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
++# define XEN_DOM0_CAP 0
++# define XEN_DOM0_CAP_STR ""
++#else
++# define XEN_DOM0_CAP (1 << XENFEAT_dom0)
++# if CONFIG_XEN_COMPAT < 0x040200
++# define XEN_DOM0_CAP_STR ""
++# else
++# define XEN_DOM0_CAP_STR "|dom0"
++# endif
++#endif
++
+#if CONFIG_XEN_COMPAT <= 0x030002
+/*
+ * __xen_guest information
@@ -22445,12 +21341,21 @@ for reference, prefixed with the version the removal occured):
+ ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .quad, startup_64)
+ ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad, hypercall_page)
+ ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .quad, _PAGE_PRESENT,_PAGE_PRESENT)
-+ ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel")
++ ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .ascii, "writable_page_tables";
++ .ascii "|writable_descriptor_tables";
++ .ascii "|auto_translated_physmap";
++ .ascii "|supervisor_mode_kernel";
++ .asciz XEN_DOM0_CAP_STR)
++ ELFNOTE(Xen, XEN_ELFNOTE_SUPPORTED_FEATURES, .long, XEN_DOM0_CAP |
++ (1 << XENFEAT_writable_page_tables) |
++ (1 << XENFEAT_writable_descriptor_tables) |
++ (1 << XENFEAT_auto_translated_physmap) |
++ (1 << XENFEAT_supervisor_mode_kernel))
+ ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic")
+ ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long, 1)
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/kernel/head64-xen.c 2007-06-12 13:13:01.000000000 +0200
-@@ -0,0 +1,162 @@
++++ b/arch/x86/kernel/head64-xen.c 2011-08-08 12:54:10.000000000 +0200
+@@ -0,0 +1,159 @@
+/*
+ * linux/arch/x86_64/kernel/head64.c -- prepare to run common code
+ *
@@ -22547,13 +21452,12 @@ for reference, prefixed with the version the removal occured):
+#include <xen/interface/memory.h>
+unsigned long *machine_to_phys_mapping;
+EXPORT_SYMBOL(machine_to_phys_mapping);
-+unsigned int machine_to_phys_order;
-+EXPORT_SYMBOL(machine_to_phys_order);
++unsigned long machine_to_phys_nr;
++EXPORT_SYMBOL(machine_to_phys_nr);
+
+void __init x86_64_start_kernel(char * real_mode_data)
+{
+ struct xen_machphys_mapping mapping;
-+ unsigned long machine_to_phys_nr_ents;
+ char *s;
+ int i;
+
@@ -22567,13 +21471,11 @@ for reference, prefixed with the version the removal occured):
+ xen_start_info->nr_pt_frames;
+
+ machine_to_phys_mapping = (unsigned long *)MACH2PHYS_VIRT_START;
-+ machine_to_phys_nr_ents = MACH2PHYS_NR_ENTRIES;
++ machine_to_phys_nr = MACH2PHYS_NR_ENTRIES;
+ if (HYPERVISOR_memory_op(XENMEM_machphys_mapping, &mapping) == 0) {
+ machine_to_phys_mapping = (unsigned long *)mapping.v_start;
-+ machine_to_phys_nr_ents = mapping.max_mfn + 1;
++ machine_to_phys_nr = mapping.max_mfn + 1;
+ }
-+ while ((1UL << machine_to_phys_order) < machine_to_phys_nr_ents )
-+ machine_to_phys_order++;
+
+#if 0
+ for (i = 0; i < 256; i++)
@@ -31924,7 +30826,7 @@ for reference, prefixed with the version the removal occured):
+}
+__setup("pagefaulttrace", enable_pagefaulttrace);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/mm/init_64-xen.c 2010-04-29 09:34:47.000000000 +0200
++++ b/arch/x86/mm/init_64-xen.c 2011-08-08 12:54:10.000000000 +0200
@@ -0,0 +1,1244 @@
+/*
+ * linux/arch/x86_64/mm/init.c
@@ -33084,7 +31986,7 @@ for reference, prefixed with the version the removal occured):
+ */
+ if (addr >= (unsigned long)machine_to_phys_mapping &&
+ addr < (unsigned long)(machine_to_phys_mapping +
-+ (1UL << machine_to_phys_order)))
++ machine_to_phys_nr))
+ return 1;
+ if (addr >= HYPERVISOR_VIRT_START && addr < HYPERVISOR_VIRT_END)
+ return 0;
@@ -35927,7 +34829,7 @@ for reference, prefixed with the version the removal occured):
+
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/include/mach-xen/asm/maddr_32.h 2008-04-02 12:34:02.000000000 +0200
++++ b/arch/x86/include/mach-xen/asm/maddr_32.h 2011-08-08 12:54:10.000000000 +0200
@@ -0,0 +1,193 @@
+#ifndef _I386_MADDR_H
+#define _I386_MADDR_H
@@ -35956,7 +34858,7 @@ for reference, prefixed with the version the removal occured):
+
+#undef machine_to_phys_mapping
+extern unsigned long *machine_to_phys_mapping;
-+extern unsigned int machine_to_phys_order;
++extern unsigned long machine_to_phys_nr;
+
+static inline unsigned long pfn_to_mfn(unsigned long pfn)
+{
@@ -35981,7 +34883,7 @@ for reference, prefixed with the version the removal occured):
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return mfn;
+
-+ if (unlikely((mfn >> machine_to_phys_order) != 0))
++ if (unlikely(mfn >= machine_to_phys_nr))
+ return max_mapnr;
+
+ /* The array access can fail (e.g., device space beyond end of RAM). */
@@ -39851,7 +38753,7 @@ for reference, prefixed with the version the removal occured):
+
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/arch/x86/include/mach-xen/asm/maddr_64.h 2007-06-12 13:14:13.000000000 +0200
++++ b/arch/x86/include/mach-xen/asm/maddr_64.h 2011-08-08 12:54:10.000000000 +0200
@@ -0,0 +1,161 @@
+#ifndef _X86_64_MADDR_H
+#define _X86_64_MADDR_H
@@ -39874,7 +38776,7 @@ for reference, prefixed with the version the removal occured):
+
+#undef machine_to_phys_mapping
+extern unsigned long *machine_to_phys_mapping;
-+extern unsigned int machine_to_phys_order;
++extern unsigned long machine_to_phys_nr;
+
+static inline unsigned long pfn_to_mfn(unsigned long pfn)
+{
@@ -39899,7 +38801,7 @@ for reference, prefixed with the version the removal occured):
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return mfn;
+
-+ if (unlikely((mfn >> machine_to_phys_order) != 0))
++ if (unlikely(mfn >= machine_to_phys_nr))
+ return end_pfn;
+
+ /* The array access can fail (e.g., device space beyond end of RAM). */
diff --git a/patches.xen/xen3-auto-xen-drivers.diff b/patches.xen/xen3-auto-xen-drivers.diff
index 33df1d343e..09c2ebcbfb 100644
--- a/patches.xen/xen3-auto-xen-drivers.diff
+++ b/patches.xen/xen3-auto-xen-drivers.diff
@@ -1,5 +1,5 @@
Subject: xen3 xen-drivers
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
@@ -10,6 +10,7 @@ and in case upstream wants to take the forward porting patches:
2.6.26/drivers/xen/core/xencomm.c
2.6.31/drivers/xen/evtchn/Makefile
2.6.31/drivers/xen/evtchn/evtchn.c
+2.6.37/drivers/xen/core/pci.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ b/drivers/xen/balloon/Makefile 2007-06-12 13:13:44.000000000 +0200
@@ -14096,92 +14097,6 @@ and in case upstream wants to take the forward porting patches:
+ return 0;
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/drivers/xen/core/pci.c 2009-04-07 13:58:48.000000000 +0200
-@@ -0,0 +1,83 @@
-+/*
-+ * vim:shiftwidth=8:noexpandtab
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <xen/interface/physdev.h>
-+#include "../../pci/pci.h"
-+
-+static int (*pci_bus_probe)(struct device *dev);
-+static int (*pci_bus_remove)(struct device *dev);
-+
-+static int pci_bus_probe_wrapper(struct device *dev)
-+{
-+ int r;
-+ struct pci_dev *pci_dev = to_pci_dev(dev);
-+ struct physdev_manage_pci manage_pci;
-+ struct physdev_manage_pci_ext manage_pci_ext;
-+
-+#ifdef CONFIG_PCI_IOV
-+ if (pci_dev->is_virtfn) {
-+ memset(&manage_pci_ext, 0, sizeof(manage_pci_ext));
-+ manage_pci_ext.bus = pci_dev->bus->number;
-+ manage_pci_ext.devfn = pci_dev->devfn;
-+ manage_pci_ext.is_virtfn = 1;
-+ manage_pci_ext.physfn.bus = pci_dev->physfn->bus->number;
-+ manage_pci_ext.physfn.devfn = pci_dev->physfn->devfn;
-+ r = HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_add_ext,
-+ &manage_pci_ext);
-+ } else
-+#endif
-+ if (pci_ari_enabled(pci_dev->bus) && PCI_SLOT(pci_dev->devfn)) {
-+ memset(&manage_pci_ext, 0, sizeof(manage_pci_ext));
-+ manage_pci_ext.bus = pci_dev->bus->number;
-+ manage_pci_ext.devfn = pci_dev->devfn;
-+ manage_pci_ext.is_extfn = 1;
-+ r = HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_add_ext,
-+ &manage_pci_ext);
-+ } else {
-+ manage_pci.bus = pci_dev->bus->number;
-+ manage_pci.devfn = pci_dev->devfn;
-+ r = HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_add,
-+ &manage_pci);
-+ }
-+ if (r && r != -ENOSYS)
-+ return r;
-+
-+ r = pci_bus_probe(dev);
-+ return r;
-+}
-+
-+static int pci_bus_remove_wrapper(struct device *dev)
-+{
-+ int r;
-+ struct pci_dev *pci_dev = to_pci_dev(dev);
-+ struct physdev_manage_pci manage_pci;
-+ manage_pci.bus = pci_dev->bus->number;
-+ manage_pci.devfn = pci_dev->devfn;
-+
-+ r = pci_bus_remove(dev);
-+ /* dev and pci_dev are no longer valid!! */
-+
-+ WARN_ON(HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_remove,
-+ &manage_pci));
-+ return r;
-+}
-+
-+static int __init hook_pci_bus(void)
-+{
-+ if (!is_running_on_xen() || !is_initial_xendomain())
-+ return 0;
-+
-+ pci_bus_probe = pci_bus_type.probe;
-+ pci_bus_type.probe = pci_bus_probe_wrapper;
-+
-+ pci_bus_remove = pci_bus_type.remove;
-+ pci_bus_type.remove = pci_bus_remove_wrapper;
-+
-+ return 0;
-+}
-+
-+core_initcall(hook_pci_bus);
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ b/drivers/xen/core/reboot.c 2011-06-30 15:37:44.000000000 +0200
@@ -0,0 +1,338 @@
+#define __KERNEL_SYSCALLS__
diff --git a/patches.xen/xen3-auto-xen-kconfig.diff b/patches.xen/xen3-auto-xen-kconfig.diff
index 52ed51c9fc..e2b0c0996f 100644
--- a/patches.xen/xen3-auto-xen-kconfig.diff
+++ b/patches.xen/xen3-auto-xen-kconfig.diff
@@ -1,11 +1,11 @@
Subject: xen3 xen-kconfig
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
---- head-2011-06-30.orig/arch/x86/Kconfig 2011-06-30 15:04:43.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig 2011-06-30 15:35:19.000000000 +0200
-@@ -86,6 +86,7 @@ config ARCH_DEFCONFIG
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-07 13:57:00.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-07 14:37:06.000000000 +0200
+@@ -89,6 +89,7 @@ config ARCH_DEFCONFIG
config GENERIC_CMOS_UPDATE
def_bool y
@@ -13,7 +13,7 @@ Acked-by: jbeulich@novell.com
config CLOCKSOURCE_WATCHDOG
def_bool y
-@@ -225,7 +226,17 @@ config X86_64_SMP
+@@ -232,7 +233,17 @@ config X86_64_SMP
config X86_HT
def_bool y
@@ -32,7 +32,7 @@ Acked-by: jbeulich@novell.com
config X86_32_LAZY_GS
def_bool y
-@@ -297,6 +308,17 @@ config X86_MPPARSE
+@@ -304,6 +315,17 @@ config X86_MPPARSE
For old smp systems that do not have proper acpi support. Newer systems
(esp with 64bit cpus) with acpi support, MADT and DSDT will override it
@@ -50,7 +50,7 @@ Acked-by: jbeulich@novell.com
config X86_BIGSMP
bool "Support for big SMP systems with more than 8 CPUs"
depends on X86_32 && SMP
-@@ -326,6 +348,13 @@ config X86_EXTENDED_PLATFORM
+@@ -333,6 +355,13 @@ config X86_EXTENDED_PLATFORM
generic distribution kernel, say Y here - otherwise say N.
endif
@@ -64,7 +64,7 @@ Acked-by: jbeulich@novell.com
if X86_64
config X86_EXTENDED_PLATFORM
bool "Support for extended (non-PC) x86 platforms"
-@@ -594,6 +623,7 @@ source "arch/x86/Kconfig.cpu"
+@@ -624,6 +653,7 @@ source "arch/x86/Kconfig.cpu"
config HPET_TIMER
def_bool X86_64
prompt "HPET Timer Support" if X86_32
@@ -72,7 +72,7 @@ Acked-by: jbeulich@novell.com
---help---
Use the IA-PC HPET (High Precision Event Timer) to manage
time in preference to the PIT and RTC, if a HPET is
-@@ -639,7 +669,7 @@ config GART_IOMMU
+@@ -670,7 +700,7 @@ config GART_IOMMU
bool "GART IOMMU support" if EXPERT
default y
select SWIOTLB
@@ -81,7 +81,7 @@ Acked-by: jbeulich@novell.com
---help---
Support for full DMA access of devices with 32bit memory access only
on systems with more than 3GB. This is usually needed for USB,
-@@ -654,7 +684,7 @@ config GART_IOMMU
+@@ -685,7 +715,7 @@ config GART_IOMMU
config CALGARY_IOMMU
bool "IBM Calgary IOMMU support"
select SWIOTLB
@@ -90,7 +90,7 @@ Acked-by: jbeulich@novell.com
---help---
Support for hardware IOMMUs in IBM's xSeries x366 and x460
systems. Needed to run systems with more than 3GB of memory
-@@ -738,6 +768,7 @@ config NR_CPUS
+@@ -739,6 +769,7 @@ config NR_CPUS
default "1" if !SMP
default "4096" if MAXSMP
default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
@@ -98,7 +98,7 @@ Acked-by: jbeulich@novell.com
default "8" if SMP
---help---
This allows you to specify the maximum number of CPUs which this
-@@ -780,7 +811,7 @@ source "kernel/Kconfig.preempt"
+@@ -781,7 +812,7 @@ source "kernel/Kconfig.preempt"
config X86_UP_APIC
bool "Local APIC support on uniprocessors"
@@ -107,7 +107,7 @@ Acked-by: jbeulich@novell.com
---help---
A local APIC (Advanced Programmable Interrupt Controller) is an
integrated interrupt controller in the CPU. If you have a single-CPU
-@@ -806,15 +837,22 @@ config X86_UP_IOAPIC
+@@ -807,15 +838,22 @@ config X86_UP_IOAPIC
config X86_LOCAL_APIC
def_bool y
depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
@@ -130,7 +130,7 @@ Acked-by: jbeulich@novell.com
config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
bool "Reroute for broken boot IRQs"
depends on X86_IO_APIC
-@@ -840,6 +878,7 @@ config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
+@@ -841,6 +879,7 @@ config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
config X86_MCE
bool "Machine Check / overheating reporting"
@@ -138,7 +138,7 @@ Acked-by: jbeulich@novell.com
---help---
Machine Check support allows the processor to notify the
kernel if it detects a problem (e.g. overheating, data corruption).
-@@ -849,7 +888,7 @@ config X86_MCE
+@@ -850,7 +889,7 @@ config X86_MCE
config X86_MCE_INTEL
def_bool y
prompt "Intel MCE features"
@@ -147,7 +147,7 @@ Acked-by: jbeulich@novell.com
---help---
Additional support for intel specific MCE features such as
the thermal monitor.
-@@ -857,7 +896,7 @@ config X86_MCE_INTEL
+@@ -858,7 +897,7 @@ config X86_MCE_INTEL
config X86_MCE_AMD
def_bool y
prompt "AMD MCE features"
@@ -156,7 +156,7 @@ Acked-by: jbeulich@novell.com
---help---
Additional support for AMD specific MCE features such as
the DRAM Error Threshold.
-@@ -882,6 +921,10 @@ config X86_MCE_INJECT
+@@ -883,6 +922,10 @@ config X86_MCE_INJECT
If you don't know what a machine check is and you don't do kernel
QA it is safe to say n.
@@ -167,7 +167,7 @@ Acked-by: jbeulich@novell.com
config X86_THERMAL_VECTOR
def_bool y
depends on X86_MCE_INTEL
-@@ -935,7 +978,7 @@ config I8K
+@@ -936,7 +979,7 @@ config I8K
config X86_REBOOTFIXUPS
bool "Enable X86 board specific fixups for reboot"
@@ -176,7 +176,7 @@ Acked-by: jbeulich@novell.com
---help---
This enables chipset and/or board specific fixups to be done
in order to get reboot to work correctly. This is only needed on
-@@ -952,6 +995,7 @@ config X86_REBOOTFIXUPS
+@@ -953,6 +996,7 @@ config X86_REBOOTFIXUPS
config MICROCODE
tristate "/dev/cpu/microcode - microcode support"
@@ -184,7 +184,7 @@ Acked-by: jbeulich@novell.com
select FW_LOADER
---help---
If you say Y here, you will be able to update the microcode on
-@@ -1145,7 +1189,7 @@ config DIRECT_GBPAGES
+@@ -1146,7 +1190,7 @@ config DIRECT_GBPAGES
# Common NUMA Features
config NUMA
bool "Numa Memory Allocation and Scheduler Support"
@@ -193,7 +193,7 @@ Acked-by: jbeulich@novell.com
depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
---help---
-@@ -1246,6 +1290,7 @@ config ARCH_DISCONTIGMEM_DEFAULT
+@@ -1247,6 +1291,7 @@ config ARCH_DISCONTIGMEM_DEFAULT
config ARCH_SPARSEMEM_ENABLE
def_bool y
depends on X86_64 || NUMA || (EXPERIMENTAL && X86_32) || X86_32_NON_STANDARD
@@ -201,7 +201,7 @@ Acked-by: jbeulich@novell.com
select SPARSEMEM_STATIC if X86_32
select SPARSEMEM_VMEMMAP_ENABLE if X86_64
-@@ -1343,6 +1388,7 @@ config X86_RESERVE_LOW
+@@ -1344,6 +1389,7 @@ config X86_RESERVE_LOW
config MATH_EMULATION
bool
prompt "Math emulation" if X86_32
@@ -209,7 +209,7 @@ Acked-by: jbeulich@novell.com
---help---
Linux can emulate a math coprocessor (used for floating point
operations) if you don't have one. 486DX and Pentium processors have
-@@ -1369,6 +1415,7 @@ config MATH_EMULATION
+@@ -1370,6 +1416,7 @@ config MATH_EMULATION
config MTRR
def_bool y
prompt "MTRR (Memory Type Range Register) support" if EXPERT
@@ -217,7 +217,7 @@ Acked-by: jbeulich@novell.com
---help---
On Intel P6 family processors (Pentium Pro, Pentium II and later)
the Memory Type Range Registers (MTRRs) may be used to control
-@@ -1453,7 +1500,7 @@ config ARCH_USES_PG_UNCACHED
+@@ -1454,7 +1501,7 @@ config ARCH_USES_PG_UNCACHED
config EFI
bool "EFI runtime service support"
@@ -226,7 +226,7 @@ Acked-by: jbeulich@novell.com
---help---
This enables the kernel to use EFI runtime services that are
available (such as the EFI variable services).
-@@ -1501,6 +1548,7 @@ source kernel/Kconfig.hz
+@@ -1502,6 +1549,7 @@ source kernel/Kconfig.hz
config KEXEC
bool "kexec system call"
@@ -234,7 +234,7 @@ Acked-by: jbeulich@novell.com
---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
-@@ -1518,6 +1566,7 @@ config KEXEC
+@@ -1519,6 +1567,7 @@ config KEXEC
config CRASH_DUMP
bool "kernel crash dumps"
depends on X86_64 || (X86_32 && HIGHMEM)
@@ -242,7 +242,7 @@ Acked-by: jbeulich@novell.com
---help---
Generate crash dump after being started by kexec.
This should be normally only set in special crash dump kernels
-@@ -1637,6 +1686,7 @@ config COMPAT_VDSO
+@@ -1638,6 +1687,7 @@ config COMPAT_VDSO
def_bool y
prompt "Compat VDSO support"
depends on X86_32 || IA32_EMULATION
@@ -250,7 +250,7 @@ Acked-by: jbeulich@novell.com
---help---
Map the 32-bit VDSO to the predictable old-style address too.
-@@ -1704,6 +1754,7 @@ config USE_PERCPU_NUMA_NODE_ID
+@@ -1705,6 +1755,7 @@ config USE_PERCPU_NUMA_NODE_ID
depends on NUMA
menu "Power management and ACPI options"
@@ -258,7 +258,7 @@ Acked-by: jbeulich@novell.com
config ARCH_HIBERNATION_HEADER
def_bool y
-@@ -1721,7 +1772,7 @@ config X86_APM_BOOT
+@@ -1722,7 +1773,7 @@ config X86_APM_BOOT
menuconfig APM
tristate "APM (Advanced Power Management) BIOS support"
@@ -267,7 +267,7 @@ Acked-by: jbeulich@novell.com
---help---
APM is a BIOS specification for saving power using several different
techniques. This is mostly useful for battery powered laptops with
-@@ -1882,6 +1933,7 @@ choice
+@@ -1883,6 +1934,7 @@ choice
config PCI_GOBIOS
bool "BIOS"
@@ -275,7 +275,7 @@ Acked-by: jbeulich@novell.com
config PCI_GOMMCONFIG
bool "MMConfig"
-@@ -1893,6 +1945,13 @@ config PCI_GOOLPC
+@@ -1894,6 +1946,13 @@ config PCI_GOOLPC
bool "OLPC XO-1"
depends on OLPC
@@ -289,7 +289,7 @@ Acked-by: jbeulich@novell.com
config PCI_GOANY
bool "Any"
-@@ -1900,7 +1959,7 @@ endchoice
+@@ -1901,7 +1960,7 @@ endchoice
config PCI_BIOS
def_bool y
@@ -298,7 +298,7 @@ Acked-by: jbeulich@novell.com
# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
config PCI_DIRECT
-@@ -1942,6 +2001,22 @@ config PCI_CNB20LE_QUIRK
+@@ -1943,6 +2002,22 @@ config PCI_CNB20LE_QUIRK
You should say N unless you know you need this.
@@ -318,10 +318,10 @@ Acked-by: jbeulich@novell.com
+ help
+ Enables some debug statements within the PCI Frontend.
+
- config DMAR
- bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
- depends on PCI_MSI && ACPI && EXPERIMENTAL
-@@ -2007,6 +2082,7 @@ if X86_32
+ source "drivers/pci/pcie/Kconfig"
+
+ source "drivers/pci/Kconfig"
+@@ -1959,6 +2034,7 @@ if X86_32
config ISA
bool "ISA support"
@@ -329,7 +329,7 @@ Acked-by: jbeulich@novell.com
---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
-@@ -2034,6 +2110,7 @@ source "drivers/eisa/Kconfig"
+@@ -1986,6 +2062,7 @@ source "drivers/eisa/Kconfig"
config MCA
bool "MCA support"
@@ -337,16 +337,16 @@ Acked-by: jbeulich@novell.com
---help---
MicroChannel Architecture is found in some IBM PS/2 machines and
laptops. It is a bus system similar to PCI or ISA. See
-@@ -2165,4 +2242,6 @@ source "crypto/Kconfig"
+@@ -2150,4 +2227,6 @@ source "crypto/Kconfig"
source "arch/x86/kvm/Kconfig"
+source "drivers/xen/Kconfig"
+
source "lib/Kconfig"
---- head-2011-06-30.orig/arch/x86/Kconfig.cpu 2011-06-30 15:04:05.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig.cpu 2011-06-30 15:35:37.000000000 +0200
-@@ -338,7 +338,7 @@ config X86_PPRO_FENCE
+--- head-2011-09-07.orig/arch/x86/Kconfig.cpu 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig.cpu 2011-09-07 14:37:08.000000000 +0200
+@@ -341,7 +341,7 @@ config X86_PPRO_FENCE
config X86_F00F_BUG
def_bool y
@@ -355,7 +355,7 @@ Acked-by: jbeulich@novell.com
config X86_INVD_BUG
def_bool y
-@@ -399,6 +399,7 @@ config X86_P6_NOP
+@@ -402,6 +402,7 @@ config X86_P6_NOP
config X86_TSC
def_bool y
depends on ((MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) && !X86_NUMAQ) || X86_64
@@ -363,8 +363,8 @@ Acked-by: jbeulich@novell.com
config X86_CMPXCHG64
def_bool y
---- head-2011-06-30.orig/arch/x86/Kconfig.debug 2011-06-30 15:04:05.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig.debug 2011-06-30 15:35:42.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/Kconfig.debug 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig.debug 2011-06-30 15:35:42.000000000 +0200
@@ -119,7 +119,7 @@ config DEBUG_NX_TEST
config DOUBLEFAULT
default y
@@ -374,8 +374,8 @@ Acked-by: jbeulich@novell.com
---help---
This option allows trapping of rare doublefault exceptions that
would otherwise cause a system to silently reboot. Disabling this
---- head-2011-06-30.orig/drivers/acpi/Kconfig 2011-06-30 15:04:12.000000000 +0200
-+++ head-2011-06-30/drivers/acpi/Kconfig 2011-06-30 15:35:53.000000000 +0200
+--- head-2011-09-07.orig/drivers/acpi/Kconfig 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/drivers/acpi/Kconfig 2011-06-30 15:35:53.000000000 +0200
@@ -308,6 +308,7 @@ config ACPI_PCI_SLOT
config X86_PM_TIMER
bool "Power Management Timer Support" if EXPERT
@@ -398,8 +398,8 @@ Acked-by: jbeulich@novell.com
+ depends on (X86 || IA64) && XEN
+ default y
endif # ACPI
---- head-2011-06-30.orig/drivers/char/Kconfig 2011-06-30 15:04:43.000000000 +0200
-+++ head-2011-06-30/drivers/char/Kconfig 2011-04-13 11:17:33.000000000 +0200
+--- head-2011-09-07.orig/drivers/char/Kconfig 2011-09-07 13:57:00.000000000 +0200
++++ head-2011-09-07/drivers/char/Kconfig 2011-04-13 11:17:33.000000000 +0200
@@ -534,7 +534,7 @@ config MAX_RAW_DEVS
config HPET
bool "HPET - High Precision Event Timer" if (X86 || IA64)
@@ -409,8 +409,8 @@ Acked-by: jbeulich@novell.com
help
If you say Y here, you will have a miscdevice named "/dev/hpet/". Each
open selects one of the timers supported by the HPET. The timers are
---- head-2011-06-30.orig/drivers/char/tpm/Kconfig 2011-01-05 01:50:19.000000000 +0100
-+++ head-2011-06-30/drivers/char/tpm/Kconfig 2011-04-13 11:17:33.000000000 +0200
+--- head-2011-09-07.orig/drivers/char/tpm/Kconfig 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/drivers/char/tpm/Kconfig 2011-04-13 11:17:33.000000000 +0200
@@ -60,4 +60,13 @@ config TCG_INFINEON
Further information on this driver and the supported hardware
can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/
@@ -425,8 +425,8 @@ Acked-by: jbeulich@novell.com
+ will be called tpm_xenu.
+
endif # TCG_TPM
---- head-2011-06-30.orig/drivers/cpufreq/Kconfig 2011-06-30 15:04:12.000000000 +0200
-+++ head-2011-06-30/drivers/cpufreq/Kconfig 2011-06-30 15:36:01.000000000 +0200
+--- head-2011-09-07.orig/drivers/cpufreq/Kconfig 2011-09-07 13:56:14.000000000 +0200
++++ head-2011-09-07/drivers/cpufreq/Kconfig 2011-06-30 15:36:01.000000000 +0200
@@ -2,6 +2,7 @@ menu "CPU Frequency scaling"
config CPU_FREQ
@@ -435,8 +435,8 @@ Acked-by: jbeulich@novell.com
help
CPU Frequency scaling allows you to change the clock speed of
CPUs on the fly. This is a nice method to save power, because
---- head-2011-06-30.orig/drivers/tty/serial/Kconfig 2011-06-30 15:04:18.000000000 +0200
-+++ head-2011-06-30/drivers/tty/serial/Kconfig 2011-04-13 11:17:33.000000000 +0200
+--- head-2011-09-07.orig/drivers/tty/serial/Kconfig 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/tty/serial/Kconfig 2011-04-13 11:17:33.000000000 +0200
@@ -9,6 +9,7 @@ menu "Serial drivers"
# The new 8250/16550 serial drivers
config SERIAL_8250
@@ -445,8 +445,8 @@ Acked-by: jbeulich@novell.com
select SERIAL_CORE
---help---
This selects whether you want to include the driver for the standard
---- head-2011-06-30.orig/drivers/xen/Kconfig 2011-05-19 06:06:34.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Kconfig 2011-04-13 11:17:33.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-09-07 14:36:47.000000000 +0200
@@ -1,8 +1,357 @@
+#
+# This Kconfig describe xen options
@@ -807,8 +807,8 @@ Acked-by: jbeulich@novell.com
default y
help
The balloon driver allows the Xen domain to request more memory from
-@@ -10,14 +359,16 @@ config XEN_BALLOON
- return unneeded memory to the system.
+@@ -57,14 +406,16 @@ config XEN_BALLOON_MEMORY_HOTPLUG
+ In that case step 3 should be omitted.
config XEN_SCRUB_PAGES
- bool "Scrub pages before returning them to system"
@@ -830,9 +830,9 @@ Acked-by: jbeulich@novell.com
If in doubt, say yes.
config XEN_DEV_EVTCHN
---- head-2011-06-30.orig/fs/Kconfig 2011-06-30 15:04:43.000000000 +0200
-+++ head-2011-06-30/fs/Kconfig 2011-06-30 15:36:20.000000000 +0200
-@@ -158,6 +158,7 @@ config HUGETLBFS
+--- head-2011-09-07.orig/fs/Kconfig 2011-09-07 13:56:43.000000000 +0200
++++ head-2011-09-07/fs/Kconfig 2011-06-30 15:36:20.000000000 +0200
+@@ -165,6 +165,7 @@ config HUGETLBFS
bool "HugeTLB file system support"
depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
SYS_SUPPORTS_HUGETLBFS || BROKEN
@@ -840,13 +840,13 @@ Acked-by: jbeulich@novell.com
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
---- head-2011-06-30.orig/kernel/Kconfig.preempt 2011-06-30 15:04:42.000000000 +0200
-+++ head-2011-06-30/kernel/Kconfig.preempt 2011-04-13 11:17:33.000000000 +0200
+--- head-2011-09-07.orig/kernel/Kconfig.preempt 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/kernel/Kconfig.preempt 2011-09-07 14:36:35.000000000 +0200
@@ -36,6 +36,7 @@ config PREEMPT_VOLUNTARY
config PREEMPT
bool "Preemptible Kernel (Low-Latency Desktop)"
+ depends on !XEN
+ select PREEMPT_COUNT
help
This option reduces the latency of the kernel by making
- all kernel code (that is not executing in a critical section)
diff --git a/patches.xen/xen3-fixup-blktap2-pvops b/patches.xen/xen3-fixup-blktap2-pvops
index e0f880373d..9447329fef 100644
--- a/patches.xen/xen3-fixup-blktap2-pvops
+++ b/patches.xen/xen3-fixup-blktap2-pvops
@@ -2,8 +2,8 @@ Subject: adjust xen build after addition of pv-ops' blktap2
From: jbeulich@novell.com
Patch-mainline: n/a
---- head-2011-02-17.orig/drivers/xen/Makefile 2011-01-31 15:14:12.000000000 +0100
-+++ head-2011-02-17/drivers/xen/Makefile 2011-02-24 13:56:24.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/Makefile 2011-01-31 15:14:12.000000000 +0100
++++ head-2011-09-07/drivers/xen/Makefile 2011-02-24 13:56:24.000000000 +0100
@@ -8,7 +8,7 @@ obj-y += util.o
obj-$(CONFIG_XEN_BALLOON) += balloon/
obj-$(CONFIG_XEN_BLKDEV_BACKEND) += blkback/
@@ -13,17 +13,17 @@ Patch-mainline: n/a
obj-$(CONFIG_XEN_NETDEV_BACKEND) += netback/
obj-$(CONFIG_XEN_TPMDEV_BACKEND) += tpmback/
obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += blkfront/
---- head-2011-02-17.orig/drivers/xen/blktap2-new/Makefile 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/Makefile 2011-02-24 13:59:48.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/Makefile 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/Makefile 2011-09-12 12:26:01.000000000 +0200
@@ -1,3 +1,4 @@
-obj-$(CONFIG_XEN_BLKDEV_TAP) := blktap.o
-+obj-$(CONFIG_XEN_BLKDEV_TAP2) := blktap2-new.o
++obj-$(CONFIG_XEN_BLKDEV_TAP2) := xen-blktap.o
-blktap-objs := control.o ring.o device.o request.o sysfs.o
-+blktap2-new-y := control.o ring.o device.o request.o
-+blktap2-new-$(CONFIG_SYSFS) += sysfs.o
---- head-2011-02-17.orig/drivers/xen/blktap2-new/blktap.h 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/blktap.h 2011-02-24 14:08:40.000000000 +0100
++xen-blktap-y := control.o ring.o device.o request.o
++xen-blktap-$(CONFIG_SYSFS) += sysfs.o
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/blktap.h 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/blktap.h 2011-02-24 14:08:40.000000000 +0100
@@ -24,6 +24,8 @@ extern int blktap_device_major;
#define BTWARN(_f, _a...) BTPRINTK(0, KERN_WARNING, 0, _f, ##_a)
#define BTERR(_f, _a...) BTPRINTK(0, KERN_ERR, 0, _f, ##_a)
@@ -51,8 +51,8 @@ Patch-mainline: n/a
int blktap_device_init(void);
void blktap_device_exit(void);
---- head-2011-02-17.orig/drivers/xen/blktap2-new/control.c 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/control.c 2011-02-24 15:14:41.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/control.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/control.c 2011-02-24 15:14:41.000000000 +0100
@@ -164,7 +164,7 @@ blktap_control_ioctl(struct inode *inode
return -ENOIOCTLCMD;
}
@@ -70,8 +70,8 @@ Patch-mainline: n/a
.fops = &blktap_control_file_operations,
};
---- head-2011-02-17.orig/drivers/xen/blktap2-new/device.c 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/device.c 2011-02-24 14:51:43.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/device.c 2011-08-09 10:31:33.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap2-new/device.c 2011-08-09 10:33:13.000000000 +0200
@@ -95,7 +95,7 @@ blktap_device_ioctl(struct block_device
return 0;
}
@@ -81,7 +81,7 @@ Patch-mainline: n/a
.owner = THIS_MODULE,
.open = blktap_device_open,
.release = blktap_device_release,
-@@ -424,6 +424,12 @@ blktap_device_destroy_sync(struct blktap
+@@ -426,6 +426,12 @@ blktap_device_destroy_sync(struct blktap
!blktap_device_try_destroy(tap));
}
@@ -94,7 +94,7 @@ Patch-mainline: n/a
int
blktap_device_create(struct blktap *tap, struct blktap_params *params)
{
-@@ -464,6 +470,7 @@ blktap_device_create(struct blktap *tap,
+@@ -466,6 +472,7 @@ blktap_device_create(struct blktap *tap,
gd->major = blktap_device_major;
gd->first_minor = minor;
@@ -102,8 +102,8 @@ Patch-mainline: n/a
gd->fops = &blktap_device_file_operations;
gd->private_data = tapdev;
---- head-2011-02-17.orig/drivers/xen/blktap2-new/ring.c 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/ring.c 2011-02-24 15:14:47.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/ring.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/ring.c 2011-02-24 15:14:47.000000000 +0100
@@ -435,7 +435,7 @@ static unsigned int blktap_ring_poll(str
return 0;
}
@@ -113,8 +113,8 @@ Patch-mainline: n/a
.owner = THIS_MODULE,
.open = blktap_ring_open,
.release = blktap_ring_release,
---- head-2011-02-17.orig/drivers/xen/blktap2-new/sysfs.c 2011-02-24 13:49:49.000000000 +0100
-+++ head-2011-02-17/drivers/xen/blktap2-new/sysfs.c 2011-02-24 14:40:36.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2-new/sysfs.c 2011-02-24 13:49:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2-new/sysfs.c 2011-02-24 14:40:36.000000000 +0100
@@ -160,8 +160,8 @@ blktap_sysfs_store_pool(struct device *d
return size;
diff --git a/patches.xen/xen3-fixup-common b/patches.xen/xen3-fixup-common
index 57c6209572..baa0f91a6b 100644
--- a/patches.xen/xen3-fixup-common
+++ b/patches.xen/xen3-fixup-common
@@ -2,8 +2,8 @@ Subject: Fix xen build.
From: jbeulich@novell.com
Patch-mainline: n/a
---- head-2011-07-21.orig/drivers/acpi/acpica/hwsleep.c 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/drivers/acpi/acpica/hwsleep.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/acpi/acpica/hwsleep.c 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/drivers/acpi/acpica/hwsleep.c 2011-01-31 17:01:49.000000000 +0100
@@ -419,6 +419,7 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_stat
* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
*
@@ -20,8 +20,8 @@ Patch-mainline: n/a
/*******************************************************************************
*
---- head-2011-07-21.orig/drivers/base/cpu.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/drivers/base/cpu.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/base/cpu.c 2010-08-02 00:11:14.000000000 +0200
++++ head-2011-09-07/drivers/base/cpu.c 2011-01-31 17:01:49.000000000 +0100
@@ -106,7 +106,7 @@ static inline void register_cpu_control(
}
#endif /* CONFIG_HOTPLUG_CPU */
@@ -40,8 +40,8 @@ Patch-mainline: n/a
if (!error)
error = sysdev_create_file(&cpu->sysdev, &attr_crash_notes);
#endif
---- head-2011-07-21.orig/drivers/ide/ide-lib.c 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/drivers/ide/ide-lib.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/ide/ide-lib.c 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/drivers/ide/ide-lib.c 2011-01-31 17:01:49.000000000 +0100
@@ -18,6 +18,16 @@ void ide_toggle_bounce(ide_drive_t *driv
{
u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */
@@ -67,8 +67,8 @@ Patch-mainline: n/a
if (drive->queue)
blk_queue_bounce_limit(drive->queue, addr);
---- head-2011-07-21.orig/drivers/oprofile/buffer_sync.c 2011-06-30 15:37:10.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/buffer_sync.c 2011-06-30 16:01:00.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/buffer_sync.c 2011-06-30 15:37:10.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/buffer_sync.c 2011-06-30 16:01:00.000000000 +0200
@@ -47,7 +47,9 @@ static cpumask_var_t marked_cpus;
static DEFINE_SPINLOCK(task_mortuary);
static void process_task_mortuary(void);
@@ -170,8 +170,8 @@ Patch-mainline: n/a
mark_done(cpu);
---- head-2011-07-21.orig/drivers/oprofile/cpu_buffer.c 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/cpu_buffer.c 2011-04-13 12:22:07.000000000 +0200
+--- head-2011-09-07.orig/drivers/oprofile/cpu_buffer.c 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/cpu_buffer.c 2011-04-13 12:22:07.000000000 +0200
@@ -42,7 +42,11 @@ static void wq_sync_buffer(struct work_s
#define DEFAULT_TIMER_EXPIRE (HZ / 10)
static int work_enabled;
@@ -200,8 +200,8 @@ Patch-mainline: n/a
/*
* This serves to avoid cpu buffer overflow, and makes sure
---- head-2011-07-21.orig/drivers/oprofile/oprof.c 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/oprof.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/oprofile/oprof.c 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/oprof.c 2011-01-31 17:01:49.000000000 +0100
@@ -39,6 +39,7 @@ static DEFINE_MUTEX(start_mutex);
*/
static int timer = 0;
@@ -218,8 +218,8 @@ Patch-mainline: n/a
int oprofile_setup(void)
{
---- head-2011-07-21.orig/drivers/oprofile/oprofile_files.c 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/drivers/oprofile/oprofile_files.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/oprofile/oprofile_files.c 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/drivers/oprofile/oprofile_files.c 2011-01-31 17:01:49.000000000 +0100
@@ -180,6 +180,8 @@ static const struct file_operations dump
.llseek = noop_llseek,
};
@@ -249,8 +249,8 @@ Patch-mainline: n/a
oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
oprofilefs_create_ulong(sb, root, "buffer_size", &oprofile_buffer_size);
oprofilefs_create_ulong(sb, root, "buffer_watershed", &oprofile_buffer_watershed);
---- head-2011-07-21.orig/drivers/xen/core/smpboot.c 2010-11-08 17:27:03.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/smpboot.c 2011-01-31 17:01:49.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2010-11-08 17:27:03.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-01-31 17:01:49.000000000 +0100
@@ -55,7 +55,6 @@ static char callfunc_name[NR_CPUS][15];
cpumask_t cpu_sibling_map[NR_CPUS] __cacheline_aligned;
@@ -259,9 +259,9 @@ Patch-mainline: n/a
#if defined(__i386__)
u8 x86_cpu_to_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = 0xff };
---- head-2011-07-21.orig/include/linux/mm.h 2011-06-30 15:37:34.000000000 +0200
-+++ head-2011-07-21/include/linux/mm.h 2011-06-30 16:01:09.000000000 +0200
-@@ -225,6 +225,7 @@ struct vm_operations_struct {
+--- head-2011-09-07.orig/include/linux/mm.h 2011-09-07 14:38:06.000000000 +0200
++++ head-2011-09-07/include/linux/mm.h 2011-06-30 16:01:09.000000000 +0200
+@@ -226,6 +226,7 @@ struct vm_operations_struct {
int (*access)(struct vm_area_struct *vma, unsigned long addr,
void *buf, int len, int write);
@@ -269,7 +269,7 @@ Patch-mainline: n/a
/* Area-specific function for clearing the PTE at @ptep. Returns the
* original value of @ptep. */
pte_t (*zap_pte)(struct vm_area_struct *vma,
-@@ -232,6 +233,7 @@ struct vm_operations_struct {
+@@ -233,6 +234,7 @@ struct vm_operations_struct {
/* called before close() to indicate no more pages should be mapped */
void (*unmap)(struct vm_area_struct *area);
@@ -277,12 +277,12 @@ Patch-mainline: n/a
#ifdef CONFIG_NUMA
/*
---- head-2011-07-21.orig/include/linux/oprofile.h 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/include/linux/oprofile.h 2011-02-17 10:06:04.000000000 +0100
+--- head-2011-09-07.orig/include/linux/oprofile.h 2011-09-07 14:37:55.000000000 +0200
++++ head-2011-09-07/include/linux/oprofile.h 2011-09-07 15:19:35.000000000 +0200
@@ -19,8 +19,9 @@
#include <linux/errno.h>
#include <linux/printk.h>
- #include <asm/atomic.h>
+ #include <linux/atomic.h>
-
+#ifdef CONFIG_XEN
#include <xen/interface/xenoprof.h>
@@ -304,8 +304,8 @@ Patch-mainline: n/a
/* Do any necessary interrupt setup. Optional. */
int (*setup)(void);
/* Do any necessary interrupt shutdown. Optional. */
---- head-2011-07-21.orig/include/linux/page-flags.h 2011-04-28 11:06:45.000000000 +0200
-+++ head-2011-07-21/include/linux/page-flags.h 2011-04-28 11:08:54.000000000 +0200
+--- head-2011-09-07.orig/include/linux/page-flags.h 2011-09-07 14:38:10.000000000 +0200
++++ head-2011-09-07/include/linux/page-flags.h 2011-09-07 15:19:40.000000000 +0200
@@ -109,7 +109,7 @@ enum pageflags {
#endif
#ifdef CONFIG_XEN
@@ -315,7 +315,7 @@ Patch-mainline: n/a
PG_blkback, /* Page is owned by blkback */
#endif
__NR_PAGEFLAGS,
-@@ -343,9 +343,11 @@ CLEARPAGEFLAG(Uptodate, uptodate)
+@@ -338,9 +338,11 @@ CLEARPAGEFLAG(Uptodate, uptodate)
#define PageForeignDestructor(_page, order) \
((void (*)(struct page *, unsigned int))(_page)->index)(_page, order)
@@ -327,8 +327,8 @@ Patch-mainline: n/a
#define PageBlkback(page) test_bit(PG_blkback, &(page)->flags)
#define SetPageBlkback(page) set_bit(PG_blkback, &(page)->flags)
---- head-2011-07-21.orig/kernel/kexec.c 2011-04-28 11:06:56.000000000 +0200
-+++ head-2011-07-21/kernel/kexec.c 2011-04-28 11:08:43.000000000 +0200
+--- head-2011-09-07.orig/kernel/kexec.c 2011-04-28 11:06:56.000000000 +0200
++++ head-2011-09-07/kernel/kexec.c 2011-04-28 11:08:43.000000000 +0200
@@ -41,8 +41,10 @@
#include <asm/system.h>
#include <asm/sections.h>
@@ -368,8 +368,8 @@ Patch-mainline: n/a
return 0;
}
module_init(crash_notes_memory_init)
---- head-2011-07-21.orig/mm/memory.c 2011-07-21 12:07:08.000000000 +0200
-+++ head-2011-07-21/mm/memory.c 2011-07-21 12:07:22.000000000 +0200
+--- head-2011-09-07.orig/mm/memory.c 2011-09-07 14:38:26.000000000 +0200
++++ head-2011-09-07/mm/memory.c 2011-07-21 12:07:22.000000000 +0200
@@ -1158,10 +1158,12 @@ again:
page->index > details->last_index))
continue;
@@ -383,9 +383,9 @@ Patch-mainline: n/a
ptent = ptep_get_and_clear_full(mm, addr, pte,
tlb->fullmm);
tlb_remove_tlb_entry(tlb, pte, addr);
---- head-2011-07-21.orig/mm/mmap.c 2011-06-30 15:38:40.000000000 +0200
-+++ head-2011-07-21/mm/mmap.c 2011-06-30 16:01:21.000000000 +0200
-@@ -1900,8 +1900,10 @@ static void unmap_region(struct mm_struc
+--- head-2011-09-07.orig/mm/mmap.c 2011-09-07 14:38:29.000000000 +0200
++++ head-2011-09-07/mm/mmap.c 2011-09-07 15:19:47.000000000 +0200
+@@ -1892,8 +1892,10 @@ static void unmap_region(struct mm_struc
static inline void unmap_vma(struct vm_area_struct *vma)
{
@@ -396,7 +396,7 @@ Patch-mainline: n/a
}
/*
-@@ -2264,8 +2266,10 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2256,8 +2258,10 @@ void exit_mmap(struct mm_struct *mm)
arch_exit_mmap(mm);
@@ -407,8 +407,8 @@ Patch-mainline: n/a
vma = mm->mmap;
if (!vma) /* Can happen if dup_mmap() received an OOM */
---- head-2011-07-21.orig/mm/tmem-xen.c 2011-05-23 10:40:00.000000000 +0200
-+++ head-2011-07-21/mm/tmem-xen.c 2011-05-23 11:03:08.000000000 +0200
+--- head-2011-09-07.orig/mm/tmem-xen.c 2011-05-23 10:40:00.000000000 +0200
++++ head-2011-09-07/mm/tmem-xen.c 2011-05-23 11:03:08.000000000 +0200
@@ -7,8 +7,9 @@
#include <linux/types.h>
#include <xen/interface/xen.h>
diff --git a/patches.xen/xen3-fixup-kconfig b/patches.xen/xen3-fixup-kconfig
index 3319d96f5d..31481198bf 100644
--- a/patches.xen/xen3-fixup-kconfig
+++ b/patches.xen/xen3-fixup-kconfig
@@ -2,9 +2,9 @@ Subject: Fix xen configuration.
From: jbeulich@novell.com
Patch-mainline: n/a
---- head-2011-06-30.orig/arch/x86/Kconfig 2011-06-30 15:35:19.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig 2011-06-30 16:00:41.000000000 +0200
-@@ -191,6 +191,7 @@ config HAVE_CPUMASK_OF_CPU_MAP
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-07 14:37:06.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-07 15:19:01.000000000 +0200
+@@ -198,6 +198,7 @@ config HAVE_CPUMASK_OF_CPU_MAP
config ARCH_HIBERNATION_POSSIBLE
def_bool y
@@ -12,8 +12,8 @@ Patch-mainline: n/a
config ARCH_SUSPEND_POSSIBLE
def_bool y
---- head-2011-06-30.orig/arch/x86/Kconfig.cpu 2011-06-30 15:35:37.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig.cpu 2011-06-30 16:00:44.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/Kconfig.cpu 2011-09-07 14:37:08.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig.cpu 2011-09-07 15:19:03.000000000 +0200
@@ -6,7 +6,7 @@ choice
config M386
@@ -58,7 +58,7 @@ Patch-mainline: n/a
---help---
Select this for a Pentium with the MMX graphics/multimedia
extended instructions.
-@@ -338,7 +338,7 @@ config X86_PPRO_FENCE
+@@ -341,7 +341,7 @@ config X86_PPRO_FENCE
config X86_F00F_BUG
def_bool y
@@ -67,8 +67,8 @@ Patch-mainline: n/a
config X86_INVD_BUG
def_bool y
---- head-2011-06-30.orig/drivers/xen/Kconfig 2011-04-13 11:17:33.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Kconfig 2011-02-24 14:05:09.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-09-07 14:36:47.000000000 +0200
++++ head-2011-09-07/drivers/xen/Kconfig 2011-02-24 14:05:09.000000000 +0100
@@ -22,6 +22,7 @@ config XEN_PRIVILEGED_GUEST
config XEN_UNPRIVILEGED_GUEST
diff --git a/patches.xen/xen3-fixup-xen b/patches.xen/xen3-fixup-xen
index 67d3bb14d5..631cdc5ef5 100644
--- a/patches.xen/xen3-fixup-xen
+++ b/patches.xen/xen3-fixup-xen
@@ -1,18 +1,17 @@
Subject: Fix Xen build wrt. Xen files coming from mainline.
-From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1098:73e47d0fdb10)
+From: http://xenbits.xensource.com/linux-2.6.18-xen.hg (tip 1104:700f70b60d4b)
Patch-mainline: n/a
Acked-by: jbeulich@novell.com
---- head-2011-06-30.orig/drivers/xen/Makefile 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/Makefile 2011-01-31 15:14:12.000000000 +0100
-@@ -1,25 +1,28 @@
+--- head-2011-09-07.orig/drivers/xen/Makefile 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/Makefile 2011-01-31 15:14:12.000000000 +0100
+@@ -1,27 +1,28 @@
-obj-y += grant-table.o features.o events.o manage.o balloon.o
+obj-y += core/
+obj-y += console/
+obj-y += evtchn/
obj-y += xenbus/
--obj-y += tmem.o
+obj-y += char/
-nostackp := $(call cc-option, -fno-stack-protector)
@@ -22,14 +21,17 @@ Acked-by: jbeulich@novell.com
-obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
-obj-$(CONFIG_XEN_XENCOMM) += xencomm.o
-obj-$(CONFIG_XEN_BALLOON) += xen-balloon.o
+-obj-$(CONFIG_XEN_SELFBALLOONING) += xen-selfballoon.o
-obj-$(CONFIG_XEN_DEV_EVTCHN) += xen-evtchn.o
-obj-$(CONFIG_XEN_GNTDEV) += xen-gntdev.o
-obj-$(CONFIG_XEN_GRANT_DEV_ALLOC) += xen-gntalloc.o
-obj-$(CONFIG_XENFS) += xenfs/
-obj-$(CONFIG_XEN_SYS_HYPERVISOR) += sys-hypervisor.o
-obj-$(CONFIG_XEN_PLATFORM_PCI) += xen-platform-pci.o
+-obj-$(CONFIG_XEN_TMEM) += tmem.o
-obj-$(CONFIG_SWIOTLB_XEN) += swiotlb-xen.o
-obj-$(CONFIG_XEN_DOM0) += pci.o
+-obj-$(CONFIG_XEN_PCIDEV_BACKEND) += xen-pciback/
-
-xen-evtchn-y := evtchn.o
-xen-gntdev-y := gntdev.o
@@ -58,8 +60,8 @@ Acked-by: jbeulich@novell.com
+obj-$(CONFIG_XEN_NETDEV_ACCEL_SFC_UTIL) += sfc_netutil/
+obj-$(CONFIG_XEN_NETDEV_ACCEL_SFC_FRONTEND) += sfc_netfront/
+obj-$(CONFIG_XEN_NETDEV_ACCEL_SFC_BACKEND) += sfc_netback/
---- head-2011-06-30.orig/drivers/xen/xenbus/Makefile 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/Makefile 2011-02-02 17:06:11.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/xenbus/Makefile 2011-03-15 02:20:32.000000000 +0100
++++ head-2011-09-07/drivers/xen/xenbus/Makefile 2011-02-02 17:06:11.000000000 +0100
@@ -1,12 +1,9 @@
-obj-y += xenbus.o
+obj-y += xenbus_client.o xenbus_comms.o xenbus_xs.o xenbus_probe.o
@@ -80,8 +82,8 @@ Acked-by: jbeulich@novell.com
+xenbus-$(CONFIG_XEN_BACKEND) += xenbus_probe_backend.o
+obj-y += $(xenbus-y) $(xenbus-m)
+obj-$(CONFIG_XEN_XENBUS_DEV) += xenbus_dev.o
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_client.c 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_client.c 2011-06-30 15:37:44.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_client.c 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_client.c 2011-06-30 15:37:44.000000000 +0200
@@ -31,14 +31,17 @@
*/
@@ -637,8 +639,8 @@ Acked-by: jbeulich@novell.com
result = XenbusStateUnknown;
return result;
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_comms.c 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 13:43:15.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_comms.c 2008-10-10 00:13:53.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 13:43:15.000000000 +0200
@@ -34,25 +34,55 @@
#include <linux/interrupt.h>
#include <linux/sched.h>
@@ -769,8 +771,8 @@ Acked-by: jbeulich@novell.com
+
return 0;
}
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_comms.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_comms.h 2011-04-11 13:43:15.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_comms.h 2007-10-09 22:31:38.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_comms.h 2011-04-11 13:43:15.000000000 +0200
@@ -43,4 +43,27 @@ int xs_input_avail(void);
extern struct xenstore_domain_interface *xen_store_interface;
extern int xen_store_evtchn;
@@ -799,8 +801,8 @@ Acked-by: jbeulich@novell.com
+#endif
+
#endif /* _XENBUS_COMMS_H */
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_probe.c 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_probe.c 2011-06-30 15:37:44.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_probe.c 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_probe.c 2011-09-07 15:18:10.000000000 +0200
@@ -4,6 +4,7 @@
* Copyright (C) 2005 Rusty Russell, IBM Corporation
* Copyright (C) 2005 Mike Wray, Hewlett-Packard
@@ -1193,11 +1195,13 @@ Acked-by: jbeulich@novell.com
void xenbus_unregister_driver(struct xenbus_driver *drv)
{
-@@ -379,31 +494,30 @@ static void xenbus_dev_release(struct de
+@@ -378,38 +493,31 @@ static void xenbus_dev_release(struct de
+ kfree(to_xenbus_device(dev));
}
- static ssize_t xendev_show_nodename(struct device *dev,
-- struct device_attribute *attr, char *buf)
+-static ssize_t nodename_show(struct device *dev,
+- struct device_attribute *attr, char *buf)
++static ssize_t xendev_show_nodename(struct device *dev,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+ struct device_attribute *attr,
+#endif
@@ -1205,10 +1209,11 @@ Acked-by: jbeulich@novell.com
{
return sprintf(buf, "%s\n", to_xenbus_device(dev)->nodename);
}
- static DEVICE_ATTR(nodename, S_IRUSR | S_IRGRP | S_IROTH, xendev_show_nodename, NULL);
++static DEVICE_ATTR(nodename, S_IRUSR | S_IRGRP | S_IROTH, xendev_show_nodename, NULL);
- static ssize_t xendev_show_devtype(struct device *dev,
-- struct device_attribute *attr, char *buf)
+-static ssize_t devtype_show(struct device *dev,
+- struct device_attribute *attr, char *buf)
++static ssize_t xendev_show_devtype(struct device *dev,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+ struct device_attribute *attr,
+#endif
@@ -1216,14 +1221,22 @@ Acked-by: jbeulich@novell.com
{
return sprintf(buf, "%s\n", to_xenbus_device(dev)->devicetype);
}
- static DEVICE_ATTR(devtype, S_IRUSR | S_IRGRP | S_IROTH, xendev_show_devtype, NULL);
++static DEVICE_ATTR(devtype, S_IRUSR | S_IRGRP | S_IROTH, xendev_show_devtype, NULL);
--static ssize_t xendev_show_modalias(struct device *dev,
-- struct device_attribute *attr, char *buf)
+-static ssize_t modalias_show(struct device *dev,
+- struct device_attribute *attr, char *buf)
-{
-- return sprintf(buf, "xen:%s\n", to_xenbus_device(dev)->devicetype);
+- return sprintf(buf, "%s:%s\n", dev->bus->name,
+- to_xenbus_device(dev)->devicetype);
-}
--static DEVICE_ATTR(modalias, S_IRUSR | S_IRGRP | S_IROTH, xendev_show_modalias, NULL);
+-
+-struct device_attribute xenbus_dev_attrs[] = {
+- __ATTR_RO(nodename),
+- __ATTR_RO(devtype),
+- __ATTR_RO(modalias),
+- __ATTR_NULL
+-};
+-EXPORT_SYMBOL_GPL(xenbus_dev_attrs);
int xenbus_probe_node(struct xen_bus_type *bus,
const char *type,
@@ -1233,7 +1246,7 @@ Acked-by: jbeulich@novell.com
int err;
struct xenbus_device *xendev;
size_t stringlen;
-@@ -411,6 +525,9 @@ int xenbus_probe_node(struct xen_bus_typ
+@@ -417,6 +525,9 @@ int xenbus_probe_node(struct xen_bus_typ
enum xenbus_state state = xenbus_read_driver_state(nodename);
@@ -1243,7 +1256,7 @@ Acked-by: jbeulich@novell.com
if (state != XenbusStateInitialising) {
/* Device is not new, so ignore it. This can happen if a
device is going away after switching to Closed. */
-@@ -435,15 +552,14 @@ int xenbus_probe_node(struct xen_bus_typ
+@@ -441,26 +552,55 @@ int xenbus_probe_node(struct xen_bus_typ
xendev->devicetype = tmpstring;
init_completion(&xendev->down);
@@ -1261,31 +1274,20 @@ Acked-by: jbeulich@novell.com
/* Register with generic device framework. */
err = device_register(&xendev->dev);
if (err)
-@@ -451,28 +567,40 @@ int xenbus_probe_node(struct xen_bus_typ
+ goto fail;
- err = device_create_file(&xendev->dev, &dev_attr_nodename);
- if (err)
-- goto fail_unregister;
--
++ err = device_create_file(&xendev->dev, &dev_attr_nodename);
++ if (err)
+ goto unregister;
- err = device_create_file(&xendev->dev, &dev_attr_devtype);
- if (err)
-- goto fail_remove_nodename;
--
-- err = device_create_file(&xendev->dev, &dev_attr_modalias);
-- if (err)
-- goto fail_remove_devtype;
++ err = device_create_file(&xendev->dev, &dev_attr_devtype);
++ if (err)
+ goto unregister;
-
++
return 0;
--fail_remove_devtype:
-- device_remove_file(&xendev->dev, &dev_attr_devtype);
--fail_remove_nodename:
+unregister:
- device_remove_file(&xendev->dev, &dev_attr_nodename);
--fail_unregister:
++ device_remove_file(&xendev->dev, &dev_attr_nodename);
+ device_remove_file(&xendev->dev, &dev_attr_devtype);
- device_unregister(&xendev->dev);
++ device_unregister(&xendev->dev);
fail:
kfree(xendev);
return err;
@@ -1314,7 +1316,7 @@ Acked-by: jbeulich@novell.com
static int xenbus_probe_device_type(struct xen_bus_type *bus, const char *type)
{
-@@ -486,7 +614,7 @@ static int xenbus_probe_device_type(stru
+@@ -474,7 +614,7 @@ static int xenbus_probe_device_type(stru
return PTR_ERR(dir);
for (i = 0; i < dir_n; i++) {
@@ -1323,7 +1325,7 @@ Acked-by: jbeulich@novell.com
if (err)
break;
}
-@@ -501,6 +629,9 @@ int xenbus_probe_devices(struct xen_bus_
+@@ -489,6 +629,9 @@ int xenbus_probe_devices(struct xen_bus_
char **dir;
unsigned int i, dir_n;
@@ -1333,7 +1335,7 @@ Acked-by: jbeulich@novell.com
dir = xenbus_directory(XBT_NIL, bus->root, "", &dir_n);
if (IS_ERR(dir))
return PTR_ERR(dir);
-@@ -514,7 +645,6 @@ int xenbus_probe_devices(struct xen_bus_
+@@ -502,7 +645,6 @@ int xenbus_probe_devices(struct xen_bus_
kfree(dir);
return err;
}
@@ -1341,7 +1343,7 @@ Acked-by: jbeulich@novell.com
static unsigned int char_count(const char *str, char c)
{
-@@ -539,15 +669,15 @@ static int strsep_len(const char *str, c
+@@ -527,15 +669,15 @@ static int strsep_len(const char *str, c
return (len == 0) ? i : -ERANGE;
}
@@ -1360,7 +1362,7 @@ Acked-by: jbeulich@novell.com
exists = xenbus_exists(XBT_NIL, node, "");
if (!exists) {
-@@ -575,46 +705,81 @@ void xenbus_dev_changed(const char *node
+@@ -563,46 +705,81 @@ void xenbus_dev_changed(const char *node
kfree(root);
}
@@ -1454,7 +1456,7 @@ Acked-by: jbeulich@novell.com
return err;
}
-@@ -625,7 +790,7 @@ int xenbus_dev_resume(struct device *dev
+@@ -613,7 +790,7 @@ int xenbus_dev_resume(struct device *dev
if (err) {
printk(KERN_WARNING
"xenbus: resume %s failed: %i\n",
@@ -1463,7 +1465,7 @@ Acked-by: jbeulich@novell.com
return err;
}
}
-@@ -634,37 +799,60 @@ int xenbus_dev_resume(struct device *dev
+@@ -622,37 +799,60 @@ int xenbus_dev_resume(struct device *dev
if (err) {
printk(KERN_WARNING
"xenbus_probe: resume (watch_otherend) %s failed: "
@@ -1534,7 +1536,7 @@ Acked-by: jbeulich@novell.com
EXPORT_SYMBOL_GPL(register_xenstore_notifier);
void unregister_xenstore_notifier(struct notifier_block *nb)
-@@ -672,51 +860,269 @@ void unregister_xenstore_notifier(struct
+@@ -660,51 +860,269 @@ void unregister_xenstore_notifier(struct
blocking_notifier_chain_unregister(&xenstore_chain, nb);
}
EXPORT_SYMBOL_GPL(unregister_xenstore_notifier);
@@ -1821,7 +1823,7 @@ Acked-by: jbeulich@novell.com
xen_store_mfn = xen_start_info->store_mfn =
pfn_to_mfn(virt_to_phys((void *)page) >>
-@@ -724,63 +1130,226 @@ static int __init xenbus_init(void)
+@@ -712,63 +1130,226 @@ static int __init xenbus_init(void)
/* Next allocate a local port which xenstored can bind to */
alloc_unbound.dom = DOMID_SELF;
@@ -2078,9 +2080,9 @@ Acked-by: jbeulich@novell.com
+ return bus_for_each_dev(&xenbus_frontend.bus, NULL, arg, fn);
+}
+EXPORT_SYMBOL_GPL(xenbus_for_each_frontend);
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_probe.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_probe.h 2011-01-31 16:11:24.000000000 +0100
-@@ -34,45 +34,47 @@
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_probe.h 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_probe.h 2011-09-07 15:18:14.000000000 +0200
+@@ -34,47 +34,47 @@
#ifndef _XENBUS_PROBE_H
#define _XENBUS_PROBE_H
@@ -2119,6 +2121,8 @@ Acked-by: jbeulich@novell.com
+ struct device dev;
};
+-extern struct device_attribute xenbus_dev_attrs[];
+-
extern int xenbus_match(struct device *_dev, struct device_driver *_drv);
extern int xenbus_dev_probe(struct device *_dev);
extern int xenbus_dev_remove(struct device *_dev);
@@ -2149,8 +2153,8 @@ Acked-by: jbeulich@novell.com
+extern void dev_changed(const char *node, struct xen_bus_type *bus);
#endif
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_probe_backend.c 2011-02-01 14:49:58.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-09-07 13:56:36.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_probe_backend.c 2011-09-07 15:18:19.000000000 +0200
@@ -33,7 +33,7 @@
#define DPRINTK(fmt, args...) \
@@ -2233,7 +2237,7 @@ Acked-by: jbeulich@novell.com
DPRINTK("");
-@@ -103,32 +142,46 @@ static int xenbus_uevent_backend(struct
+@@ -103,35 +142,46 @@ static int xenbus_uevent_backend(struct
return -ENODEV;
xdev = to_xenbus_device(dev);
@@ -2241,6 +2245,9 @@ Acked-by: jbeulich@novell.com
if (xdev == NULL)
return -ENODEV;
+- if (add_uevent_var(env, "MODALIAS=xen-backend:%s", xdev->devicetype))
+- return -ENOMEM;
+-
/* stuff we want to pass to /sbin/hotplug */
- if (add_uevent_var(env, "XENBUS_TYPE=%s", xdev->devicetype))
- return -ENOMEM;
@@ -2290,7 +2297,7 @@ Acked-by: jbeulich@novell.com
const char *type,
const char *name)
{
-@@ -141,14 +194,13 @@ static int xenbus_probe_backend_unit(str
+@@ -144,14 +194,13 @@ static int xenbus_probe_backend_unit(str
DPRINTK("%s\n", nodename);
@@ -2307,7 +2314,7 @@ Acked-by: jbeulich@novell.com
{
char *nodename;
int err = 0;
-@@ -157,7 +209,7 @@ static int xenbus_probe_backend(struct x
+@@ -160,7 +209,7 @@ static int xenbus_probe_backend(struct x
DPRINTK("");
@@ -2316,7 +2323,7 @@ Acked-by: jbeulich@novell.com
if (!nodename)
return -ENOMEM;
-@@ -168,7 +220,7 @@ static int xenbus_probe_backend(struct x
+@@ -171,7 +220,7 @@ static int xenbus_probe_backend(struct x
}
for (i = 0; i < dir_n; i++) {
@@ -2325,7 +2332,7 @@ Acked-by: jbeulich@novell.com
if (err)
break;
}
-@@ -177,39 +229,12 @@ static int xenbus_probe_backend(struct x
+@@ -180,35 +229,12 @@ static int xenbus_probe_backend(struct x
return err;
}
@@ -2335,10 +2342,6 @@ Acked-by: jbeulich@novell.com
- xenbus_otherend_changed(watch, vec, len, 0);
-}
-
--static struct device_attribute xenbus_backend_dev_attrs[] = {
-- __ATTR_NULL
--};
--
-static struct xen_bus_type xenbus_backend = {
- .root = "backend",
- .levels = 3, /* backend/type/<frontend>/<id> */
@@ -2352,7 +2355,7 @@ Acked-by: jbeulich@novell.com
- .probe = xenbus_dev_probe,
- .remove = xenbus_dev_remove,
- .shutdown = xenbus_dev_shutdown,
-- .dev_attrs = xenbus_backend_dev_attrs,
+- .dev_attrs = xenbus_dev_attrs,
- },
-};
-
@@ -2366,7 +2369,7 @@ Acked-by: jbeulich@novell.com
}
static struct xenbus_watch be_watch = {
-@@ -217,60 +242,51 @@ static struct xenbus_watch be_watch = {
+@@ -216,60 +242,51 @@ static struct xenbus_watch be_watch = {
.callback = backend_changed,
};
@@ -2461,8 +2464,8 @@ Acked-by: jbeulich@novell.com
}
-subsys_initcall(xenbus_probe_backend_init);
+EXPORT_SYMBOL_GPL(xenbus_for_each_backend);
---- head-2011-06-30.orig/drivers/xen/xenbus/xenbus_xs.c 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/drivers/xen/xenbus/xenbus_xs.c 2011-06-30 15:37:44.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_xs.c 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_xs.c 2011-06-30 15:37:44.000000000 +0200
@@ -47,6 +47,14 @@
#include <xen/xenbus.h>
#include "xenbus_comms.h"
@@ -2675,9 +2678,9 @@ Acked-by: jbeulich@novell.com
task = kthread_run(xenwatch_thread, NULL, "xenwatch");
if (IS_ERR(task))
return PTR_ERR(task);
---- head-2011-06-30.orig/include/xen/balloon.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/balloon.h 2007-06-12 13:14:19.000000000 +0200
-@@ -1,25 +1,57 @@
+--- head-2011-09-07.orig/include/xen/balloon.h 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/include/xen/balloon.h 2007-06-12 13:14:19.000000000 +0200
+@@ -1,39 +1,57 @@
/******************************************************************************
- * Xen balloon functionality
+ * balloon.h
@@ -2727,7 +2730,28 @@ Acked-by: jbeulich@novell.com
- unsigned long max_schedule_delay;
- unsigned long retry_count;
- unsigned long max_retry_count;
+-#ifdef CONFIG_XEN_BALLOON_MEMORY_HOTPLUG
+- unsigned long hotplug_pages;
+- unsigned long balloon_hotplug;
+-#endif
-};
+-
+-extern struct balloon_stats balloon_stats;
+-
+-void balloon_set_new_target(unsigned long target);
+-
+-int alloc_xenballooned_pages(int nr_pages, struct page** pages);
+-void free_xenballooned_pages(int nr_pages, struct page** pages);
+-
+-struct sys_device;
+-#ifdef CONFIG_XEN_SELFBALLOONING
+-extern int register_xen_selfballooning(struct sys_device *sysdev);
+-#else
+-static inline int register_xen_selfballooning(struct sys_device *sysdev)
+-{
+- return -ENOSYS;
+-}
+-#endif
+/*
+ * Inform the balloon driver that it should allow some slop for device-driver
+ * memory activities.
@@ -2737,11 +2761,9 @@ Acked-by: jbeulich@novell.com
+/* Allocate/free a set of empty pages in low memory (i.e., no RAM mapped). */
+struct page **alloc_empty_pages_and_pagevec(int nr_pages);
+void free_empty_pages_and_pagevec(struct page **pagevec, int nr_pages);
-
--extern struct balloon_stats balloon_stats;
++
+void balloon_release_driver_page(struct page *page);
-
--void balloon_set_new_target(unsigned long target);
++
+/*
+ * Prevent the balloon driver from changing the memory reservation during
+ * a driver critical region.
@@ -2749,12 +2771,10 @@ Acked-by: jbeulich@novell.com
+extern spinlock_t balloon_lock;
+#define balloon_lock(__flags) spin_lock_irqsave(&balloon_lock, __flags)
+#define balloon_unlock(__flags) spin_unlock_irqrestore(&balloon_lock, __flags)
-
--int alloc_xenballooned_pages(int nr_pages, struct page** pages);
--void free_xenballooned_pages(int nr_pages, struct page** pages);
++
+#endif /* __ASM_BALLOON_H__ */
---- head-2011-06-30.orig/include/xen/evtchn.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/evtchn.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/evtchn.h 2009-09-10 00:13:59.000000000 +0200
++++ head-2011-09-07/include/xen/evtchn.h 2011-01-31 15:14:12.000000000 +0100
@@ -1,7 +1,11 @@
+#if defined(CONFIG_PARAVIRT_XEN) || !defined(__KERNEL__)
+#include "public/evtchn.h"
@@ -2930,8 +2950,8 @@ Acked-by: jbeulich@novell.com
-#endif /* __LINUX_PUBLIC_EVTCHN_H__ */
+#endif /* __ASM_EVTCHN_H__ */
+#endif /* CONFIG_PARAVIRT_XEN */
---- head-2011-06-30.orig/include/xen/hvm.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/hvm.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/hvm.h 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/include/xen/hvm.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,9 +3,8 @@
#define XEN_HVM_H__
@@ -2961,8 +2981,8 @@ Acked-by: jbeulich@novell.com
- HVM_CALLBACK_VIA_TYPE_SHIFT | (x))
-
#endif /* XEN_HVM_H__ */
---- head-2011-06-30.orig/include/xen/interface/callback.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/callback.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/callback.h 2008-10-10 00:13:53.000000000 +0200
++++ head-2011-09-07/include/xen/interface/callback.h 2011-01-31 15:14:12.000000000 +0100
@@ -86,6 +86,8 @@ struct callback_register {
uint16_t flags;
xen_callback_t address;
@@ -2985,8 +3005,8 @@ Acked-by: jbeulich@novell.com
+#endif
#endif /* __XEN_PUBLIC_CALLBACK_H__ */
---- head-2011-06-30.orig/include/xen/interface/elfnote.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/elfnote.h 2011-03-17 13:50:24.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/elfnote.h 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/include/xen/interface/elfnote.h 2011-08-08 12:54:10.000000000 +0200
@@ -3,6 +3,24 @@
*
* Definitions used for the Xen ELF notes.
@@ -3044,7 +3064,7 @@ Acked-by: jbeulich@novell.com
*
* LEGACY: PAE (n.b. The legacy interface included a provision to
* indicate 'extended-cr3' support allowing L3 page tables to be
-@@ -140,6 +161,82 @@
+@@ -140,6 +161,95 @@
*/
#define XEN_ELFNOTE_SUSPEND_CANCEL 14
@@ -3066,9 +3086,22 @@ Acked-by: jbeulich@novell.com
+#define XEN_ELFNOTE_MOD_START_PFN 16
+
+/*
++ * The features supported by this kernel (numeric).
++ *
++ * Other than XEN_ELFNOTE_FEATURES on pre-4.2 Xen, this note allows a
++ * kernel to specify support for features that older hypervisors don't
++ * know about. The set of features 4.2 and newer hypervisors will
++ * consider supported by the kernel is the combination of the sets
++ * specified through this and the string note.
++ *
++ * LEGACY: FEATURES
++ */
++#define XEN_ELFNOTE_SUPPORTED_FEATURES 17
++
++/*
+ * The number of the highest elfnote defined.
+ */
-+#define XEN_ELFNOTE_MAX XEN_ELFNOTE_MOD_START_PFN
++#define XEN_ELFNOTE_MAX XEN_ELFNOTE_SUPPORTED_FEATURES
+
+/*
+ * System information exported through crash notes.
@@ -3127,8 +3160,8 @@ Acked-by: jbeulich@novell.com
#endif /* __XEN_PUBLIC_ELFNOTE_H__ */
/*
---- head-2011-06-30.orig/include/xen/interface/event_channel.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/event_channel.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/event_channel.h 2009-03-24 00:12:14.000000000 +0100
++++ head-2011-09-07/include/xen/interface/event_channel.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,6 +3,24 @@
*
* Event channels between domains.
@@ -3458,8 +3491,8 @@ Acked-by: jbeulich@novell.com
+DEFINE_XEN_GUEST_HANDLE(evtchn_op_t);
#endif /* __XEN_PUBLIC_EVENT_CHANNEL_H__ */
---- head-2011-06-30.orig/include/xen/interface/features.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/features.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/features.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/include/xen/interface/features.h 2011-08-08 12:54:10.000000000 +0200
@@ -3,6 +3,24 @@
*
* Feature flags, reported by XENVER_get_features.
@@ -3501,8 +3534,20 @@ Acked-by: jbeulich@novell.com
/* x86: Does this Xen host support the HVM callback vector type? */
#define XENFEAT_hvm_callback_vector 8
---- head-2011-06-30.orig/include/xen/interface/grant_table.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/grant_table.h 2011-01-31 15:14:12.000000000 +0100
+@@ -48,7 +75,10 @@
+ #define XENFEAT_hvm_safe_pvclock 9
+
+ /* x86: pirq can be used by HVM guests */
+-#define XENFEAT_hvm_pirqs 10
++#define XENFEAT_hvm_pirqs 10
++
++/* operation as Dom0 is supported */
++#define XENFEAT_dom0 11
+
+ #define XENFEAT_NR_SUBMAPS 1
+
+--- head-2011-09-07.orig/include/xen/interface/grant_table.h 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/include/xen/interface/grant_table.h 2011-01-31 15:14:12.000000000 +0100
@@ -85,12 +85,26 @@
*/
@@ -3910,8 +3955,8 @@ Acked-by: jbeulich@novell.com
}
#endif /* __XEN_PUBLIC_GRANT_TABLE_H__ */
---- head-2011-06-30.orig/include/xen/interface/hvm/hvm_op.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/hvm/hvm_op.h 2011-05-23 10:40:00.000000000 +0200
+--- head-2011-09-07.orig/include/xen/interface/hvm/hvm_op.h 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/include/xen/interface/hvm/hvm_op.h 2011-08-08 12:54:10.000000000 +0200
@@ -21,6 +21,9 @@
#ifndef __XEN_PUBLIC_HVM_HVM_OP_H__
#define __XEN_PUBLIC_HVM_HVM_OP_H__
@@ -3922,7 +3967,7 @@ Acked-by: jbeulich@novell.com
/* Get/set subcommands: the second argument of the hypercall is a
* pointer to a xen_hvm_param struct. */
#define HVMOP_set_param 0
-@@ -30,17 +33,212 @@ struct xen_hvm_param {
+@@ -30,17 +33,230 @@ struct xen_hvm_param {
uint32_t index; /* IN */
uint64_t value; /* IN/OUT */
};
@@ -4138,9 +4183,27 @@ Acked-by: jbeulich@novell.com
+typedef struct xen_hvm_get_mem_type xen_hvm_get_mem_type_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_mem_type_t);
+
++/* Following tools-only interfaces may change in future. */
++#if defined(__XEN__) || defined(__XEN_TOOLS__)
++
++/* MSI injection for emulated devices */
++#define HVMOP_inject_msi 16
++struct xen_hvm_inject_msi {
++ /* Domain to be injected */
++ domid_t domid;
++ /* Data -- lower 32 bits */
++ uint32_t data;
++ /* Address (0xfeexxxxx) */
++ uint64_t addr;
++};
++typedef struct xen_hvm_inject_msi xen_hvm_inject_msi_t;
++DEFINE_XEN_GUEST_HANDLE(xen_hvm_inject_msi_t);
++
++#endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
++
#endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */
---- head-2011-06-30.orig/include/xen/interface/hvm/params.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/hvm/params.h 2011-05-23 10:40:00.000000000 +0200
+--- head-2011-09-07.orig/include/xen/interface/hvm/params.h 2010-10-20 22:30:22.000000000 +0200
++++ head-2011-09-07/include/xen/interface/hvm/params.h 2011-08-08 12:54:10.000000000 +0200
@@ -33,11 +33,17 @@
* val[63:56] == 1: val[55:0] is a delivery PCI INTx line, as follows:
* Domain = val[47:32], Bus = val[31:16],
@@ -4180,7 +4243,7 @@ Acked-by: jbeulich@novell.com
/*
* Set mode for virtual timers (currently x86 only):
* delay_for_missed_ticks (default):
-@@ -90,6 +109,37 @@
+@@ -90,6 +109,38 @@
/* Boolean: Enable aligning all periodic vpts to reduce interrupts */
#define HVM_PARAM_VPT_ALIGN 16
@@ -4202,10 +4265,11 @@ Acked-by: jbeulich@novell.com
+
+/* Enable blocking memory events, async or sync (pause vcpu until response)
+ * onchangeonly indicates messages only on a change of value */
-+#define HVM_PARAM_MEMORY_EVENT_CR0 20
-+#define HVM_PARAM_MEMORY_EVENT_CR3 21
-+#define HVM_PARAM_MEMORY_EVENT_CR4 22
-+#define HVM_PARAM_MEMORY_EVENT_INT3 23
++#define HVM_PARAM_MEMORY_EVENT_CR0 20
++#define HVM_PARAM_MEMORY_EVENT_CR3 21
++#define HVM_PARAM_MEMORY_EVENT_CR4 22
++#define HVM_PARAM_MEMORY_EVENT_INT3 23
++#define HVM_PARAM_MEMORY_EVENT_SINGLE_STEP 25
+
+#define HVMPME_MODE_MASK (3 << 0)
+#define HVMPME_mode_disabled 0
@@ -4216,11 +4280,11 @@ Acked-by: jbeulich@novell.com
+/* Boolean: Enable nestedhvm (hvm only) */
+#define HVM_PARAM_NESTEDHVM 24
+
-+#define HVM_NR_PARAMS 25
++#define HVM_NR_PARAMS 26
#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
---- head-2011-06-30.orig/include/xen/interface/io/blkif.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/blkif.h 2011-07-01 16:32:10.000000000 +0200
+--- head-2011-09-07.orig/include/xen/interface/io/blkif.h 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/blkif.h 2011-07-01 16:32:10.000000000 +0200
@@ -3,6 +3,24 @@
*
* Unified block-device I/O interface for Xen guest OSes.
@@ -4378,8 +4442,8 @@ Acked-by: jbeulich@novell.com
/*
* STATUS RETURN CODES.
---- head-2011-06-30.orig/include/xen/interface/io/console.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/console.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/console.h 2007-10-09 22:31:38.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/console.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,6 +3,24 @@
*
* Console I/O interface for Xen guest OSes.
@@ -4405,8 +4469,8 @@ Acked-by: jbeulich@novell.com
* Copyright (c) 2005, Keir Fraser
*/
---- head-2011-06-30.orig/include/xen/interface/io/fbif.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/fbif.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/fbif.h 2008-10-10 00:13:53.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/fbif.h 2011-01-31 15:14:12.000000000 +0100
@@ -41,12 +41,13 @@
*/
#define XENFB_TYPE_UPDATE 2
@@ -4571,8 +4635,8 @@ Acked-by: jbeulich@novell.com
};
/*
---- head-2011-06-30.orig/include/xen/interface/io/kbdif.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/kbdif.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/kbdif.h 2008-10-10 00:13:53.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/kbdif.h 2011-01-31 15:14:12.000000000 +0100
@@ -45,34 +45,38 @@
*/
#define XENKBD_TYPE_POS 4
@@ -4680,8 +4744,8 @@ Acked-by: jbeulich@novell.com
};
#endif
---- head-2011-06-30.orig/include/xen/interface/io/netif.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/netif.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/netif.h 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/netif.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,6 +3,24 @@
*
* Unified network-device I/O interface for Xen guest OSes.
@@ -4924,8 +4988,8 @@ Acked-by: jbeulich@novell.com
+#define NETIF_RSP_NULL 1
#endif
---- head-2011-06-30.orig/include/xen/interface/io/protocols.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/protocols.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/protocols.h 2008-07-13 23:51:29.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/protocols.h 2011-01-31 15:14:12.000000000 +0100
@@ -1,10 +1,31 @@
+/******************************************************************************
+ * protocols.h
@@ -4968,8 +5032,8 @@ Acked-by: jbeulich@novell.com
#else
# error arch fixup needed here
#endif
---- head-2011-06-30.orig/include/xen/interface/io/ring.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/ring.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/ring.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/include/xen/interface/io/ring.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,16 +3,42 @@
*
* Shared producer-consumer ring macros.
@@ -5355,8 +5419,8 @@ Acked-by: jbeulich@novell.com
} while (0)
#endif /* __XEN_PUBLIC_IO_RING_H__ */
---- head-2011-06-30.orig/include/xen/interface/io/xenbus.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/xenbus.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/xenbus.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/include/xen/interface/io/xenbus.h 2011-01-31 15:14:12.000000000 +0100
@@ -36,6 +36,7 @@ enum xenbus_state
XenbusStateReconfigured = 8
@@ -5365,8 +5429,8 @@ Acked-by: jbeulich@novell.com
#endif /* _XEN_PUBLIC_IO_XENBUS_H */
---- head-2011-06-30.orig/include/xen/interface/io/xs_wire.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/io/xs_wire.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/io/xs_wire.h 2007-10-09 22:31:38.000000000 +0200
++++ head-2011-09-07/include/xen/interface/io/xs_wire.h 2011-01-31 15:14:12.000000000 +0100
@@ -1,6 +1,25 @@
/*
* Details of the "wire" protocol between Xen Store Daemon and client
@@ -5441,8 +5505,8 @@ Acked-by: jbeulich@novell.com
+#define XENSTORE_REL_PATH_MAX 2048
+
#endif /* _XS_WIRE_H */
---- head-2011-06-30.orig/include/xen/interface/memory.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/memory.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/memory.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/include/xen/interface/memory.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,13 +3,31 @@
*
* Memory reservation and information.
@@ -5703,8 +5767,8 @@ Acked-by: jbeulich@novell.com
+#define XENMEM_get_sharing_freed_pages 18
+
#endif /* __XEN_PUBLIC_MEMORY_H__ */
---- head-2011-06-30.orig/include/xen/interface/physdev.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/physdev.h 2011-03-17 13:50:24.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/physdev.h 2011-01-05 01:50:19.000000000 +0100
++++ head-2011-09-07/include/xen/interface/physdev.h 2011-03-17 13:50:24.000000000 +0100
@@ -21,6 +21,8 @@
#ifndef __XEN_PUBLIC_PHYSDEV_H__
#define __XEN_PUBLIC_PHYSDEV_H__
@@ -5870,8 +5934,8 @@ Acked-by: jbeulich@novell.com
/*
* Notify that some PIRQ-bound event channels have been unmasked.
* ** This command is obsolete since interface version 0x00030202 and is **
---- head-2011-06-30.orig/include/xen/interface/sched.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/sched.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/sched.h 2011-05-19 06:06:34.000000000 +0200
++++ head-2011-09-07/include/xen/interface/sched.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,6 +3,24 @@
*
* Scheduler state interactions
@@ -5961,8 +6025,8 @@ Acked-by: jbeulich@novell.com
/*
* Reason codes for SCHEDOP_shutdown. These may be interpreted by control
---- head-2011-06-30.orig/include/xen/interface/vcpu.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/vcpu.h 2011-03-17 13:50:24.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/vcpu.h 2008-07-13 23:51:29.000000000 +0200
++++ head-2011-09-07/include/xen/interface/vcpu.h 2011-03-17 13:50:24.000000000 +0100
@@ -27,11 +27,13 @@
#ifndef __XEN_PUBLIC_VCPU_H__
#define __XEN_PUBLIC_VCPU_H__
@@ -6198,8 +6262,8 @@ Acked-by: jbeulich@novell.com
+DEFINE_XEN_GUEST_HANDLE(vcpu_register_time_memory_area_t);
#endif /* __XEN_PUBLIC_VCPU_H__ */
---- head-2011-06-30.orig/include/xen/interface/version.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/version.h 2011-01-31 15:14:12.000000000 +0100
+--- head-2011-09-07.orig/include/xen/interface/version.h 2009-09-10 00:13:59.000000000 +0200
++++ head-2011-09-07/include/xen/interface/version.h 2011-01-31 15:14:12.000000000 +0100
@@ -3,6 +3,24 @@
*
* Xen version, type, and compile information.
@@ -6294,8 +6358,8 @@ Acked-by: jbeulich@novell.com
+typedef char xen_commandline_t[1024];
+
#endif /* __XEN_PUBLIC_VERSION_H__ */
---- head-2011-06-30.orig/include/xen/interface/xen.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/interface/xen.h 2011-06-30 15:56:26.000000000 +0200
+--- head-2011-09-07.orig/include/xen/interface/xen.h 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/include/xen/interface/xen.h 2011-09-07 15:18:35.000000000 +0200
@@ -3,35 +3,69 @@
*
* Guest OS interface to Xen.
@@ -6391,7 +6455,7 @@ Acked-by: jbeulich@novell.com
#define __HYPERVISOR_grant_table_op 20
#define __HYPERVISOR_vm_assist 21
#define __HYPERVISOR_update_va_mapping_otherdomain 22
-@@ -50,14 +84,17 @@
+@@ -50,15 +84,19 @@
#define __HYPERVISOR_vcpu_op 24
#define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
#define __HYPERVISOR_mmuext_op 26
@@ -6409,9 +6473,11 @@ Acked-by: jbeulich@novell.com
+#define __HYPERVISOR_domctl 36
+#define __HYPERVISOR_kexec_op 37
#define __HYPERVISOR_tmem_op 38
++#define __HYPERVISOR_xc_reserved_op 39 /* reserved for XenClient */
/* Architecture-specific hypercall definitions. */
-@@ -71,15 +108,49 @@
+ #define __HYPERVISOR_arch_0 48
+@@ -71,15 +109,50 @@
#define __HYPERVISOR_arch_7 55
/*
@@ -6464,10 +6530,11 @@ Acked-by: jbeulich@novell.com
+#define VIRQ_CON_RING 8 /* G. (DOM0) Bytes received on console */
+#define VIRQ_PCPU_STATE 9 /* G. (DOM0) PCPU state changed */
+#define VIRQ_MEM_EVENT 10 /* G. (DOM0) A memory event has occured */
++#define VIRQ_XC_RESERVED 11 /* G. Reserved for XenClient */
/* Architecture-specific VIRQ definitions. */
#define VIRQ_ARCH_0 16
-@@ -92,19 +163,28 @@
+@@ -92,19 +165,28 @@
#define VIRQ_ARCH_7 23
#define NR_VIRQS 24
@@ -6505,7 +6572,7 @@ Acked-by: jbeulich@novell.com
* FD == DOMID_IO: Permit /only/ I/O mappings, at the priv level of the caller.
* FD == DOMID_XEN: Map restricted areas of Xen's heap space.
* ptr[:2] -- Machine address of the page-table entry to modify.
-@@ -120,8 +200,8 @@
+@@ -120,8 +202,8 @@
* As MMU_NORMAL_PT_UPDATE above, but A/D bits currently in the PTE are ORed
* with those in @val.
*/
@@ -6516,7 +6583,7 @@ Acked-by: jbeulich@novell.com
#define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr = val | (*ptr&(A|D)) */
/*
-@@ -164,9 +244,23 @@
+@@ -164,9 +246,23 @@
* cmd: MMUEXT_FLUSH_CACHE
* No additional arguments. Writes back and flushes cache contents.
*
@@ -6540,7 +6607,7 @@ Acked-by: jbeulich@novell.com
*/
#define MMUEXT_PIN_L1_TABLE 0
#define MMUEXT_PIN_L2_TABLE 1
-@@ -183,24 +277,37 @@
+@@ -183,24 +279,37 @@
#define MMUEXT_FLUSH_CACHE 12
#define MMUEXT_SET_LDT 13
#define MMUEXT_NEW_USER_BASEPTR 15
@@ -6592,7 +6659,7 @@ Acked-by: jbeulich@novell.com
#endif
/* These are passed as 'flags' to update_va_mapping. They can be ORed. */
-@@ -225,11 +332,24 @@ DEFINE_GUEST_HANDLE_STRUCT(mmuext_op);
+@@ -225,11 +334,24 @@ DEFINE_GUEST_HANDLE_STRUCT(mmuext_op);
*/
#define VMASST_CMD_enable 0
#define VMASST_CMD_disable 1
@@ -6618,7 +6685,7 @@ Acked-by: jbeulich@novell.com
#ifndef __ASSEMBLY__
-@@ -261,6 +381,16 @@ typedef uint16_t domid_t;
+@@ -261,6 +383,16 @@ typedef uint16_t domid_t;
#define DOMID_XEN (0x7FF2U)
/*
@@ -6635,7 +6702,7 @@ Acked-by: jbeulich@novell.com
* Send an array of these to HYPERVISOR_mmu_update().
* NB. The fields are natural pointer/address size for this architecture.
*/
-@@ -268,18 +398,19 @@ struct mmu_update {
+@@ -268,18 +400,19 @@ struct mmu_update {
uint64_t ptr; /* Machine address of PTE. */
uint64_t val; /* New contents of PTE. */
};
@@ -6659,7 +6726,7 @@ Acked-by: jbeulich@novell.com
/*
* Event channel endpoints per domain:
-@@ -288,173 +419,274 @@ DEFINE_GUEST_HANDLE_STRUCT(multicall_ent
+@@ -288,212 +421,275 @@ DEFINE_GUEST_HANDLE_STRUCT(multicall_ent
#define NR_EVENT_CHANNELS (sizeof(unsigned long) * sizeof(unsigned long) * 64)
struct vcpu_time_info {
@@ -6979,7 +7046,45 @@ Acked-by: jbeulich@novell.com
+ unsigned long nr_p2m_frames;/* # of pfns forming initial P->M table. */
};
+typedef struct start_info start_info_t;
-+
+
+-struct dom0_vga_console_info {
+- uint8_t video_type;
+-#define XEN_VGATYPE_TEXT_MODE_3 0x03
+-#define XEN_VGATYPE_VESA_LFB 0x23
+-
+- union {
+- struct {
+- /* Font height, in pixels. */
+- uint16_t font_height;
+- /* Cursor location (column, row). */
+- uint16_t cursor_x, cursor_y;
+- /* Number of rows and columns (dimensions in characters). */
+- uint16_t rows, columns;
+- } text_mode_3;
+-
+- struct {
+- /* Width and height, in pixels. */
+- uint16_t width, height;
+- /* Bytes per scan line. */
+- uint16_t bytes_per_line;
+- /* Bits per pixel. */
+- uint16_t bits_per_pixel;
+- /* LFB physical address, and size (in units of 64kB). */
+- uint32_t lfb_base;
+- uint32_t lfb_size;
+- /* RGB mask offsets and sizes, as defined by VBE 1.2+ */
+- uint8_t red_pos, red_size;
+- uint8_t green_pos, green_size;
+- uint8_t blue_pos, blue_size;
+- uint8_t rsvd_pos, rsvd_size;
+-
+- /* VESA capabilities (offset 0xa, VESA command 0x4f00). */
+- uint32_t gbl_caps;
+- /* Mode attributes (offset 0x0, VESA command 0x4f01). */
+- uint16_t mode_attrs;
+- } vesa_lfb;
+- } u;
+-};
+/* New console union for dom0 introduced in 0x00030203. */
+#if __XEN_INTERFACE_VERSION__ < 0x00030203
+#define console_mfn console.domU.mfn
@@ -7018,13 +7123,14 @@ Acked-by: jbeulich@novell.com
+ /* Unused, must be zero */
+ uint32_t pad;
+};
-
--typedef uint64_t cpumap_t;
++
+typedef struct dom0_vga_console_info {
+ uint8_t video_type; /* DOM0_VGA_CONSOLE_??? */
+#define XEN_VGATYPE_TEXT_MODE_3 0x03
+#define XEN_VGATYPE_VESA_LFB 0x23
-+
++#define XEN_VGATYPE_EFI_LFB 0x70
+
+-typedef uint64_t cpumap_t;
+ union {
+ struct {
+ /* Font height, in pixels. */
@@ -7064,7 +7170,7 @@ Acked-by: jbeulich@novell.com
typedef uint8_t xen_domain_handle_t[16];
-@@ -462,26 +694,10 @@ typedef uint8_t xen_domain_handle_t[16];
+@@ -501,26 +697,10 @@ typedef uint8_t xen_domain_handle_t[16];
#define __mk_unsigned_long(x) x ## UL
#define mk_unsigned_long(x) __mk_unsigned_long(x)
@@ -7095,7 +7201,7 @@ Acked-by: jbeulich@novell.com
#else /* __ASSEMBLY__ */
-@@ -490,4 +706,23 @@ struct tmem_op {
+@@ -529,4 +709,23 @@ struct tmem_op {
#endif /* !__ASSEMBLY__ */
@@ -7119,8 +7225,8 @@ Acked-by: jbeulich@novell.com
+#endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
+
#endif /* __XEN_PUBLIC_XEN_H__ */
---- head-2011-06-30.orig/include/xen/xenbus.h 2011-07-01 16:31:53.000000000 +0200
-+++ head-2011-06-30/include/xen/xenbus.h 2011-06-30 15:37:44.000000000 +0200
+--- head-2011-09-07.orig/include/xen/xenbus.h 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/include/xen/xenbus.h 2011-06-30 15:37:44.000000000 +0200
@@ -39,7 +39,7 @@
#include <linux/mutex.h>
#include <linux/completion.h>
@@ -7210,7 +7316,7 @@ Acked-by: jbeulich@novell.com
void xenbus_suspend_cancel(void);
#define XENBUS_IS_ERR_READ(str) ({ \
-@@ -196,38 +183,117 @@ void xenbus_suspend_cancel(void);
+@@ -196,40 +183,117 @@ void xenbus_suspend_cancel(void);
#define XENBUS_EXIST_ERR(err) ((err) == -ENOENT || (err) == -ERANGE)
@@ -7315,7 +7421,9 @@ Acked-by: jbeulich@novell.com
+ */
enum xenbus_state xenbus_read_driver_state(const char *path);
+-__attribute__((format(printf, 3, 4)))
-void xenbus_dev_error(struct xenbus_device *dev, int err, const char *fmt, ...);
+-__attribute__((format(printf, 3, 4)))
-void xenbus_dev_fatal(struct xenbus_device *dev, int err, const char *fmt, ...);
+
+/***
diff --git a/patches.xen/xen3-patch-2.6.18 b/patches.xen/xen3-patch-2.6.18
index 4f58542cd0..3ffca40a4a 100644
--- a/patches.xen/xen3-patch-2.6.18
+++ b/patches.xen/xen3-patch-2.6.18
@@ -8,9 +8,9 @@ Automatically created from "patches.kernel.org/patch-2.6.18" by xen-port-patches
Acked-by: jbeulich@novell.com
---- head-2011-06-30.orig/arch/x86/Kconfig 2011-06-30 16:00:41.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig 2011-06-30 16:01:48.000000000 +0200
-@@ -86,7 +86,6 @@ config ARCH_DEFCONFIG
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-07 15:19:01.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-07 15:20:13.000000000 +0200
+@@ -89,7 +89,6 @@ config ARCH_DEFCONFIG
config GENERIC_CMOS_UPDATE
def_bool y
@@ -18,7 +18,7 @@ Acked-by: jbeulich@novell.com
config CLOCKSOURCE_WATCHDOG
def_bool y
-@@ -1588,7 +1587,7 @@ config KEXEC_JUMP
+@@ -1589,7 +1588,7 @@ config KEXEC_JUMP
code in physical address mode via KEXEC
config PHYSICAL_START
@@ -27,17 +27,27 @@ Acked-by: jbeulich@novell.com
default "0x1000000"
---help---
This gives the physical address where the kernel is loaded.
---- head-2011-06-30.orig/arch/x86/kernel/Makefile 2011-06-30 15:39:36.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/Makefile 2011-06-30 16:01:54.000000000 +0200
-@@ -135,5 +135,5 @@ ifeq ($(CONFIG_X86_64),y)
+--- head-2011-09-07.orig/arch/x86/kernel/Makefile 2011-09-07 14:40:45.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/Makefile 2011-09-07 15:20:17.000000000 +0200
+@@ -117,5 +117,5 @@ ifeq ($(CONFIG_X86_64),y)
pci-dma_64-$(CONFIG_XEN) += pci-dma_32.o
endif
-disabled-obj-$(CONFIG_XEN) := i8259_$(BITS).o reboot.o smpboot_$(BITS).o
+disabled-obj-$(CONFIG_XEN) := i8253.o i8259_$(BITS).o reboot.o smpboot_$(BITS).o tsc_$(BITS).o
%/head_$(BITS).o %/head_$(BITS).s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
---- head-2011-06-30.orig/arch/x86/kernel/quirks.c 2011-07-12 11:06:10.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/quirks.c 2011-02-28 15:04:15.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2009-10-01 11:00:47.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2011-08-15 10:44:07.000000000 +0200
+@@ -61,7 +61,6 @@ static irqreturn_t mce_dom0_interrupt(in
+
+ printk(KERN_DEBUG "MCE_DOM0_LOG: enter dom0 mce vIRQ handler\n");
+ mc_op.cmd = XEN_MC_fetch;
+- mc_op.interface_version = XEN_MCA_INTERFACE_VERSION;
+ set_xen_guest_handle(mc_op.u.mc_fetch.data, g_mi);
+ urgent:
+ mc_op.u.mc_fetch.flags = XEN_MC_URGENT;
+--- head-2011-09-07.orig/arch/x86/kernel/quirks.c 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/quirks.c 2011-09-07 15:20:23.000000000 +0200
@@ -6,7 +6,7 @@
#include <asm/hpet.h>
@@ -47,7 +57,7 @@ Acked-by: jbeulich@novell.com
static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
{
-@@ -35,10 +35,21 @@ static void __devinit quirk_intel_irqbal
+@@ -34,10 +34,21 @@ static void __devinit quirk_intel_irqbal
if (!(word & (1 << 13))) {
dev_info(&dev->dev, "Intel E7520/7320/7525 detected; "
"disabling irq balancing and affinity\n");
@@ -69,8 +79,8 @@ Acked-by: jbeulich@novell.com
}
/* put back the original value for config space*/
---- head-2011-06-30.orig/arch/x86/kernel/setup64-xen.c 2008-01-28 12:24:19.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/setup64-xen.c 2011-01-31 17:02:29.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/setup64-xen.c 2008-01-28 12:24:19.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/setup64-xen.c 2011-01-31 17:02:29.000000000 +0100
@@ -363,5 +363,7 @@ void __cpuinit cpu_init (void)
fpu_init();
@@ -80,8 +90,8 @@ Acked-by: jbeulich@novell.com
+ if (raw_irqs_disabled())
+ kernel_eflags &= ~X86_EFLAGS_IF;
}
---- head-2011-06-30.orig/arch/x86/kernel/time-xen.c 2010-08-31 09:24:21.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/time-xen.c 2011-07-12 11:09:48.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2010-08-31 09:24:21.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-07-12 11:09:48.000000000 +0200
@@ -45,7 +45,6 @@
#include <linux/sysdev.h>
#include <linux/bcd.h>
@@ -413,8 +423,54 @@ Acked-by: jbeulich@novell.com
timer_name[cpu],
NULL);
if (irq < 0)
---- head-2011-06-30.orig/drivers/acpi/processor_perflib.c 2011-06-30 15:36:54.000000000 +0200
-+++ head-2011-06-30/drivers/acpi/processor_perflib.c 2011-06-30 16:02:05.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/mm/fault_64-xen.c 2010-09-23 15:39:04.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/fault_64-xen.c 2011-08-15 10:44:03.000000000 +0200
+@@ -146,7 +146,8 @@ static noinline int is_prefetch(struct p
+ /* Could check the LDT for lm, but for now it's good
+ enough to assume that long mode only uses well known
+ segments or kernel. */
+- scan_more = (!user_mode(regs)) || (regs->cs == __USER_CS);
++ scan_more = (!user_mode(regs)) || (regs->cs == __USER_CS)
++ || (regs->cs == FLAT_USER_CS64);
+ break;
+
+ case 0x60:
+@@ -575,8 +576,8 @@ bad_area_nosemaphore:
+ these addresses are not reachable. Just detect this
+ case and return. Any code segment in LDT is
+ compatibility mode. */
+- if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) &&
+- (address >> 32))
++ if ((regs->cs == __USER32_CS || regs->cs == FLAT_USER_CS32 ||
++ (regs->cs & (1<<2))) && (address >> 32))
+ return;
+
+ if (exception_trace && unhandled_signal(tsk, SIGSEGV)) {
+--- head-2011-09-07.orig/arch/x86/pci/irq.c 2011-07-22 04:17:23.000000000 +0200
++++ head-2011-09-07/arch/x86/pci/irq.c 2011-08-09 10:33:29.000000000 +0200
+@@ -94,13 +94,18 @@ static struct irq_routing_table * __init
+ u8 *addr;
+ struct irq_routing_table *rt;
+
++#ifdef CONFIG_XEN
++ if (!is_initial_xendomain())
++ return NULL;
++#endif
+ if (pirq_table_addr) {
+- rt = pirq_check_routing_table((u8 *) __va(pirq_table_addr));
++ rt = pirq_check_routing_table((u8 *) isa_bus_to_virt(pirq_table_addr));
+ if (rt)
+ return rt;
+ printk(KERN_WARNING "PCI: PIRQ table NOT found at pirqaddr\n");
+ }
+- for (addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000); addr += 16) {
++ for (addr = (u8 *) isa_bus_to_virt(0xf0000);
++ addr < (u8 *) isa_bus_to_virt(0x100000); addr += 16) {
+ rt = pirq_check_routing_table(addr);
+ if (rt)
+ return rt;
+--- head-2011-09-07.orig/drivers/acpi/processor_perflib.c 2011-06-30 15:36:54.000000000 +0200
++++ head-2011-09-07/drivers/acpi/processor_perflib.c 2011-06-30 16:02:05.000000000 +0200
@@ -574,6 +574,8 @@ end:
return result;
}
@@ -430,8 +486,8 @@ Acked-by: jbeulich@novell.com
EXPORT_SYMBOL(acpi_processor_unregister_performance);
+
+#endif /* !CONFIG_PROCESSOR_EXTERNAL_CONTROL */
---- head-2011-06-30.orig/drivers/xen/console/console.c 2009-03-18 10:39:31.000000000 +0100
-+++ head-2011-06-30/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/console/console.c 2009-03-18 10:39:31.000000000 +0100
++++ head-2011-09-07/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
@@ -94,7 +94,6 @@ static int __init xencons_setup(char *st
{
char *q;
@@ -440,8 +496,8 @@ Acked-by: jbeulich@novell.com
console_use_vt = 1;
if (!strncmp(str, "ttyS", 4)) {
---- head-2011-06-30.orig/arch/x86/include/mach-xen/asm/processor_32.h 2008-01-28 12:24:19.000000000 +0100
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:02:29.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/processor_32.h 2008-01-28 12:24:19.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:02:29.000000000 +0100
@@ -23,7 +23,7 @@
#include <xen/interface/physdev.h>
@@ -452,7 +508,7 @@ Acked-by: jbeulich@novell.com
struct desc_struct {
unsigned long a,b;
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/arch/x86/include/mach-xen/asm/time.h 2011-07-11 10:35:24.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/time.h 2011-07-11 10:35:24.000000000 +0200
@@ -0,0 +1,6 @@
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+struct timespec;
@@ -460,8 +516,8 @@ Acked-by: jbeulich@novell.com
+#endif
+
+#include_next <asm/time.h>
---- head-2011-06-30.orig/arch/x86/include/asm/thread_info.h 2011-07-12 11:06:10.000000000 +0200
-+++ head-2011-06-30/arch/x86/include/asm/thread_info.h 2011-01-31 17:02:29.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/asm/thread_info.h 2011-09-07 13:56:13.000000000 +0200
++++ head-2011-09-07/arch/x86/include/asm/thread_info.h 2011-01-31 17:02:29.000000000 +0100
@@ -144,11 +144,15 @@ struct thread_info {
_TIF_USER_RETURN_NOTIFY)
@@ -478,8 +534,8 @@ Acked-by: jbeulich@novell.com
#define PREEMPT_ACTIVE 0x10000000
---- head-2011-06-30.orig/kernel/time/timekeeping.c 2011-07-12 11:06:10.000000000 +0200
-+++ head-2011-06-30/kernel/time/timekeeping.c 2011-07-11 10:33:46.000000000 +0200
+--- head-2011-09-07.orig/kernel/time/timekeeping.c 2011-09-07 13:56:40.000000000 +0200
++++ head-2011-09-07/kernel/time/timekeeping.c 2011-07-11 10:33:46.000000000 +0200
@@ -20,6 +20,9 @@
#include <linux/time.h>
#include <linux/tick.h>
diff --git a/patches.xen/xen3-patch-2.6.19 b/patches.xen/xen3-patch-2.6.19
index aaa1272523..5b7f6cc546 100644
--- a/patches.xen/xen3-patch-2.6.19
+++ b/patches.xen/xen3-patch-2.6.19
@@ -6,9 +6,11 @@ Automatically created from "patches.kernel.org/patch-2.6.19" by xen-port-patches
Acked-by: jbeulich@novell.com
---- head-2011-07-21.orig/arch/x86/Kconfig 2011-06-30 16:01:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/Kconfig 2011-06-30 16:02:26.000000000 +0200
-@@ -533,6 +533,7 @@ config SCHED_OMIT_FRAME_POINTER
+3.1/arch/x86/kernel/step.c (now using user_64bit_mode())
+
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-07 15:20:13.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-07 15:22:25.000000000 +0200
+@@ -551,6 +551,7 @@ config SCHED_OMIT_FRAME_POINTER
menuconfig PARAVIRT_GUEST
bool "Paravirtualized guest support"
@@ -16,8 +18,8 @@ Acked-by: jbeulich@novell.com
---help---
Say Y here to get to see options related to running Linux under
various hypervisors. This option alone does not add any kernel code.
---- head-2011-07-21.orig/arch/x86/kernel/acpi/boot.c 2011-07-21 12:00:01.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/acpi/boot.c 2011-04-13 12:23:45.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/acpi/boot.c 2011-09-07 13:56:42.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/acpi/boot.c 2011-04-13 12:23:45.000000000 +0200
@@ -70,8 +70,12 @@ int acpi_strict;
u8 acpi_sci_flags __initdata;
@@ -70,8 +72,8 @@ Acked-by: jbeulich@novell.com
static int __init parse_acpi_skip_timer_override(char *arg)
{
acpi_skip_timer_override = 1;
---- head-2011-07-21.orig/arch/x86/kernel/apic/apic-xen.c 2007-06-12 13:12:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/apic/apic-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/apic/apic-xen.c 2007-06-12 13:12:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/apic/apic-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -54,7 +54,6 @@ static cpumask_t timer_bcast_ipi;
/*
* Knob to control our willingness to enable the local APIC.
@@ -112,8 +114,8 @@ Acked-by: jbeulich@novell.com
#endif
}
}
---- head-2011-07-21.orig/arch/x86/kernel/cpu/common-xen.c 2009-05-19 09:16:41.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/common-xen.c 2009-05-19 09:16:41.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -43,7 +43,7 @@ struct cpu_dev * cpu_devs[X86_VENDOR_NUM
extern int disable_pse;
@@ -177,8 +179,8 @@ Acked-by: jbeulich@novell.com
/* Clear all 6 debug registers: */
set_debugreg(0, 0);
---- head-2011-07-21.orig/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2009-10-01 11:00:47.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2011-08-15 10:44:07.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/cpu/mcheck/mce_dom0.c 2011-08-15 10:44:20.000000000 +0200
@@ -53,8 +53,7 @@ static struct mc_info *g_mi;
/*dom0 mce virq handler, logging physical mce error info*/
@@ -189,7 +191,7 @@ Acked-by: jbeulich@novell.com
{
xen_mc_t mc_op;
int result = 0;
-@@ -129,6 +128,6 @@ void bind_virq_for_mce(void)
+@@ -128,6 +127,6 @@ void bind_virq_for_mce(void)
printk(KERN_ERR "MCE_DOM0_LOG: bind_virq for DOM0 failed\n");
/* Log the machine checks left over from the previous reset. */
@@ -197,8 +199,8 @@ Acked-by: jbeulich@novell.com
+ mce_dom0_interrupt(VIRQ_MCA, NULL);
}
---- head-2011-07-21.orig/arch/x86/kernel/entry_32-xen.S 2009-05-19 09:16:41.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/entry_32-xen.S 2009-05-19 09:16:41.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:29:16.000000000 +0100
@@ -80,8 +80,12 @@ VM_MASK = 0x00020000
NMI_MASK = 0x80000000
@@ -585,9 +587,9 @@ Acked-by: jbeulich@novell.com
.section .rodata,"a"
#include "syscall_table.S"
---- head-2011-07-21.orig/arch/x86/kernel/head_32-xen.S 2007-06-12 13:12:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head_32-xen.S 2011-01-31 17:29:16.000000000 +0100
-@@ -62,7 +62,7 @@ ENTRY(startup_32)
+--- head-2011-09-07.orig/arch/x86/kernel/head_32-xen.S 2011-08-08 12:54:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_32-xen.S 2011-08-09 10:35:35.000000000 +0200
+@@ -63,7 +63,7 @@ ENTRY(startup_32)
movl %eax,%gs
cld # gcc2 wants the direction flag cleared at all times
@@ -596,8 +598,8 @@ Acked-by: jbeulich@novell.com
jmp start_kernel
#define HYPERCALL_PAGE_OFFSET 0x1000
---- head-2011-07-21.orig/arch/x86/kernel/io_apic_32-xen.c 2009-03-18 10:39:31.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/io_apic_32-xen.c 2009-03-18 10:39:31.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -31,6 +31,9 @@
#include <linux/acpi.h>
#include <linux/module.h>
@@ -1677,8 +1679,8 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+early_param("noapic", parse_noapic);
---- head-2011-07-21.orig/arch/x86/kernel/ldt_32-xen.c 2007-06-12 13:12:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/ldt_32-xen.c 2007-06-12 13:12:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -1,5 +1,5 @@
/*
- * linux/kernel/ldt.c
@@ -1686,8 +1688,8 @@ Acked-by: jbeulich@novell.com
*
* Copyright (C) 1992 Krishna Balasubramanian and Linus Torvalds
* Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
---- head-2011-07-21.orig/arch/x86/kernel/microcode-xen.c 2007-06-12 13:12:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/microcode-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/microcode-xen.c 2007-06-12 13:12:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/microcode-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -2,6 +2,7 @@
* Intel CPU Microcode Update Driver for Linux
*
@@ -1823,8 +1825,8 @@ Acked-by: jbeulich@novell.com
module_init(microcode_init)
module_exit(microcode_exit)
-MODULE_ALIAS_MISCDEV(MICROCODE_MINOR);
---- head-2011-07-21.orig/arch/x86/kernel/mpparse_32-xen.c 2007-06-12 13:12:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/mpparse_32-xen.c 2007-06-12 13:12:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -30,6 +30,7 @@
#include <asm/io_apic.h>
@@ -1991,8 +1993,8 @@ Acked-by: jbeulich@novell.com
/*
* Mapping between Global System Interrups, which
* represent all possible interrupts, and IRQs
---- head-2011-07-21.orig/arch/x86/kernel/pci-dma-xen.c 2009-11-06 10:23:23.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/pci-dma-xen.c 2009-11-06 10:23:23.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -110,8 +110,7 @@ dma_map_sg(struct device *hwdev, struct
{
int i, rc;
@@ -2051,8 +2053,8 @@ Acked-by: jbeulich@novell.com
if (swiotlb)
swiotlb_unmap_single(dev, dma_addr, size, direction);
else
---- head-2011-07-21.orig/arch/x86/kernel/process_32-xen.c 2008-07-21 11:00:32.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/process_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/process_32-xen.c 2008-07-21 11:00:32.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/process_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -37,6 +37,7 @@
#include <linux/kallsyms.h>
#include <linux/ptrace.h>
@@ -2142,8 +2144,8 @@ Acked-by: jbeulich@novell.com
sp -= get_random_int() % 8192;
return sp & ~0xf;
}
---- head-2011-07-21.orig/arch/x86/kernel/setup_32-xen.c 2008-04-22 15:41:51.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/setup_32-xen.c 2008-04-22 15:41:51.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/setup_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -56,6 +56,7 @@
#include <asm/apic.h>
#include <asm/e820.h>
@@ -2718,8 +2720,8 @@ Acked-by: jbeulich@novell.com
#ifdef CONFIG_ACPI
acpi_boot_init();
---- head-2011-07-21.orig/arch/x86/kernel/smp_32-xen.c 2007-12-10 08:47:31.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/smp_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/smp_32-xen.c 2007-12-10 08:47:31.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/smp_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -279,8 +279,7 @@ static inline void leave_mm (unsigned lo
* 2) Leave the mm if we are in the lazy tlb mode.
*/
@@ -2819,8 +2821,8 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+EXPORT_SYMBOL(smp_call_function_single);
---- head-2011-07-21.orig/arch/x86/kernel/time-xen.c 2011-07-12 11:09:48.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/time-xen.c 2011-07-12 11:10:26.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/time-xen.c 2011-07-12 11:09:48.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/time-xen.c 2011-07-12 11:10:26.000000000 +0200
@@ -88,7 +88,6 @@ int pit_latch_buggy; /* ext
unsigned long vxtime_hz = PIT_TICK_RATE;
struct vxtime_data __vxtime __section_vxtime; /* for vsyscalls */
@@ -3004,8 +3006,8 @@ Acked-by: jbeulich@novell.com
if ((hpet_enable() >= 0) && hpet_use_timer) {
printk("Using HPET for base-timer\n");
---- head-2011-07-21.orig/arch/x86/kernel/traps_32-xen.c 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/traps_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/traps_32-xen.c 2008-04-02 12:34:02.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/traps_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -28,6 +28,7 @@
#include <linux/kprobes.h>
#include <linux/kexec.h>
@@ -3452,9 +3454,9 @@ Acked-by: jbeulich@novell.com
#ifdef CONFIG_KPROBES
fastcall void __kprobes do_int3(struct pt_regs *regs, long error_code)
{
---- head-2011-07-21.orig/arch/x86/mach-xen/setup.c 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/mach-xen/setup.c 2011-01-31 17:29:16.000000000 +0100
-@@ -103,8 +103,10 @@ void __init pre_setup_arch_hook(void)
+--- head-2011-09-07.orig/arch/x86/mach-xen/setup.c 2011-09-07 14:16:54.000000000 +0200
++++ head-2011-09-07/arch/x86/mach-xen/setup.c 2011-08-09 10:35:06.000000000 +0200
+@@ -102,8 +102,10 @@ void __init pre_setup_arch_hook(void)
setup_xen_features();
@@ -3467,8 +3469,8 @@ Acked-by: jbeulich@novell.com
if (HYPERVISOR_memory_op(XENMEM_machphys_mapping, &mapping) == 0) {
machine_to_phys_mapping = (unsigned long *)mapping.v_start;
---- head-2011-07-21.orig/arch/x86/mm/fault_32-xen.c 2010-09-23 15:39:04.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/fault_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/fault_32-xen.c 2010-09-23 15:39:04.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/fault_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -27,21 +27,24 @@
#include <asm/uaccess.h>
#include <asm/desc.h>
@@ -3555,8 +3557,8 @@ Acked-by: jbeulich@novell.com
yield();
down_read(&mm->mmap_sem);
goto survive;
---- head-2011-07-21.orig/arch/x86/mm/highmem_32-xen.c 2008-10-29 09:55:56.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/highmem_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/highmem_32-xen.c 2008-10-29 09:55:56.000000000 +0100
++++ head-2011-09-07/arch/x86/mm/highmem_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -38,11 +38,9 @@ static void *__kmap_atomic(struct page *
idx = type + KM_TYPE_NR*smp_processor_id();
@@ -3623,8 +3625,8 @@ Acked-by: jbeulich@novell.com
return (void*) vaddr;
}
---- head-2011-07-21.orig/arch/x86/mm/hypervisor.c 2009-06-09 15:01:37.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/hypervisor.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/hypervisor.c 2011-08-08 12:54:10.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/hypervisor.c 2011-08-09 10:35:46.000000000 +0200
@@ -31,6 +31,7 @@
*/
@@ -3934,7 +3936,7 @@ Acked-by: jbeulich@novell.com
void xen_l1_entry_update(pte_t *ptr, pte_t val)
{
mmu_update_t u;
-@@ -546,7 +841,8 @@ int write_ldt_entry(void *ldt, int entry
+@@ -618,7 +913,8 @@ int write_ldt_entry(void *ldt, int entry
#define MAX_BATCHED_FULL_PTES 32
int xen_change_pte_range(struct mm_struct *mm, pmd_t *pmd,
@@ -3944,7 +3946,7 @@ Acked-by: jbeulich@novell.com
{
int rc = 0, i = 0;
mmu_update_t u[MAX_BATCHED_FULL_PTES];
-@@ -559,10 +855,14 @@ int xen_change_pte_range(struct mm_struc
+@@ -631,10 +927,14 @@ int xen_change_pte_range(struct mm_struc
pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
do {
if (pte_present(*pte)) {
@@ -3960,8 +3962,8 @@ Acked-by: jbeulich@novell.com
if (++i == MAX_BATCHED_FULL_PTES) {
if ((rc = HYPERVISOR_mmu_update(
&u[0], i, NULL, DOMID_SELF)) != 0)
---- head-2011-07-21.orig/arch/x86/mm/init_32-xen.c 2008-10-29 09:55:56.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/init_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/init_32-xen.c 2008-10-29 09:55:56.000000000 +0100
++++ head-2011-09-07/arch/x86/mm/init_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -313,8 +313,7 @@ static void __init permanent_kmaps_init(
static void __meminit free_new_highpage(struct page *page, int pfn)
{
@@ -4140,8 +4142,8 @@ Acked-by: jbeulich@novell.com
unsigned long start_pfn = start >> PAGE_SHIFT;
unsigned long nr_pages = size >> PAGE_SHIFT;
---- head-2011-07-21.orig/arch/x86/mm/ioremap-xen.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/ioremap-xen.c 2011-02-07 15:37:37.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/ioremap-xen.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/ioremap-xen.c 2011-02-07 15:37:37.000000000 +0100
@@ -12,7 +12,7 @@
#include <linux/init.h>
#include <linux/slab.h>
@@ -4189,8 +4191,8 @@ Acked-by: jbeulich@novell.com
vunmap((void __force *) addr);
return NULL;
}
---- head-2011-07-21.orig/arch/x86/mm/pgtable_32-xen.c 2010-09-23 15:39:04.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/pgtable_32-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/pgtable_32-xen.c 2010-09-23 15:39:04.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/pgtable_32-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -68,7 +68,9 @@ void show_mem(void)
printk(KERN_INFO "%lu pages writeback\n",
global_page_state(NR_WRITEBACK));
@@ -4246,66 +4248,8 @@ Acked-by: jbeulich@novell.com
}
pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
---- head-2011-07-21.orig/arch/x86/pci/irq-xen.c 2008-03-06 08:54:32.000000000 +0100
-+++ head-2011-07-21/arch/x86/pci/irq-xen.c 2011-01-31 17:29:16.000000000 +0100
-@@ -991,10 +991,6 @@ static void __init pcibios_fixup_irqs(vo
- pci_name(bridge), 'A' + pin, irq);
- }
- if (irq >= 0) {
-- if (use_pci_vector() &&
-- !platform_legacy_irq(irq))
-- irq = IO_APIC_VECTOR(irq);
--
- printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
- pci_name(dev), 'A' + pin, irq);
- dev->irq = irq;
-@@ -1155,10 +1151,6 @@ static int pirq_enable_irq(struct pci_de
- }
- dev = temp_dev;
- if (irq >= 0) {
--#ifdef CONFIG_PCI_MSI
-- if (!platform_legacy_irq(irq))
-- irq = IO_APIC_VECTOR(irq);
--#endif
- printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
- pci_name(dev), 'A' + pin, irq);
- dev->irq = irq;
-@@ -1179,33 +1171,3 @@ static int pirq_enable_irq(struct pci_de
- }
- return 0;
- }
--
--int pci_vector_resources(int last, int nr_released)
--{
-- int count = nr_released;
--
-- int next = last;
-- int offset = (last % 8);
--
-- while (next < FIRST_SYSTEM_VECTOR) {
-- next += 8;
--#ifdef CONFIG_X86_64
-- if (next == IA32_SYSCALL_VECTOR)
-- continue;
--#else
-- if (next == SYSCALL_VECTOR)
-- continue;
--#endif
-- count++;
-- if (next >= FIRST_SYSTEM_VECTOR) {
-- if (offset%8) {
-- next = FIRST_DEVICE_VECTOR + offset;
-- offset++;
-- continue;
-- }
-- count--;
-- }
-- }
--
-- return count;
--}
---- head-2011-07-21.orig/arch/x86/ia32/ia32entry-xen.S 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/ia32/ia32entry-xen.S 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/ia32/ia32entry-xen.S 2008-04-02 12:34:02.000000000 +0200
++++ head-2011-09-07/arch/x86/ia32/ia32entry-xen.S 2011-01-31 17:29:16.000000000 +0100
@@ -83,6 +83,7 @@
*/
ENTRY(ia32_sysenter_target)
@@ -4355,9 +4299,9 @@ Acked-by: jbeulich@novell.com
.quad compat_sys_move_pages
+ .quad sys_getcpu
ia32_syscall_end:
---- head-2011-07-21.orig/arch/x86/kernel/Makefile 2011-06-30 16:01:54.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/Makefile 2011-06-30 16:02:19.000000000 +0200
-@@ -121,7 +121,7 @@ obj-$(CONFIG_X86_XEN) += fixup.o
+--- head-2011-09-07.orig/arch/x86/kernel/Makefile 2011-09-07 15:20:17.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/Makefile 2011-09-07 15:22:22.000000000 +0200
+@@ -104,7 +104,7 @@ obj-$(CONFIG_X86_XEN) += fixup.o
###
# 64 bit specific files
ifeq ($(CONFIG_X86_64),y)
@@ -4366,7 +4310,7 @@ Acked-by: jbeulich@novell.com
obj-$(CONFIG_AUDIT) += audit_64.o
obj-$(CONFIG_GART_IOMMU) += amd_gart_64.o aperture_64.o
-@@ -135,5 +135,7 @@ ifeq ($(CONFIG_X86_64),y)
+@@ -117,5 +117,7 @@ ifeq ($(CONFIG_X86_64),y)
pci-dma_64-$(CONFIG_XEN) += pci-dma_32.o
endif
@@ -4375,8 +4319,8 @@ Acked-by: jbeulich@novell.com
+ smpboot_$(BITS).o tsc_$(BITS).o
+disabled-obj-$(CONFIG_XEN_UNPRIVILEGED_GUEST) += mpparse_64.o
%/head_$(BITS).o %/head_$(BITS).s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
---- head-2011-07-21.orig/arch/x86/kernel/e820_64-xen.c 2009-12-04 08:45:56.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/e820_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/e820_64-xen.c 2009-12-04 08:45:56.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/e820_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -16,6 +16,7 @@
#include <linux/string.h>
#include <linux/kexec.h>
@@ -4868,8 +4812,8 @@ Acked-by: jbeulich@novell.com
}
unsigned long pci_mem_start = 0xaeedbabe;
---- head-2011-07-21.orig/arch/x86/kernel/early_printk-xen.c 2007-06-12 13:13:01.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/early_printk-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/early_printk-xen.c 2007-06-12 13:13:01.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/early_printk-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -244,20 +244,16 @@ void early_printk(const char *fmt, ...)
static int __initdata keep_early;
@@ -4916,8 +4860,8 @@ Acked-by: jbeulich@novell.com
}
-__setup("earlyprintk=", setup_early_printk);
---- head-2011-07-21.orig/arch/x86/kernel/entry_64-xen.S 2009-06-23 09:28:21.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/entry_64-xen.S 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/entry_64-xen.S 2009-06-23 09:28:21.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/entry_64-xen.S 2011-01-31 17:29:16.000000000 +0100
@@ -4,9 +4,6 @@
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen SuSE Labs
@@ -5160,8 +5104,8 @@ Acked-by: jbeulich@novell.com
ENTRY(alignment_check)
errorentry do_alignment_check
---- head-2011-07-21.orig/arch/x86/kernel/head_64-xen.S 2010-11-08 17:27:03.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/head_64-xen.S 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/head_64-xen.S 2011-08-08 12:54:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_64-xen.S 2011-08-09 10:35:37.000000000 +0200
@@ -5,9 +5,6 @@
* Copyright (C) 2000 Pavel Machek <pavel@suse.cz>
* Copyright (C) 2000 Karsten Keil <kkeil@suse.de>
@@ -5172,7 +5116,7 @@ Acked-by: jbeulich@novell.com
* Jun Nakajima <jun.nakajima@intel.com>
* Modified for Xen
*/
-@@ -146,7 +143,7 @@ ENTRY(cpu_gdt_table)
+@@ -147,7 +144,7 @@ ENTRY(cpu_gdt_table)
.quad 0,0 /* TSS */
.quad 0,0 /* LDT */
.quad 0,0,0 /* three TLS descriptors */
@@ -5181,8 +5125,8 @@ Acked-by: jbeulich@novell.com
gdt_end:
/* asm/segment.h:GDT_ENTRIES must match this */
/* This should be a multiple of the cache line size */
---- head-2011-07-21.orig/arch/x86/kernel/head64-xen.c 2007-06-12 13:13:01.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/head64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/head64-xen.c 2011-08-08 12:54:10.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head64-xen.c 2011-08-09 10:35:40.000000000 +0200
@@ -7,6 +7,9 @@
* Modified for Xen.
*/
@@ -5231,15 +5175,15 @@ Acked-by: jbeulich@novell.com
}
#include <xen/interface/memory.h>
-@@ -101,7 +83,6 @@ void __init x86_64_start_kernel(char * r
+@@ -100,7 +82,6 @@ EXPORT_SYMBOL(machine_to_phys_nr);
+ void __init x86_64_start_kernel(char * real_mode_data)
{
struct xen_machphys_mapping mapping;
- unsigned long machine_to_phys_nr_ents;
- char *s;
int i;
setup_xen_features();
-@@ -128,10 +109,7 @@ void __init x86_64_start_kernel(char * r
+@@ -125,10 +106,7 @@ void __init x86_64_start_kernel(char * r
asm volatile("lidt %0" :: "m" (idt_descr));
#endif
@@ -5251,7 +5195,7 @@ Acked-by: jbeulich@novell.com
for (i = 0; i < NR_CPUS; i++)
cpu_pda(i) = &boot_cpu_pda[i];
-@@ -141,22 +119,5 @@ void __init x86_64_start_kernel(char * r
+@@ -138,22 +116,5 @@ void __init x86_64_start_kernel(char * r
#ifdef CONFIG_SMP
cpu_set(0, cpu_online_map);
#endif
@@ -5274,8 +5218,8 @@ Acked-by: jbeulich@novell.com
- setup_boot_cpu_data();
start_kernel();
}
---- head-2011-07-21.orig/arch/x86/kernel/io_apic_64-xen.c 2009-03-18 10:39:31.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/io_apic_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/io_apic_64-xen.c 2009-03-18 10:39:31.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/io_apic_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -26,9 +26,12 @@
#include <linux/delay.h>
#include <linux/sched.h>
@@ -6975,8 +6919,8 @@ Acked-by: jbeulich@novell.com
spin_unlock_irqrestore(&ioapic_lock, flags);
return 0;
---- head-2011-07-21.orig/arch/x86/kernel/ioport_64-xen.c 2008-01-28 12:24:19.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/ioport_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/ioport_64-xen.c 2008-01-28 12:24:19.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/ioport_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -58,6 +58,7 @@ asmlinkage long sys_ioperm(unsigned long
memset(bitmap, 0xff, IO_BITMAP_BYTES);
@@ -6985,8 +6929,8 @@ Acked-by: jbeulich@novell.com
set_xen_guest_handle(set_iobitmap.bitmap, (char *)bitmap);
set_iobitmap.nr_ports = IO_BITMAP_BITS;
---- head-2011-07-21.orig/arch/x86/kernel/mpparse_64-xen.c 2007-06-12 13:13:01.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/mpparse_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/mpparse_64-xen.c 2007-06-12 13:13:01.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/mpparse_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -41,8 +41,7 @@ int acpi_found_madt;
* Various Linux-internal data structures created from the
* MP-table.
@@ -7600,8 +7544,8 @@ Acked-by: jbeulich@novell.com
-
-#endif /*CONFIG_X86_IO_APIC*/
#endif /*CONFIG_ACPI*/
---- head-2011-07-21.orig/arch/x86/kernel/process_64-xen.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/process_64-xen.c 2011-02-02 08:30:50.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/process_64-xen.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/process_64-xen.c 2011-02-02 08:30:50.000000000 +0100
@@ -88,25 +88,24 @@ void idle_notifier_unregister(struct not
}
EXPORT_SYMBOL(idle_notifier_unregister);
@@ -7808,8 +7752,8 @@ Acked-by: jbeulich@novell.com
sp -= get_random_int() % 8192;
return sp & ~0xf;
}
---- head-2011-07-21.orig/arch/x86/kernel/setup_64-xen.c 2010-10-05 09:58:12.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/setup_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/setup_64-xen.c 2010-10-05 09:58:12.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/setup_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -88,9 +88,6 @@ extern struct edid_info edid_info;
shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
EXPORT_SYMBOL(HYPERVISOR_shared_info);
@@ -8246,8 +8190,8 @@ Acked-by: jbeulich@novell.com
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* VIA/Cyrix/Centaur-defined */
---- head-2011-07-21.orig/arch/x86/kernel/setup64-xen.c 2011-01-31 17:02:29.000000000 +0100
-+++ head-2011-07-21/arch/x86/kernel/setup64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/setup64-xen.c 2011-01-31 17:02:29.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/setup64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -31,7 +31,7 @@
#include <asm/hypervisor.h>
#endif
@@ -8341,8 +8285,8 @@ Acked-by: jbeulich@novell.com
orig_ist->ist[v] = t->ist[v] = (unsigned long)estacks;
}
---- head-2011-07-21.orig/arch/x86/kernel/smp_64-xen.c 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/smp_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/smp_64-xen.c 2008-04-02 12:34:02.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/smp_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -381,9 +381,8 @@ int smp_call_function_single (int cpu, v
/* prevent preemption and reschedule on another processor */
int me = get_cpu();
@@ -8404,8 +8348,8 @@ Acked-by: jbeulich@novell.com
- return 0; /* Should not happen */
-#endif
-}
---- head-2011-07-21.orig/arch/x86/kernel/traps_64-xen.c 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/traps_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/traps_64-xen.c 2008-04-02 12:34:02.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/traps_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -23,6 +23,7 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
@@ -8861,8 +8805,8 @@ Acked-by: jbeulich@novell.com
-__setup("call_trace=", call_trace_setup);
+early_param("call_trace", call_trace_setup);
#endif
---- head-2011-07-21.orig/arch/x86/kernel/vsyscall_64-xen.c 2007-06-18 08:38:13.000000000 +0200
-+++ head-2011-07-21/arch/x86/kernel/vsyscall_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/vsyscall_64-xen.c 2007-06-18 08:38:13.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/vsyscall_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -26,6 +26,10 @@
#include <linux/seqlock.h>
#include <linux/jiffies.h>
@@ -9056,8 +9000,8 @@ Acked-by: jbeulich@novell.com
return 0;
}
---- head-2011-07-21.orig/arch/x86/mm/fault_64-xen.c 2010-09-23 15:39:04.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/fault_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/fault_64-xen.c 2011-08-15 10:44:03.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/fault_64-xen.c 2011-07-26 09:24:01.000000000 +0200
@@ -40,8 +40,7 @@
#define PF_RSVD (1<<3)
#define PF_INSTR (1<<4)
@@ -9123,7 +9067,7 @@ Acked-by: jbeulich@novell.com
break;
instr_hi = opcode & 0xf0;
-@@ -160,7 +154,7 @@ static noinline int is_prefetch(struct p
+@@ -161,7 +155,7 @@ static noinline int is_prefetch(struct p
case 0x00:
/* Prefetch instruction is 0x0F0D or 0x0F18 */
scan_more = 0;
@@ -9132,7 +9076,7 @@ Acked-by: jbeulich@novell.com
break;
prefetch = (instr_lo == 0xF) &&
(opcode == 0x0D || opcode == 0x18);
-@@ -176,7 +170,7 @@ static noinline int is_prefetch(struct p
+@@ -177,7 +171,7 @@ static noinline int is_prefetch(struct p
static int bad_address(void *p)
{
unsigned long dummy;
@@ -9141,7 +9085,7 @@ Acked-by: jbeulich@novell.com
}
void dump_pagetable(unsigned long address)
-@@ -248,7 +242,7 @@ static int is_errata93(struct pt_regs *r
+@@ -249,7 +243,7 @@ static int is_errata93(struct pt_regs *r
int unhandled_signal(struct task_struct *tsk, int sig)
{
@@ -9150,7 +9094,7 @@ Acked-by: jbeulich@novell.com
return 1;
if (tsk->ptrace & PT_PTRACED)
return 0;
-@@ -300,7 +294,7 @@ static int vmalloc_fault(unsigned long a
+@@ -301,7 +295,7 @@ static int vmalloc_fault(unsigned long a
if (pgd_none(*pgd))
set_pgd(pgd, *pgd_ref);
else
@@ -9159,7 +9103,7 @@ Acked-by: jbeulich@novell.com
/* Below here mismatches are bugs because these lower tables
are shared */
-@@ -309,7 +303,7 @@ static int vmalloc_fault(unsigned long a
+@@ -310,7 +304,7 @@ static int vmalloc_fault(unsigned long a
pud_ref = pud_offset(pgd_ref, address);
if (pud_none(*pud_ref))
return -1;
@@ -9168,7 +9112,7 @@ Acked-by: jbeulich@novell.com
BUG();
pmd = pmd_offset(pud, address);
pmd_ref = pmd_offset(pud_ref, address);
-@@ -531,7 +525,7 @@ good_area:
+@@ -532,7 +526,7 @@ good_area:
case PF_PROT: /* read, present */
goto bad_area;
case 0: /* read, not present */
@@ -9177,7 +9121,7 @@ Acked-by: jbeulich@novell.com
goto bad_area;
}
-@@ -647,7 +641,7 @@ no_context:
+@@ -648,7 +642,7 @@ no_context:
*/
out_of_memory:
up_read(&mm->mmap_sem);
@@ -9186,7 +9130,7 @@ Acked-by: jbeulich@novell.com
yield();
goto again;
}
-@@ -707,7 +701,7 @@ void vmalloc_sync_all(void)
+@@ -708,7 +702,7 @@ void vmalloc_sync_all(void)
if (pgd_none(*pgd))
set_pgd(pgd, *pgd_ref);
else
@@ -9195,8 +9139,8 @@ Acked-by: jbeulich@novell.com
pgd_page_table(unlock, page);
}
spin_unlock(&pgd_lock);
---- head-2011-07-21.orig/arch/x86/mm/init_64-xen.c 2010-04-29 09:34:47.000000000 +0200
-+++ head-2011-07-21/arch/x86/mm/init_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/init_64-xen.c 2011-08-08 12:54:10.000000000 +0200
++++ head-2011-09-07/arch/x86/mm/init_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -61,8 +61,6 @@ EXPORT_SYMBOL(__kernel_page_user);
int after_bootmem;
@@ -9509,8 +9453,8 @@ Acked-by: jbeulich@novell.com
}
int kern_addr_valid(unsigned long addr)
---- head-2011-07-21.orig/arch/x86/mm/pageattr_64-xen.c 2009-03-18 10:39:31.000000000 +0100
-+++ head-2011-07-21/arch/x86/mm/pageattr_64-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/mm/pageattr_64-xen.c 2009-03-18 10:39:31.000000000 +0100
++++ head-2011-09-07/arch/x86/mm/pageattr_64-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -377,8 +377,8 @@ static void revert_page(unsigned long ad
BUG_ON(pud_none(*pud));
pmd = pmd_offset(pud, address);
@@ -9575,8 +9519,8 @@ Acked-by: jbeulich@novell.com
}
}
up_write(&init_mm.mmap_sem);
---- head-2011-07-21.orig/drivers/char/tpm/tpm_xen.c 2011-01-31 14:53:38.000000000 +0100
-+++ head-2011-07-21/drivers/char/tpm/tpm_xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/char/tpm/tpm_xen.c 2011-01-31 14:53:38.000000000 +0100
++++ head-2011-09-07/drivers/char/tpm/tpm_xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -85,8 +85,7 @@ static struct tpm_private *my_priv;
/* local function prototypes */
@@ -9596,8 +9540,8 @@ Acked-by: jbeulich@novell.com
{
struct tpm_private *tp = tpm_priv;
unsigned long flags;
---- head-2011-07-21.orig/drivers/pci/Kconfig 2011-01-31 14:32:40.000000000 +0100
-+++ head-2011-07-21/drivers/pci/Kconfig 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/Kconfig 2011-01-31 14:32:40.000000000 +0100
++++ head-2011-09-07/drivers/pci/Kconfig 2011-01-31 17:29:16.000000000 +0100
@@ -86,7 +86,7 @@ config XEN_PCIDEV_FE_DEBUG
config HT_IRQ
bool "Interrupts on hypertransport devices"
@@ -9607,8 +9551,8 @@ Acked-by: jbeulich@novell.com
help
This allows native hypertransport devices to use interrupts.
---- head-2011-07-21.orig/drivers/pci/msi-xen.c 2009-12-04 08:45:56.000000000 +0100
-+++ head-2011-07-21/drivers/pci/msi-xen.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/pci/msi-xen.c 2009-12-04 08:45:56.000000000 +0100
++++ head-2011-09-07/drivers/pci/msi-xen.c 2011-01-31 17:29:16.000000000 +0100
@@ -6,6 +6,7 @@
* Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
*/
@@ -9840,8 +9784,8 @@ Acked-by: jbeulich@novell.com
* allocated for this device function, are reclaimed to unused state,
* which may be used later on.
**/
---- head-2011-07-21.orig/drivers/xen/Kconfig 2011-02-24 14:05:09.000000000 +0100
-+++ head-2011-07-21/drivers/xen/Kconfig 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/Kconfig 2011-02-24 14:05:09.000000000 +0100
++++ head-2011-09-07/drivers/xen/Kconfig 2011-01-31 17:29:16.000000000 +0100
@@ -332,6 +332,10 @@ endmenu
config HAVE_IRQ_IGNORE_UNHANDLED
def_bool y
@@ -9853,8 +9797,8 @@ Acked-by: jbeulich@novell.com
config NO_IDLE_HZ
def_bool y
---- head-2011-07-21.orig/drivers/xen/balloon/balloon.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/balloon/balloon.c 2011-03-23 08:48:06.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/balloon/balloon.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/balloon/balloon.c 2011-03-23 08:48:06.000000000 +0100
@@ -37,6 +37,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
@@ -10052,8 +9996,8 @@ Acked-by: jbeulich@novell.com
bs.driver_pages--;
balloon_unlock(flags);
---- head-2011-07-21.orig/drivers/xen/blkback/blkback.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkback/blkback.c 2011-04-11 14:28:25.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkback/blkback.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/blkback.c 2011-04-11 14:28:25.000000000 +0200
@@ -297,7 +297,7 @@ static void blkif_notify_work(blkif_t *b
wake_up(&blkif->wq);
}
@@ -10063,8 +10007,8 @@ Acked-by: jbeulich@novell.com
{
blkif_notify_work(dev_id);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/blkback/common.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkback/common.h 2011-04-11 14:28:27.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkback/common.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkback/common.h 2011-04-11 14:28:27.000000000 +0200
@@ -136,7 +136,7 @@ void blkif_interface_init(void);
void blkif_xenbus_init(void);
@@ -10074,8 +10018,8 @@ Acked-by: jbeulich@novell.com
int blkif_schedule(void *arg);
int blkback_barrier(struct xenbus_transaction xbt,
---- head-2011-07-21.orig/drivers/xen/blkfront/blkfront.c 2011-07-15 11:19:50.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blkfront/blkfront.c 2011-07-21 12:07:37.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blkfront/blkfront.c 2011-07-15 11:19:50.000000000 +0200
++++ head-2011-09-07/drivers/xen/blkfront/blkfront.c 2011-07-21 12:07:37.000000000 +0200
@@ -70,9 +70,9 @@ static int setup_blkring(struct xenbus_d
static void kick_pending_request_queues(struct blkfront_info *);
@@ -10137,8 +10081,8 @@ Acked-by: jbeulich@novell.com
}
int blkfront_is_ready(struct xenbus_device *dev)
---- head-2011-07-21.orig/drivers/xen/blktap/blktap.c 2011-06-30 15:37:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap/blktap.c 2011-06-30 16:02:41.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap/blktap.c 2011-06-30 15:37:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap/blktap.c 2011-06-30 16:02:41.000000000 +0200
@@ -1258,7 +1258,7 @@ static void blkif_notify_work(blkif_t *b
wake_up(&blkif->wq);
}
@@ -10148,8 +10092,8 @@ Acked-by: jbeulich@novell.com
{
blkif_notify_work(dev_id);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/blktap/common.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/blktap/common.h 2011-04-11 14:28:19.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/blktap/common.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/blktap/common.h 2011-04-11 14:28:19.000000000 +0200
@@ -105,7 +105,7 @@ void tap_blkif_interface_init(void);
void tap_blkif_xenbus_init(void);
@@ -10159,8 +10103,8 @@ Acked-by: jbeulich@novell.com
int tap_blkif_schedule(void *arg);
int dom_to_devid(domid_t domid, int xenbus_id, blkif_t *blkif);
---- head-2011-07-21.orig/drivers/xen/blktap2/sysfs.c 2011-03-02 12:00:16.000000000 +0100
-+++ head-2011-07-21/drivers/xen/blktap2/sysfs.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/blktap2/sysfs.c 2011-03-02 12:00:16.000000000 +0100
++++ head-2011-09-07/drivers/xen/blktap2/sysfs.c 2011-01-31 17:29:16.000000000 +0100
@@ -150,7 +150,7 @@ blktap_sysfs_pause_device(struct class_d
err = blktap_device_pause(tap);
if (!err) {
@@ -10249,8 +10193,8 @@ Acked-by: jbeulich@novell.com
- return 0;
+ return err;
}
---- head-2011-07-21.orig/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
-+++ head-2011-07-21/drivers/xen/console/console.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
++++ head-2011-09-07/drivers/xen/console/console.c 2011-01-31 17:29:16.000000000 +0100
@@ -360,7 +360,7 @@ static struct tty_struct *xencons_tty;
static int xencons_priv_irq;
static char x_char;
@@ -10296,8 +10240,8 @@ Acked-by: jbeulich@novell.com
.open = xencons_open,
.close = xencons_close,
.write = xencons_write,
---- head-2011-07-21.orig/drivers/xen/console/xencons_ring.c 2007-06-12 13:13:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/console/xencons_ring.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/console/xencons_ring.c 2007-06-12 13:13:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/console/xencons_ring.c 2011-01-31 17:29:16.000000000 +0100
@@ -83,7 +83,7 @@ int xencons_ring_send(const char *data,
return sent;
}
@@ -10316,8 +10260,8 @@ Acked-by: jbeulich@novell.com
cons++;
}
---- head-2011-07-21.orig/drivers/xen/core/evtchn.c 2010-11-25 09:36:37.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/evtchn.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/evtchn.c 2010-11-25 09:36:37.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/evtchn.c 2011-01-31 17:29:16.000000000 +0100
@@ -539,7 +539,7 @@ static void unbind_from_irq(unsigned int
int bind_caller_port_to_irqhandler(
@@ -10597,8 +10541,8 @@ Acked-by: jbeulich@novell.com
+ handle_fasteoi_irq, "fasteoi");
}
}
---- head-2011-07-21.orig/drivers/xen/core/gnttab.c 2010-09-23 15:39:04.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/gnttab.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/gnttab.c 2010-09-23 15:39:04.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/gnttab.c 2011-01-31 17:29:16.000000000 +0100
@@ -510,6 +510,7 @@ static void gnttab_page_free(struct page
BUG_ON(order);
ClearPageForeign(page);
@@ -10616,8 +10560,8 @@ Acked-by: jbeulich@novell.com
*pagep = new_page;
SetPageForeign(page, gnttab_page_free);
---- head-2011-07-21.orig/drivers/xen/core/reboot.c 2011-06-30 15:37:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/core/reboot.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/reboot.c 2011-06-30 15:37:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/core/reboot.c 2011-01-31 17:29:16.000000000 +0100
@@ -1,4 +1,3 @@
-#define __KERNEL_SYSCALLS__
#include <linux/version.h>
@@ -10649,8 +10593,8 @@ Acked-by: jbeulich@novell.com
{
switch_shutdown_state(SHUTDOWN_SUSPEND);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/core/smpboot.c 2011-01-31 17:01:49.000000000 +0100
-+++ head-2011-07-21/drivers/xen/core/smpboot.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/core/smpboot.c 2011-01-31 17:01:49.000000000 +0100
++++ head-2011-09-07/drivers/xen/core/smpboot.c 2011-01-31 17:29:16.000000000 +0100
@@ -25,8 +25,8 @@
#include <xen/cpu_hotplug.h>
#include <xen/xenbus.h>
@@ -10671,8 +10615,8 @@ Acked-by: jbeulich@novell.com
#endif
void __init prefill_possible_map(void)
---- head-2011-07-21.orig/drivers/xen/fbfront/xenfb.c 2011-03-02 12:00:16.000000000 +0100
-+++ head-2011-07-21/drivers/xen/fbfront/xenfb.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/fbfront/xenfb.c 2011-03-02 12:00:16.000000000 +0100
++++ head-2011-09-07/drivers/xen/fbfront/xenfb.c 2011-01-31 17:29:16.000000000 +0100
@@ -524,8 +524,7 @@ static struct fb_ops xenfb_fb_ops = {
.fb_set_par = xenfb_set_par,
};
@@ -10683,8 +10627,8 @@ Acked-by: jbeulich@novell.com
{
/*
* No in events recognized, simply ignore them all.
---- head-2011-07-21.orig/drivers/xen/fbfront/xenkbd.c 2011-05-23 10:40:00.000000000 +0200
-+++ head-2011-07-21/drivers/xen/fbfront/xenkbd.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/fbfront/xenkbd.c 2011-05-23 10:40:00.000000000 +0200
++++ head-2011-09-07/drivers/xen/fbfront/xenkbd.c 2011-01-31 17:29:16.000000000 +0100
@@ -46,7 +46,7 @@ static void xenkbd_disconnect_backend(st
* to do that.
*/
@@ -10694,8 +10638,8 @@ Acked-by: jbeulich@novell.com
{
struct xenkbd_info *info = dev_id;
struct xenkbd_page *page = info->page;
---- head-2011-07-21.orig/drivers/xen/gntdev/gntdev.c 2011-01-03 12:43:21.000000000 +0100
-+++ head-2011-07-21/drivers/xen/gntdev/gntdev.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/gntdev/gntdev.c 2011-01-03 12:43:21.000000000 +0100
++++ head-2011-09-07/drivers/xen/gntdev/gntdev.c 2011-01-31 17:29:16.000000000 +0100
@@ -744,9 +744,6 @@ static pte_t gntdev_clear_pte(struct vm_
BUG();
}
@@ -10735,8 +10679,8 @@ Acked-by: jbeulich@novell.com
}
return copy;
---- head-2011-07-21.orig/drivers/xen/netback/accel.c 2011-06-30 15:37:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/netback/accel.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/netback/accel.c 2011-06-30 15:37:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/accel.c 2011-01-31 17:29:16.000000000 +0100
@@ -65,7 +65,7 @@ static int match_accelerator(struct xenb
if (IS_ERR(eth_name)) {
@@ -10746,8 +10690,8 @@ Acked-by: jbeulich@novell.com
__FUNCTION__, PTR_ERR(eth_name));
return 0;
} else {
---- head-2011-07-21.orig/drivers/xen/netback/common.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/netback/common.h 2011-04-11 14:28:08.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netback/common.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/common.h 2011-04-11 14:28:08.000000000 +0200
@@ -92,6 +92,7 @@ typedef struct netif_st {
/* Statistics */
@@ -10765,8 +10709,8 @@ Acked-by: jbeulich@novell.com
static inline int netbk_can_queue(struct net_device *dev)
{
---- head-2011-07-21.orig/drivers/xen/netback/interface.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/netback/interface.c 2011-04-11 14:28:07.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netback/interface.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/interface.c 2011-04-11 14:28:07.000000000 +0200
@@ -172,6 +172,7 @@ static const struct netif_stat {
u16 offset;
} netbk_stats[] = {
@@ -10775,8 +10719,8 @@ Acked-by: jbeulich@novell.com
};
static int netbk_get_stats_count(struct net_device *dev)
---- head-2011-07-21.orig/drivers/xen/netback/loopback.c 2011-01-03 12:43:21.000000000 +0100
-+++ head-2011-07-21/drivers/xen/netback/loopback.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/netback/loopback.c 2011-01-03 12:43:21.000000000 +0100
++++ head-2011-09-07/drivers/xen/netback/loopback.c 2011-01-31 17:29:16.000000000 +0100
@@ -152,16 +152,6 @@ static int loopback_start_xmit(struct sk
np->stats.rx_bytes += skb->len;
np->stats.rx_packets++;
@@ -10794,8 +10738,8 @@ Acked-by: jbeulich@novell.com
skb->pkt_type = PACKET_HOST; /* overridden by eth_type_trans() */
skb->protocol = eth_type_trans(skb, dev);
skb->dev = dev;
---- head-2011-07-21.orig/drivers/xen/netback/netback.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/netback/netback.c 2011-04-11 14:28:01.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netback/netback.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/netback/netback.c 2011-04-11 14:28:01.000000000 +0200
@@ -41,6 +41,7 @@
#include <xen/evtchn.h>
#include <xen/gnttab.h>
@@ -10883,8 +10827,8 @@ Acked-by: jbeulich@novell.com
{
struct list_head *ent;
netif_t *netif;
---- head-2011-07-21.orig/drivers/xen/netfront/netfront.c 2011-06-30 15:37:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/netfront/netfront.c 2011-06-30 16:02:48.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/netfront/netfront.c 2011-06-30 15:37:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/netfront/netfront.c 2011-06-30 16:02:48.000000000 +0200
@@ -63,6 +63,7 @@
#include <asm/uaccess.h>
#include <xen/interface/grant_table.h>
@@ -11026,8 +10970,8 @@ Acked-by: jbeulich@novell.com
};
#ifdef CONFIG_SYSFS
---- head-2011-07-21.orig/drivers/xen/netfront/netfront.h 2010-02-24 13:13:46.000000000 +0100
-+++ head-2011-07-21/drivers/xen/netfront/netfront.h 2011-02-09 15:35:17.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/netfront/netfront.h 2010-02-24 13:13:46.000000000 +0100
++++ head-2011-09-07/drivers/xen/netfront/netfront.h 2011-02-09 15:35:17.000000000 +0100
@@ -150,6 +150,7 @@ struct netfront_info {
struct net_device *netdev;
@@ -11036,8 +10980,8 @@ Acked-by: jbeulich@novell.com
struct netif_tx_front_ring tx;
struct netif_rx_front_ring rx;
---- head-2011-07-21.orig/drivers/xen/pciback/pciback.h 2009-03-18 10:39:32.000000000 +0100
-+++ head-2011-07-21/drivers/xen/pciback/pciback.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/pciback/pciback.h 2009-03-18 10:39:32.000000000 +0100
++++ head-2011-09-07/drivers/xen/pciback/pciback.h 2011-01-31 17:29:16.000000000 +0100
@@ -99,7 +99,7 @@ int pciback_publish_pci_roots(struct pci
void pciback_release_devices(struct pciback_device *pdev);
@@ -11047,8 +10991,8 @@ Acked-by: jbeulich@novell.com
void pciback_do_op(void *data);
int pciback_xenbus_register(void);
---- head-2011-07-21.orig/drivers/xen/pciback/pciback_ops.c 2011-02-17 09:58:10.000000000 +0100
-+++ head-2011-07-21/drivers/xen/pciback/pciback_ops.c 2011-02-17 10:07:33.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/pciback/pciback_ops.c 2011-02-17 09:58:10.000000000 +0100
++++ head-2011-09-07/drivers/xen/pciback/pciback_ops.c 2011-02-17 10:07:33.000000000 +0100
@@ -132,7 +132,7 @@ void pciback_do_op(void *data)
test_and_schedule_op(pdev);
}
@@ -11058,8 +11002,8 @@ Acked-by: jbeulich@novell.com
{
struct pciback_device *pdev = dev_id;
---- head-2011-07-21.orig/drivers/xen/pcifront/pcifront.h 2010-10-05 09:58:12.000000000 +0200
-+++ head-2011-07-21/drivers/xen/pcifront/pcifront.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/pcifront/pcifront.h 2010-10-05 09:58:12.000000000 +0200
++++ head-2011-09-07/drivers/xen/pcifront/pcifront.h 2011-01-31 17:29:16.000000000 +0100
@@ -51,6 +51,6 @@ void pcifront_free_roots(struct pcifront
void pcifront_do_aer( void *data);
@@ -11068,8 +11012,8 @@ Acked-by: jbeulich@novell.com
+irqreturn_t pcifront_handler_aer(int irq, void *dev);
#endif /* __XEN_PCIFRONT_H__ */
---- head-2011-07-21.orig/drivers/xen/pcifront/pci_op.c 2010-11-25 09:36:37.000000000 +0100
-+++ head-2011-07-21/drivers/xen/pcifront/pci_op.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/pcifront/pci_op.c 2010-11-25 09:36:37.000000000 +0100
++++ head-2011-09-07/drivers/xen/pcifront/pci_op.c 2011-01-31 17:29:16.000000000 +0100
@@ -662,7 +662,7 @@ void pcifront_do_aer(void *data)
}
@@ -11079,8 +11023,8 @@ Acked-by: jbeulich@novell.com
{
struct pcifront_device *pdev = dev;
schedule_pcifront_aer_op(pdev);
---- head-2011-07-21.orig/drivers/xen/privcmd/compat_privcmd.c 2010-01-27 14:01:48.000000000 +0100
-+++ head-2011-07-21/drivers/xen/privcmd/compat_privcmd.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/privcmd/compat_privcmd.c 2010-01-27 14:01:48.000000000 +0100
++++ head-2011-09-07/drivers/xen/privcmd/compat_privcmd.c 2011-01-31 17:29:16.000000000 +0100
@@ -18,7 +18,6 @@
* Authors: Jimi Xenidis <jimix@watson.ibm.com>
*/
@@ -11089,8 +11033,8 @@ Acked-by: jbeulich@novell.com
#include <linux/compat.h>
#include <linux/ioctl.h>
#include <linux/syscalls.h>
---- head-2011-07-21.orig/drivers/xen/privcmd/privcmd.c 2010-01-27 14:01:48.000000000 +0100
-+++ head-2011-07-21/drivers/xen/privcmd/privcmd.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/privcmd/privcmd.c 2010-01-27 14:01:48.000000000 +0100
++++ head-2011-09-07/drivers/xen/privcmd/privcmd.c 2011-01-31 17:29:16.000000000 +0100
@@ -71,43 +71,16 @@ static long privcmd_ioctl(struct file *f
if (copy_from_user(&hypercall, udata, sizeof(hypercall)))
return -EFAULT;
@@ -11151,8 +11095,8 @@ Acked-by: jbeulich@novell.com
vma->vm_ops = &privcmd_vm_ops;
vma->vm_private_data = NULL;
---- head-2011-07-21.orig/drivers/xen/scsiback/common.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/scsiback/common.h 2011-04-11 14:27:49.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/scsiback/common.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/scsiback/common.h 2011-04-11 14:27:49.000000000 +0200
@@ -138,7 +138,7 @@ typedef struct {
#define VSCSI_TYPE_HOST 1
@@ -11162,8 +11106,8 @@ Acked-by: jbeulich@novell.com
int scsiback_init_sring(struct vscsibk_info *, grant_ref_t, evtchn_port_t);
int scsiback_schedule(void *data);
---- head-2011-07-21.orig/drivers/xen/scsiback/scsiback.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/scsiback/scsiback.c 2011-04-11 14:27:51.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/scsiback/scsiback.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/scsiback/scsiback.c 2011-04-11 14:27:51.000000000 +0200
@@ -461,7 +461,7 @@ void scsiback_cmd_exec(pending_req_t *pe
write = (data_dir == DMA_TO_DEVICE);
rq = blk_get_request(pending_req->sdev->request_queue, write, GFP_KERNEL);
@@ -11182,8 +11126,8 @@ Acked-by: jbeulich@novell.com
{
scsiback_notify_work((struct vscsibk_info *)dev_id);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/scsifront/common.h 2010-02-24 13:13:46.000000000 +0100
-+++ head-2011-07-21/drivers/xen/scsifront/common.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/scsifront/common.h 2010-02-24 13:13:46.000000000 +0100
++++ head-2011-09-07/drivers/xen/scsifront/common.h 2011-01-31 17:29:16.000000000 +0100
@@ -128,7 +128,7 @@ struct vscsifrnt_info {
int scsifront_xenbus_init(void);
void scsifront_xenbus_unregister(void);
@@ -11193,8 +11137,8 @@ Acked-by: jbeulich@novell.com
int scsifront_cmd_done(struct vscsifrnt_info *info);
---- head-2011-07-21.orig/drivers/xen/scsifront/scsifront.c 2011-02-02 12:19:11.000000000 +0100
-+++ head-2011-07-21/drivers/xen/scsifront/scsifront.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/scsifront/scsifront.c 2011-02-02 12:19:11.000000000 +0100
++++ head-2011-09-07/drivers/xen/scsifront/scsifront.c 2011-01-31 17:29:16.000000000 +0100
@@ -100,7 +100,7 @@ static void scsifront_do_request(struct
notify_remote_via_irq(irq);
}
@@ -11204,8 +11148,8 @@ Acked-by: jbeulich@novell.com
{
scsifront_notify_work((struct vscsifrnt_info *)dev_id);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/sfc_netback/accel_xenbus.c 2010-01-04 11:56:34.000000000 +0100
-+++ head-2011-07-21/drivers/xen/sfc_netback/accel_xenbus.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/sfc_netback/accel_xenbus.c 2010-01-04 11:56:34.000000000 +0100
++++ head-2011-09-07/drivers/xen/sfc_netback/accel_xenbus.c 2011-01-31 17:29:16.000000000 +0100
@@ -69,8 +69,7 @@ static void unlink_bend(struct netback_a
@@ -11226,8 +11170,8 @@ Acked-by: jbeulich@novell.com
{
VPRINTK("netirq %d from device %s\n", irq,
((struct xenbus_device *)context)->nodename);
---- head-2011-07-21.orig/drivers/xen/sfc_netfront/accel.h 2009-04-07 13:58:48.000000000 +0200
-+++ head-2011-07-21/drivers/xen/sfc_netfront/accel.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/sfc_netfront/accel.h 2009-04-07 13:58:48.000000000 +0200
++++ head-2011-09-07/drivers/xen/sfc_netfront/accel.h 2011-01-31 17:29:16.000000000 +0100
@@ -467,10 +467,8 @@ void netfront_accel_msg_tx_fastpath(netf
u32 ip, u16 port, u8 protocol);
@@ -11241,8 +11185,8 @@ Acked-by: jbeulich@novell.com
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
extern void netfront_accel_msg_from_bend(struct work_struct *context);
---- head-2011-07-21.orig/drivers/xen/sfc_netfront/accel_msg.c 2009-04-07 13:58:48.000000000 +0200
-+++ head-2011-07-21/drivers/xen/sfc_netfront/accel_msg.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/sfc_netfront/accel_msg.c 2009-04-07 13:58:48.000000000 +0200
++++ head-2011-09-07/drivers/xen/sfc_netfront/accel_msg.c 2011-01-31 17:29:16.000000000 +0100
@@ -488,8 +488,7 @@ void netfront_accel_msg_from_bend(void *
}
@@ -11263,8 +11207,8 @@ Acked-by: jbeulich@novell.com
{
netfront_accel_vnic *vnic = (netfront_accel_vnic *)context;
struct net_device *net_dev = vnic->net_dev;
---- head-2011-07-21.orig/drivers/xen/sfc_netfront/accel_tso.c 2008-02-26 10:54:12.000000000 +0100
-+++ head-2011-07-21/drivers/xen/sfc_netfront/accel_tso.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/sfc_netfront/accel_tso.c 2008-02-26 10:54:12.000000000 +0100
++++ head-2011-09-07/drivers/xen/sfc_netfront/accel_tso.c 2011-01-31 17:29:16.000000000 +0100
@@ -363,7 +363,7 @@ int netfront_accel_enqueue_skb_tso(netfr
tso_check_safe(skb);
@@ -11274,8 +11218,8 @@ Acked-by: jbeulich@novell.com
EPRINTK("Trying to TSO send a packet without HW checksum\n");
tso_start(&state, skb);
---- head-2011-07-21.orig/drivers/xen/sfc_netfront/accel_vi.c 2011-06-30 15:37:44.000000000 +0200
-+++ head-2011-07-21/drivers/xen/sfc_netfront/accel_vi.c 2011-06-30 16:03:00.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/sfc_netfront/accel_vi.c 2011-06-30 15:37:44.000000000 +0200
++++ head-2011-09-07/drivers/xen/sfc_netfront/accel_vi.c 2011-06-30 16:03:00.000000000 +0200
@@ -463,7 +463,7 @@ netfront_accel_enqueue_skb_multi(netfron
frag_i = -1;
@@ -11294,8 +11238,8 @@ Acked-by: jbeulich@novell.com
/* Set to zero to encourage falcon to work it out for us */
*(u16*)(skb->h.raw + skb->csum) = 0;
}
---- head-2011-07-21.orig/drivers/xen/tpmback/common.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/tpmback/common.h 2011-04-11 14:27:26.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/tpmback/common.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/tpmback/common.h 2011-04-11 14:27:26.000000000 +0200
@@ -71,7 +71,7 @@ void tpmif_deschedule_work(tpmif_t * tpm
void tpmif_xenbus_init(void);
void tpmif_xenbus_exit(void);
@@ -11305,8 +11249,8 @@ Acked-by: jbeulich@novell.com
long int tpmback_get_instance(struct backend_info *bi);
---- head-2011-07-21.orig/drivers/xen/tpmback/tpmback.c 2010-09-23 15:39:04.000000000 +0200
-+++ head-2011-07-21/drivers/xen/tpmback/tpmback.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/tpmback/tpmback.c 2010-09-23 15:39:04.000000000 +0200
++++ head-2011-09-07/drivers/xen/tpmback/tpmback.c 2011-01-31 17:29:16.000000000 +0100
@@ -497,7 +497,7 @@ static ssize_t vtpm_op_read(struct file
list_del(&pak->next);
write_unlock_irqrestore(&dataex.pak_lock, flags);
@@ -11325,8 +11269,8 @@ Acked-by: jbeulich@novell.com
{
tpmif_t *tpmif = (tpmif_t *) dev_id;
---- head-2011-07-21.orig/drivers/xen/usbback/usbback.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/usbback/usbback.c 2011-04-11 14:27:33.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/usbback/usbback.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbback/usbback.c 2011-04-11 14:27:33.000000000 +0200
@@ -290,7 +290,7 @@ static void usbbk_notify_work(usbif_t *u
wake_up(&usbif->wq);
}
@@ -11345,8 +11289,8 @@ Acked-by: jbeulich@novell.com
{
pending_req_t *pending_req = (pending_req_t *)urb->context;
---- head-2011-07-21.orig/drivers/xen/usbback/usbback.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/usbback/usbback.h 2011-04-11 14:27:35.000000000 +0200
+--- head-2011-09-07.orig/drivers/xen/usbback/usbback.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbback/usbback.h 2011-04-11 14:27:35.000000000 +0200
@@ -151,7 +151,7 @@ int portid_add(const char *busid,
int portid_remove(const domid_t domid,
const unsigned int handle,
@@ -11356,8 +11300,8 @@ Acked-by: jbeulich@novell.com
int usbbk_schedule(void *arg);
struct usbstub *find_attached_device(usbif_t *usbif, int port);
void usbbk_attach_device(usbif_t *usbif, struct usbstub *stub);
---- head-2011-07-21.orig/drivers/xen/usbback/usbstub.c 2011-03-02 12:00:16.000000000 +0100
-+++ head-2011-07-21/drivers/xen/usbback/usbstub.c 2011-03-11 10:54:35.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/usbback/usbstub.c 2011-03-02 12:00:16.000000000 +0100
++++ head-2011-09-07/drivers/xen/usbback/usbstub.c 2011-03-11 10:54:35.000000000 +0100
@@ -283,7 +283,7 @@ static ssize_t usbstub_show_portids(stru
static DRIVER_ATTR(port_ids, S_IRUSR, usbstub_show_portids, NULL);
@@ -11385,8 +11329,8 @@ Acked-by: jbeulich@novell.com
&driver_attr_port_ids);
usb_deregister(&usbback_usb_driver);
}
---- head-2011-07-21.orig/drivers/xen/usbfront/usbfront.h 2009-10-15 11:45:41.000000000 +0200
-+++ head-2011-07-21/drivers/xen/usbfront/usbfront.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/usbfront/usbfront.h 2009-10-15 11:45:41.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbfront/usbfront.h 2011-01-31 17:29:16.000000000 +0100
@@ -195,7 +195,7 @@ timer_action(struct usbfront_info *info,
extern struct kmem_cache *xenhcd_urbp_cachep;
extern struct hc_driver xen_usb20_hc_driver;
@@ -11396,8 +11340,8 @@ Acked-by: jbeulich@novell.com
void xenhcd_rhport_state_change(struct usbfront_info *info,
int port, enum usb_device_speed speed);
int xenhcd_schedule(void *arg);
---- head-2011-07-21.orig/drivers/xen/usbfront/usbfront-dbg.c 2009-10-15 11:45:41.000000000 +0200
-+++ head-2011-07-21/drivers/xen/usbfront/usbfront-dbg.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/usbfront/usbfront-dbg.c 2009-10-15 11:45:41.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbfront/usbfront-dbg.c 2011-01-31 17:29:16.000000000 +0100
@@ -90,7 +90,9 @@ static CLASS_DEVICE_ATTR(statistics, S_I
static inline void create_debug_file(struct usbfront_info *info)
{
@@ -11409,8 +11353,8 @@ Acked-by: jbeulich@novell.com
}
static inline void remove_debug_file(struct usbfront_info *info)
---- head-2011-07-21.orig/drivers/xen/usbfront/usbfront-q.c 2009-10-15 11:45:41.000000000 +0200
-+++ head-2011-07-21/drivers/xen/usbfront/usbfront-q.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/usbfront/usbfront-q.c 2009-10-15 11:45:41.000000000 +0200
++++ head-2011-09-07/drivers/xen/usbfront/usbfront-q.c 2011-01-31 17:29:16.000000000 +0100
@@ -236,7 +236,7 @@ __acquires(info->lock)
COUNT(info->stats.complete);
}
@@ -11429,8 +11373,8 @@ Acked-by: jbeulich@novell.com
{
xenhcd_notify_work((struct usbfront_info *) dev_id);
return IRQ_HANDLED;
---- head-2011-07-21.orig/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/drivers/xen/xenbus/xenbus_comms.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/xenbus/xenbus_comms.c 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/drivers/xen/xenbus/xenbus_comms.c 2011-01-31 17:29:16.000000000 +0100
@@ -54,7 +54,7 @@ static DECLARE_WORK(probe_work, xenbus_p
static DECLARE_WAIT_QUEUE_HEAD(xb_waitq);
@@ -11440,8 +11384,8 @@ Acked-by: jbeulich@novell.com
{
int old, new;
---- head-2011-07-21.orig/drivers/xen/xenoprof/xenoprofile.c 2010-01-07 09:38:29.000000000 +0100
-+++ head-2011-07-21/drivers/xen/xenoprof/xenoprofile.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/drivers/xen/xenoprof/xenoprofile.c 2010-01-07 09:38:29.000000000 +0100
++++ head-2011-09-07/drivers/xen/xenoprof/xenoprofile.c 2011-01-31 17:29:16.000000000 +0100
@@ -194,8 +194,7 @@ done:
oprofile_add_domain_switch(COORDINATOR_DOMAIN);
}
@@ -11452,8 +11396,8 @@ Acked-by: jbeulich@novell.com
{
struct xenoprof_buf * buf;
static unsigned long flag;
---- head-2011-07-21.orig/include/asm-generic/pgtable.h 2011-04-13 11:25:29.000000000 +0200
-+++ head-2011-07-21/include/asm-generic/pgtable.h 2011-03-11 10:54:24.000000000 +0100
+--- head-2011-09-07.orig/include/asm-generic/pgtable.h 2011-04-13 11:25:29.000000000 +0200
++++ head-2011-09-07/include/asm-generic/pgtable.h 2011-03-11 10:54:24.000000000 +0100
@@ -157,7 +157,7 @@ static inline void pmdp_set_wrprotect(st
#endif
@@ -11463,8 +11407,8 @@ Acked-by: jbeulich@novell.com
#endif
#ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/desc_32.h 2008-01-28 12:24:19.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/desc_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/desc_32.h 2008-01-28 12:24:19.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/desc_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -32,52 +32,110 @@ static inline struct desc_struct *get_cp
return (struct desc_struct *)per_cpu(cpu_gdt_descr, cpu).address;
}
@@ -11625,8 +11569,8 @@ Acked-by: jbeulich@novell.com
static inline void clear_LDT(void)
{
int cpu = get_cpu();
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/fixmap_32.h 2007-06-12 13:14:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/fixmap_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/fixmap_32.h 2007-06-12 13:14:02.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/fixmap_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -55,7 +55,7 @@ enum fixed_addresses {
#ifdef CONFIG_X86_LOCAL_APIC
FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
@@ -11648,8 +11592,8 @@ Acked-by: jbeulich@novell.com
#define set_fixmap(idx, phys) \
__set_fixmap(idx, phys, PAGE_KERNEL)
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypercall_32.h 2009-06-23 09:28:21.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypercall_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypercall_32.h 2009-06-23 09:28:21.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypercall_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -128,6 +128,23 @@
__res; \
})
@@ -11720,8 +11664,8 @@ Acked-by: jbeulich@novell.com
return _hypercall3(int, grant_table_op, cmd, uop, count);
}
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypercall_64.h 2009-06-23 09:28:21.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypercall_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypercall_64.h 2009-06-23 09:28:21.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypercall_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -135,6 +135,23 @@
__res; \
})
@@ -11791,8 +11735,8 @@ Acked-by: jbeulich@novell.com
return _hypercall3(int, grant_table_op, cmd, uop, count);
}
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2009-07-13 14:25:35.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/hypervisor.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/hypervisor.h 2009-07-13 14:25:35.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/hypervisor.h 2011-01-31 17:29:16.000000000 +0100
@@ -44,6 +44,7 @@
#include <xen/interface/sched.h>
#include <xen/interface/nmi.h>
@@ -11863,8 +11807,8 @@ Acked-by: jbeulich@novell.com
static inline int
HYPERVISOR_yield(
void)
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable-3level.h 2008-04-02 12:34:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable-3level.h 2008-04-02 12:34:02.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable-3level.h 2011-01-31 17:29:16.000000000 +0100
@@ -53,7 +53,6 @@ static inline int pte_exec_kernel(pte_t
* not possible, use pte_get_and_clear to obtain the old pte
* value and then use set_pte to update it. -ben
@@ -11921,8 +11865,8 @@ Acked-by: jbeulich@novell.com
static inline int pte_same(pte_t a, pte_t b)
{
return a.pte_low == b.pte_low && a.pte_high == b.pte_high;
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable_32.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable_32.h 2011-02-07 15:37:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable_32.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable_32.h 2011-02-07 15:37:16.000000000 +0100
@@ -260,31 +260,89 @@ static inline pte_t pte_mkhuge(pte_t pte
# include <asm/pgtable-2level.h>
#endif
@@ -12133,8 +12077,8 @@ Acked-by: jbeulich@novell.com
#include <asm-generic/pgtable.h>
#endif /* _I386_PGTABLE_H */
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:02:29.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:02:29.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -146,6 +146,18 @@ static inline void detect_ht(struct cpui
#define X86_EFLAGS_VIP 0x00100000 /* Virtual Interrupt Pending */
#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */
@@ -12246,8 +12190,8 @@ Acked-by: jbeulich@novell.com
/* from system description table in BIOS. Mostly for MCA use, but
others may find it useful. */
extern unsigned int machine_id;
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/smp_32.h 2007-06-12 13:14:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/smp_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/smp_32.h 2007-06-12 13:14:02.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/smp_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -79,25 +79,36 @@ static inline int hard_smp_processor_id(
return GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID));
}
@@ -12292,8 +12236,8 @@ Acked-by: jbeulich@novell.com
+#endif
+
#endif
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/system_32.h 2007-06-12 13:14:02.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/system_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/system_32.h 2007-06-12 13:14:02.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/system_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -267,6 +267,9 @@ static inline unsigned long __xchg(unsig
#define cmpxchg(ptr,o,n)\
((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
@@ -12344,8 +12288,8 @@ Acked-by: jbeulich@novell.com
#ifndef CONFIG_X86_CMPXCHG
/*
* Building a kernel capable running on 80386. It may be necessary to
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/tlbflush_32.h 2007-11-26 16:59:25.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/tlbflush_32.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/tlbflush_32.h 2007-11-26 16:59:25.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/tlbflush_32.h 2011-01-31 17:29:16.000000000 +0100
@@ -8,8 +8,6 @@
#define __flush_tlb_global() xen_tlb_flush()
#define __flush_tlb_all() xen_tlb_flush()
@@ -12355,8 +12299,8 @@ Acked-by: jbeulich@novell.com
#define cpu_has_invlpg (boot_cpu_data.x86 > 3)
#define __flush_tlb_single(addr) xen_invlpg(addr)
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/fixmap_64.h 2007-06-12 13:14:13.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/fixmap_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/fixmap_64.h 2007-06-12 13:14:13.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/fixmap_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -41,7 +41,7 @@ enum fixed_addresses {
#ifdef CONFIG_X86_LOCAL_APIC
FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
@@ -12366,8 +12310,8 @@ Acked-by: jbeulich@novell.com
FIX_IO_APIC_BASE_0,
FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
#endif
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-04-11 13:43:15.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-02-07 15:37:14.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-04-11 13:43:15.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/pgtable_64.h 2011-02-07 15:37:14.000000000 +0100
@@ -44,12 +44,9 @@ extern unsigned long __supported_pte_mas
#define swapper_pg_dir init_level4_pgt
@@ -12546,8 +12490,8 @@ Acked-by: jbeulich@novell.com
#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
#define __HAVE_ARCH_PTEP_CLEAR_FLUSH
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/processor_64.h 2008-03-06 08:54:32.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/processor_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/processor_64.h 2008-03-06 08:54:32.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/processor_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -484,6 +484,8 @@ static inline void __mwait(unsigned long
: :"a" (eax), "c" (ecx));
}
@@ -12557,8 +12501,8 @@ Acked-by: jbeulich@novell.com
#define stack_current() \
({ \
struct thread_info *ti; \
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/smp_64.h 2007-06-12 13:14:13.000000000 +0200
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/smp_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/smp_64.h 2007-06-12 13:14:13.000000000 +0200
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/smp_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -4,15 +4,12 @@
/*
* We need the APIC definitions automatically as part of 'smp.h'
@@ -12664,8 +12608,8 @@ Acked-by: jbeulich@novell.com
+#endif /* !CONFIG_SMP */
#endif
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/system_64.h 2007-11-26 16:59:25.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/system_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/system_64.h 2007-11-26 16:59:25.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/system_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -24,6 +24,7 @@
#define __EXTRA_CLOBBER \
,"rcx","rbx","rdx","r8","r9","r10","r11","r12","r13","r14","r15"
@@ -12674,8 +12618,8 @@ Acked-by: jbeulich@novell.com
#define switch_to(prev,next,last) \
asm volatile(SAVE_CONTEXT \
"movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \
---- head-2011-07-21.orig/arch/x86/include/mach-xen/asm/tlbflush_64.h 2007-11-26 16:59:25.000000000 +0100
-+++ head-2011-07-21/arch/x86/include/mach-xen/asm/tlbflush_64.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/include/mach-xen/asm/tlbflush_64.h 2007-11-26 16:59:25.000000000 +0100
++++ head-2011-09-07/arch/x86/include/mach-xen/asm/tlbflush_64.h 2011-01-31 17:29:16.000000000 +0100
@@ -12,9 +12,6 @@
*/
#define __flush_tlb_global() xen_tlb_flush()
@@ -12686,8 +12630,8 @@ Acked-by: jbeulich@novell.com
#define __flush_tlb_all() __flush_tlb_global()
#define __flush_tlb_one(addr) xen_invlpg((unsigned long)addr)
---- head-2011-07-21.orig/include/xen/evtchn.h 2011-01-31 15:14:12.000000000 +0100
-+++ head-2011-07-21/include/xen/evtchn.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/include/xen/evtchn.h 2011-01-31 15:14:12.000000000 +0100
++++ head-2011-09-07/include/xen/evtchn.h 2011-01-31 17:29:16.000000000 +0100
@@ -57,34 +57,34 @@
*/
int bind_caller_port_to_irqhandler(
@@ -12729,7 +12673,7 @@ Acked-by: jbeulich@novell.com
const char *devname,
void *dev_id);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-07-21/include/xen/net-util.h 2011-02-09 15:49:42.000000000 +0100
++++ head-2011-09-07/include/xen/net-util.h 2011-02-09 15:49:42.000000000 +0100
@@ -0,0 +1,74 @@
+#ifndef __XEN_NETUTIL_H__
+#define __XEN_NETUTIL_H__
@@ -12805,8 +12749,8 @@ Acked-by: jbeulich@novell.com
+}
+
+#endif /* __XEN_NETUTIL_H__ */
---- head-2011-07-21.orig/include/xen/xencons.h 2007-10-15 09:39:38.000000000 +0200
-+++ head-2011-07-21/include/xen/xencons.h 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/include/xen/xencons.h 2007-10-15 09:39:38.000000000 +0200
++++ head-2011-09-07/include/xen/xencons.h 2011-01-31 17:29:16.000000000 +0100
@@ -8,7 +8,7 @@ void xencons_force_flush(void);
void xencons_resume(void);
@@ -12816,8 +12760,8 @@ Acked-by: jbeulich@novell.com
void xencons_tx(void);
int xencons_ring_init(void);
---- head-2011-07-21.orig/mm/mprotect.c 2011-06-30 15:38:52.000000000 +0200
-+++ head-2011-07-21/mm/mprotect.c 2011-01-31 17:29:16.000000000 +0100
+--- head-2011-09-07.orig/mm/mprotect.c 2011-06-30 15:38:52.000000000 +0200
++++ head-2011-09-07/mm/mprotect.c 2011-01-31 17:29:16.000000000 +0100
@@ -97,7 +97,7 @@ static inline void change_pmd_range(stru
}
if (pmd_none_or_clear_bad(pmd))
@@ -12827,9 +12771,9 @@ Acked-by: jbeulich@novell.com
continue;
change_pte_range(vma->vm_mm, pmd, addr, next, newprot,
dirty_accountable);
---- head-2011-07-21.orig/mm/page_alloc.c 2011-06-30 15:38:58.000000000 +0200
-+++ head-2011-07-21/mm/page_alloc.c 2011-06-30 16:03:09.000000000 +0200
-@@ -5116,6 +5116,23 @@ void setup_per_zone_wmarks(void)
+--- head-2011-09-07.orig/mm/page_alloc.c 2011-06-30 15:38:58.000000000 +0200
++++ head-2011-09-07/mm/page_alloc.c 2011-09-07 15:22:03.000000000 +0200
+@@ -5184,6 +5184,23 @@ void setup_per_zone_wmarks(void)
spin_unlock_irqrestore(&zone->lock, flags);
}
diff --git a/patches.xen/xen3-patch-2.6.20 b/patches.xen/xen3-patch-2.6.20
index 0457ffc193..05a0b8c3bc 100644
--- a/patches.xen/xen3-patch-2.6.20
+++ b/patches.xen/xen3-patch-2.6.20
@@ -6,9 +6,9 @@ Automatically created from "patches.kernel.org/patch-2.6.20" by xen-port-patches
Acked-by: jbeulich@novell.com
---- head-2011-06-30.orig/arch/x86/Kconfig 2011-06-30 16:02:26.000000000 +0200
-+++ head-2011-06-30/arch/x86/Kconfig 2011-06-30 16:03:27.000000000 +0200
-@@ -1630,6 +1630,7 @@ config PHYSICAL_START
+--- head-2011-09-07.orig/arch/x86/Kconfig 2011-09-07 15:22:25.000000000 +0200
++++ head-2011-09-07/arch/x86/Kconfig 2011-09-07 15:22:38.000000000 +0200
+@@ -1631,6 +1631,7 @@ config PHYSICAL_START
config RELOCATABLE
bool "Build a relocatable kernel"
@@ -16,7 +16,7 @@ Acked-by: jbeulich@novell.com
default y
---help---
This builds a kernel image that retains relocation information
-@@ -1651,7 +1652,8 @@ config X86_NEED_RELOCS
+@@ -1652,7 +1653,8 @@ config X86_NEED_RELOCS
depends on X86_32 && RELOCATABLE
config PHYSICAL_ALIGN
@@ -26,8 +26,8 @@ Acked-by: jbeulich@novell.com
default "0x1000000"
range 0x2000 0x1000000
---help---
---- head-2011-06-30.orig/arch/x86/kernel/asm-offsets_32.c 2011-04-13 11:32:32.000000000 +0200
-+++ head-2011-06-30/arch/x86/kernel/asm-offsets_32.c 2011-04-13 12:30:12.000000000 +0200
+--- head-2011-09-07.orig/arch/x86/kernel/asm-offsets_32.c 2011-04-13 11:32:32.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/asm-offsets_32.c 2011-04-13 12:30:12.000000000 +0200
@@ -64,6 +64,11 @@ void foo(void)
DEFINE(SYSENTER_stack_sp0, 0);
#endif
@@ -40,8 +40,8 @@ Acked-by: jbeulich@novell.com
#if defined(CONFIG_LGUEST) || defined(CONFIG_LGUEST_GUEST) || defined(CONFIG_LGUEST_MODULE)
BLANK();
OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled);
---- head-2011-06-30.orig/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/cpu/common-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -22,6 +22,7 @@
#define phys_pkg_id(a,b) a
#endif
@@ -439,8 +439,8 @@ Acked-by: jbeulich@novell.com
#ifdef CONFIG_HOTPLUG_CPU
void __cpuinit cpu_uninit(void)
{
---- head-2011-06-30.orig/arch/x86/kernel/cpu/mtrr/main-xen.c 2008-01-28 12:24:18.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/cpu/mtrr/main-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/cpu/mtrr/main-xen.c 2008-01-28 12:24:18.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/cpu/mtrr/main-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -12,7 +12,7 @@
static DEFINE_MUTEX(mtrr_mutex);
@@ -461,7 +461,7 @@ Acked-by: jbeulich@novell.com
struct xen_platform_op op;
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head-2011-06-30/arch/x86/kernel/e820_32-xen.c 2011-01-31 17:32:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/e820_32-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -0,0 +1,1002 @@
+#include <linux/kernel.h>
+#include <linux/types.h>
@@ -1465,8 +1465,8 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+early_param("memmap", parse_memmap);
---- head-2011-06-30.orig/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/entry_32-xen.S 2011-01-31 17:32:16.000000000 +0100
@@ -30,12 +30,13 @@
* 18(%esp) - %eax
* 1C(%esp) - %ds
@@ -2237,8 +2237,8 @@ Acked-by: jbeulich@novell.com
ENTRY(fixup_4gb_segment)
RING0_EC_FRAME
pushl $do_fixup_4gb_segment
---- head-2011-06-30.orig/arch/x86/kernel/head_32-xen.S 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/head_32-xen.S 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/head_32-xen.S 2011-08-09 10:35:35.000000000 +0200
++++ head-2011-09-07/arch/x86/kernel/head_32-xen.S 2011-08-09 10:36:13.000000000 +0200
@@ -9,6 +9,7 @@
#include <asm/cache.h>
#include <asm/thread_info.h>
@@ -2247,7 +2247,7 @@ Acked-by: jbeulich@novell.com
#include <asm/dwarf2.h>
#include <xen/interface/xen.h>
#include <xen/interface/elfnote.h>
-@@ -35,6 +36,8 @@ ENTRY(startup_32)
+@@ -36,6 +37,8 @@ ENTRY(startup_32)
/* Set up the stack pointer */
movl $(init_thread_union+THREAD_SIZE),%esp
@@ -2256,7 +2256,7 @@ Acked-by: jbeulich@novell.com
/* get vendor info */
xorl %eax,%eax # call CPUID with 0 -> return vendor ID
XEN_CPUID
-@@ -57,14 +60,58 @@ ENTRY(startup_32)
+@@ -58,14 +61,58 @@ ENTRY(startup_32)
movb $1,X86_HARD_MATH
@@ -2317,7 +2317,7 @@ Acked-by: jbeulich@novell.com
#define HYPERCALL_PAGE_OFFSET 0x1000
.org HYPERCALL_PAGE_OFFSET
ENTRY(hypercall_page)
-@@ -93,7 +140,8 @@ ENTRY(empty_zero_page)
+@@ -94,7 +141,8 @@ ENTRY(empty_zero_page)
/*
* The Global Descriptor Table contains 28 quadwords, per-CPU.
*/
@@ -2327,7 +2327,7 @@ Acked-by: jbeulich@novell.com
ENTRY(cpu_gdt_table)
.quad 0x0000000000000000 /* NULL descriptor */
.quad 0x0000000000000000 /* 0x0b reserved */
-@@ -135,12 +183,13 @@ ENTRY(cpu_gdt_table)
+@@ -136,12 +184,13 @@ ENTRY(cpu_gdt_table)
.quad 0x0000000000000000 /* 0xc0 APM CS 16 code (16 bit) */
.quad 0x0000000000000000 /* 0xc8 APM DS data */
@@ -2341,9 +2341,9 @@ Acked-by: jbeulich@novell.com
.quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
+ .align PAGE_SIZE_asm
- #if CONFIG_XEN_COMPAT <= 0x030002
- /*
-@@ -165,9 +214,9 @@ ENTRY(cpu_gdt_table)
+ #ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
+ # define XEN_DOM0_CAP 0
+@@ -178,9 +227,9 @@ ENTRY(cpu_gdt_table)
.ascii ",ELF_PADDR_OFFSET=0x"
utoa __PAGE_OFFSET
.ascii ",VIRT_ENTRY=0x"
@@ -2355,8 +2355,8 @@ Acked-by: jbeulich@novell.com
.ascii ",FEATURES=writable_page_tables"
.ascii "|writable_descriptor_tables"
.ascii "|auto_translated_physmap"
---- head-2011-06-30.orig/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/io_apic_32-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -34,6 +34,7 @@
#include <linux/pci.h>
#include <linux/msi.h>
@@ -2549,8 +2549,8 @@ Acked-by: jbeulich@novell.com
set_native_irq_info(irq, TARGET_CPUS);
spin_unlock_irqrestore(&ioapic_lock, flags);
---- head-2011-06-30.orig/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/ldt_32-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -177,16 +177,14 @@ static int read_default_ldt(void __user
{
int err;
@@ -2569,8 +2569,8 @@ Acked-by: jbeulich@novell.com
err = -EFAULT;
return err;
---- head-2011-06-30.orig/arch/x86/kernel/microcode-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/microcode-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/microcode-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/microcode-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -1,7 +1,7 @@
/*
* Intel CPU Microcode Update Driver for Linux
@@ -2598,8 +2598,8 @@ Acked-by: jbeulich@novell.com
return 0;
}
---- head-2011-06-30.orig/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/mpparse_32-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -36,7 +36,7 @@
/* Have we found an MP table */
@@ -2649,8 +2649,8 @@ Acked-by: jbeulich@novell.com
{
struct mpc_config_processor processor;
int boot_cpu = 0;
---- head-2011-06-30.orig/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:29:16.000000000 +0100
-+++ head-2011-06-30/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:32:16.000000000 +0100
+--- head-2011-09-07.orig/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:29:16.000000000 +0100
++++ head-2011-09-07/arch/x86/kernel/pci-dma-xen.c 2011-01-31 17:32:16.000000000 +0100
@@ -273,7 +273,7 @@ EXPORT_SYMBOL(dma_free_coherent);
int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
dma_addr_t device_addr, size_t size, int flags)
@@ -2686,8 +2686,8 @@ Acked-by: jbeulich@novell.com
return 0;
}
EXPORT_