aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2006-02-15 22:06:12 +0000
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2006-02-15 22:06:12 +0000
commit18e8c8c33f716e002d70453d353574487162b168 (patch)
tree5af42282d3b3968d752e865532436c0210dd9826
parentad08f1cd83c320f2b66bb4a867b4cb71aac4f4a1 (diff)
downloadxen-18e8c8c33f716e002d70453d353574487162b168.tar.gz
xen-18e8c8c33f716e002d70453d353574487162b168.tar.bz2
xen-18e8c8c33f716e002d70453d353574487162b168.zip
Update to Linux 2.6.16-rc3.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk> --HG-- rename : patches/linux-2.6.16-rc2/i386-mach-io-check-nmi.patch => patches/linux-2.6.16-rc3/i386-mach-io-check-nmi.patch rename : patches/linux-2.6.16-rc2/net-csum.patch => patches/linux-2.6.16-rc3/net-csum.patch rename : patches/linux-2.6.16-rc2/pmd-shared.patch => patches/linux-2.6.16-rc3/pmd-shared.patch rename : patches/linux-2.6.16-rc2/smp-alts.patch => patches/linux-2.6.16-rc3/smp-alts.patch
-rw-r--r--buildconfigs/linux-defconfig_xen0_x86_329
-rw-r--r--buildconfigs/linux-defconfig_xen0_x86_6410
-rw-r--r--buildconfigs/linux-defconfig_xenU_x86_326
-rw-r--r--buildconfigs/linux-defconfig_xenU_x86_647
-rw-r--r--buildconfigs/linux-defconfig_xen_x86_3237
-rw-r--r--buildconfigs/linux-defconfig_xen_x86_6436
-rw-r--r--buildconfigs/mk.linux-2.6-xen7
-rw-r--r--linux-2.6-xen-sparse/arch/i386/Kconfig1
-rw-r--r--linux-2.6-xen-sparse/arch/i386/Makefile2
-rw-r--r--linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile2
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c13
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c4
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c11
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c7
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c5
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c6
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c4
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c30
-rw-r--r--linux-2.6-xen-sparse/arch/i386/kernel/traps.c9
-rw-r--r--linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c1
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/Makefile2
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S5
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c20
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S3
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c20
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c11
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c5
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c6
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c11
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c39
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c5
-rw-r--r--linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c5
-rw-r--r--linux-2.6-xen-sparse/drivers/Makefile2
-rw-r--r--linux-2.6-xen-sparse/drivers/char/tty_io.c97
-rw-r--r--linux-2.6-xen-sparse/drivers/serial/Kconfig29
-rw-r--r--linux-2.6-xen-sparse/fs/Kconfig2
-rw-r--r--linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h2
-rw-r--r--linux-2.6-xen-sparse/include/asm-i386/system.h8
-rw-r--r--linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h16
-rw-r--r--linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h2
-rw-r--r--linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h4
-rw-r--r--linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h1
-rw-r--r--linux-2.6-xen-sparse/include/linux/mm.h2
-rw-r--r--linux-2.6-xen-sparse/mm/memory.c70
-rw-r--r--linux-2.6-xen-sparse/mm/page_alloc.c10
-rw-r--r--linux-2.6-xen-sparse/net/core/dev.c2
-rw-r--r--patches/linux-2.6.16-rc3/i386-mach-io-check-nmi.patch (renamed from patches/linux-2.6.16-rc2/i386-mach-io-check-nmi.patch)14
-rw-r--r--patches/linux-2.6.16-rc3/net-csum.patch (renamed from patches/linux-2.6.16-rc2/net-csum.patch)0
-rw-r--r--patches/linux-2.6.16-rc3/pmd-shared.patch (renamed from patches/linux-2.6.16-rc2/pmd-shared.patch)0
-rw-r--r--patches/linux-2.6.16-rc3/smp-alts.patch (renamed from patches/linux-2.6.16-rc2/smp-alts.patch)90
50 files changed, 384 insertions, 306 deletions
diff --git a/buildconfigs/linux-defconfig_xen0_x86_32 b/buildconfigs/linux-defconfig_xen0_x86_32
index aac0e4e1d6..e987a57c74 100644
--- a/buildconfigs/linux-defconfig_xen0_x86_32
+++ b/buildconfigs/linux-defconfig_xen0_x86_32
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xenU
-# Mon Feb 13 15:10:22 2006
+# Linux kernel version: 2.6.16-rc3-xen0
+# Wed Feb 15 20:55:18 2006
#
CONFIG_X86_32=y
CONFIG_SEMAPHORE_SLEEPERS=y
@@ -16,8 +16,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -259,6 +257,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
@@ -533,7 +532,6 @@ CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
CONFIG_MEGARAID_NEWGEN=y
# CONFIG_MEGARAID_MM is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -558,7 +556,6 @@ CONFIG_SCSI_SATA_INTEL_COMBINED=y
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
diff --git a/buildconfigs/linux-defconfig_xen0_x86_64 b/buildconfigs/linux-defconfig_xen0_x86_64
index c8f1c86fef..f8fb5ff815 100644
--- a/buildconfigs/linux-defconfig_xen0_x86_64
+++ b/buildconfigs/linux-defconfig_xen0_x86_64
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xen0
-# Fri Feb 3 16:53:41 2006
+# Linux kernel version: 2.6.16-rc3-xen0
+# Wed Feb 15 20:49:13 2006
#
CONFIG_X86_64=y
CONFIG_64BIT=y
@@ -21,8 +21,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -189,6 +187,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
@@ -463,7 +462,6 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_ADVANSYS is not set
CONFIG_MEGARAID_NEWGEN=y
# CONFIG_MEGARAID_MM is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -489,7 +487,6 @@ CONFIG_SCSI_BUSLOGIC=y
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
@@ -1183,7 +1180,6 @@ CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_INIT_DEBUG is not set
# CONFIG_DEBUG_RODATA is not set
#
diff --git a/buildconfigs/linux-defconfig_xenU_x86_32 b/buildconfigs/linux-defconfig_xenU_x86_32
index f10524271c..d75f6a474f 100644
--- a/buildconfigs/linux-defconfig_xenU_x86_32
+++ b/buildconfigs/linux-defconfig_xenU_x86_32
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xenU
-# Mon Feb 6 23:16:07 2006
+# Linux kernel version: 2.6.16-rc3-xenU
+# Wed Feb 15 20:56:26 2006
#
CONFIG_X86_32=y
CONFIG_SEMAPHORE_SLEEPERS=y
@@ -16,7 +16,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -214,6 +213,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
diff --git a/buildconfigs/linux-defconfig_xenU_x86_64 b/buildconfigs/linux-defconfig_xenU_x86_64
index e4e5b19a63..e76a65c49b 100644
--- a/buildconfigs/linux-defconfig_xenU_x86_64
+++ b/buildconfigs/linux-defconfig_xenU_x86_64
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xenU
-# Mon Feb 6 23:49:06 2006
+# Linux kernel version: 2.6.16-rc3-xenU
+# Wed Feb 15 20:49:39 2006
#
CONFIG_X86_64=y
CONFIG_64BIT=y
@@ -21,7 +21,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -165,6 +164,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
@@ -1085,7 +1085,6 @@ CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_INIT_DEBUG is not set
# CONFIG_DEBUG_RODATA is not set
#
diff --git a/buildconfigs/linux-defconfig_xen_x86_32 b/buildconfigs/linux-defconfig_xen_x86_32
index 2106e74e0b..a2aa3bbeee 100644
--- a/buildconfigs/linux-defconfig_xen_x86_32
+++ b/buildconfigs/linux-defconfig_xen_x86_32
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xenU
-# Mon Feb 13 15:12:00 2006
+# Linux kernel version: 2.6.16-rc3-xen
+# Wed Feb 15 20:57:16 2006
#
CONFIG_X86_32=y
CONFIG_SEMAPHORE_SLEEPERS=y
@@ -16,9 +16,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
-CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -291,6 +288,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=m
@@ -706,12 +704,10 @@ CONFIG_ACT200L_DONGLE=m
#
# Old SIR device drivers
#
-CONFIG_IRPORT_SIR=m
#
# Old Serial dongle support
#
-# CONFIG_DONGLE_OLD is not set
#
# FIR device drivers
@@ -849,8 +845,6 @@ CONFIG_MTD_DILNETPC=m
CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
# CONFIG_MTD_L440GX is not set
CONFIG_MTD_PCI=m
-CONFIG_MTD_PCMCIA=m
-# CONFIG_MTD_PCMCIA_ANONYMOUS is not set
CONFIG_MTD_PLATRAM=m
#
@@ -1035,7 +1029,6 @@ CONFIG_BLK_DEV_NS87415=m
CONFIG_BLK_DEV_PDC202XX_OLD=y
CONFIG_PDC202XX_BURST=y
CONFIG_BLK_DEV_PDC202XX_NEW=y
-CONFIG_PDC202XX_FORCE=y
CONFIG_BLK_DEV_SVWKS=y
CONFIG_BLK_DEV_SIIMAGE=y
CONFIG_BLK_DEV_SIS5513=y
@@ -1104,7 +1097,6 @@ CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
@@ -1130,7 +1122,6 @@ CONFIG_SCSI_SATA_INTEL_COMBINED=y
# CONFIG_SCSI_BUSLOGIC is not set
CONFIG_SCSI_DMX3191D=m
# CONFIG_SCSI_EATA is not set
-CONFIG_SCSI_EATA_PIO=m
CONFIG_SCSI_FUTURE_DOMAIN=m
# CONFIG_SCSI_GDTH is not set
CONFIG_SCSI_IPS=m
@@ -1236,6 +1227,7 @@ CONFIG_IEEE1394_RAWIO=m
CONFIG_I2O=m
CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
CONFIG_I2O_CONFIG=m
CONFIG_I2O_CONFIG_OLD_IOCTL=y
CONFIG_I2O_BUS=m
@@ -1307,7 +1299,6 @@ CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
CONFIG_PCMCIA_XIRCOM=m
-# CONFIG_PCMCIA_XIRTULIP is not set
CONFIG_HP100=m
CONFIG_NET_PCI=y
CONFIG_PCNET32=m
@@ -1474,7 +1465,6 @@ CONFIG_DLCI=m
CONFIG_DLCI_COUNT=24
CONFIG_DLCI_MAX=8
CONFIG_WAN_ROUTER_DRIVERS=y
-# CONFIG_VENDOR_SANGOMA is not set
CONFIG_CYCLADES_SYNC=m
CONFIG_CYCLOMX_X25=y
CONFIG_LAPBETHER=m
@@ -1566,7 +1556,6 @@ CONFIG_ISDN_X25=y
#
# ISDN feature submodules
#
-# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DIVERSION is not set
#
@@ -1633,7 +1622,6 @@ CONFIG_HISAX_HDLC=y
#
# Active cards
#
-# CONFIG_HYSDN is not set
#
# CAPI subsystem
@@ -1860,7 +1848,6 @@ CONFIG_SONYPI=m
#
# Ftape, the floppy tape device driver
#
-# CONFIG_FTAPE is not set
CONFIG_AGP=m
CONFIG_AGP_ALI=m
CONFIG_AGP_ATI=m
@@ -2007,6 +1994,7 @@ CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
@@ -2078,7 +2066,6 @@ CONFIG_VIDEO_ZORAN_DC10=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZR36120 is not set
CONFIG_VIDEO_MEYE=m
# CONFIG_VIDEO_SAA7134 is not set
CONFIG_VIDEO_MXB=m
@@ -2088,6 +2075,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_CX88=m
# CONFIG_VIDEO_CX88_DVB is not set
CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_OVCAMCHIP=m
CONFIG_VIDEO_AUDIO_DECODER=m
@@ -2170,7 +2158,6 @@ CONFIG_DVB_STV0299=m
CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA80XX=m
CONFIG_DVB_MT312=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_S5H1420=m
@@ -2192,7 +2179,6 @@ CONFIG_DVB_DIB3000MC=m
#
# DVB-C (cable) frontends
#
-CONFIG_DVB_ATMEL_AT76C651=m
CONFIG_DVB_VES1820=m
CONFIG_DVB_TDA10021=m
CONFIG_DVB_STV0297=m
@@ -2200,7 +2186,6 @@ CONFIG_DVB_STV0297=m
#
# ATSC (North American/Korean Terresterial DTV) frontends
#
-CONFIG_DVB_NXT2002=m
CONFIG_DVB_NXT200X=m
CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
@@ -2276,7 +2261,6 @@ CONFIG_FB_VOODOO1=m
CONFIG_FB_CYBLA=m
CONFIG_FB_TRIDENT=m
# CONFIG_FB_TRIDENT_ACCEL is not set
-# CONFIG_FB_PM3 is not set
CONFIG_FB_GEODE=y
CONFIG_FB_GEODE_GX1=m
CONFIG_FB_VIRTUAL=m
@@ -2786,10 +2770,8 @@ CONFIG_CRAMFS=y
CONFIG_VXFS_FS=m
CONFIG_HPFS_FS=m
CONFIG_QNX4FS_FS=m
-# CONFIG_QNX4FS_RW is not set
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
@@ -2951,13 +2933,6 @@ CONFIG_SECURITY=y
CONFIG_SECURITY_CAPABILITIES=y
CONFIG_SECURITY_ROOTPLUG=m
CONFIG_SECURITY_SECLVL=m
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
#
# Cryptographic options
diff --git a/buildconfigs/linux-defconfig_xen_x86_64 b/buildconfigs/linux-defconfig_xen_x86_64
index 5fffef64a4..158eb3de53 100644
--- a/buildconfigs/linux-defconfig_xen_x86_64
+++ b/buildconfigs/linux-defconfig_xen_x86_64
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc2-xen
-# Fri Feb 3 16:30:34 2006
+# Linux kernel version: 2.6.16-rc3-xen
+# Wed Feb 15 20:50:05 2006
#
CONFIG_X86_64=y
CONFIG_64BIT=y
@@ -21,9 +21,6 @@ CONFIG_DMI=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
-CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -160,6 +157,7 @@ CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_HOTKEY=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=m
CONFIG_ACPI_ASUS=m
CONFIG_ACPI_IBM=m
@@ -197,6 +195,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
@@ -578,12 +577,10 @@ CONFIG_ACT200L_DONGLE=m
#
# Old SIR device drivers
#
-CONFIG_IRPORT_SIR=m
#
# Old Serial dongle support
#
-# CONFIG_DONGLE_OLD is not set
#
# FIR device drivers
@@ -880,7 +877,6 @@ CONFIG_BLK_DEV_IT821X=m
CONFIG_BLK_DEV_PDC202XX_OLD=y
# CONFIG_PDC202XX_BURST is not set
CONFIG_BLK_DEV_PDC202XX_NEW=y
-CONFIG_PDC202XX_FORCE=y
CONFIG_BLK_DEV_SVWKS=y
CONFIG_BLK_DEV_SIIMAGE=y
CONFIG_BLK_DEV_SIS5513=y
@@ -948,7 +944,6 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-# CONFIG_SCSI_ADVANSYS is not set
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
@@ -975,7 +970,6 @@ CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
CONFIG_SCSI_GDTH=m
CONFIG_SCSI_IPS=m
@@ -1315,7 +1309,6 @@ CONFIG_ISDN_TTY_FAX=y
#
# ISDN feature submodules
#
-CONFIG_ISDN_DRV_LOOP=m
CONFIG_ISDN_DIVERSION=m
#
@@ -1378,8 +1371,6 @@ CONFIG_HISAX_HDLC=y
#
# Active cards
#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
#
# CAPI subsystem
@@ -1583,7 +1574,6 @@ CONFIG_R3964=m
#
# Ftape, the floppy tape device driver
#
-# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
CONFIG_DRM=m
CONFIG_DRM_TDFX=m
@@ -1703,6 +1693,7 @@ CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
@@ -1774,7 +1765,6 @@ CONFIG_VIDEO_ZORAN_DC10=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZR36120 is not set
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_DVB=m
@@ -1787,6 +1777,7 @@ CONFIG_VIDEO_CX88=m
CONFIG_VIDEO_CX88_DVB=m
CONFIG_VIDEO_CX88_ALSA=m
CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y
+CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_OVCAMCHIP=m
CONFIG_VIDEO_AUDIO_DECODER=m
@@ -1874,7 +1865,6 @@ CONFIG_DVB_STV0299=m
CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA80XX=m
CONFIG_DVB_MT312=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_S5H1420=m
@@ -1896,7 +1886,6 @@ CONFIG_DVB_DIB3000MC=m
#
# DVB-C (cable) frontends
#
-CONFIG_DVB_ATMEL_AT76C651=m
CONFIG_DVB_VES1820=m
CONFIG_DVB_TDA10021=m
CONFIG_DVB_STV0297=m
@@ -1904,7 +1893,6 @@ CONFIG_DVB_STV0297=m
#
# ATSC (North American/Korean Terresterial DTV) frontends
#
-CONFIG_DVB_NXT2002=m
CONFIG_DVB_NXT200X=m
CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
@@ -1972,7 +1960,6 @@ CONFIG_FB_3DFX_ACCEL=y
CONFIG_FB_VOODOO1=m
CONFIG_FB_TRIDENT=m
CONFIG_FB_TRIDENT_ACCEL=y
-# CONFIG_FB_PM3 is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set
@@ -2349,7 +2336,6 @@ CONFIG_EDAC=m
#
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_AMD76X=m
CONFIG_EDAC_E7XXX=m
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82875P=m
@@ -2466,10 +2452,8 @@ CONFIG_CRAMFS=y
CONFIG_VXFS_FS=m
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=m
-# CONFIG_QNX4FS_RW is not set
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
@@ -2602,7 +2586,6 @@ CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_FRAME_POINTER is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_INIT_DEBUG is not set
# CONFIG_DEBUG_RODATA is not set
#
@@ -2616,13 +2599,6 @@ CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SECLVL is not set
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
#
# Cryptographic options
diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen
index 61f83e05b1..6f9bd2ca2c 100644
--- a/buildconfigs/mk.linux-2.6-xen
+++ b/buildconfigs/mk.linux-2.6-xen
@@ -2,8 +2,8 @@
OS = linux
LINUX_SERIES = 2.6
-LINUX_VER = 2.6.16-rc2
-LINUX_SRCS = linux-2.6.15.tar.bz2 patch-2.6.16-rc2.bz2
+LINUX_VER = 2.6.16-rc3
+LINUX_SRCS = linux-2.6.15.tar.bz2 patch-2.6.16-rc3.bz2
LINUX_PDIR = linux-$(LINUX_VER)
EXTRAVERSION ?= xen
@@ -20,6 +20,7 @@ build: $(LINUX_DIR)/include/linux/autoconf.h
$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \
$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(DESTDIR) modules_install ; \
fi
+ $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) vmlinuz
$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install
pristine-$(LINUX_PDIR)/.valid-srcs: $(LINUX_SRCS)
@@ -33,7 +34,7 @@ pristine-$(LINUX_PDIR)/.valid-srcs: $(LINUX_SRCS)
touch $(@D)/.hgskip
touch $@
-pristine-linux-%.16-rc2/.valid-pristine: pristine-$(LINUX_PDIR)/.valid-srcs
+pristine-linux-%.16-rc3/.valid-pristine: pristine-$(LINUX_PDIR)/.valid-srcs
touch $@ # update timestamp to avoid rebuild
$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref
diff --git a/linux-2.6-xen-sparse/arch/i386/Kconfig b/linux-2.6-xen-sparse/arch/i386/Kconfig
index 4b1b696042..6e46563231 100644
--- a/linux-2.6-xen-sparse/arch/i386/Kconfig
+++ b/linux-2.6-xen-sparse/arch/i386/Kconfig
@@ -476,6 +476,7 @@ config HIGHMEM4G
config HIGHMEM64G
bool "64GB"
+ depends on X86_CMPXCHG64
help
Select this if you have a 32-bit processor and more than 4
gigabytes of physical RAM.
diff --git a/linux-2.6-xen-sparse/arch/i386/Makefile b/linux-2.6-xen-sparse/arch/i386/Makefile
index 230a132fdf..527707677e 100644
--- a/linux-2.6-xen-sparse/arch/i386/Makefile
+++ b/linux-2.6-xen-sparse/arch/i386/Makefile
@@ -116,7 +116,7 @@ all: vmlinuz
vmlinuz: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@
-install: vmlinux
+install:
$(Q)$(MAKE) $(build)=$(boot) XENGUEST=$(XENGUEST) $@
else
all: bzImage
diff --git a/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile b/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile
index 05587b4832..bf15a77094 100644
--- a/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile
+++ b/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile
@@ -10,7 +10,7 @@ vmlinux-stripped: vmlinux FORCE
INSTALL_ROOT := $(patsubst %/boot,%,$(INSTALL_PATH))
XINSTALL_NAME ?= $(KERNELRELEASE)
-install: vmlinuz
+install:
mkdir -p $(INSTALL_ROOT)/boot
ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(XENGUEST)$(INSTALL_SUFFIX)
rm -f $(INSTALL_ROOT)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c
index b292df0c52..cb0551dbb0 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c
@@ -250,10 +250,17 @@ acpi_parse_lapic(acpi_table_entry_header * header, const unsigned long end)
acpi_table_print_madt_entry(header);
- /* Register even disabled CPUs for cpu hotplug */
-
- x86_acpiid_to_apicid[processor->acpi_id] = processor->id;
+ /* Record local apic id only when enabled */
+ if (processor->flags.enabled)
+ x86_acpiid_to_apicid[processor->acpi_id] = processor->id;
+ /*
+ * We need to register disabled CPU as well to permit
+ * counting disabled CPUs. This allows us to size
+ * cpus_possible_map more accurately, to permit
+ * to not preallocating memory for all NR_CPUS
+ * when we use CPU hotplug.
+ */
mp_register_lapic(processor->id, /* APIC ID */
processor->flags.enabled); /* Enabled? */
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c
index bee39abf96..6e0b15e4f7 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c
@@ -74,8 +74,10 @@ void ack_bad_irq(unsigned int irq)
* holds up an irq slot - in excessive cases (when multiple
* unexpected vectors occur) that might lock up the APIC
* completely.
+ * But only ack when the APIC is enabled -AK
*/
- ack_APIC_irq();
+ if (cpu_has_apic)
+ ack_APIC_irq();
}
int get_physical_broadcast(void)
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c
index b09ee4933b..5d06b3a4a2 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c
@@ -49,6 +49,7 @@ static void default_init(struct cpuinfo_x86 * c)
static struct cpu_dev default_cpu = {
.c_init = default_init,
+ .c_vendor = "Unknown",
};
static struct cpu_dev * this_cpu = &default_cpu;
@@ -155,6 +156,7 @@ static void __devinit get_cpu_vendor(struct cpuinfo_x86 *c, int early)
{
char *v = c->x86_vendor_id;
int i;
+ static int printed;
for (i = 0; i < X86_VENDOR_NUM; i++) {
if (cpu_devs[i]) {
@@ -164,10 +166,17 @@ static void __devinit get_cpu_vendor(struct cpuinfo_x86 *c, int early)
c->x86_vendor = i;
if (!early)
this_cpu = cpu_devs[i];
- break;
+ return;
}
}
}
+ if (!printed) {
+ printed++;
+ printk(KERN_ERR "CPU: Vendor unknown, using generic init.\n");
+ printk(KERN_ERR "CPU: Your system may be unstable.\n");
+ }
+ c->x86_vendor = X86_VENDOR_UNKNOWN;
+ this_cpu = &default_cpu;
}
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c
index cdce54f003..11cf134ddd 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c
@@ -786,8 +786,6 @@ static int find_irq_entry(int apic, int pin, int type)
return -1;
}
-#ifndef CONFIG_XEN
-#endif
/*
* Find the pin to which IRQ[irq] (ISA) is connected
*/
@@ -1530,6 +1528,8 @@ void __init print_IO_APIC(void)
return;
}
+#if 0
+
static void print_APIC_bitfield (int base)
{
unsigned int v;
@@ -1670,6 +1670,9 @@ void /*__init*/ print_PIC(void)
v = inb(0x4d1) << 8 | inb(0x4d0);
printk(KERN_DEBUG "... PIC ELCR: %04x\n", v);
}
+
+#endif /* 0 */
+
#else
void __init print_IO_APIC(void) { }
#endif /* !CONFIG_XEN */
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c
index 9b2c9de220..67a4c7c7a2 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c
@@ -856,6 +856,8 @@ void __init mp_register_lapic_address (
#ifndef CONFIG_XEN
mp_lapic_addr = (unsigned long) address;
+ set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
+
if (boot_cpu_physical_apicid == -1U)
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
@@ -951,6 +953,9 @@ void __init mp_register_ioapic (
mp_ioapics[idx].mpc_flags = MPC_APIC_USABLE;
mp_ioapics[idx].mpc_apicaddr = address;
+#ifndef CONFIG_XEN
+ set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
+#endif
if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 < 15))
mp_ioapics[idx].mpc_apicid = io_apic_get_unique_id(idx, id);
else
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c
index e565ad83c7..b193ece654 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c
@@ -221,8 +221,10 @@ void show_regs(struct pt_regs * regs)
if (user_mode(regs))
printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp);
- printk(" EFLAGS: %08lx %s (%s)\n",
- regs->eflags, print_tainted(), system_utsname.release);
+ printk(" EFLAGS: %08lx %s (%s %.*s)\n",
+ regs->eflags, print_tainted(), system_utsname.release,
+ (int)strcspn(system_utsname.version, " "),
+ system_utsname.version);
printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
regs->eax,regs->ebx,regs->ecx,regs->edx);
printk("ESI: %08lx EDI: %08lx EBP: %08lx",
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c b/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c
index 6cc9c4b3ad..86c76dce75 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c
@@ -87,11 +87,7 @@ EXPORT_SYMBOL(cpu_online_map);
cpumask_t cpu_callin_map;
cpumask_t cpu_callout_map;
EXPORT_SYMBOL(cpu_callout_map);
-#ifdef CONFIG_HOTPLUG_CPU
-cpumask_t cpu_possible_map = CPU_MASK_ALL;
-#else
cpumask_t cpu_possible_map;
-#endif
EXPORT_SYMBOL(cpu_possible_map);
static cpumask_t smp_commenced_mask;
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c
index 6e75596e29..c94e7abb15 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c
@@ -85,7 +85,11 @@ asmlinkage void page_fault(void);
asmlinkage void coprocessor_error(void);
asmlinkage void simd_coprocessor_error(void);
asmlinkage void alignment_check(void);
+#ifndef CONFIG_XEN
+asmlinkage void spurious_interrupt_bug(void);
+#else
asmlinkage void fixup_4gb_segment(void);
+#endif
asmlinkage void machine_check(void);
static int kstack_depth_to_print = 24;
@@ -163,7 +167,8 @@ static void show_trace_log_lvl(struct task_struct *task,
stack = (unsigned long*)context->previous_esp;
if (!stack)
break;
- printk(KERN_EMERG " =======================\n");
+ printk(log_lvl);
+ printk(" =======================\n");
}
}
@@ -236,9 +241,11 @@ void show_registers(struct pt_regs *regs)
}
print_modules();
printk(KERN_EMERG "CPU: %d\nEIP: %04x:[<%08lx>] %s VLI\n"
- "EFLAGS: %08lx (%s) \n",
+ "EFLAGS: %08lx (%s %.*s) \n",
smp_processor_id(), 0xffff & regs->xcs, regs->eip,
- print_tainted(), regs->eflags, system_utsname.release);
+ print_tainted(), regs->eflags, system_utsname.release,
+ (int)strcspn(system_utsname.version, " "),
+ system_utsname.version);
print_symbol(KERN_EMERG "EIP is at %s\n", regs->eip);
printk(KERN_EMERG "eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n",
regs->eax, regs->ebx, regs->ecx, regs->edx);
@@ -384,7 +391,7 @@ void die(const char * str, struct pt_regs * regs, long err)
static inline void die_if_kernel(const char * str, struct pt_regs * regs, long err)
{
- if (!user_mode_vm(regs))
+ if (!user_mode_vm(regs))
die(str, regs, err);
}
@@ -479,15 +486,11 @@ DO_VM86_ERROR( 3, SIGTRAP, "int3", int3)
DO_VM86_ERROR( 4, SIGSEGV, "overflow", overflow)
DO_VM86_ERROR( 5, SIGSEGV, "bounds", bounds)
DO_ERROR_INFO( 6, SIGILL, "invalid opcode", invalid_op, ILL_ILLOPN, regs->eip)
-DO_VM86_ERROR( 7, SIGSEGV, "device not available", device_not_available)
DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun)
DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS)
DO_ERROR(11, SIGBUS, "segment not present", segment_not_present)
DO_ERROR(12, SIGBUS, "stack segment", stack_segment)
DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
-#ifdef CONFIG_X86_MCE
-DO_ERROR(18, SIGBUS, "machine check", machine_check)
-#endif
DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0)
fastcall void __kprobes do_general_protection(struct pt_regs * regs,
@@ -749,7 +752,7 @@ fastcall void __kprobes do_debug(struct pt_regs * regs, long error_code)
* check for kernel mode by just checking the CPL
* of CS.
*/
- if (!user_mode(regs))
+ if (!user_mode(regs))
goto clear_TF_reenable;
}
@@ -916,6 +919,15 @@ fastcall void do_simd_coprocessor_error(struct pt_regs * regs,
}
#ifndef CONFIG_XEN
+fastcall void do_spurious_interrupt_bug(struct pt_regs * regs,
+ long error_code)
+{
+#if 0
+ /* No need to warn about this any longer. */
+ printk("Ignoring P6 Local APIC Spurious Interrupt Bug...\n");
+#endif
+}
+
fastcall void setup_x86_bogus_stack(unsigned char * stk)
{
unsigned long *switch16_ptr, *switch32_ptr;
diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/traps.c b/linux-2.6-xen-sparse/arch/i386/kernel/traps.c
index 8416df4423..85d4645c1a 100644
--- a/linux-2.6-xen-sparse/arch/i386/kernel/traps.c
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/traps.c
@@ -166,7 +166,8 @@ static void show_trace_log_lvl(struct task_struct *task,
stack = (unsigned long*)context->previous_esp;
if (!stack)
break;
- printk(KERN_EMERG " =======================\n");
+ printk(log_lvl);
+ printk(" =======================\n");
}
}
@@ -239,9 +240,11 @@ void show_registers(struct pt_regs *regs)
}
print_modules();
printk(KERN_EMERG "CPU: %d\nEIP: %04x:[<%08lx>] %s VLI\n"
- "EFLAGS: %08lx (%s) \n",
+ "EFLAGS: %08lx (%s %.*s) \n",
smp_processor_id(), 0xffff & regs->xcs, regs->eip,
- print_tainted(), regs->eflags, system_utsname.release);
+ print_tainted(), regs->eflags, system_utsname.release,
+ (int)strcspn(system_utsname.version, " "),
+ system_utsname.version);
print_symbol(KERN_EMERG "EIP is at %s\n", regs->eip);
printk(KERN_EMERG "eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n",
regs->eax, regs->ebx, regs->ecx, regs->edx);
diff --git a/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c b/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c
index adf7743fd6..12d79adb64 100644
--- a/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c
+++ b/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c
@@ -227,7 +227,6 @@ struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
set_page_count(pte, 1);
}
#endif
-
return pte;
}
diff --git a/linux-2.6-xen-sparse/arch/x86_64/Makefile b/linux-2.6-xen-sparse/arch/x86_64/Makefile
index 51c54df7cf..6ac38f51a8 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/Makefile
+++ b/linux-2.6-xen-sparse/arch/x86_64/Makefile
@@ -82,7 +82,7 @@ all: vmlinuz
vmlinuz: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@
-install: vmlinux
+install:
$(Q)$(MAKE) $(build)=$(boot) XENGUEST=$(XENGUEST) $@
else
#Default target when executing "make"
diff --git a/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S b/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S
index 271f530fd6..73129e2dac 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S
+++ b/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S
@@ -704,7 +704,7 @@ ia32_sys_call_table:
.quad sys_mknodat
.quad sys_fchownat
.quad compat_sys_futimesat
- .quad compat_sys_newfstatat /* 300 */
+ .quad sys32_fstatat /* 300 */
.quad sys_unlinkat
.quad sys_renameat
.quad sys_linkat
@@ -712,6 +712,9 @@ ia32_sys_call_table:
.quad sys_readlinkat /* 305 */
.quad sys_fchmodat
.quad sys_faccessat
+ .quad sys_ni_syscall /* pselect6 for now */
+ .quad sys_ni_syscall /* ppoll for now */
+ .quad sys_unshare /* 310 */
ia32_syscall_end:
.rept IA32_NR_syscalls-(ia32_syscall_end-ia32_sys_call_table)/8
.quad ni_syscall
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c
index 66a432a32c..a1c434cda5 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c
@@ -38,6 +38,26 @@
int apic_verbosity;
+/*
+ * 'what should we do if we get a hw irq event on an illegal vector'.
+ * each architecture has to answer this themselves.
+ */
+void ack_bad_irq(unsigned int irq)
+{
+ printk("unexpected IRQ trap at vector %02x\n", irq);
+ /*
+ * Currently unexpected vectors happen only on SMP and APIC.
+ * We _must_ ack these because every local APIC has only N
+ * irq slots per priority level, and a 'hanging, unacked' IRQ
+ * holds up an irq slot - in excessive cases (when multiple
+ * unexpected vectors occur) that might lock up the APIC
+ * completely.
+ * But don't ack when the APIC is disabled. -AK
+ */
+ if (!disable_apic)
+ ack_APIC_irq();
+}
+
#ifdef CONFIG_XEN
void switch_APIC_timer_to_ipi(void *cpumask) { }
EXPORT_SYMBOL(switch_APIC_timer_to_ipi);
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
index b1db1916cd..a010a17bb5 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
@@ -996,7 +996,7 @@ KPROBE_ENTRY(debug)
#if 0
/* runs on exception stack */
-ENTRY(nmi)
+KPROBE_ENTRY(nmi)
INTR_FRAME
pushq $-1
CFI_ADJUST_CFA_OFFSET 8
@@ -1043,6 +1043,7 @@ paranoid_schedule:
cli
jmp paranoid_userspace
CFI_ENDPROC
+ .previous .text
#endif
KPROBE_ENTRY(int3)
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c
index ed8f71c8d1..0ffe38e01f 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c
@@ -354,6 +354,16 @@ void __init check_ioapic(void)
#endif
/* RED-PEN skip them on mptables too? */
return;
+ case PCI_VENDOR_ID_ATI:
+#ifndef CONFIG_XEN
+ if (apic_runs_main_timer != 0)
+ break;
+ printk(KERN_INFO
+ "ATI board detected. Using APIC/PM timer.\n");
+ apic_runs_main_timer = 1;
+ nohpet = 1;
+#endif
+ return;
}
/* No multi-function device? */
@@ -2105,7 +2115,7 @@ int __init io_apic_get_redir_entries (int ioapic)
}
-int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int polarity)
+int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low)
{
struct IO_APIC_route_entry entry;
unsigned long flags;
@@ -2127,8 +2137,8 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p
entry.delivery_mode = INT_DELIVERY_MODE;
entry.dest_mode = INT_DEST_MODE;
entry.dest.logical.logical_dest = cpu_mask_to_apicid(TARGET_CPUS);
- entry.trigger = triggering;
- entry.polarity = polarity;
+ entry.trigger = edge_level;
+ entry.polarity = active_high_low;
entry.mask = 1; /* Disabled (masked) */
irq = gsi_irq_sharing(irq);
@@ -2143,9 +2153,9 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p
apic_printk(APIC_VERBOSE,KERN_DEBUG "IOAPIC[%d]: Set PCI routing entry (%d-%d -> 0x%x -> "
"IRQ %d Mode:%i Active:%i)\n", ioapic,
mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq,
- triggering, polarity);
+ edge_level, active_high_low);
- ioapic_register_intr(irq, entry.vector, triggering);
+ ioapic_register_intr(irq, entry.vector, edge_level);
if (!ioapic && (irq < 16))
disable_8259A_irq(irq);
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c
index 331e7ef4db..c64715db9e 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c
@@ -155,3 +155,14 @@ asmlinkage void do_softirq(void)
local_irq_restore(flags);
}
EXPORT_SYMBOL(do_softirq);
+
+#ifndef CONFIG_X86_LOCAL_APIC
+/*
+ * 'what should we do if we get a hw irq event on an illegal vector'.
+ * each architecture has to answer this themselves.
+ */
+void ack_bad_irq(unsigned int irq)
+{
+ printk("unexpected IRQ trap at vector %02x\n", irq);
+}
+#endif
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c
index 4a95cb20ca..5d3f6b3d3a 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c
@@ -687,6 +687,8 @@ void __init mp_register_lapic_address (
#ifndef CONFIG_XEN
mp_lapic_addr = (unsigned long) address;
+ set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
+
if (boot_cpu_id == -1U)
boot_cpu_id = GET_APIC_ID(apic_read(APIC_ID));
@@ -782,6 +784,9 @@ void __init mp_register_ioapic (
mp_ioapics[idx].mpc_flags = MPC_APIC_USABLE;
mp_ioapics[idx].mpc_apicaddr = address;
+#ifndef CONFIG_XEN
+ set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
+#endif
mp_ioapics[idx].mpc_apicid = id;
mp_ioapics[idx].mpc_apicver = io_apic_get_version(idx);
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c
index 55a3b5dfdc..a6fcc6a408 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c
@@ -454,8 +454,10 @@ static inline void __save_init_fpu( struct task_struct *tsk )
* This could still be optimized:
* - fold all the options into a flag word and test it with a single test.
* - could test fs/gs bitsliced
+ *
+ * Kprobes not supported here. Set the probe on schedule instead.
*/
-struct task_struct *
+__kprobes struct task_struct *
__switch_to(struct task_struct *prev_p, struct task_struct *next_p)
{
struct thread_struct *prev = &prev_p->thread,
@@ -494,7 +496,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
if (unlikely(next->tls_array[i] != prev->tls_array[i])) { \
mcl->op = __HYPERVISOR_update_descriptor; \
mcl->args[0] = virt_to_machine( \
- &get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN + i]);\
+ &cpu_gdt(cpu)[GDT_ENTRY_TLS_MIN + i]); \
mcl->args[1] = next->tls_array[i]; \
mcl++; \
} \
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
index 7ad9d8a6b9..5cffa842e8 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
@@ -130,7 +130,6 @@ unsigned long saved_video_mode;
/*
* Setup options
*/
-struct drive_info_struct { char dummy[32]; } drive_info;
struct screen_info screen_info;
struct sys_desc_table_struct {
unsigned short length;
@@ -628,7 +627,6 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_XEN
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
- drive_info = DRIVE_INFO;
kernel_end = 0; /* dummy */
screen_info = SCREEN_INFO;
@@ -664,7 +662,6 @@ void __init setup_arch(char **cmdline_p)
ARCH_SETUP
#else
ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
- drive_info = DRIVE_INFO;
screen_info = SCREEN_INFO;
edid_info = EDID_INFO;
saved_video_mode = SAVED_VIDEO_MODE;
@@ -936,7 +933,7 @@ void __init setup_arch(char **cmdline_p)
e820_setup_gap();
#ifdef CONFIG_GART_IOMMU
- iommu_hole_init();
+ iommu_hole_init();
#endif
#ifdef CONFIG_XEN
@@ -1101,6 +1098,7 @@ static void __init amd_detect_cmp(struct cpuinfo_x86 *c)
static int __init init_amd(struct cpuinfo_x86 *c)
{
int r;
+ unsigned level;
#ifdef CONFIG_SMP
unsigned long value;
@@ -1123,6 +1121,11 @@ static int __init init_amd(struct cpuinfo_x86 *c)
3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */
clear_bit(0*32+31, &c->x86_capability);
+ /* On C+ stepping K8 rep microcode works well for copy/memset */
+ level = cpuid_eax(1);
+ if (c->x86 == 15 && ((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58))
+ set_bit(X86_FEATURE_REP_GOOD, &c->x86_capability);
+
r = get_model_name(c);
if (!r) {
switch (c->x86) {
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c
index f3695d8c2e..c2e1f7af6a 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c
@@ -90,6 +90,20 @@ static inline void conditional_sti(struct pt_regs *regs)
local_irq_enable();
}
+static inline void preempt_conditional_sti(struct pt_regs *regs)
+{
+ preempt_disable();
+ if (regs->eflags & X86_EFLAGS_IF)
+ local_irq_enable();
+}
+
+static inline void preempt_conditional_cli(struct pt_regs *regs)
+{
+ if (regs->eflags & X86_EFLAGS_IF)
+ local_irq_disable();
+ preempt_enable_no_resched();
+}
+
static int kstack_depth_to_print = 10;
#ifdef CONFIG_KALLSYMS
@@ -372,7 +386,7 @@ void out_of_line_bug(void)
static DEFINE_SPINLOCK(die_lock);
static int die_owner = -1;
-unsigned long oops_begin(void)
+unsigned __kprobes long oops_begin(void)
{
int cpu = safe_smp_processor_id();
unsigned long flags;
@@ -391,7 +405,7 @@ unsigned long oops_begin(void)
return flags;
}
-void oops_end(unsigned long flags)
+void __kprobes oops_end(unsigned long flags)
{
die_owner = -1;
bust_spinlocks(0);
@@ -400,7 +414,7 @@ void oops_end(unsigned long flags)
panic("Oops");
}
-void __die(const char * str, struct pt_regs * regs, long err)
+void __kprobes __die(const char * str, struct pt_regs * regs, long err)
{
static int die_counter;
printk(KERN_EMERG "%s: %04lx [%u] ", str, err & 0xffff,++die_counter);
@@ -433,7 +447,7 @@ void die(const char * str, struct pt_regs * regs, long err)
}
#ifdef CONFIG_X86_LOCAL_APIC
-void die_nmi(char *str, struct pt_regs *regs)
+void __kprobes die_nmi(char *str, struct pt_regs *regs)
{
unsigned long flags = oops_begin();
@@ -577,7 +591,8 @@ asmlinkage void __kprobes do_general_protection(struct pt_regs * regs,
}
}
-static void mem_parity_error(unsigned char reason, struct pt_regs * regs)
+static __kprobes void
+mem_parity_error(unsigned char reason, struct pt_regs * regs)
{
printk("Uhhuh. NMI received. Dazed and confused, but trying to continue\n");
printk("You probably have a hardware problem with your RAM chips\n");
@@ -589,7 +604,8 @@ static void mem_parity_error(unsigned char reason, struct pt_regs * regs)
#endif /* XEN */
}
-static void io_check_error(unsigned char reason, struct pt_regs * regs)
+static __kprobes void
+io_check_error(unsigned char reason, struct pt_regs * regs)
{
printk("NMI: IOCK error (debug interrupt?)\n");
show_registers(regs);
@@ -604,7 +620,8 @@ static void io_check_error(unsigned char reason, struct pt_regs * regs)
#endif /* XEN */
}
-static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
+static __kprobes void
+unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
{ printk("Uhhuh. NMI received for unknown reason %02x.\n", reason);
printk("Dazed and confused, but trying to continue\n");
printk("Do you have a strange power saving mode enabled?\n");
@@ -612,7 +629,7 @@ static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
/* Runs on IST stack. This code must keep interrupts off all the time.
Nested NMIs are prevented by the CPU. */
-asmlinkage void default_do_nmi(struct pt_regs *regs)
+asmlinkage __kprobes void default_do_nmi(struct pt_regs *regs)
{
unsigned char reason = 0;
int cpu;
@@ -664,7 +681,7 @@ asmlinkage void __kprobes do_int3(struct pt_regs * regs, long error_code)
/* Help handler running on IST stack to switch back to user stack
for scheduling or signal handling. The actual stack switch is done in
entry.S */
-asmlinkage struct pt_regs *sync_regs(struct pt_regs *eregs)
+asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs)
{
struct pt_regs *regs = eregs;
/* Did already sync */
@@ -696,7 +713,7 @@ asmlinkage void __kprobes do_debug(struct pt_regs * regs,
SIGTRAP) == NOTIFY_STOP)
return;
- conditional_sti(regs);
+ preempt_conditional_sti(regs);
/* Mask out spurious debug traps due to lazy DR7 setting */
if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) {
@@ -741,11 +758,13 @@ asmlinkage void __kprobes do_debug(struct pt_regs * regs,
clear_dr7:
set_debugreg(0UL, 7);
+ preempt_conditional_cli(regs);
return;
clear_TF_reenable:
set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
regs->eflags &= ~TF_MASK;
+ preempt_conditional_cli(regs);
}
static int kernel_math_error(struct pt_regs *regs, const char *str, int trapnr)
diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c
index 12d538e0bd..54cc9c24d9 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c
@@ -39,11 +39,6 @@ extern void __write_lock_failed(rwlock_t *rw);
extern void __read_lock_failed(rwlock_t *rw);
#endif
-#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
-extern struct drive_info_struct drive_info;
-EXPORT_SYMBOL(drive_info);
-#endif
-
/* platform dependent support */
EXPORT_SYMBOL(boot_cpu_data);
//EXPORT_SYMBOL(dump_fpu);
diff --git a/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c b/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c
index 37e97eeb57..40d48bc7b8 100644
--- a/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c
+++ b/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c
@@ -33,7 +33,6 @@
#include <asm/proto.h>
#include <asm/kdebug.h>
#include <asm-generic/sections.h>
-#include <asm/kdebug.h>
/* Page fault error code bits */
#define PF_PROT (1<<0) /* or no page found */
@@ -158,8 +157,8 @@ void dump_pagetable(unsigned long address)
pgd = __va((unsigned long)pgd & PHYSICAL_PAGE_MASK);
pgd += pgd_index(address);
- printk("PGD %lx ", pgd_val(*pgd));
if (bad_address(pgd)) goto bad;
+ printk("PGD %lx ", pgd_val(*pgd));
if (!pgd_present(*pgd)) goto ret;
pud = __pud_offset_k((pud_t *)pgd_page(*pgd), address);
@@ -331,7 +330,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
siginfo_t info;
if (!user_mode(regs))
- error_code &= ~4; /* means kernel */
+ error_code &= ~PF_USER; /* means kernel */
/* get the address */
address = HYPERVISOR_shared_info->vcpu_info[
diff --git a/linux-2.6-xen-sparse/drivers/Makefile b/linux-2.6-xen-sparse/drivers/Makefile
index 865d2f7d1a..73c1c4a087 100644
--- a/linux-2.6-xen-sparse/drivers/Makefile
+++ b/linux-2.6-xen-sparse/drivers/Makefile
@@ -70,7 +70,7 @@ obj-$(CONFIG_EISA) += eisa/
obj-$(CONFIG_CPU_FREQ) += cpufreq/
obj-$(CONFIG_MMC) += mmc/
obj-$(CONFIG_INFINIBAND) += infiniband/
-obj-$(CONFIG_SGI_IOC4) += sn/
+obj-$(CONFIG_SGI_SN) += sn/
obj-y += firmware/
obj-$(CONFIG_CRYPTO) += crypto/
obj-$(CONFIG_SUPERH) += sh/
diff --git a/linux-2.6-xen-sparse/drivers/char/tty_io.c b/linux-2.6-xen-sparse/drivers/char/tty_io.c
index 81a630d0e6..ddafa6c4ae 100644
--- a/linux-2.6-xen-sparse/drivers/char/tty_io.c
+++ b/linux-2.6-xen-sparse/drivers/char/tty_io.c
@@ -255,6 +255,7 @@ static void tty_buffer_free_all(struct tty_struct *tty)
static void tty_buffer_init(struct tty_struct *tty)
{
+ spin_lock_init(&tty->buf.lock);
tty->buf.head = NULL;
tty->buf.tail = NULL;
tty->buf.free = NULL;
@@ -268,6 +269,9 @@ static struct tty_buffer *tty_buffer_alloc(size_t size)
p->used = 0;
p->size = size;
p->next = NULL;
+ p->active = 0;
+ p->commit = 0;
+ p->read = 0;
p->char_buf_ptr = (char *)(p->data);
p->flag_buf_ptr = (unsigned char *)p->char_buf_ptr + size;
/* printk("Flip create %p\n", p); */
@@ -298,6 +302,8 @@ static struct tty_buffer *tty_buffer_find(struct tty_struct *tty, size_t size)
*tbh = t->next;
t->next = NULL;
t->used = 0;
+ t->commit = 0;
+ t->read = 0;
/* DEBUG ONLY */
memset(t->data, '*', size);
/* printk("Flip recycle %p\n", t); */
@@ -314,25 +320,37 @@ static struct tty_buffer *tty_buffer_find(struct tty_struct *tty, size_t size)
int tty_buffer_request_room(struct tty_struct *tty, size_t size)
{
- struct tty_buffer *b = tty->buf.tail, *n;
- int left = 0;
+ struct tty_buffer *b, *n;
+ int left;
+ unsigned long flags;
+
+ spin_lock_irqsave(&tty->buf.lock, flags);
/* OPTIMISATION: We could keep a per tty "zero" sized buffer to
remove this conditional if its worth it. This would be invisible
to the callers */
- if(b != NULL)
+ if ((b = tty->buf.tail) != NULL) {
left = b->size - b->used;
- if(left >= size)
- return size;
- /* This is the slow path - looking for new buffers to use */
- n = tty_buffer_find(tty, size);
- if(n == NULL)
- return left;
- if(b != NULL)
- b->next = n;
- else
- tty->buf.head = n;
- tty->buf.tail = n;
+ b->active = 1;
+ } else
+ left = 0;
+
+ if (left < size) {
+ /* This is the slow path - looking for new buffers to use */
+ if ((n = tty_buffer_find(tty, size)) != NULL) {
+ if (b != NULL) {
+ b->next = n;
+ b->active = 0;
+ b->commit = b->used;
+ } else
+ tty->buf.head = n;
+ tty->buf.tail = n;
+ n->active = 1;
+ } else
+ size = left;
+ }
+
+ spin_unlock_irqrestore(&tty->buf.lock, flags);
return size;
}
@@ -398,10 +416,12 @@ EXPORT_SYMBOL_GPL(tty_insert_flip_string_flags);
int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size)
{
int space = tty_buffer_request_room(tty, size);
- struct tty_buffer *tb = tty->buf.tail;
- *chars = tb->char_buf_ptr + tb->used;
- memset(tb->flag_buf_ptr + tb->used, TTY_NORMAL, space);
- tb->used += space;
+ if (likely(space)) {
+ struct tty_buffer *tb = tty->buf.tail;
+ *chars = tb->char_buf_ptr + tb->used;
+ memset(tb->flag_buf_ptr + tb->used, TTY_NORMAL, space);
+ tb->used += space;
+ }
return space;
}
@@ -418,10 +438,12 @@ EXPORT_SYMBOL_GPL(tty_prepare_flip_string);
int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size)
{
int space = tty_buffer_request_room(tty, size);
- struct tty_buffer *tb = tty->buf.tail;
- *chars = tb->char_buf_ptr + tb->used;
- *flags = tb->flag_buf_ptr + tb->used;
- tb->used += space;
+ if (likely(space)) {
+ struct tty_buffer *tb = tty->buf.tail;
+ *chars = tb->char_buf_ptr + tb->used;
+ *flags = tb->flag_buf_ptr + tb->used;
+ tb->used += space;
+ }
return space;
}
@@ -2737,6 +2759,9 @@ static void flush_to_ldisc(void *private_)
unsigned long flags;
struct tty_ldisc *disc;
struct tty_buffer *tbuf;
+ int count;
+ char *char_buf;
+ unsigned char *flag_buf;
disc = tty_ldisc_ref(tty);
if (disc == NULL) /* !TTY_LDISC */
@@ -2749,20 +2774,24 @@ static void flush_to_ldisc(void *private_)
schedule_delayed_work(&tty->buf.work, 1);
goto out;
}
- spin_lock_irqsave(&tty->read_lock, flags);
+ spin_lock_irqsave(&tty->buf.lock, flags);
while((tbuf = tty->buf.head) != NULL) {
+ while ((count = tbuf->commit - tbuf->read) != 0) {
+ char_buf = tbuf->char_buf_ptr + tbuf->read;
+ flag_buf = tbuf->flag_buf_ptr + tbuf->read;
+ tbuf->read += count;
+ spin_unlock_irqrestore(&tty->buf.lock, flags);
+ disc->receive_buf(tty, char_buf, flag_buf, count);
+ spin_lock_irqsave(&tty->buf.lock, flags);
+ }
+ if (tbuf->active)
+ break;
tty->buf.head = tbuf->next;
if (tty->buf.head == NULL)
tty->buf.tail = NULL;
- spin_unlock_irqrestore(&tty->read_lock, flags);
- /* printk("Process buffer %p for %d\n", tbuf, tbuf->used); */
- disc->receive_buf(tty, tbuf->char_buf_ptr,
- tbuf->flag_buf_ptr,
- tbuf->used);
- spin_lock_irqsave(&tty->read_lock, flags);
tty_buffer_free(tty, tbuf);
}
- spin_unlock_irqrestore(&tty->read_lock, flags);
+ spin_unlock_irqrestore(&tty->buf.lock, flags);
out:
tty_ldisc_deref(disc);
}
@@ -2854,6 +2883,14 @@ EXPORT_SYMBOL(tty_get_baud_rate);
void tty_flip_buffer_push(struct tty_struct *tty)
{
+ unsigned long flags;
+ spin_lock_irqsave(&tty->buf.lock, flags);
+ if (tty->buf.tail != NULL) {
+ tty->buf.tail->active = 0;
+ tty->buf.tail->commit = tty->buf.tail->used;
+ }
+ spin_unlock_irqrestore(&tty->buf.lock, flags);
+
if (tty->low_latency)
flush_to_ldisc((void *) tty);
else
diff --git a/linux-2.6-xen-sparse/drivers/serial/Kconfig b/linux-2.6-xen-sparse/drivers/serial/Kconfig
index 6a501a5210..b9f084045f 100644
--- a/linux-2.6-xen-sparse/drivers/serial/Kconfig
+++ b/linux-2.6-xen-sparse/drivers/serial/Kconfig
@@ -99,6 +99,7 @@ config SERIAL_8250_NR_UARTS
config SERIAL_8250_RUNTIME_UARTS
int "Number of 8250/16550 serial ports to register at runtime"
depends on SERIAL_8250
+ range 0 SERIAL_8250_NR_UARTS
default "4"
help
Set this to the maximum number of serial ports you want
@@ -893,20 +894,20 @@ config SERIAL_VR41XX_CONSOLE
a console on a serial port, say Y. Otherwise, say N.
config SERIAL_JSM
- tristate "Digi International NEO PCI Support"
- depends on PCI && BROKEN
- select SERIAL_CORE
- help
- This is a driver for Digi International's Neo series
- of cards which provide multiple serial ports. You would need
- something like this to connect more than two modems to your Linux
- box, for instance in order to become a dial-in server. This driver
- supports PCI boards only.
- If you have a card like this, say Y here and read the file
- <file:Documentation/jsm.txt>.
-
- To compile this driver as a module, choose M here: the
- module will be called jsm.
+ tristate "Digi International NEO PCI Support"
+ depends on PCI
+ select SERIAL_CORE
+ help
+ This is a driver for Digi International's Neo series
+ of cards which provide multiple serial ports. You would need
+ something like this to connect more than two modems to your Linux
+ box, for instance in order to become a dial-in server. This driver
+ supports PCI boards only.
+ If you have a card like this, say Y here and read the file
+ <file:Documentation/jsm.txt>.
+
+ To compile this driver as a module, choose M here: the
+ module will be called jsm.
config SERIAL_SGI_IOC4
tristate "SGI IOC4 controller serial support"
diff --git a/linux-2.6-xen-sparse/fs/Kconfig b/linux-2.6-xen-sparse/fs/Kconfig
index 12bd891c08..de4c01ef42 100644
--- a/linux-2.6-xen-sparse/fs/Kconfig
+++ b/linux-2.6-xen-sparse/fs/Kconfig
@@ -884,8 +884,6 @@ config CONFIGFS_FS
Both sysfs and configfs can and should exist together on the
same system. One is not a replacement for the other.
- If unsure, say N.
-
endmenu
menu "Miscellaneous filesystems"
diff --git a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h
index d7b2306c5f..e903b666c8 100644
--- a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h
+++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h
@@ -13,7 +13,7 @@
#include <asm/mmu.h>
-extern struct desc_struct cpu_gdt_table[NR_CPUS][GDT_ENTRIES];
+extern struct desc_struct cpu_gdt_table[GDT_ENTRIES];
DECLARE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]);
diff --git a/linux-2.6-xen-sparse/include/asm-i386/system.h b/linux-2.6-xen-sparse/include/asm-i386/system.h
index 0e86bc5259..0ca2efb762 100644
--- a/linux-2.6-xen-sparse/include/asm-i386/system.h
+++ b/linux-2.6-xen-sparse/include/asm-i386/system.h
@@ -503,7 +503,6 @@ struct alt_instr {
#endif
#ifdef CONFIG_SMP
-#define smp_wmb() wmb()
#if defined(CONFIG_SMP_ALTERNATIVES) && !defined(MODULE)
#define smp_alt_mb(instr) \
__asm__ __volatile__("6667:\nnop\nnop\nnop\nnop\nnop\nnop\n6668:\n" \
@@ -524,8 +523,8 @@ __asm__ __volatile__("6667:\nnop\nnop\nnop\nnop\nnop\nnop\n6668:\n" \
: \
: "i" (X86_FEATURE_XMM2) \
: "memory")
-#define smp_rmb() smp_alt_mb("lfence")
#define smp_mb() smp_alt_mb("mfence")
+#define smp_rmb() smp_alt_mb("lfence")
#define set_mb(var, value) do { \
unsigned long __set_mb_temp; \
__asm__ __volatile__("6667:movl %1, %0\n6668:\n" \
@@ -547,10 +546,11 @@ __asm__ __volatile__("6667:movl %1, %0\n6668:\n" \
: "1" (value) \
: "memory"); } while (0)
#else
-#define smp_rmb() rmb()
#define smp_mb() mb()
-#define set_mb(var, value) do { xchg(&var, value); } while (0)
+#define smp_rmb() rmb()
+#define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
#endif
+#define smp_wmb() wmb()
#define smp_read_barrier_depends() read_barrier_depends()
#else
#define smp_mb() barrier()
diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h
index e142a4ae27..26110ed80d 100644
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h
@@ -69,8 +69,6 @@ extern struct desc_ptr idt_descr, cpu_gdt_descr[NR_CPUS];
extern struct desc_struct cpu_gdt_table[GDT_ENTRIES];
-#define get_cpu_gdt_table(_cpu) ((struct desc_struct *)(cpu_gdt_descr[(_cpu)].address))
-
#define load_TR_desc() asm volatile("ltr %w0"::"r" (GDT_ENTRY_TSS*8))
#define load_LDT_desc() asm volatile("lldt %w0"::"r" (GDT_ENTRY_LDT*8))
@@ -163,7 +161,7 @@ static inline void set_tss_desc(unsigned cpu, void *addr)
* -1? seg base+limit should be pointing to the address of the
* last valid byte
*/
- set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_TSS],
+ set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_TSS],
(unsigned long)addr, DESC_TSS,
IO_BITMAP_OFFSET + IO_BITMAP_BYTES + sizeof(unsigned long) - 1);
}
@@ -225,7 +223,7 @@ static inline void load_TLS(struct thread_struct *t, unsigned int cpu)
gdt[2] = t->tls_array[2];
#endif
#define C(i) \
- HYPERVISOR_update_descriptor(virt_to_machine(&get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN + i]), t->tls_array[i])
+ HYPERVISOR_update_descriptor(virt_to_machine(&cpu_gdt(cpu)[GDT_ENTRY_TLS_MIN + i]), t->tls_array[i])
C(0); C(1); C(2);
#undef C
@@ -236,13 +234,13 @@ static inline void load_TLS(struct thread_struct *t, unsigned int cpu)
*/
static inline void load_LDT_nolock (mm_context_t *pc, int cpu)
{
- void *segments = pc->ldt;
- int count = pc->size;
+ void *segments = pc->ldt;
+ int count = pc->size;
- if (likely(!count))
- segments = NULL;
+ if (likely(!count))
+ segments = NULL;
- xen_set_ldt((unsigned long)segments, count);
+ xen_set_ldt((unsigned long)segments, count);
}
static inline void load_LDT(mm_context_t *pc)
diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h
index 326514b3e6..c024447ae6 100644
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h
@@ -3,6 +3,7 @@
#include <linux/config.h>
#include <asm/fixmap.h>
+
/*
* This file contains the definitions for the x86 IO instructions
* inb/inw/inl/outb/outw/outl and the "string versions" of the same
@@ -120,7 +121,6 @@ static inline void * phys_to_virt(unsigned long address)
return __va(address);
}
-
#define virt_to_bus(_x) phys_to_machine(__pa(_x))
#define bus_to_virt(_x) __va(machine_to_phys(_x))
#endif
diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h
index 51b54a38e1..681176025b 100644
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h
@@ -156,7 +156,6 @@ static inline void set_in_cr4 (unsigned long mask)
}
}
-
static inline void clear_in_cr4 (unsigned long mask)
{
#ifndef CONFIG_XEN
@@ -176,7 +175,6 @@ static inline void clear_in_cr4 (unsigned long mask)
#define MCA_bus 0
#define MCA_bus__is_a_macro
-
/*
* User space process size. 47bits minus one guard page.
*/
@@ -278,7 +276,7 @@ struct thread_struct {
unsigned io_bitmap_max;
/* cached TLS descriptors. */
u64 tls_array[GDT_ENTRY_TLS_ENTRIES];
- unsigned int iopl;
+ unsigned int iopl;
} __attribute__((aligned(16)));
#define INIT_THREAD { \
diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h
index 69f69d9377..91ae795670 100644
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h
@@ -100,6 +100,7 @@ extern unsigned disabled_cpus;
extern u8 x86_cpu_to_apicid[NR_CPUS]; /* physical ID */
extern u8 x86_cpu_to_log_apicid[NR_CPUS];
extern u8 bios_cpu_apicid[];
+
#ifdef CONFIG_X86_LOCAL_APIC
static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
{
diff --git a/linux-2.6-xen-sparse/include/linux/mm.h b/linux-2.6-xen-sparse/include/linux/mm.h
index af54e371e0..adbf47dd25 100644
--- a/linux-2.6-xen-sparse/include/linux/mm.h
+++ b/linux-2.6-xen-sparse/include/linux/mm.h
@@ -309,7 +309,7 @@ struct page {
*/
#define put_page_testzero(p) \
({ \
- BUG_ON(page_count(p) == 0); \
+ BUG_ON(atomic_read(&(p)->_count) == -1);\
atomic_add_negative(-1, &(p)->_count); \
})
diff --git a/linux-2.6-xen-sparse/mm/memory.c b/linux-2.6-xen-sparse/mm/memory.c
index 25a2e29390..a75e302806 100644
--- a/linux-2.6-xen-sparse/mm/memory.c
+++ b/linux-2.6-xen-sparse/mm/memory.c
@@ -1011,7 +1011,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
}
#ifdef CONFIG_XEN
- if (vma && (vma->vm_flags & VM_FOREIGN)) {
+ if (vma && (vma->vm_flags & VM_FOREIGN)) {
struct page **map = vma->vm_private_data;
int offset = (start - vma->vm_start) >> PAGE_SHIFT;
@@ -1025,7 +1025,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
len--;
continue;
}
- }
+ }
#endif
if (!vma || (vma->vm_flags & (VM_IO | VM_PFNMAP))
|| !(vm_flags & vma->vm_flags))
@@ -1367,66 +1367,60 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
EXPORT_SYMBOL(remap_pfn_range);
#ifdef CONFIG_XEN
-static inline int generic_pte_range(struct mm_struct *mm,
- pmd_t *pmd,
- unsigned long addr,
- unsigned long end,
- pte_fn_t fn, void *data)
+static inline int generic_pte_range(struct mm_struct *mm, pmd_t *pmd,
+ unsigned long addr, unsigned long end,
+ pte_fn_t fn, void *data)
{
pte_t *pte;
- int err;
- struct page *pte_page;
+ int err;
+ struct page *pte_page;
- pte = (mm == &init_mm) ?
- pte_alloc_kernel(pmd, addr) :
- pte_alloc_map(mm, pmd, addr);
- if (!pte)
- return -ENOMEM;
+ pte = (mm == &init_mm) ?
+ pte_alloc_kernel(pmd, addr) :
+ pte_alloc_map(mm, pmd, addr);
+ if (!pte)
+ return -ENOMEM;
- pte_page = pmd_page(*pmd);
+ pte_page = pmd_page(*pmd);
- do {
- err = fn(pte, pte_page, addr, data);
+ do {
+ err = fn(pte, pte_page, addr, data);
if (err)
- break;
- } while (pte++, addr += PAGE_SIZE, addr != end);
-
- if (mm != &init_mm)
- pte_unmap(pte-1);
- return err;
+ break;
+ } while (pte++, addr += PAGE_SIZE, addr != end);
+ if (mm != &init_mm)
+ pte_unmap(pte-1);
+ return err;
}
-static inline int generic_pmd_range(struct mm_struct *mm,
- pud_t *pud,
- unsigned long addr,
- unsigned long end,
- pte_fn_t fn, void *data)
+static inline int generic_pmd_range(struct mm_struct *mm, pud_t *pud,
+ unsigned long addr, unsigned long end,
+ pte_fn_t fn, void *data)
{
pmd_t *pmd;
unsigned long next;
- int err;
+ int err;
pmd = pmd_alloc(mm, pud, addr);
if (!pmd)
return -ENOMEM;
do {
next = pmd_addr_end(addr, end);
- err = generic_pte_range(mm, pmd, addr, next, fn, data);
- if (err)
- break;
+ err = generic_pte_range(mm, pmd, addr, next, fn, data);
+ if (err)
+ break;
} while (pmd++, addr = next, addr != end);
return err;
}
static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd,
- unsigned long addr,
- unsigned long end,
- pte_fn_t fn, void *data)
+ unsigned long addr, unsigned long end,
+ pte_fn_t fn, void *data)
{
pud_t *pud;
unsigned long next;
- int err;
+ int err;
pud = pud_alloc(mm, pgd, addr);
if (!pud)
@@ -1434,7 +1428,7 @@ static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd,
do {
next = pud_addr_end(addr, end);
err = generic_pmd_range(mm, pud, addr, next, fn, data);
- if (err)
+ if (err)
break;
} while (pud++, addr = next, addr != end);
return err;
@@ -1445,7 +1439,7 @@ static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd,
* and calling a provided function on each leaf page table.
*/
int generic_page_range(struct mm_struct *mm, unsigned long addr,
- unsigned long size, pte_fn_t fn, void *data)
+ unsigned long size, pte_fn_t fn, void *data)
{
pgd_t *pgd;
unsigned long next;
diff --git a/linux-2.6-xen-sparse/mm/page_alloc.c b/linux-2.6-xen-sparse/mm/page_alloc.c
index 1fdf09444e..6ed2cade48 100644
--- a/linux-2.6-xen-sparse/mm/page_alloc.c
+++ b/linux-2.6-xen-sparse/mm/page_alloc.c
@@ -1215,18 +1215,21 @@ static void __get_page_state(struct page_state *ret, int nr, cpumask_t *cpumask)
{
int cpu = 0;
- memset(ret, 0, sizeof(*ret));
+ memset(ret, 0, nr * sizeof(unsigned long));
cpus_and(*cpumask, *cpumask, cpu_online_map);
cpu = first_cpu(*cpumask);
while (cpu < NR_CPUS) {
unsigned long *in, *out, off;
+ if (!cpu_isset(cpu, *cpumask))
+ continue;
+
in = (unsigned long *)&per_cpu(page_states, cpu);
cpu = next_cpu(cpu, *cpumask);
- if (cpu < NR_CPUS)
+ if (likely(cpu < NR_CPUS))
prefetch(&per_cpu(page_states, cpu));
out = (unsigned long *)ret;
@@ -1888,8 +1891,7 @@ static void setup_pagelist_highmark(struct per_cpu_pageset *p,
* not check if the processor is online before following the pageset pointer.
* Other parts of the kernel may not check if the zone is available.
*/
-static struct per_cpu_pageset
- boot_pageset[NR_CPUS];
+static struct per_cpu_pageset boot_pageset[NR_CPUS];
/*
* Dynamically allocate memory for the
diff --git a/linux-2.6-xen-sparse/net/core/dev.c b/linux-2.6-xen-sparse/net/core/dev.c
index dfd9ff6e71..30baa344b7 100644
--- a/linux-2.6-xen-sparse/net/core/dev.c
+++ b/linux-2.6-xen-sparse/net/core/dev.c
@@ -3287,7 +3287,7 @@ static int __init net_dev_init(void)
* Initialise the packet receive queues.
*/
- for (i = 0; i < NR_CPUS; i++) {
+ for_each_cpu(i) {
struct softnet_data *queue;
queue = &per_cpu(softnet_data, i);
diff --git a/patches/linux-2.6.16-rc2/i386-mach-io-check-nmi.patch b/patches/linux-2.6.16-rc3/i386-mach-io-check-nmi.patch
index fddb891d6f..f3d224b73e 100644
--- a/patches/linux-2.6.16-rc2/i386-mach-io-check-nmi.patch
+++ b/patches/linux-2.6.16-rc3/i386-mach-io-check-nmi.patch
@@ -1,7 +1,7 @@
-diff -pruN ../pristine-linux-2.6.16-rc1-git4/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
---- ../pristine-linux-2.6.16-rc1-git4/arch/i386/kernel/traps.c 2006-02-02 17:39:29.000000000 +0000
-+++ ./arch/i386/kernel/traps.c 2006-02-02 17:43:01.000000000 +0000
-@@ -564,18 +564,11 @@ static void mem_parity_error(unsigned ch
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
+--- ../pristine-linux-2.6.16-rc3/arch/i386/kernel/traps.c 2006-02-15 20:38:51.000000000 +0000
++++ ./arch/i386/kernel/traps.c 2006-02-15 20:40:43.000000000 +0000
+@@ -567,18 +567,11 @@ static void mem_parity_error(unsigned ch
static void io_check_error(unsigned char reason, struct pt_regs * regs)
{
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16-rc1-git4/arch/i386/kernel/traps.c ./arch/i38
}
static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
-diff -pruN ../pristine-linux-2.6.16-rc1-git4/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
---- ../pristine-linux-2.6.16-rc1-git4/include/asm-i386/mach-default/mach_traps.h 2006-01-03 03:21:10.000000000 +0000
-+++ ./include/asm-i386/mach-default/mach_traps.h 2006-02-02 17:41:55.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/mach-default/mach_traps.h 2006-01-03 03:21:10.000000000 +0000
++++ ./include/asm-i386/mach-default/mach_traps.h 2006-02-15 20:40:43.000000000 +0000
@@ -15,6 +15,18 @@ static inline void clear_mem_error(unsig
outb(reason, 0x61);
}
diff --git a/patches/linux-2.6.16-rc2/net-csum.patch b/patches/linux-2.6.16-rc3/net-csum.patch
index 4d7ede0874..4d7ede0874 100644
--- a/patches/linux-2.6.16-rc2/net-csum.patch
+++ b/patches/linux-2.6.16-rc3/net-csum.patch
diff --git a/patches/linux-2.6.16-rc2/pmd-shared.patch b/patches/linux-2.6.16-rc3/pmd-shared.patch
index 3764a3219e..3764a3219e 100644
--- a/patches/linux-2.6.16-rc2/pmd-shared.patch
+++ b/patches/linux-2.6.16-rc3/pmd-shared.patch
diff --git a/patches/linux-2.6.16-rc2/smp-alts.patch b/patches/linux-2.6.16-rc3/smp-alts.patch
index 4555268012..11fa0a7d76 100644
--- a/patches/linux-2.6.16-rc2/smp-alts.patch
+++ b/patches/linux-2.6.16-rc3/smp-alts.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/Kconfig ./arch/i386/Kconfig
---- ../pristine-linux-2.6.16-rc2/arch/i386/Kconfig 2006-02-03 16:11:47.000000000 +0000
-+++ ./arch/i386/Kconfig 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/Kconfig ./arch/i386/Kconfig
+--- ../pristine-linux-2.6.16-rc3/arch/i386/Kconfig 2006-02-15 20:38:51.000000000 +0000
++++ ./arch/i386/Kconfig 2006-02-15 20:45:57.000000000 +0000
@@ -202,6 +202,19 @@ config SMP
If you don't know what to do here, say N.
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/Kconfig ./arch/i386/Kconfig
config NR_CPUS
int "Maximum number of CPUs (2-255)"
range 2 255
-diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
---- ../pristine-linux-2.6.16-rc2/arch/i386/kernel/Makefile 2006-02-03 16:11:47.000000000 +0000
-+++ ./arch/i386/kernel/Makefile 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
+--- ../pristine-linux-2.6.16-rc3/arch/i386/kernel/Makefile 2006-02-15 20:38:51.000000000 +0000
++++ ./arch/i386/kernel/Makefile 2006-02-15 20:45:57.000000000 +0000
@@ -37,6 +37,7 @@ obj-$(CONFIG_EFI) += efi.o efi_stub.o
obj-$(CONFIG_DOUBLEFAULT) += doublefault.o
obj-$(CONFIG_VM86) += vm86.o
@@ -32,9 +32,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/Makefile ./arch/i386/ke
EXTRA_AFLAGS := -traditional
-diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
---- ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
-+++ ./arch/i386/kernel/smpalts.c 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
+--- ../pristine-linux-2.6.16-rc3/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
++++ ./arch/i386/kernel/smpalts.c 2006-02-15 20:45:57.000000000 +0000
@@ -0,0 +1,85 @@
+#include <linux/kernel.h>
+#include <asm/system.h>
@@ -121,10 +121,10 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpalts.c ./arch/i386/k
+ asm volatile ("jmp 1f\n1:");
+ mb();
+}
-diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
---- ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpboot.c 2006-02-03 16:11:47.000000000 +0000
-+++ ./arch/i386/kernel/smpboot.c 2006-02-03 18:20:37.000000000 +0000
-@@ -1218,6 +1218,11 @@ static void __init smp_boot_cpus(unsigne
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
+--- ../pristine-linux-2.6.16-rc3/arch/i386/kernel/smpboot.c 2006-02-15 20:38:51.000000000 +0000
++++ ./arch/i386/kernel/smpboot.c 2006-02-15 20:45:57.000000000 +0000
+@@ -1214,6 +1214,11 @@ static void __init smp_boot_cpus(unsigne
if (max_cpus <= cpucount+1)
continue;
@@ -136,7 +136,7 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpboot.c ./arch/i386/k
if (((cpu = alloc_cpu_id()) <= 0) || do_boot_cpu(apicid, cpu))
printk("CPU #%d not responding - cannot use it.\n",
apicid);
-@@ -1396,6 +1401,11 @@ int __devinit __cpu_up(unsigned int cpu)
+@@ -1392,6 +1397,11 @@ int __devinit __cpu_up(unsigned int cpu)
return -EIO;
}
@@ -148,9 +148,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/smpboot.c ./arch/i386/k
local_irq_enable();
per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
/* Unleash the CPU! */
-diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
---- ../pristine-linux-2.6.16-rc2/arch/i386/kernel/vmlinux.lds.S 2006-01-03 03:21:10.000000000 +0000
-+++ ./arch/i386/kernel/vmlinux.lds.S 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
+--- ../pristine-linux-2.6.16-rc3/arch/i386/kernel/vmlinux.lds.S 2006-01-03 03:21:10.000000000 +0000
++++ ./arch/i386/kernel/vmlinux.lds.S 2006-02-15 20:45:57.000000000 +0000
@@ -34,6 +34,13 @@ SECTIONS
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { *(__ex_table) }
__stop___ex_table = .;
@@ -165,9 +165,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/arch/i386/kernel/vmlinux.lds.S ./arch/i3
RODATA
/* writeable */
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/atomic.h 2006-02-03 16:11:50.000000000 +0000
-+++ ./include/asm-i386/atomic.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/atomic.h 2006-02-15 20:38:57.000000000 +0000
++++ ./include/asm-i386/atomic.h 2006-02-15 20:45:57.000000000 +0000
@@ -4,18 +4,13 @@
#include <linux/config.h>
#include <linux/compiler.h>
@@ -188,9 +188,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/atomic.h ./include/asm-
/*
* Make sure gcc doesn't try to be clever and move things around
* on us. We need to use _exactly_ the address the user gave us,
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/bitops.h 2006-02-03 16:11:50.000000000 +0000
-+++ ./include/asm-i386/bitops.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/bitops.h 2006-02-15 20:38:57.000000000 +0000
++++ ./include/asm-i386/bitops.h 2006-02-15 20:45:57.000000000 +0000
@@ -7,6 +7,7 @@
#include <linux/config.h>
@@ -266,9 +266,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/bitops.h ./include/asm-
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"Ir" (nr) : "memory");
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/futex.h ./include/asm-i386/futex.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/futex.h 2006-02-03 16:11:50.000000000 +0000
-+++ ./include/asm-i386/futex.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/futex.h ./include/asm-i386/futex.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/futex.h 2006-02-15 20:38:57.000000000 +0000
++++ ./include/asm-i386/futex.h 2006-02-15 20:45:57.000000000 +0000
@@ -28,7 +28,7 @@
"1: movl %2, %0\n\
movl %0, %3\n" \
@@ -287,9 +287,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/futex.h ./include/asm-i
oldval, uaddr, oparg);
break;
case FUTEX_OP_OR:
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/rwsem.h 2006-01-03 03:21:10.000000000 +0000
-+++ ./include/asm-i386/rwsem.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/rwsem.h 2006-01-03 03:21:10.000000000 +0000
++++ ./include/asm-i386/rwsem.h 2006-02-15 20:45:57.000000000 +0000
@@ -40,6 +40,7 @@
#include <linux/list.h>
@@ -370,9 +370,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/rwsem.h ./include/asm-i
: "+r"(tmp), "=m"(sem->count)
: "r"(sem), "m"(sem->count)
: "memory");
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
-+++ ./include/asm-i386/smp_alt.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
++++ ./include/asm-i386/smp_alt.h 2006-02-15 20:45:57.000000000 +0000
@@ -0,0 +1,32 @@
+#ifndef __ASM_SMP_ALT_H__
+#define __ASM_SMP_ALT_H__
@@ -406,9 +406,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/smp_alt.h ./include/asm
+#endif
+
+#endif /* __ASM_SMP_ALT_H__ */
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/spinlock.h 2006-01-03 03:21:10.000000000 +0000
-+++ ./include/asm-i386/spinlock.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/spinlock.h 2006-01-03 03:21:10.000000000 +0000
++++ ./include/asm-i386/spinlock.h 2006-02-15 20:45:57.000000000 +0000
@@ -6,6 +6,7 @@
#include <asm/page.h>
#include <linux/config.h>
@@ -488,9 +488,9 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/spinlock.h ./include/as
: "=m" (rw->lock) : : "memory");
}
-diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/system.h ./include/asm-i386/system.h
---- ../pristine-linux-2.6.16-rc2/include/asm-i386/system.h 2006-02-03 16:11:50.000000000 +0000
-+++ ./include/asm-i386/system.h 2006-02-03 18:20:37.000000000 +0000
+diff -pruN ../pristine-linux-2.6.16-rc3/include/asm-i386/system.h ./include/asm-i386/system.h
+--- ../pristine-linux-2.6.16-rc3/include/asm-i386/system.h 2006-02-15 20:38:57.000000000 +0000
++++ ./include/asm-i386/system.h 2006-02-15 20:45:57.000000000 +0000
@@ -5,7 +5,7 @@
#include <linux/kernel.h>
#include <asm/segment.h>
@@ -536,10 +536,6 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/system.h ./include/asm-
#endif
#ifdef CONFIG_SMP
--#define smp_mb() mb()
--#define smp_rmb() rmb()
- #define smp_wmb() wmb()
--#define smp_read_barrier_depends() read_barrier_depends()
+#if defined(CONFIG_SMP_ALTERNATIVES) && !defined(MODULE)
+#define smp_alt_mb(instr) \
+__asm__ __volatile__("6667:\nnop\nnop\nnop\nnop\nnop\nnop\n6668:\n" \
@@ -583,11 +579,13 @@ diff -pruN ../pristine-linux-2.6.16-rc2/include/asm-i386/system.h ./include/asm-
+ : "1" (value) \
+ : "memory"); } while (0)
+#else
-+#define smp_rmb() rmb()
-+#define smp_mb() mb()
- #define set_mb(var, value) do { xchg(&var, value); } while (0)
+ #define smp_mb() mb()
+ #define smp_rmb() rmb()
++#define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
+#endif
-+#define smp_read_barrier_depends() read_barrier_depends()
+ #define smp_wmb() wmb()
+ #define smp_read_barrier_depends() read_barrier_depends()
+-#define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
#else
#define smp_mb() barrier()
#define smp_rmb() barrier()