diff options
author | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2006-02-15 22:06:12 +0000 |
---|---|---|
committer | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2006-02-15 22:06:12 +0000 |
commit | 18e8c8c33f716e002d70453d353574487162b168 (patch) | |
tree | 5af42282d3b3968d752e865532436c0210dd9826 | |
parent | ad08f1cd83c320f2b66bb4a867b4cb71aac4f4a1 (diff) | |
download | xen-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
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() |