]> xenbits.xensource.com Git - xen.git/commitdiff
bitkeeper revision 1.1159.170.64 (41ce8bd3sGsiOUiBHp1KyOcLPmYBgQ)
authorcl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Sun, 26 Dec 2004 10:00:51 +0000 (10:00 +0000)
committercl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Sun, 26 Dec 2004 10:00:51 +0000 (10:00 +0000)
sync w/ head.

1  2 
.rootkeys
linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xen0_defconfig
linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xenU_defconfig
linux-2.6.10-rc3-xen-sparse/arch/xen/i386/Kconfig
linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/traps.c
linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/reboot.c
linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/interface.c

diff --cc .rootkeys
Simple merge
index 98cbd2fdbfacbd24ab498f04ce3f601b8fb59882,0000000000000000000000000000000000000000..d3ff092e5e56d4eb741ea638471c180b801036c6
mode 100644,000000..100644
--- /dev/null
@@@ -1,1042 -1,0 +1,1050 @@@
- # Wed Dec  1 09:22:49 2004
 +#
 +# Automatically generated make config: don't edit
 +# Linux kernel version: 2.6.10-rc2-xen0
++# Thu Dec 23 14:01:43 2004
 +#
 +CONFIG_XEN=y
 +CONFIG_ARCH_XEN=y
 +CONFIG_NO_IDLE_HZ=y
 +
 +#
 +# XEN
 +#
 +CONFIG_XEN_PRIVILEGED_GUEST=y
 +CONFIG_XEN_PHYSDEV_ACCESS=y
 +CONFIG_XEN_BLKDEV_BACKEND=y
 +CONFIG_XEN_NETDEV_BACKEND=y
 +CONFIG_XEN_BLKDEV_FRONTEND=y
 +CONFIG_XEN_NETDEV_FRONTEND=y
 +# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
 +CONFIG_XEN_WRITABLE_PAGETABLES=y
 +CONFIG_XEN_SCRUB_PAGES=y
 +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
 +CONFIG_X86=y
 +# CONFIG_X86_64 is not set
 +
 +#
 +# 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
 +
 +#
 +# General setup
 +#
 +CONFIG_LOCALVERSION=""
 +CONFIG_SWAP=y
 +CONFIG_SYSVIPC=y
 +# CONFIG_POSIX_MQUEUE is not set
 +# CONFIG_BSD_PROCESS_ACCT is not set
 +CONFIG_SYSCTL=y
 +# CONFIG_AUDIT is not set
 +CONFIG_LOG_BUF_SHIFT=14
 +CONFIG_HOTPLUG=y
 +CONFIG_KOBJECT_UEVENT=y
 +# CONFIG_IKCONFIG is not set
 +# CONFIG_EMBEDDED is not set
 +CONFIG_KALLSYMS=y
 +# CONFIG_KALLSYMS_ALL is not set
 +# CONFIG_KALLSYMS_EXTRA_PASS is not set
 +CONFIG_FUTEX=y
 +CONFIG_EPOLL=y
 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 +CONFIG_SHMEM=y
 +CONFIG_CC_ALIGN_FUNCTIONS=0
 +CONFIG_CC_ALIGN_LABELS=0
 +CONFIG_CC_ALIGN_LOOPS=0
 +CONFIG_CC_ALIGN_JUMPS=0
 +# CONFIG_TINY_SHMEM is not set
 +
 +#
 +# Loadable module support
 +#
 +CONFIG_MODULES=y
 +CONFIG_MODULE_UNLOAD=y
 +# CONFIG_MODULE_FORCE_UNLOAD is not set
 +CONFIG_OBSOLETE_MODPARM=y
 +# CONFIG_MODVERSIONS is not set
 +# CONFIG_MODULE_SRCVERSION_ALL is not set
 +CONFIG_KMOD=y
 +
 +#
 +# X86 Processor Configuration
 +#
 +CONFIG_XENARCH="i386"
 +CONFIG_MMU=y
 +CONFIG_UID16=y
 +CONFIG_GENERIC_ISA_DMA=y
 +CONFIG_GENERIC_IOMAP=y
++# CONFIG_M386 is not set
++# CONFIG_M486 is not set
++# CONFIG_M586 is not set
++# CONFIG_M586TSC is not set
++# CONFIG_M586MMX is not set
 +# CONFIG_M686 is not set
 +# CONFIG_MPENTIUMII is not set
 +# CONFIG_MPENTIUMIII is not set
 +# CONFIG_MPENTIUMM is not set
 +CONFIG_MPENTIUM4=y
 +# CONFIG_MK6 is not set
 +# CONFIG_MK7 is not set
 +# CONFIG_MK8 is not set
 +# CONFIG_MCRUSOE is not set
++# CONFIG_MWINCHIPC6 is not set
++# CONFIG_MWINCHIP2 is not set
++# CONFIG_MWINCHIP3D is not set
 +# CONFIG_MCYRIXIII is not set
 +# CONFIG_MVIAC3_2 is not set
 +# CONFIG_X86_GENERIC is not set
 +CONFIG_X86_CMPXCHG=y
 +CONFIG_X86_XADD=y
 +CONFIG_X86_L1_CACHE_SHIFT=7
 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 +CONFIG_X86_WP_WORKS_OK=y
 +CONFIG_X86_INVLPG=y
 +CONFIG_X86_BSWAP=y
 +CONFIG_X86_POPAD_OK=y
 +CONFIG_X86_GOOD_APIC=y
 +CONFIG_X86_INTEL_USERCOPY=y
 +CONFIG_X86_USE_PPRO_CHECKSUM=y
 +# CONFIG_HPET_TIMER is not set
 +# CONFIG_HPET_EMULATE_RTC is not set
 +# CONFIG_SMP is not set
 +CONFIG_PREEMPT=y
 +CONFIG_X86_CPUID=y
 +
 +#
 +# Firmware Drivers
 +#
 +# CONFIG_EDD is not set
 +CONFIG_NOHIGHMEM=y
 +# CONFIG_HIGHMEM4G is not set
 +CONFIG_MTRR=y
 +CONFIG_HAVE_DEC_LOCK=y
 +# CONFIG_REGPARM is not set
 +
 +#
 +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
 +#
 +CONFIG_PCI=y
 +CONFIG_PCI_DIRECT=y
 +CONFIG_PCI_LEGACY_PROC=y
 +# CONFIG_PCI_NAMES is not set
 +CONFIG_ISA=y
 +# CONFIG_EISA is not set
 +# CONFIG_MCA is not set
 +# CONFIG_SCx200 is not set
 +
 +#
 +# PCCARD (PCMCIA/CardBus) support
 +#
 +# CONFIG_PCCARD is not set
 +
 +#
 +# PC-card bridges
 +#
 +CONFIG_PCMCIA_PROBE=y
 +
 +#
 +# PCI Hotplug Support
 +#
 +# CONFIG_HOTPLUG_PCI is not set
 +
 +#
 +# Kernel hacking
 +#
 +CONFIG_DEBUG_KERNEL=y
 +CONFIG_EARLY_PRINTK=y
 +# CONFIG_DEBUG_STACKOVERFLOW is not set
 +# CONFIG_DEBUG_STACK_USAGE is not set
 +CONFIG_DEBUG_SLAB=y
 +CONFIG_MAGIC_SYSRQ=y
 +# CONFIG_DEBUG_SPINLOCK is not set
 +CONFIG_DEBUG_PAGEALLOC=y
 +# CONFIG_DEBUG_INFO is not set
 +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 +# CONFIG_FRAME_POINTER is not set
 +# CONFIG_4KSTACKS is not set
 +CONFIG_GENERIC_HARDIRQS=y
 +CONFIG_GENERIC_IRQ_PROBE=y
 +CONFIG_X86_BIOS_REBOOT=y
 +CONFIG_PC=y
 +
 +#
 +# Executable file formats
 +#
 +CONFIG_BINFMT_ELF=y
 +# CONFIG_BINFMT_AOUT is not set
 +# CONFIG_BINFMT_MISC is not set
 +
 +#
 +# Device Drivers
 +#
 +
 +#
 +# Generic Driver Options
 +#
 +# CONFIG_STANDALONE is not set
 +CONFIG_PREVENT_FIRMWARE_BUILD=y
 +# CONFIG_FW_LOADER is not set
 +# CONFIG_DEBUG_DRIVER is not set
 +
 +#
 +# Memory Technology Devices (MTD)
 +#
 +# CONFIG_MTD is not set
 +
 +#
 +# Parallel port support
 +#
 +# CONFIG_PARPORT is not set
 +
 +#
 +# Plug and Play support
 +#
 +# CONFIG_PNP is not set
 +
 +#
 +# Block devices
 +#
 +CONFIG_BLK_DEV_FD=y
 +# CONFIG_BLK_DEV_XD is not set
 +# CONFIG_BLK_CPQ_DA is not set
 +CONFIG_BLK_CPQ_CISS_DA=y
 +# CONFIG_CISS_SCSI_TAPE is not set
 +# CONFIG_BLK_DEV_DAC960 is not set
 +# CONFIG_BLK_DEV_UMEM is not set
 +CONFIG_BLK_DEV_LOOP=y
 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
 +# CONFIG_BLK_DEV_NBD is not set
 +# CONFIG_BLK_DEV_SX8 is not set
 +CONFIG_BLK_DEV_RAM=y
 +CONFIG_BLK_DEV_RAM_SIZE=4096
 +CONFIG_BLK_DEV_INITRD=y
 +CONFIG_INITRAMFS_SOURCE=""
 +# CONFIG_LBD is not set
 +# CONFIG_CDROM_PKTCDVD is not set
 +
 +#
 +# IO Schedulers
 +#
 +CONFIG_IOSCHED_NOOP=y
 +CONFIG_IOSCHED_AS=y
 +CONFIG_IOSCHED_DEADLINE=y
 +CONFIG_IOSCHED_CFQ=y
 +
 +#
 +# ATA/ATAPI/MFM/RLL support
 +#
 +CONFIG_IDE=y
 +CONFIG_BLK_DEV_IDE=y
 +
 +#
 +# Please see Documentation/ide.txt for help/info on IDE drives
 +#
 +# CONFIG_BLK_DEV_IDE_SATA is not set
 +# CONFIG_BLK_DEV_HD_IDE is not set
 +CONFIG_BLK_DEV_IDEDISK=y
 +# CONFIG_IDEDISK_MULTI_MODE is not set
 +CONFIG_BLK_DEV_IDECD=y
 +# CONFIG_BLK_DEV_IDETAPE is not set
 +# CONFIG_BLK_DEV_IDEFLOPPY is not set
 +# CONFIG_BLK_DEV_IDESCSI is not set
 +# CONFIG_IDE_TASK_IOCTL is not set
 +
 +#
 +# IDE chipset support/bugfixes
 +#
 +CONFIG_IDE_GENERIC=y
 +# CONFIG_BLK_DEV_CMD640 is not set
 +CONFIG_BLK_DEV_IDEPCI=y
 +# CONFIG_IDEPCI_SHARE_IRQ is not set
 +# CONFIG_BLK_DEV_OFFBOARD is not set
 +CONFIG_BLK_DEV_GENERIC=y
 +# CONFIG_BLK_DEV_OPTI621 is not set
 +# CONFIG_BLK_DEV_RZ1000 is not set
 +CONFIG_BLK_DEV_IDEDMA_PCI=y
 +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
 +CONFIG_IDEDMA_PCI_AUTO=y
 +# CONFIG_IDEDMA_ONLYDISK is not set
 +# CONFIG_BLK_DEV_AEC62XX is not set
 +# CONFIG_BLK_DEV_ALI15X3 is not set
 +# CONFIG_BLK_DEV_AMD74XX is not set
 +# CONFIG_BLK_DEV_ATIIXP is not set
 +# CONFIG_BLK_DEV_CMD64X is not set
 +# CONFIG_BLK_DEV_TRIFLEX is not set
 +# CONFIG_BLK_DEV_CY82C693 is not set
 +# CONFIG_BLK_DEV_CS5520 is not set
 +# CONFIG_BLK_DEV_CS5530 is not set
 +# CONFIG_BLK_DEV_HPT34X is not set
 +# CONFIG_BLK_DEV_HPT366 is not set
 +# CONFIG_BLK_DEV_SC1200 is not set
 +CONFIG_BLK_DEV_PIIX=y
 +# CONFIG_BLK_DEV_NS87415 is not set
 +# CONFIG_BLK_DEV_PDC202XX_OLD is not set
 +# CONFIG_BLK_DEV_PDC202XX_NEW is not set
 +CONFIG_BLK_DEV_SVWKS=y
 +# CONFIG_BLK_DEV_SIIMAGE is not set
 +# CONFIG_BLK_DEV_SIS5513 is not set
 +# CONFIG_BLK_DEV_SLC90E66 is not set
 +# CONFIG_BLK_DEV_TRM290 is not set
 +# CONFIG_BLK_DEV_VIA82CXXX is not set
 +# CONFIG_IDE_ARM is not set
 +# CONFIG_IDE_CHIPSETS is not set
 +CONFIG_BLK_DEV_IDEDMA=y
 +# CONFIG_IDEDMA_IVB is not set
 +CONFIG_IDEDMA_AUTO=y
 +# CONFIG_BLK_DEV_HD is not set
 +
 +#
 +# SCSI device support
 +#
 +CONFIG_SCSI=y
 +CONFIG_SCSI_PROC_FS=y
 +
 +#
 +# SCSI support type (disk, tape, CD-ROM)
 +#
 +CONFIG_BLK_DEV_SD=y
 +# CONFIG_CHR_DEV_ST is not set
 +# CONFIG_CHR_DEV_OSST is not set
 +# CONFIG_BLK_DEV_SR is not set
 +# CONFIG_CHR_DEV_SG is not set
 +
 +#
 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
 +#
 +# CONFIG_SCSI_MULTI_LUN is not set
 +# CONFIG_SCSI_CONSTANTS is not set
 +# CONFIG_SCSI_LOGGING is not set
 +
 +#
 +# SCSI Transport Attributes
 +#
 +# CONFIG_SCSI_SPI_ATTRS is not set
 +# CONFIG_SCSI_FC_ATTRS is not set
 +
 +#
 +# SCSI low-level drivers
 +#
 +CONFIG_BLK_DEV_3W_XXXX_RAID=y
 +# CONFIG_SCSI_3W_9XXX is not set
 +# CONFIG_SCSI_7000FASST is not set
 +# CONFIG_SCSI_ACARD is not set
 +# CONFIG_SCSI_AHA152X is not set
 +# CONFIG_SCSI_AHA1542 is not set
 +CONFIG_SCSI_AACRAID=y
 +CONFIG_SCSI_AIC7XXX=y
 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000
 +CONFIG_AIC7XXX_DEBUG_ENABLE=y
 +CONFIG_AIC7XXX_DEBUG_MASK=0
 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
 +# CONFIG_SCSI_AIC7XXX_OLD is not set
 +CONFIG_SCSI_AIC79XX=y
 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32
 +CONFIG_AIC79XX_RESET_DELAY_MS=15000
 +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
 +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_SCSI_IN2000 is not set
 +# CONFIG_MEGARAID_NEWGEN is not set
 +# CONFIG_MEGARAID_LEGACY is not set
 +CONFIG_SCSI_SATA=y
 +# CONFIG_SCSI_SATA_AHCI is not set
 +# CONFIG_SCSI_SATA_SVW is not set
 +CONFIG_SCSI_ATA_PIIX=y
 +# CONFIG_SCSI_SATA_NV is not set
 +CONFIG_SCSI_SATA_PROMISE=y
 +CONFIG_SCSI_SATA_SX4=y
 +CONFIG_SCSI_SATA_SIL=y
 +# CONFIG_SCSI_SATA_SIS is not set
 +# CONFIG_SCSI_SATA_ULI is not set
 +# CONFIG_SCSI_SATA_VIA is not set
 +# CONFIG_SCSI_SATA_VITESSE is not set
 +CONFIG_SCSI_BUSLOGIC=y
 +# CONFIG_SCSI_OMIT_FLASHPOINT is not set
 +# CONFIG_SCSI_CPQFCTS is not set
 +# CONFIG_SCSI_DMX3191D is not set
 +# CONFIG_SCSI_DTC3280 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_GENERIC_NCR5380 is not set
 +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
 +# CONFIG_SCSI_IPS is not set
 +# CONFIG_SCSI_INITIO is not set
 +# CONFIG_SCSI_INIA100 is not set
 +# CONFIG_SCSI_NCR53C406A is not set
 +# CONFIG_SCSI_SYM53C8XX_2 is not set
 +# CONFIG_SCSI_IPR is not set
 +# CONFIG_SCSI_PAS16 is not set
 +# CONFIG_SCSI_PCI2000 is not set
 +# CONFIG_SCSI_PCI2220I is not set
 +# CONFIG_SCSI_PSI240I is not set
 +# CONFIG_SCSI_QLOGIC_FAS is not set
 +# CONFIG_SCSI_QLOGIC_ISP is not set
 +# CONFIG_SCSI_QLOGIC_FC is not set
 +# CONFIG_SCSI_QLOGIC_1280 is not set
 +# CONFIG_SCSI_QLOGIC_1280_1040 is not set
 +CONFIG_SCSI_QLA2XXX=y
 +# CONFIG_SCSI_QLA21XX is not set
 +# CONFIG_SCSI_QLA22XX is not set
 +# CONFIG_SCSI_QLA2300 is not set
 +# CONFIG_SCSI_QLA2322 is not set
 +# CONFIG_SCSI_QLA6312 is not set
 +# CONFIG_SCSI_QLA6322 is not set
 +# CONFIG_SCSI_SEAGATE is not set
 +# CONFIG_SCSI_SYM53C416 is not set
 +# CONFIG_SCSI_DC395x is not set
 +# CONFIG_SCSI_DC390T is not set
 +# CONFIG_SCSI_T128 is not set
 +# CONFIG_SCSI_U14_34F is not set
 +# CONFIG_SCSI_ULTRASTOR is not set
 +# CONFIG_SCSI_NSP32 is not set
 +# CONFIG_SCSI_DEBUG is not set
 +
 +#
 +# Old CD-ROM drivers (not SCSI, not IDE)
 +#
 +# CONFIG_CD_NO_IDESCSI is not set
 +
 +#
 +# Multi-device support (RAID and LVM)
 +#
 +CONFIG_MD=y
 +CONFIG_BLK_DEV_MD=y
 +# CONFIG_MD_LINEAR is not set
 +CONFIG_MD_RAID0=y
 +CONFIG_MD_RAID1=y
 +# CONFIG_MD_RAID10 is not set
 +CONFIG_MD_RAID5=y
 +# CONFIG_MD_RAID6 is not set
 +# CONFIG_MD_MULTIPATH is not set
 +# CONFIG_MD_FAULTY is not set
 +CONFIG_BLK_DEV_DM=y
 +# CONFIG_DM_CRYPT is not set
 +CONFIG_DM_SNAPSHOT=y
 +CONFIG_DM_MIRROR=y
 +# CONFIG_DM_ZERO is not set
 +
 +#
 +# Fusion MPT device support
 +#
 +# CONFIG_FUSION is not set
 +
 +#
 +# IEEE 1394 (FireWire) support
 +#
 +# CONFIG_IEEE1394 is not set
 +
 +#
 +# I2O device support
 +#
 +# CONFIG_I2O is not set
 +
 +#
 +# Networking support
 +#
 +CONFIG_NET=y
 +
 +#
 +# Networking options
 +#
 +CONFIG_PACKET=y
 +# CONFIG_PACKET_MMAP is not set
 +# CONFIG_NETLINK_DEV is not set
 +CONFIG_UNIX=y
 +# CONFIG_NET_KEY is not set
 +CONFIG_INET=y
 +# CONFIG_IP_MULTICAST is not set
 +# CONFIG_IP_ADVANCED_ROUTER is not set
 +CONFIG_IP_PNP=y
 +CONFIG_IP_PNP_DHCP=y
 +# CONFIG_IP_PNP_BOOTP is not set
 +# CONFIG_IP_PNP_RARP is not set
 +# CONFIG_NET_IPIP is not set
 +# CONFIG_NET_IPGRE is not set
 +# CONFIG_ARPD is not set
 +# CONFIG_SYN_COOKIES is not set
 +# CONFIG_INET_AH is not set
 +# CONFIG_INET_ESP is not set
 +# CONFIG_INET_IPCOMP is not set
 +# CONFIG_INET_TUNNEL is not set
 +CONFIG_IP_TCPDIAG=y
 +# CONFIG_IP_TCPDIAG_IPV6 is not set
 +
 +#
 +# IP: Virtual Server Configuration
 +#
 +# CONFIG_IP_VS is not set
 +# CONFIG_IPV6 is not set
 +CONFIG_NETFILTER=y
 +# CONFIG_NETFILTER_DEBUG is not set
 +CONFIG_BRIDGE_NETFILTER=y
 +
 +#
 +# IP: Netfilter Configuration
 +#
 +CONFIG_IP_NF_CONNTRACK=m
 +CONFIG_IP_NF_CT_ACCT=y
 +# CONFIG_IP_NF_CONNTRACK_MARK is not set
 +# CONFIG_IP_NF_CT_PROTO_SCTP is not set
 +CONFIG_IP_NF_FTP=m
 +# CONFIG_IP_NF_IRC is not set
 +# CONFIG_IP_NF_TFTP is not set
 +# CONFIG_IP_NF_AMANDA is not set
 +# CONFIG_IP_NF_QUEUE is not set
 +CONFIG_IP_NF_IPTABLES=m
 +# CONFIG_IP_NF_MATCH_LIMIT is not set
 +# CONFIG_IP_NF_MATCH_IPRANGE is not set
 +# CONFIG_IP_NF_MATCH_MAC is not set
 +# CONFIG_IP_NF_MATCH_PKTTYPE is not set
 +# CONFIG_IP_NF_MATCH_MARK is not set
 +# CONFIG_IP_NF_MATCH_MULTIPORT is not set
 +# CONFIG_IP_NF_MATCH_TOS is not set
 +# CONFIG_IP_NF_MATCH_RECENT is not set
 +# CONFIG_IP_NF_MATCH_ECN is not set
 +# CONFIG_IP_NF_MATCH_DSCP is not set
 +# CONFIG_IP_NF_MATCH_AH_ESP is not set
 +# CONFIG_IP_NF_MATCH_LENGTH is not set
 +# CONFIG_IP_NF_MATCH_TTL is not set
 +# CONFIG_IP_NF_MATCH_TCPMSS is not set
 +# CONFIG_IP_NF_MATCH_HELPER is not set
 +# CONFIG_IP_NF_MATCH_STATE is not set
 +# CONFIG_IP_NF_MATCH_CONNTRACK is not set
 +# CONFIG_IP_NF_MATCH_OWNER is not set
 +# CONFIG_IP_NF_MATCH_PHYSDEV is not set
 +# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
 +# CONFIG_IP_NF_MATCH_REALM is not set
 +# CONFIG_IP_NF_MATCH_SCTP is not set
 +# CONFIG_IP_NF_MATCH_COMMENT is not set
 +# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
 +# CONFIG_IP_NF_FILTER is not set
 +# CONFIG_IP_NF_TARGET_LOG is not set
 +# CONFIG_IP_NF_TARGET_ULOG is not set
 +# CONFIG_IP_NF_TARGET_TCPMSS is not set
 +# CONFIG_IP_NF_NAT is not set
 +# CONFIG_IP_NF_MANGLE is not set
 +# CONFIG_IP_NF_RAW is not set
 +# CONFIG_IP_NF_ARPTABLES is not set
 +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
 +# CONFIG_IP_NF_COMPAT_IPFWADM is not set
 +
 +#
 +# Bridge: Netfilter Configuration
 +#
 +# CONFIG_BRIDGE_NF_EBTABLES is not set
 +
 +#
 +# SCTP Configuration (EXPERIMENTAL)
 +#
 +# CONFIG_IP_SCTP is not set
 +# CONFIG_ATM is not set
 +CONFIG_BRIDGE=y
 +# CONFIG_VLAN_8021Q is not set
 +# CONFIG_DECNET is not set
 +# CONFIG_LLC2 is not set
 +# CONFIG_IPX is not set
 +# CONFIG_ATALK is not set
 +# CONFIG_X25 is not set
 +# CONFIG_LAPB is not set
 +# CONFIG_NET_DIVERT is not set
 +# CONFIG_ECONET is not set
 +# CONFIG_WAN_ROUTER is not set
 +
 +#
 +# QoS and/or fair queueing
 +#
 +# CONFIG_NET_SCHED is not set
 +# CONFIG_NET_CLS_ROUTE is not set
 +
 +#
 +# Network testing
 +#
 +# CONFIG_NET_PKTGEN is not set
 +# CONFIG_NETPOLL is not set
 +# CONFIG_NET_POLL_CONTROLLER is not set
 +# CONFIG_HAMRADIO is not set
 +# CONFIG_IRDA is not set
 +# CONFIG_BT is not set
 +CONFIG_NETDEVICES=y
 +# CONFIG_DUMMY is not set
 +# CONFIG_BONDING is not set
 +# CONFIG_EQUALIZER is not set
 +# CONFIG_TUN is not set
 +
 +#
 +# ARCnet devices
 +#
 +# CONFIG_ARCNET is not set
 +
 +#
 +# Ethernet (10 or 100Mbit)
 +#
 +CONFIG_NET_ETHERNET=y
 +CONFIG_MII=y
 +# CONFIG_HAPPYMEAL is not set
 +# CONFIG_SUNGEM is not set
 +CONFIG_NET_VENDOR_3COM=y
 +# CONFIG_EL1 is not set
 +# CONFIG_EL2 is not set
 +# CONFIG_ELPLUS is not set
 +# CONFIG_EL16 is not set
 +# CONFIG_EL3 is not set
 +# CONFIG_3C515 is not set
 +CONFIG_VORTEX=y
 +# CONFIG_TYPHOON is not set
 +# CONFIG_LANCE is not set
 +# CONFIG_NET_VENDOR_SMC is not set
 +# CONFIG_NET_VENDOR_RACAL is not set
 +
 +#
 +# Tulip family network device support
 +#
 +CONFIG_NET_TULIP=y
 +# CONFIG_DE2104X is not set
 +CONFIG_TULIP=y
 +# CONFIG_TULIP_MWI is not set
 +# CONFIG_TULIP_MMIO is not set
 +# CONFIG_TULIP_NAPI is not set
 +# CONFIG_DE4X5 is not set
 +# CONFIG_WINBOND_840 is not set
 +# CONFIG_DM9102 is not set
 +# CONFIG_AT1700 is not set
 +# CONFIG_DEPCA is not set
 +# CONFIG_HP100 is not set
 +# CONFIG_NET_ISA is not set
 +CONFIG_NET_PCI=y
 +CONFIG_PCNET32=y
 +# CONFIG_AMD8111_ETH is not set
 +# CONFIG_ADAPTEC_STARFIRE is not set
 +# CONFIG_AC3200 is not set
 +# CONFIG_APRICOT is not set
 +# CONFIG_B44 is not set
 +# CONFIG_FORCEDETH is not set
 +# CONFIG_CS89x0 is not set
 +# CONFIG_DGRS is not set
 +# CONFIG_EEPRO100 is not set
 +CONFIG_E100=y
 +# CONFIG_E100_NAPI is not set
 +# CONFIG_FEALNX is not set
 +# CONFIG_NATSEMI is not set
 +# CONFIG_NE2K_PCI is not set
 +# CONFIG_8139CP is not set
 +CONFIG_8139TOO=y
 +CONFIG_8139TOO_PIO=y
 +# CONFIG_8139TOO_TUNE_TWISTER is not set
 +# CONFIG_8139TOO_8129 is not set
 +# CONFIG_8139_OLD_RX_RESET is not set
 +# CONFIG_SIS900 is not set
 +# CONFIG_EPIC100 is not set
 +# CONFIG_SUNDANCE is not set
 +# CONFIG_TLAN is not set
 +CONFIG_VIA_RHINE=y
 +# CONFIG_VIA_RHINE_MMIO is not set
 +# CONFIG_NET_POCKET is not set
 +
 +#
 +# Ethernet (1000 Mbit)
 +#
 +CONFIG_ACENIC=y
 +# CONFIG_ACENIC_OMIT_TIGON_I is not set
 +# CONFIG_DL2K is not set
 +CONFIG_E1000=y
 +# CONFIG_E1000_NAPI is not set
 +# CONFIG_NS83820 is not set
 +# CONFIG_HAMACHI is not set
 +# CONFIG_YELLOWFIN is not set
 +# CONFIG_R8169 is not set
 +# CONFIG_SK98LIN is not set
 +# CONFIG_VIA_VELOCITY is not set
 +CONFIG_TIGON3=y
 +
 +#
 +# Ethernet (10000 Mbit)
 +#
 +# CONFIG_IXGB is not set
 +# CONFIG_S2IO is not set
 +
 +#
 +# Token Ring devices
 +#
 +# CONFIG_TR is not set
 +
 +#
 +# Wireless LAN (non-hamradio)
 +#
 +# CONFIG_NET_RADIO is not set
 +
 +#
 +# Wan interfaces
 +#
 +# CONFIG_WAN is not set
 +# CONFIG_FDDI is not set
 +# CONFIG_HIPPI is not set
 +# CONFIG_PPP is not set
 +# CONFIG_SLIP is not set
 +# CONFIG_NET_FC is not set
 +# CONFIG_SHAPER is not set
 +# CONFIG_NETCONSOLE is not set
 +
 +#
 +# ISDN subsystem
 +#
 +# CONFIG_ISDN is not set
 +
 +#
 +# Telephony Support
 +#
 +# CONFIG_PHONE is not set
 +
 +#
 +# Input device support
 +#
 +CONFIG_INPUT=y
 +
 +#
 +# Userland interfaces
 +#
 +CONFIG_INPUT_MOUSEDEV=y
 +CONFIG_INPUT_MOUSEDEV_PSAUX=y
 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 +# CONFIG_INPUT_JOYDEV is not set
 +# CONFIG_INPUT_TSDEV is not set
 +# CONFIG_INPUT_EVDEV is not set
 +# CONFIG_INPUT_EVBUG is not set
 +
 +#
 +# Input I/O drivers
 +#
 +# CONFIG_GAMEPORT is not set
 +CONFIG_SOUND_GAMEPORT=y
 +CONFIG_SERIO=y
 +CONFIG_SERIO_I8042=y
 +CONFIG_SERIO_SERPORT=y
 +# CONFIG_SERIO_CT82C710 is not set
 +# CONFIG_SERIO_PCIPS2 is not set
 +# CONFIG_SERIO_RAW is not set
 +
 +#
 +# Input Device Drivers
 +#
 +CONFIG_INPUT_KEYBOARD=y
 +CONFIG_KEYBOARD_ATKBD=y
 +# CONFIG_KEYBOARD_SUNKBD is not set
 +# CONFIG_KEYBOARD_LKKBD is not set
 +# CONFIG_KEYBOARD_XTKBD is not set
 +# CONFIG_KEYBOARD_NEWTON is not set
 +CONFIG_INPUT_MOUSE=y
 +CONFIG_MOUSE_PS2=y
 +# CONFIG_MOUSE_SERIAL is not set
 +# CONFIG_MOUSE_INPORT is not set
 +# CONFIG_MOUSE_LOGIBM is not set
 +# CONFIG_MOUSE_PC110PAD is not set
 +# CONFIG_MOUSE_VSXXXAA is not set
 +# CONFIG_INPUT_JOYSTICK is not set
 +# CONFIG_INPUT_TOUCHSCREEN is not set
 +# CONFIG_INPUT_MISC is not set
 +
 +#
 +# Character devices
 +#
 +CONFIG_VT=y
 +CONFIG_VT_CONSOLE=y
 +CONFIG_HW_CONSOLE=y
 +# CONFIG_SERIAL_NONSTANDARD is not set
 +
 +#
 +# Serial drivers
 +#
 +# CONFIG_SERIAL_8250 is not set
 +
 +#
 +# Non-8250 serial port support
 +#
 +CONFIG_UNIX98_PTYS=y
 +CONFIG_LEGACY_PTYS=y
 +CONFIG_LEGACY_PTY_COUNT=256
 +
 +#
 +# IPMI
 +#
 +# CONFIG_IPMI_HANDLER is not set
 +
 +#
 +# Watchdog Cards
 +#
 +# CONFIG_WATCHDOG is not set
 +# CONFIG_HW_RANDOM is not set
 +# CONFIG_NVRAM is not set
 +# CONFIG_RTC is not set
 +# CONFIG_GEN_RTC is not set
 +# CONFIG_DTLK is not set
 +# CONFIG_R3964 is not set
 +# CONFIG_APPLICOM is not set
 +# CONFIG_SONYPI is not set
 +
 +#
 +# Ftape, the floppy tape device driver
 +#
 +# CONFIG_FTAPE is not set
 +# CONFIG_AGP is not set
 +# CONFIG_DRM is not set
 +# CONFIG_MWAVE is not set
 +# CONFIG_RAW_DRIVER is not set
 +# CONFIG_HANGCHECK_TIMER is not set
 +
 +#
 +# I2C support
 +#
 +# CONFIG_I2C is not set
 +
 +#
 +# Dallas's 1-wire bus
 +#
 +# CONFIG_W1 is not set
 +
 +#
 +# Misc devices
 +#
 +# CONFIG_IBM_ASM is not set
 +
 +#
 +# Multimedia devices
 +#
 +# CONFIG_VIDEO_DEV is not set
 +
 +#
 +# Digital Video Broadcasting Devices
 +#
 +# CONFIG_DVB is not set
 +
 +#
 +# Graphics support
 +#
 +# CONFIG_FB is not set
 +# CONFIG_VIDEO_SELECT is not set
 +
 +#
 +# Console display driver support
 +#
 +CONFIG_VGA_CONSOLE=y
 +# CONFIG_MDA_CONSOLE is not set
 +CONFIG_DUMMY_CONSOLE=y
 +
 +#
 +# Sound
 +#
 +# CONFIG_SOUND is not set
 +
 +#
 +# USB support
 +#
 +# CONFIG_USB is not set
 +CONFIG_USB_ARCH_HAS_HCD=y
 +CONFIG_USB_ARCH_HAS_OHCI=y
 +
 +#
 +# USB Gadget Support
 +#
 +# CONFIG_USB_GADGET is not set
 +
 +#
 +# File systems
 +#
 +CONFIG_EXT2_FS=y
 +# CONFIG_EXT2_FS_XATTR is not set
 +CONFIG_EXT3_FS=y
 +CONFIG_EXT3_FS_XATTR=y
 +# CONFIG_EXT3_FS_POSIX_ACL is not set
 +# CONFIG_EXT3_FS_SECURITY is not set
 +CONFIG_JBD=y
 +# CONFIG_JBD_DEBUG is not set
 +CONFIG_FS_MBCACHE=y
 +CONFIG_REISERFS_FS=y
 +# CONFIG_REISERFS_CHECK is not set
 +# CONFIG_REISERFS_PROC_INFO is not set
 +# CONFIG_REISERFS_FS_XATTR is not set
 +# CONFIG_JFS_FS is not set
 +# CONFIG_XFS_FS is not set
 +# CONFIG_MINIX_FS is not set
 +# CONFIG_ROMFS_FS is not set
 +# CONFIG_QUOTA is not set
 +CONFIG_DNOTIFY=y
 +# CONFIG_AUTOFS_FS is not set
 +# CONFIG_AUTOFS4_FS is not set
 +
 +#
 +# CD-ROM/DVD Filesystems
 +#
 +CONFIG_ISO9660_FS=y
 +CONFIG_JOLIET=y
 +CONFIG_ZISOFS=y
 +CONFIG_ZISOFS_FS=y
 +# CONFIG_UDF_FS is not set
 +
 +#
 +# DOS/FAT/NT Filesystems
 +#
 +CONFIG_FAT_FS=m
 +CONFIG_MSDOS_FS=m
 +CONFIG_VFAT_FS=m
 +CONFIG_FAT_DEFAULT_CODEPAGE=437
 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 +# CONFIG_NTFS_FS is not set
 +
 +#
 +# Pseudo filesystems
 +#
 +CONFIG_PROC_FS=y
 +CONFIG_PROC_KCORE=y
 +CONFIG_SYSFS=y
 +# CONFIG_DEVFS_FS is not set
 +# CONFIG_DEVPTS_FS_XATTR is not set
 +CONFIG_TMPFS=y
 +# CONFIG_TMPFS_XATTR is not set
 +# CONFIG_HUGETLBFS is not set
 +# CONFIG_HUGETLB_PAGE is not set
 +CONFIG_RAMFS=y
 +
 +#
 +# Miscellaneous filesystems
 +#
 +# CONFIG_ADFS_FS is not set
 +# CONFIG_AFFS_FS is not set
 +# CONFIG_HFS_FS is not set
 +# CONFIG_HFSPLUS_FS is not set
 +# CONFIG_BEFS_FS is not set
 +# CONFIG_BFS_FS is not set
 +# CONFIG_EFS_FS is not set
 +# CONFIG_CRAMFS is not set
 +# CONFIG_VXFS_FS is not set
 +# CONFIG_HPFS_FS is not set
 +# CONFIG_QNX4FS_FS is not set
 +# CONFIG_SYSV_FS is not set
 +# CONFIG_UFS_FS is not set
 +
 +#
 +# Network File Systems
 +#
 +CONFIG_NFS_FS=y
 +CONFIG_NFS_V3=y
 +# CONFIG_NFS_V4 is not set
 +# CONFIG_NFS_DIRECTIO is not set
 +CONFIG_NFSD=m
 +CONFIG_NFSD_V3=y
 +# CONFIG_NFSD_V4 is not set
 +CONFIG_NFSD_TCP=y
 +CONFIG_ROOT_NFS=y
 +CONFIG_LOCKD=y
 +CONFIG_LOCKD_V4=y
 +CONFIG_EXPORTFS=m
 +CONFIG_SUNRPC=y
 +# CONFIG_RPCSEC_GSS_KRB5 is not set
 +# CONFIG_RPCSEC_GSS_SPKM3 is not set
 +# CONFIG_SMB_FS is not set
 +# CONFIG_CIFS is not set
 +# CONFIG_NCP_FS is not set
 +# CONFIG_CODA_FS is not set
 +# CONFIG_AFS_FS is not set
 +
 +#
 +# Partition Types
 +#
 +# CONFIG_PARTITION_ADVANCED is not set
 +CONFIG_MSDOS_PARTITION=y
 +
 +#
 +# Native Language Support
 +#
 +CONFIG_NLS=y
 +CONFIG_NLS_DEFAULT="iso8859-1"
 +CONFIG_NLS_CODEPAGE_437=y
 +# CONFIG_NLS_CODEPAGE_737 is not set
 +# CONFIG_NLS_CODEPAGE_775 is not set
 +# CONFIG_NLS_CODEPAGE_850 is not set
 +# CONFIG_NLS_CODEPAGE_852 is not set
 +# CONFIG_NLS_CODEPAGE_855 is not set
 +# CONFIG_NLS_CODEPAGE_857 is not set
 +# CONFIG_NLS_CODEPAGE_860 is not set
 +# CONFIG_NLS_CODEPAGE_861 is not set
 +# CONFIG_NLS_CODEPAGE_862 is not set
 +# CONFIG_NLS_CODEPAGE_863 is not set
 +# CONFIG_NLS_CODEPAGE_864 is not set
 +# CONFIG_NLS_CODEPAGE_865 is not set
 +# CONFIG_NLS_CODEPAGE_866 is not set
 +# CONFIG_NLS_CODEPAGE_869 is not set
 +# CONFIG_NLS_CODEPAGE_936 is not set
 +# CONFIG_NLS_CODEPAGE_950 is not set
 +# CONFIG_NLS_CODEPAGE_932 is not set
 +# CONFIG_NLS_CODEPAGE_949 is not set
 +# CONFIG_NLS_CODEPAGE_874 is not set
 +# CONFIG_NLS_ISO8859_8 is not set
 +# CONFIG_NLS_CODEPAGE_1250 is not set
 +# CONFIG_NLS_CODEPAGE_1251 is not set
 +# CONFIG_NLS_ASCII is not set
 +CONFIG_NLS_ISO8859_1=y
 +# CONFIG_NLS_ISO8859_2 is not set
 +# CONFIG_NLS_ISO8859_3 is not set
 +# CONFIG_NLS_ISO8859_4 is not set
 +# CONFIG_NLS_ISO8859_5 is not set
 +# CONFIG_NLS_ISO8859_6 is not set
 +# CONFIG_NLS_ISO8859_7 is not set
 +# CONFIG_NLS_ISO8859_9 is not set
 +# CONFIG_NLS_ISO8859_13 is not set
 +# CONFIG_NLS_ISO8859_14 is not set
 +# CONFIG_NLS_ISO8859_15 is not set
 +# CONFIG_NLS_KOI8_R is not set
 +# CONFIG_NLS_KOI8_U is not set
 +# CONFIG_NLS_UTF8 is not set
 +
 +#
 +# Security options
 +#
 +# CONFIG_KEYS is not set
 +# CONFIG_SECURITY is not set
 +
 +#
 +# Cryptographic options
 +#
 +CONFIG_CRYPTO=y
 +CONFIG_CRYPTO_HMAC=y
 +# CONFIG_CRYPTO_NULL is not set
 +# CONFIG_CRYPTO_MD4 is not set
 +CONFIG_CRYPTO_MD5=m
 +CONFIG_CRYPTO_SHA1=m
 +# CONFIG_CRYPTO_SHA256 is not set
 +# CONFIG_CRYPTO_SHA512 is not set
 +# CONFIG_CRYPTO_WP512 is not set
 +CONFIG_CRYPTO_DES=m
 +# CONFIG_CRYPTO_BLOWFISH is not set
 +# CONFIG_CRYPTO_TWOFISH is not set
 +# CONFIG_CRYPTO_SERPENT is not set
 +# CONFIG_CRYPTO_AES_586 is not set
 +# CONFIG_CRYPTO_CAST5 is not set
 +# CONFIG_CRYPTO_CAST6 is not set
 +# CONFIG_CRYPTO_TEA is not set
 +# CONFIG_CRYPTO_ARC4 is not set
 +# CONFIG_CRYPTO_KHAZAD is not set
 +# CONFIG_CRYPTO_ANUBIS is not set
 +# CONFIG_CRYPTO_DEFLATE is not set
 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
 +CONFIG_CRYPTO_CRC32C=m
 +# CONFIG_CRYPTO_TEST is not set
 +
 +#
 +# Library routines
 +#
 +# CONFIG_CRC_CCITT is not set
 +CONFIG_CRC32=y
 +CONFIG_LIBCRC32C=y
 +CONFIG_ZLIB_INFLATE=y
index 2512c79cb137f662a558bf7b38f0f09461d4b8e1,0000000000000000000000000000000000000000..0e7dc0a3b3056fdbccd144dd7300c12445960501
mode 100644,000000..100644
--- /dev/null
@@@ -1,510 -1,0 +1,518 @@@
- # Wed Dec  1 09:22:09 2004
 +#
 +# Automatically generated make config: don't edit
 +# Linux kernel version: 2.6.10-rc2-xenU
++# Thu Dec 23 14:02:24 2004
 +#
 +CONFIG_XEN=y
 +CONFIG_ARCH_XEN=y
 +CONFIG_NO_IDLE_HZ=y
 +
 +#
 +# XEN
 +#
 +# CONFIG_XEN_PRIVILEGED_GUEST is not set
 +# CONFIG_XEN_PHYSDEV_ACCESS is not set
 +# CONFIG_XEN_BLKDEV_BACKEND is not set
 +# CONFIG_XEN_NETDEV_BACKEND is not set
 +CONFIG_XEN_BLKDEV_FRONTEND=y
 +CONFIG_XEN_NETDEV_FRONTEND=y
 +# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
 +CONFIG_XEN_WRITABLE_PAGETABLES=y
 +CONFIG_XEN_SCRUB_PAGES=y
 +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
 +CONFIG_X86=y
 +# CONFIG_X86_64 is not set
 +
 +#
 +# Code maturity level options
 +#
 +CONFIG_EXPERIMENTAL=y
 +CONFIG_CLEAN_COMPILE=y
 +CONFIG_BROKEN_ON_SMP=y
 +CONFIG_LOCK_KERNEL=y
 +
 +#
 +# General setup
 +#
 +CONFIG_LOCALVERSION=""
 +CONFIG_SWAP=y
 +CONFIG_SYSVIPC=y
 +# CONFIG_POSIX_MQUEUE is not set
 +# CONFIG_BSD_PROCESS_ACCT is not set
 +CONFIG_SYSCTL=y
 +# CONFIG_AUDIT is not set
 +CONFIG_LOG_BUF_SHIFT=14
 +CONFIG_HOTPLUG=y
 +CONFIG_KOBJECT_UEVENT=y
 +# CONFIG_IKCONFIG is not set
 +# CONFIG_EMBEDDED is not set
 +CONFIG_KALLSYMS=y
 +# CONFIG_KALLSYMS_ALL is not set
 +# CONFIG_KALLSYMS_EXTRA_PASS is not set
 +CONFIG_FUTEX=y
 +CONFIG_EPOLL=y
 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 +CONFIG_SHMEM=y
 +CONFIG_CC_ALIGN_FUNCTIONS=0
 +CONFIG_CC_ALIGN_LABELS=0
 +CONFIG_CC_ALIGN_LOOPS=0
 +CONFIG_CC_ALIGN_JUMPS=0
 +# CONFIG_TINY_SHMEM is not set
 +
 +#
 +# Loadable module support
 +#
 +CONFIG_MODULES=y
 +CONFIG_MODULE_UNLOAD=y
 +# CONFIG_MODULE_FORCE_UNLOAD is not set
 +CONFIG_OBSOLETE_MODPARM=y
 +# CONFIG_MODVERSIONS is not set
 +# CONFIG_MODULE_SRCVERSION_ALL is not set
 +CONFIG_KMOD=y
 +
 +#
 +# X86 Processor Configuration
 +#
 +CONFIG_XENARCH="i386"
 +CONFIG_MMU=y
 +CONFIG_UID16=y
 +CONFIG_GENERIC_ISA_DMA=y
 +CONFIG_GENERIC_IOMAP=y
++# CONFIG_M386 is not set
++# CONFIG_M486 is not set
++# CONFIG_M586 is not set
++# CONFIG_M586TSC is not set
++# CONFIG_M586MMX is not set
 +# CONFIG_M686 is not set
 +# CONFIG_MPENTIUMII is not set
 +# CONFIG_MPENTIUMIII is not set
 +# CONFIG_MPENTIUMM is not set
 +CONFIG_MPENTIUM4=y
 +# CONFIG_MK6 is not set
 +# CONFIG_MK7 is not set
 +# CONFIG_MK8 is not set
 +# CONFIG_MCRUSOE is not set
++# CONFIG_MWINCHIPC6 is not set
++# CONFIG_MWINCHIP2 is not set
++# CONFIG_MWINCHIP3D is not set
 +# CONFIG_MCYRIXIII is not set
 +# CONFIG_MVIAC3_2 is not set
 +# CONFIG_X86_GENERIC is not set
 +CONFIG_X86_CMPXCHG=y
 +CONFIG_X86_XADD=y
 +CONFIG_X86_L1_CACHE_SHIFT=7
 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 +CONFIG_X86_WP_WORKS_OK=y
 +CONFIG_X86_INVLPG=y
 +CONFIG_X86_BSWAP=y
 +CONFIG_X86_POPAD_OK=y
 +CONFIG_X86_GOOD_APIC=y
 +CONFIG_X86_INTEL_USERCOPY=y
 +CONFIG_X86_USE_PPRO_CHECKSUM=y
 +# CONFIG_HPET_TIMER is not set
 +# CONFIG_HPET_EMULATE_RTC is not set
 +# CONFIG_SMP is not set
 +CONFIG_PREEMPT=y
 +CONFIG_X86_CPUID=y
 +
 +#
 +# Firmware Drivers
 +#
 +# CONFIG_EDD is not set
 +CONFIG_NOHIGHMEM=y
 +# CONFIG_HIGHMEM4G is not set
 +CONFIG_HAVE_DEC_LOCK=y
 +# CONFIG_REGPARM is not set
 +
 +#
 +# Kernel hacking
 +#
 +CONFIG_DEBUG_KERNEL=y
 +CONFIG_EARLY_PRINTK=y
 +# CONFIG_DEBUG_STACKOVERFLOW is not set
 +# CONFIG_DEBUG_STACK_USAGE is not set
 +CONFIG_DEBUG_SLAB=y
 +# CONFIG_MAGIC_SYSRQ is not set
 +# CONFIG_DEBUG_SPINLOCK is not set
 +CONFIG_DEBUG_PAGEALLOC=y
 +# CONFIG_DEBUG_INFO is not set
 +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 +# CONFIG_FRAME_POINTER is not set
 +# CONFIG_4KSTACKS is not set
 +CONFIG_GENERIC_HARDIRQS=y
 +CONFIG_GENERIC_IRQ_PROBE=y
 +CONFIG_X86_BIOS_REBOOT=y
 +CONFIG_PC=y
 +
 +#
 +# Executable file formats
 +#
 +CONFIG_BINFMT_ELF=y
 +# CONFIG_BINFMT_AOUT is not set
 +# CONFIG_BINFMT_MISC is not set
 +
 +#
 +# Device Drivers
 +#
 +
 +#
 +# Generic Driver Options
 +#
 +CONFIG_STANDALONE=y
 +CONFIG_PREVENT_FIRMWARE_BUILD=y
 +# CONFIG_FW_LOADER is not set
 +# CONFIG_DEBUG_DRIVER is not set
 +
 +#
 +# Block devices
 +#
 +# CONFIG_BLK_DEV_FD is not set
 +CONFIG_BLK_DEV_LOOP=m
 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
 +CONFIG_BLK_DEV_NBD=m
 +CONFIG_BLK_DEV_RAM=y
 +CONFIG_BLK_DEV_RAM_SIZE=4096
 +CONFIG_BLK_DEV_INITRD=y
 +CONFIG_INITRAMFS_SOURCE=""
 +# CONFIG_LBD is not set
 +# CONFIG_CDROM_PKTCDVD is not set
 +
 +#
 +# IO Schedulers
 +#
 +CONFIG_IOSCHED_NOOP=y
 +CONFIG_IOSCHED_AS=y
 +CONFIG_IOSCHED_DEADLINE=y
 +CONFIG_IOSCHED_CFQ=y
 +
 +#
 +# SCSI device support
 +#
 +CONFIG_SCSI=m
 +CONFIG_SCSI_PROC_FS=y
 +
 +#
 +# SCSI support type (disk, tape, CD-ROM)
 +#
 +CONFIG_BLK_DEV_SD=m
 +# CONFIG_CHR_DEV_ST is not set
 +# CONFIG_CHR_DEV_OSST is not set
 +# CONFIG_BLK_DEV_SR is not set
 +# CONFIG_CHR_DEV_SG is not set
 +
 +#
 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
 +#
 +# CONFIG_SCSI_MULTI_LUN is not set
 +# CONFIG_SCSI_CONSTANTS is not set
 +# CONFIG_SCSI_LOGGING is not set
 +
 +#
 +# SCSI Transport Attributes
 +#
 +# CONFIG_SCSI_SPI_ATTRS is not set
 +# CONFIG_SCSI_FC_ATTRS is not set
 +
 +#
 +# SCSI low-level drivers
 +#
 +# CONFIG_SCSI_SATA is not set
 +# CONFIG_SCSI_QLOGIC_1280_1040 is not set
 +# CONFIG_SCSI_DEBUG is not set
 +
 +#
 +# Multi-device support (RAID and LVM)
 +#
 +# CONFIG_MD is not set
 +
 +#
 +# Networking support
 +#
 +CONFIG_NET=y
 +
 +#
 +# Networking options
 +#
 +CONFIG_PACKET=y
 +# CONFIG_PACKET_MMAP is not set
 +# CONFIG_NETLINK_DEV is not set
 +CONFIG_UNIX=y
 +# CONFIG_NET_KEY is not set
 +CONFIG_INET=y
 +# CONFIG_IP_MULTICAST is not set
 +# CONFIG_IP_ADVANCED_ROUTER is not set
 +CONFIG_IP_PNP=y
 +# CONFIG_IP_PNP_DHCP is not set
 +# CONFIG_IP_PNP_BOOTP is not set
 +# CONFIG_IP_PNP_RARP is not set
 +# CONFIG_NET_IPIP is not set
 +# CONFIG_NET_IPGRE is not set
 +# CONFIG_ARPD is not set
 +# CONFIG_SYN_COOKIES is not set
 +# CONFIG_INET_AH is not set
 +# CONFIG_INET_ESP is not set
 +# CONFIG_INET_IPCOMP is not set
 +# CONFIG_INET_TUNNEL is not set
 +CONFIG_IP_TCPDIAG=y
 +# CONFIG_IP_TCPDIAG_IPV6 is not set
 +# CONFIG_IPV6 is not set
 +# CONFIG_NETFILTER is not set
 +
 +#
 +# SCTP Configuration (EXPERIMENTAL)
 +#
 +# CONFIG_IP_SCTP is not set
 +# CONFIG_ATM is not set
 +# CONFIG_BRIDGE is not set
 +# CONFIG_VLAN_8021Q is not set
 +# CONFIG_DECNET is not set
 +# CONFIG_LLC2 is not set
 +# CONFIG_IPX is not set
 +# CONFIG_ATALK is not set
 +# CONFIG_X25 is not set
 +# CONFIG_LAPB is not set
 +# CONFIG_NET_DIVERT is not set
 +# CONFIG_ECONET is not set
 +# CONFIG_WAN_ROUTER is not set
 +
 +#
 +# QoS and/or fair queueing
 +#
 +# CONFIG_NET_SCHED is not set
 +# CONFIG_NET_CLS_ROUTE is not set
 +
 +#
 +# Network testing
 +#
 +# CONFIG_NET_PKTGEN is not set
 +# CONFIG_NETPOLL is not set
 +# CONFIG_NET_POLL_CONTROLLER is not set
 +# CONFIG_HAMRADIO is not set
 +# CONFIG_IRDA is not set
 +# CONFIG_BT is not set
 +CONFIG_NETDEVICES=y
 +# CONFIG_DUMMY is not set
 +# CONFIG_BONDING is not set
 +# CONFIG_EQUALIZER is not set
 +# CONFIG_TUN is not set
 +
 +#
 +# Ethernet (10 or 100Mbit)
 +#
 +# CONFIG_NET_ETHERNET is not set
 +
 +#
 +# Ethernet (1000 Mbit)
 +#
 +
 +#
 +# Ethernet (10000 Mbit)
 +#
 +
 +#
 +# Token Ring devices
 +#
 +
 +#
 +# Wireless LAN (non-hamradio)
 +#
 +# CONFIG_NET_RADIO is not set
 +
 +#
 +# Wan interfaces
 +#
 +# CONFIG_WAN is not set
 +# CONFIG_PPP is not set
 +# CONFIG_SLIP is not set
 +# CONFIG_SHAPER is not set
 +# CONFIG_NETCONSOLE is not set
 +CONFIG_UNIX98_PTYS=y
 +
 +#
 +# File systems
 +#
 +CONFIG_EXT2_FS=y
 +# CONFIG_EXT2_FS_XATTR is not set
 +CONFIG_EXT3_FS=y
 +CONFIG_EXT3_FS_XATTR=y
 +# CONFIG_EXT3_FS_POSIX_ACL is not set
 +# CONFIG_EXT3_FS_SECURITY is not set
 +CONFIG_JBD=y
 +# CONFIG_JBD_DEBUG is not set
 +CONFIG_FS_MBCACHE=y
 +CONFIG_REISERFS_FS=y
 +# CONFIG_REISERFS_CHECK is not set
 +# CONFIG_REISERFS_PROC_INFO is not set
 +# CONFIG_REISERFS_FS_XATTR is not set
 +# CONFIG_JFS_FS is not set
 +# CONFIG_XFS_FS is not set
 +# CONFIG_MINIX_FS is not set
 +# CONFIG_ROMFS_FS is not set
 +# CONFIG_QUOTA is not set
 +CONFIG_DNOTIFY=y
 +CONFIG_AUTOFS_FS=y
 +CONFIG_AUTOFS4_FS=y
 +
 +#
 +# CD-ROM/DVD Filesystems
 +#
 +CONFIG_ISO9660_FS=y
 +CONFIG_JOLIET=y
 +CONFIG_ZISOFS=y
 +CONFIG_ZISOFS_FS=y
 +# CONFIG_UDF_FS is not set
 +
 +#
 +# DOS/FAT/NT Filesystems
 +#
 +CONFIG_FAT_FS=m
 +CONFIG_MSDOS_FS=m
 +CONFIG_VFAT_FS=m
 +CONFIG_FAT_DEFAULT_CODEPAGE=437
 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 +# CONFIG_NTFS_FS is not set
 +
 +#
 +# Pseudo filesystems
 +#
 +CONFIG_PROC_FS=y
 +CONFIG_PROC_KCORE=y
 +CONFIG_SYSFS=y
 +# CONFIG_DEVFS_FS is not set
 +CONFIG_DEVPTS_FS_XATTR=y
 +# CONFIG_DEVPTS_FS_SECURITY is not set
 +CONFIG_TMPFS=y
 +# CONFIG_TMPFS_XATTR is not set
 +# CONFIG_HUGETLBFS is not set
 +# CONFIG_HUGETLB_PAGE is not set
 +CONFIG_RAMFS=y
 +
 +#
 +# Miscellaneous filesystems
 +#
 +# CONFIG_ADFS_FS is not set
 +# CONFIG_AFFS_FS is not set
 +# CONFIG_HFS_FS is not set
 +# CONFIG_HFSPLUS_FS is not set
 +# CONFIG_BEFS_FS is not set
 +# CONFIG_BFS_FS is not set
 +# CONFIG_EFS_FS is not set
 +# CONFIG_CRAMFS is not set
 +# CONFIG_VXFS_FS is not set
 +# CONFIG_HPFS_FS is not set
 +# CONFIG_QNX4FS_FS is not set
 +# CONFIG_SYSV_FS is not set
 +# CONFIG_UFS_FS is not set
 +
 +#
 +# Network File Systems
 +#
 +CONFIG_NFS_FS=y
 +CONFIG_NFS_V3=y
 +# CONFIG_NFS_V4 is not set
 +# CONFIG_NFS_DIRECTIO is not set
 +# CONFIG_NFSD is not set
 +CONFIG_ROOT_NFS=y
 +CONFIG_LOCKD=y
 +CONFIG_LOCKD_V4=y
 +# CONFIG_EXPORTFS is not set
 +CONFIG_SUNRPC=y
 +# CONFIG_RPCSEC_GSS_KRB5 is not set
 +# CONFIG_RPCSEC_GSS_SPKM3 is not set
 +# CONFIG_SMB_FS is not set
 +# CONFIG_CIFS is not set
 +# CONFIG_NCP_FS is not set
 +# CONFIG_CODA_FS is not set
 +# CONFIG_AFS_FS is not set
 +
 +#
 +# Partition Types
 +#
 +# CONFIG_PARTITION_ADVANCED is not set
 +CONFIG_MSDOS_PARTITION=y
 +
 +#
 +# Native Language Support
 +#
 +CONFIG_NLS=y
 +CONFIG_NLS_DEFAULT="iso8859-1"
 +CONFIG_NLS_CODEPAGE_437=y
 +# CONFIG_NLS_CODEPAGE_737 is not set
 +# CONFIG_NLS_CODEPAGE_775 is not set
 +# CONFIG_NLS_CODEPAGE_850 is not set
 +# CONFIG_NLS_CODEPAGE_852 is not set
 +# CONFIG_NLS_CODEPAGE_855 is not set
 +# CONFIG_NLS_CODEPAGE_857 is not set
 +# CONFIG_NLS_CODEPAGE_860 is not set
 +# CONFIG_NLS_CODEPAGE_861 is not set
 +# CONFIG_NLS_CODEPAGE_862 is not set
 +# CONFIG_NLS_CODEPAGE_863 is not set
 +# CONFIG_NLS_CODEPAGE_864 is not set
 +# CONFIG_NLS_CODEPAGE_865 is not set
 +# CONFIG_NLS_CODEPAGE_866 is not set
 +# CONFIG_NLS_CODEPAGE_869 is not set
 +# CONFIG_NLS_CODEPAGE_936 is not set
 +# CONFIG_NLS_CODEPAGE_950 is not set
 +# CONFIG_NLS_CODEPAGE_932 is not set
 +# CONFIG_NLS_CODEPAGE_949 is not set
 +# CONFIG_NLS_CODEPAGE_874 is not set
 +# CONFIG_NLS_ISO8859_8 is not set
 +# CONFIG_NLS_CODEPAGE_1250 is not set
 +# CONFIG_NLS_CODEPAGE_1251 is not set
 +# CONFIG_NLS_ASCII is not set
 +CONFIG_NLS_ISO8859_1=y
 +# CONFIG_NLS_ISO8859_2 is not set
 +# CONFIG_NLS_ISO8859_3 is not set
 +# CONFIG_NLS_ISO8859_4 is not set
 +# CONFIG_NLS_ISO8859_5 is not set
 +# CONFIG_NLS_ISO8859_6 is not set
 +# CONFIG_NLS_ISO8859_7 is not set
 +# CONFIG_NLS_ISO8859_9 is not set
 +# CONFIG_NLS_ISO8859_13 is not set
 +# CONFIG_NLS_ISO8859_14 is not set
 +# CONFIG_NLS_ISO8859_15 is not set
 +# CONFIG_NLS_KOI8_R is not set
 +# CONFIG_NLS_KOI8_U is not set
 +# CONFIG_NLS_UTF8 is not set
 +
 +#
 +# Security options
 +#
 +# CONFIG_KEYS is not set
 +# CONFIG_SECURITY is not set
 +
 +#
 +# Cryptographic options
 +#
 +CONFIG_CRYPTO=y
 +# CONFIG_CRYPTO_HMAC is not set
 +# CONFIG_CRYPTO_NULL is not set
 +# CONFIG_CRYPTO_MD4 is not set
 +CONFIG_CRYPTO_MD5=m
 +# CONFIG_CRYPTO_SHA1 is not set
 +# CONFIG_CRYPTO_SHA256 is not set
 +# CONFIG_CRYPTO_SHA512 is not set
 +# CONFIG_CRYPTO_WP512 is not set
 +# CONFIG_CRYPTO_DES is not set
 +# CONFIG_CRYPTO_BLOWFISH is not set
 +# CONFIG_CRYPTO_TWOFISH is not set
 +# CONFIG_CRYPTO_SERPENT is not set
 +# CONFIG_CRYPTO_AES_586 is not set
 +# CONFIG_CRYPTO_CAST5 is not set
 +# CONFIG_CRYPTO_CAST6 is not set
 +# CONFIG_CRYPTO_TEA is not set
 +# CONFIG_CRYPTO_ARC4 is not set
 +# CONFIG_CRYPTO_KHAZAD is not set
 +# CONFIG_CRYPTO_ANUBIS is not set
 +# CONFIG_CRYPTO_DEFLATE is not set
 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
 +CONFIG_CRYPTO_CRC32C=m
 +# CONFIG_CRYPTO_TEST is not set
 +
 +#
 +# Library routines
 +#
 +# CONFIG_CRC_CCITT is not set
 +# CONFIG_CRC32 is not set
 +CONFIG_LIBCRC32C=m
 +CONFIG_ZLIB_INFLATE=y
index d58f91fbd36cf6eedc87cb58f741c988ccf0c2f5,0000000000000000000000000000000000000000..f34d271ff6776338540dc5d251d95167e69f401e
mode 100644,000000..100644
--- /dev/null
@@@ -1,956 -1,0 +1,956 @@@
- #config M386
- #     bool "386"
- #     ---help---
- #       This is the processor type of your CPU. This information is used for
- #       optimizing purposes. In order to compile a kernel that can run on
- #       all x86 CPU types (albeit not optimally fast), you can specify
- #       "386" here.
- #
- #       The kernel will not necessarily run on earlier architectures than
- #       the one you have chosen, e.g. a Pentium optimized kernel will run on
- #       a PPro, but not necessarily on a i486.
- #
- #       Here are the settings recommended for greatest speed:
- #       - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
- #       486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
- #       will run on a 386 class machine.
- #       - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
- #       SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
- #       - "586" for generic Pentium CPUs lacking the TSC
- #       (time stamp counter) register.
- #       - "Pentium-Classic" for the Intel Pentium.
- #       - "Pentium-MMX" for the Intel Pentium MMX.
- #       - "Pentium-Pro" for the Intel Pentium Pro.
- #       - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
- #       - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
- #       - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
- #       - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
- #       - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
- #       - "Crusoe" for the Transmeta Crusoe series.
 +#
 +# For a description of the syntax of this configuration file,
 +# see Documentation/kbuild/kconfig-language.txt.
 +#
 +
 +menu "X86 Processor Configuration"
 +
 +config XENARCH
 +      string
 +      default i386
 +
 +config MMU
 +      bool
 +      default y
 +
 +config SBUS
 +      bool
 +
 +config UID16
 +      bool
 +      default y
 +
 +config GENERIC_ISA_DMA
 +      bool
 +      default y
 +
 +config GENERIC_IOMAP
 +      bool
 +      default y
 +
 +choice
 +      prompt "Processor family"
 +      default M686
 +
- #       - "Winchip-C6" for original IDT Winchip.
- #       - "Winchip-2" for IDT Winchip 2.
- #       - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
- #       - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
- #       - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
- #
- #       If you don't know what to do, choose "386".
- #config M486
- #     bool "486"
- #     help
- #       Select this for a 486 series processor, either Intel or one of the
- #       compatible processors from AMD, Cyrix, IBM, or Intel.  Includes DX,
- #       DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
- #       U5S.
- #config M586
- #     bool "586/K5/5x86/6x86/6x86MX"
- #     help
- #       Select this for an 586 or 686 series processor such as the AMD K5,
- #       the Intel 5x86 or 6x86, or the Intel 6x86MX.  This choice does not
- #       assume the RDTSC (Read Time Stamp Counter) instruction.
- #config M586TSC
- #     bool "Pentium-Classic"
- #     help
- #       Select this for a Pentium Classic processor with the RDTSC (Read
- #       Time Stamp Counter) instruction for benchmarking.
- #config M586MMX
- #     bool "Pentium-MMX"
- #     help
- #       Select this for a Pentium with the MMX graphics/multimedia
- #       extended instructions.
++config M386
++      bool "386"
++      ---help---
++        This is the processor type of your CPU. This information is used for
++        optimizing purposes. In order to compile a kernel that can run on
++        all x86 CPU types (albeit not optimally fast), you can specify
++        "386" here.
++
++        The kernel will not necessarily run on earlier architectures than
++        the one you have chosen, e.g. a Pentium optimized kernel will run on
++        a PPro, but not necessarily on a i486.
++
++        Here are the settings recommended for greatest speed:
++        - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
++        486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
++        will run on a 386 class machine.
++        - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
++        SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
++        - "586" for generic Pentium CPUs lacking the TSC
++        (time stamp counter) register.
++        - "Pentium-Classic" for the Intel Pentium.
++        - "Pentium-MMX" for the Intel Pentium MMX.
++        - "Pentium-Pro" for the Intel Pentium Pro.
++        - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
++        - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
++        - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
++        - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
++        - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
++        - "Crusoe" for the Transmeta Crusoe series.
 +#       - "Efficeon" for the Transmeta Efficeon series.
- #config MEFFICEON
- #     bool "Efficeon"
- #     help
- #       Select this for a Transmeta Efficeon processor.
- #config MWINCHIPC6
- #     bool "Winchip-C6"
- #     help
- #       Select this for an IDT Winchip C6 chip.  Linux and GCC
- #       treat this chip as a 586TSC with some extended instructions
- #       and alignment requirements.
- #config MWINCHIP2
- #     bool "Winchip-2"
- #     help
- #       Select this for an IDT Winchip-2.  Linux and GCC
- #       treat this chip as a 586TSC with some extended instructions
- #       and alignment requirements.
- #config MWINCHIP3D
- #     bool "Winchip-2A/Winchip-3"
- #     help
- #       Select this for an IDT Winchip-2A or 3.  Linux and GCC
- #       treat this chip as a 586TSC with some extended instructions
- #       and alignment reqirements.  Also enable out of order memory
- #       stores for this CPU, which can increase performance of some
- #       operations.
++        - "Winchip-C6" for original IDT Winchip.
++        - "Winchip-2" for IDT Winchip 2.
++        - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
++        - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
++        - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
++
++        If you don't know what to do, choose "386".
++
++config M486
++      bool "486"
++      help
++        Select this for a 486 series processor, either Intel or one of the
++        compatible processors from AMD, Cyrix, IBM, or Intel.  Includes DX,
++        DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
++        U5S.
++
++config M586
++      bool "586/K5/5x86/6x86/6x86MX"
++      help
++        Select this for an 586 or 686 series processor such as the AMD K5,
++        the Intel 5x86 or 6x86, or the Intel 6x86MX.  This choice does not
++        assume the RDTSC (Read Time Stamp Counter) instruction.
++
++config M586TSC
++      bool "Pentium-Classic"
++      help
++        Select this for a Pentium Classic processor with the RDTSC (Read
++        Time Stamp Counter) instruction for benchmarking.
++
++config M586MMX
++      bool "Pentium-MMX"
++      help
++        Select this for a Pentium with the MMX graphics/multimedia
++        extended instructions.
 +
 +config M686
 +      bool "Pentium-Pro"
 +      help
 +        Select this for Intel Pentium Pro chips.  This enables the use of
 +        Pentium Pro extended instructions, and disables the init-time guard
 +        against the f00f bug found in earlier Pentiums.
 +
 +config MPENTIUMII
 +      bool "Pentium-II/Celeron(pre-Coppermine)"
 +      help
 +        Select this for Intel chips based on the Pentium-II and
 +        pre-Coppermine Celeron core.  This option enables an unaligned
 +        copy optimization, compiles the kernel with optimization flags
 +        tailored for the chip, and applies any applicable Pentium Pro
 +        optimizations.
 +
 +config MPENTIUMIII
 +      bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
 +      help
 +        Select this for Intel chips based on the Pentium-III and
 +        Celeron-Coppermine core.  This option enables use of some
 +        extended prefetch instructions in addition to the Pentium II
 +        extensions.
 +
 +config MPENTIUMM
 +      bool "Pentium M"
 +      help
 +        Select this for Intel Pentium M (not Pentium-4 M)
 +        notebook chips.
 +
 +config MPENTIUM4
 +      bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon"
 +      help
 +        Select this for Intel Pentium 4 chips.  This includes the
 +        Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M
 +        (not Pentium M) chips.  This option enables compile flags
 +        optimized for the chip, uses the correct cache shift, and
 +        applies any applicable Pentium III optimizations.
 +
 +config MK6
 +      bool "K6/K6-II/K6-III"
 +      help
 +        Select this for an AMD K6-family processor.  Enables use of
 +        some extended instructions, and passes appropriate optimization
 +        flags to GCC.
 +
 +config MK7
 +      bool "Athlon/Duron/K7"
 +      help
 +        Select this for an AMD Athlon K7-family processor.  Enables use of
 +        some extended instructions, and passes appropriate optimization
 +        flags to GCC.
 +
 +config MK8
 +      bool "Opteron/Athlon64/Hammer/K8"
 +      help
 +        Select this for an AMD Opteron or Athlon64 Hammer-family processor.  Enables
 +        use of some extended instructions, and passes appropriate optimization
 +        flags to GCC.
 +
 +config MCRUSOE
 +      bool "Crusoe"
 +      help
 +        Select this for a Transmeta Crusoe processor.  Treats the processor
 +        like a 586 with TSC, and sets some GCC optimization flags (like a
 +        Pentium Pro with no alignment requirements).
 +
++config MEFFICEON
++      bool "Efficeon"
++      help
++        Select this for a Transmeta Efficeon processor.
++
++config MWINCHIPC6
++      bool "Winchip-C6"
++      help
++        Select this for an IDT Winchip C6 chip.  Linux and GCC
++        treat this chip as a 586TSC with some extended instructions
++        and alignment requirements.
++
++config MWINCHIP2
++      bool "Winchip-2"
++      help
++        Select this for an IDT Winchip-2.  Linux and GCC
++        treat this chip as a 586TSC with some extended instructions
++        and alignment requirements.
++
++config MWINCHIP3D
++      bool "Winchip-2A/Winchip-3"
++      help
++        Select this for an IDT Winchip-2A or 3.  Linux and GCC
++        treat this chip as a 586TSC with some extended instructions
++        and alignment reqirements.  Also enable out of order memory
++        stores for this CPU, which can increase performance of some
++        operations.
 +
 +config MCYRIXIII
 +      bool "CyrixIII/VIA-C3"
 +      help
 +        Select this for a Cyrix III or C3 chip.  Presently Linux and GCC
 +        treat this chip as a generic 586. Whilst the CPU is 686 class,
 +        it lacks the cmov extension which gcc assumes is present when
 +        generating 686 code.
 +        Note that Nehemiah (Model 9) and above will not boot with this
 +        kernel due to them lacking the 3DNow! instructions used in earlier
 +        incarnations of the CPU.
 +
 +config MVIAC3_2
 +      bool "VIA C3-2 (Nehemiah)"
 +      help
 +        Select this for a VIA C3 "Nehemiah". Selecting this enables usage
 +        of SSE and tells gcc to treat the CPU as a 686.
 +        Note, this kernel will not boot on older (pre model 9) C3s.
 +
 +endchoice
 +
 +config X86_GENERIC
 +       bool "Generic x86 support"
 +       help
 +        Instead of just including optimizations for the selected
 +        x86 variant (e.g. PII, Crusoe or Athlon), include some more
 +        generic optimizations as well. This will make the kernel
 +        perform better on x86 CPUs other than that selected.
 +
 +        This is really intended for distributors who need more
 +        generic optimizations.
 +
 +#
 +# Define implied options from the CPU selection here
 +#
 +config X86_CMPXCHG
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_XADD
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_L1_CACHE_SHIFT
 +      int
 +      default "7" if MPENTIUM4 || X86_GENERIC
 +      default "4" if X86_ELAN || M486 || M386
 +      default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2
 +      default "6" if MK7 || MK8 || MPENTIUMM
 +
 +config RWSEM_GENERIC_SPINLOCK
 +      bool
 +      depends on M386
 +      default y
 +
 +config RWSEM_XCHGADD_ALGORITHM
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_PPRO_FENCE
 +      bool
 +      depends on M686 || M586MMX || M586TSC || M586 || M486 || M386
 +      default y
 +
 +config X86_F00F_BUG
 +      bool
 +      depends on M586MMX || M586TSC || M586 || M486 || M386
 +      default y
 +
 +config X86_WP_WORKS_OK
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_INVLPG
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_BSWAP
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_POPAD_OK
 +      bool
 +      depends on !M386
 +      default y
 +
 +config X86_ALIGNMENT_16
 +      bool
 +      depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2
 +      default y
 +
 +config X86_GOOD_APIC
 +      bool
 +      depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON
 +      default y
 +
 +config X86_INTEL_USERCOPY
 +      bool
 +      depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON
 +      default y
 +
 +config X86_USE_PPRO_CHECKSUM
 +      bool
 +      depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON
 +      default y
 +
 +config X86_USE_3DNOW
 +      bool
 +      depends on MCYRIXIII || MK7
 +      default y
 +
 +config X86_OOSTORE
 +      bool
 +      depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
 +      default y
 +
 +config HPET_TIMER
 +      bool
 +      default n
 +#config HPET_TIMER
 +#     bool "HPET Timer Support"
 +#     help
 +#       This enables the use of the HPET for the kernel's internal timer.
 +#       HPET is the next generation timer replacing legacy 8254s.
 +#       You can safely choose Y here.  However, HPET will only be
 +#       activated if the platform and the BIOS support this feature.
 +#       Otherwise the 8254 will be used for timing services.
 +#
 +#       Choose N to continue using the legacy 8254 timer.
 +
 +config HPET_EMULATE_RTC
 +      def_bool HPET_TIMER && RTC=y
 +
 +config SMP
 +      bool
 +      default n
 +#config SMP
 +#     bool "Symmetric multi-processing support"
 +#     ---help---
 +#       This enables support for systems with more than one CPU. If you have
 +#       a system with only one CPU, like most personal computers, say N. If
 +#       you have a system with more than one CPU, say Y.
 +#
 +#       If you say N here, the kernel will run on single and multiprocessor
 +#       machines, but will use only one CPU of a multiprocessor machine. If
 +#       you say Y here, the kernel will run on many, but not all,
 +#       singleprocessor machines. On a singleprocessor machine, the kernel
 +#       will run faster if you say N here.
 +#
 +#       Note that if you say Y here and choose architecture "586" or
 +#       "Pentium" under "Processor family", the kernel will not work on 486
 +#       architectures. Similarly, multiprocessor kernels for the "PPro"
 +#       architecture may not work on all Pentium based boards.
 +#
 +#       People using multiprocessor machines who say Y here should also say
 +#       Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
 +#       Management" code will be disabled if you say Y here.
 +#
 +#       See also the <file:Documentation/smp.txt>,
 +#       <file:Documentation/i386/IO-APIC.txt>,
 +#       <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
 +#       <http://www.tldp.org/docs.html#howto>.
 +#
 +#       If you don't know what to do here, say N.
 +
 +config NR_CPUS
 +      int "Maximum number of CPUs (2-255)"
 +      range 2 255
 +      depends on SMP
 +      default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
 +      default "8"
 +      help
 +        This allows you to specify the maximum number of CPUs which this
 +        kernel will support.  The maximum supported value is 255 and the
 +        minimum value which makes sense is 2.
 +
 +        This is purely to save memory - each supported CPU adds
 +        approximately eight kilobytes to the kernel image.
 +
 +config SCHED_SMT
 +      bool "SMT (Hyperthreading) scheduler support"
 +      depends on SMP
 +      default off
 +      help
 +        SMT scheduler support improves the CPU scheduler's decision making
 +        when dealing with Intel Pentium 4 chips with HyperThreading at a
 +        cost of slightly increased overhead in some places. If unsure say
 +        N here.
 +
 +config PREEMPT
 +      bool "Preemptible Kernel"
 +      help
 +        This option reduces the latency of the kernel when reacting to
 +        real-time or interactive events by allowing a low priority process to
 +        be preempted even if it is in kernel mode executing a system call.
 +        This allows applications to run more reliably even when the system is
 +        under load.
 +
 +        Say Y here if you are building a kernel for a desktop, embedded
 +        or real-time system.  Say N if you are unsure.
 +
 +#config X86_TSC
 +#      bool
 +#     depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ
 +#      default y
 +
 +#config X86_MCE
 +#      bool "Machine Check Exception"
 +#     depends on !X86_VOYAGER
 +#      ---help---
 +#        Machine Check Exception support allows the processor to notify the
 +#        kernel if it detects a problem (e.g. overheating, component failure).
 +#        The action the kernel takes depends on the severity of the problem,
 +#        ranging from a warning message on the console, to halting the machine.
 +#        Your processor must be a Pentium or newer to support this - check the
 +#        flags in /proc/cpuinfo for mce.  Note that some older Pentium systems
 +#        have a design flaw which leads to false MCE events - hence MCE is
 +#        disabled on all P5 processors, unless explicitly enabled with "mce"
 +#        as a boot argument.  Similarly, if MCE is built in and creates a
 +#        problem on some new non-standard machine, you can boot with "nomce"
 +#        to disable it.  MCE support simply ignores non-MCE processors like
 +#        the 386 and 486, so nearly everyone can say Y here.
 +
 +#config X86_MCE_NONFATAL
 +#     tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
 +#      depends on X86_MCE
 +#      help
 +#        Enabling this feature starts a timer that triggers every 5 seconds which
 +#        will look at the machine check registers to see if anything happened.
 +#        Non-fatal problems automatically get corrected (but still logged).
 +#        Disable this if you don't want to see these messages.
 +#        Seeing the messages this option prints out may be indicative of dying hardware,
 +#        or out-of-spec (ie, overclocked) hardware.
 +#        This option only does something on certain CPUs.
 +#        (AMD Athlon/Duron and Intel Pentium 4)
 +
 +#config X86_MCE_P4THERMAL
 +#      bool "check for P4 thermal throttling interrupt."
 +#      depends on X86_MCE && (X86_UP_APIC || SMP)
 +#      help
 +#        Enabling this feature will cause a message to be printed when the P4
 +#        enters thermal throttling.
 +
 +#config MICROCODE
 +#      tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
 +#      ---help---
 +#        If you say Y here and also to "/dev file system support" in the
 +#        'File systems' section, you will be able to update the microcode on
 +#        Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II,
 +#        Pentium III, Pentium 4, Xeon etc.  You will obviously need the
 +#        actual microcode binary data itself which is not shipped with the
 +#        Linux kernel.
 +#
 +#        For latest news and information on obtaining all the required
 +#        ingredients for this driver, check:
 +#        <http://www.urbanmyth.org/microcode/>.
 +#
 +#        To compile this driver as a module, choose M here: the
 +#        module will be called microcode.
 +
 +#config X86_MSR
 +#      tristate "/dev/cpu/*/msr - Model-specific register support"
 +#      help
 +#        This device gives privileged processes access to the x86
 +#        Model-Specific Registers (MSRs).  It is a character device with
 +#        major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
 +#        MSR accesses are directed to a specific CPU on multi-processor
 +#        systems.
 +
 +config X86_CPUID
 +      tristate "/dev/cpu/*/cpuid - CPU information support"
 +      help
 +        This device gives processes access to the x86 CPUID instruction to
 +        be executed on a specific processor.  It is a character device
 +        with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
 +        /dev/cpu/31/cpuid.
 +
 +source "drivers/firmware/Kconfig"
 +
 +choice
 +      prompt "High Memory Support"
 +      default NOHIGHMEM
 +
 +config NOHIGHMEM
 +      bool "off"
 +      ---help---
 +        Linux can use up to 64 Gigabytes of physical memory on x86 systems.
 +        However, the address space of 32-bit x86 processors is only 4
 +        Gigabytes large. That means that, if you have a large amount of
 +        physical memory, not all of it can be "permanently mapped" by the
 +        kernel. The physical memory that's not permanently mapped is called
 +        "high memory".
 +
 +        If you are compiling a kernel which will never run on a machine with
 +        more than 1 Gigabyte total physical RAM, answer "off" here (default
 +        choice and suitable for most users). This will result in a "3GB/1GB"
 +        split: 3GB are mapped so that each process sees a 3GB virtual memory
 +        space and the remaining part of the 4GB virtual memory space is used
 +        by the kernel to permanently map as much physical memory as
 +        possible.
 +
 +        If the machine has between 1 and 4 Gigabytes physical RAM, then
 +        answer "4GB" here.
 +
 +        If more than 4 Gigabytes is used then answer "64GB" here. This
 +        selection turns Intel PAE (Physical Address Extension) mode on.
 +        PAE implements 3-level paging on IA32 processors. PAE is fully
 +        supported by Linux, PAE mode is implemented on all recent Intel
 +        processors (Pentium Pro and better). NOTE: If you say "64GB" here,
 +        then the kernel will not boot on CPUs that don't support PAE!
 +
 +        The actual amount of total physical memory will either be
 +        auto detected or can be forced by using a kernel command line option
 +        such as "mem=256M". (Try "man bootparam" or see the documentation of
 +        your boot loader (lilo or loadlin) about how to pass options to the
 +        kernel at boot time.)
 +
 +        If unsure, say "off".
 +
 +config HIGHMEM4G
 +      bool "4GB"
 +      help
 +        Select this if you have a 32-bit processor and between 1 and 4
 +        gigabytes of physical RAM.
 +
 +#config HIGHMEM64G
 +#     bool "64GB"
 +#     help
 +#       Select this if you have a 32-bit processor and more than 4
 +#       gigabytes of physical RAM.
 +
 +endchoice
 +
 +config HIGHMEM
 +      bool
 +      depends on HIGHMEM64G || HIGHMEM4G
 +      default y
 +
 +config X86_PAE
 +      bool
 +      depends on HIGHMEM64G
 +      default y
 +
 +# Common NUMA Features
 +config NUMA
 +      bool "Numa Memory Allocation and Scheduler Support"
 +      depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI))
 +      default n if X86_PC
 +      default y if (X86_NUMAQ || X86_SUMMIT)
 +
 +# Need comments to help the hapless user trying to turn on NUMA support
 +comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
 +      depends on X86_NUMAQ && (!HIGHMEM64G || !SMP)
 +
 +comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
 +      depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
 +
 +config DISCONTIGMEM
 +      bool
 +      depends on NUMA
 +      default y
 +
 +config HAVE_ARCH_BOOTMEM_NODE
 +      bool
 +      depends on NUMA
 +      default y
 +
 +#config HIGHPTE
 +#     bool "Allocate 3rd-level pagetables from highmem"
 +#     depends on HIGHMEM4G || HIGHMEM64G
 +#     help
 +#       The VM uses one page table entry for each page of physical memory.
 +#       For systems with a lot of RAM, this can be wasteful of precious
 +#       low memory.  Setting this option will put user-space page table
 +#       entries in high memory.
 +
 +config MTRR
 +      bool
 +      depends on XEN_PRIVILEGED_GUEST
 +      default y
 +
 +#config MTRR
 +#      bool "MTRR (Memory Type Range Register) support"
 +#      ---help---
 +#        On Intel P6 family processors (Pentium Pro, Pentium II and later)
 +#        the Memory Type Range Registers (MTRRs) may be used to control
 +#        processor access to memory ranges. This is most useful if you have
 +#        a video (VGA) card on a PCI or AGP bus. Enabling write-combining
 +#        allows bus write transfers to be combined into a larger transfer
 +#        before bursting over the PCI/AGP bus. This can increase performance
 +#        of image write operations 2.5 times or more. Saying Y here creates a
 +#        /proc/mtrr file which may be used to manipulate your processor's
 +#        MTRRs. Typically the X server should use this.
 +#
 +#        This code has a reasonably generic interface so that similar
 +#        control registers on other processors can be easily supported
 +#        as well:
 +#
 +#        The Cyrix 6x86, 6x86MX and M II processors have Address Range
 +#        Registers (ARRs) which provide a similar functionality to MTRRs. For
 +#        these, the ARRs are used to emulate the MTRRs.
 +#        The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
 +#        MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
 +#        write-combining. All of these processors are supported by this code
 +#        and it makes sense to say Y here if you have one of them.
 +#
 +#        Saying Y here also fixes a problem with buggy SMP BIOSes which only
 +#        set the MTRRs for the boot CPU and not for the secondary CPUs. This
 +#        can lead to all sorts of problems, so it's good to say Y here.
 +#
 +#        You can safely say Y even if your machine doesn't have MTRRs, you'll
 +#        just add about 9 KB to your kernel.
 +#
 +#        See <file:Documentation/mtrr.txt> for more information.
 +
 +config IRQBALANCE
 +      bool "Enable kernel irq balancing"
 +      depends on SMP && X86_IO_APIC
 +      default y
 +      help
 +        The default yes will allow the kernel to do irq load balancing.
 +        Saying no will keep the kernel from doing irq load balancing.
 +
 +config HAVE_DEC_LOCK
 +      bool
 +      depends on (SMP || PREEMPT) && X86_CMPXCHG
 +      default y
 +
 +# turning this on wastes a bunch of space.
 +# Summit needs it only when NUMA is on
 +config BOOT_IOREMAP
 +      bool
 +      depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI))
 +      default y
 +
 +config REGPARM
 +      bool "Use register arguments (EXPERIMENTAL)"
 +      depends on EXPERIMENTAL
 +      default n
 +      help
 +      Compile the kernel with -mregparm=3. This uses an different ABI
 +      and passes the first three arguments of a function call in registers.
 +      This will probably break binary only modules.
 +
 +      This feature is only enabled for gcc-3.0 and later - earlier compilers
 +      generate incorrect output with certain kernel constructs when
 +      -mregparm=3 is used.
 +
 +
 +if XEN_PHYSDEV_ACCESS
 +
 +menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
 +
 +config X86_VISWS_APIC
 +      bool
 +      depends on X86_VISWS
 +      default y
 +
 +config X86_LOCAL_APIC
 +      bool
 +      depends on (X86_VISWS || SMP) && !X86_VOYAGER
 +      default y
 +
 +config X86_IO_APIC
 +      bool
 +      depends on SMP && !(X86_VISWS || X86_VOYAGER)
 +      default y
 +
 +config PCI
 +      bool "PCI support" if !X86_VISWS
 +      depends on !X86_VOYAGER
 +      default y if X86_VISWS
 +      help
 +        Find out whether you have a PCI motherboard. PCI is the name of a
 +        bus system, i.e. the way the CPU talks to the other stuff inside
 +        your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
 +        VESA. If you have PCI, say Y, otherwise N.
 +
 +        The PCI-HOWTO, available from
 +        <http://www.tldp.org/docs.html#howto>, contains valuable
 +        information about which PCI hardware does work under Linux and which
 +        doesn't.
 +
 +#choice
 +#     prompt "PCI access mode"
 +#     depends on PCI && !X86_VISWS
 +#     default PCI_GOANY
 +#     ---help---
 +#       On PCI systems, the BIOS can be used to detect the PCI devices and
 +#       determine their configuration. However, some old PCI motherboards
 +#       have BIOS bugs and may crash if this is done. Also, some embedded
 +#       PCI-based systems don't have any BIOS at all. Linux can also try to
 +#       detect the PCI hardware directly without using the BIOS.
 +#
 +#       With this option, you can specify how Linux should detect the
 +#       PCI devices. If you choose "BIOS", the BIOS will be used,
 +#       if you choose "Direct", the BIOS won't be used, and if you
 +#       choose "MMConfig", then PCI Express MMCONFIG will be used.
 +#       If you choose "Any", the kernel will try MMCONFIG, then the
 +#       direct access method and falls back to the BIOS if that doesn't
 +#       work. If unsure, go with the default, which is "Any".
 +#
 +#config PCI_GOBIOS
 +#     bool "BIOS"
 +#
 +#config PCI_GOMMCONFIG
 +#     bool "MMConfig"
 +#
 +#config PCI_GODIRECT
 +#     bool "Direct"
 +#
 +#config PCI_GOANY
 +#     bool "Any"
 +#
 +#endchoice
 +#
 +#config PCI_BIOS
 +#     bool
 +#     depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
 +#     default y
 +#
 +#config PCI_DIRECT
 +#     bool
 +#     depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS)
 +#     default y
 +
 +config PCI_DIRECT
 +      bool
 +      depends on PCI
 +      default y
 +
 +source "drivers/pci/Kconfig"
 +
 +config ISA
 +      bool "ISA support"
 +      depends on !(X86_VOYAGER || X86_VISWS)
 +      help
 +        Find out whether you have ISA slots on your motherboard.  ISA is the
 +        name of a bus system, i.e. the way the CPU talks to the other stuff
 +        inside your box.  Other bus systems are PCI, EISA, MicroChannel
 +        (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
 +        newer boards don't support it.  If you have ISA, say Y, otherwise N.
 +
 +config EISA
 +      bool "EISA support"
 +      depends on ISA
 +      ---help---
 +        The Extended Industry Standard Architecture (EISA) bus was
 +        developed as an open alternative to the IBM MicroChannel bus.
 +
 +        The EISA bus provided some of the features of the IBM MicroChannel
 +        bus while maintaining backward compatibility with cards made for
 +        the older ISA bus.  The EISA bus saw limited use between 1988 and
 +        1995 when it was made obsolete by the PCI bus.
 +
 +        Say Y here if you are building a kernel for an EISA-based machine.
 +
 +        Otherwise, say N.
 +
 +source "drivers/eisa/Kconfig"
 +
 +config MCA
 +      bool "MCA support"
 +      depends on !(X86_VISWS || X86_VOYAGER)
 +      help
 +        MicroChannel Architecture is found in some IBM PS/2 machines and
 +        laptops.  It is a bus system similar to PCI or ISA. See
 +        <file:Documentation/mca.txt> (and especially the web page given
 +        there) before attempting to build an MCA bus kernel.
 +
 +config MCA
 +      depends on X86_VOYAGER
 +      default y if X86_VOYAGER
 +
 +source "drivers/mca/Kconfig"
 +
 +config SCx200
 +      tristate "NatSemi SCx200 support"
 +      depends on !X86_VOYAGER
 +      help
 +        This provides basic support for the National Semiconductor SCx200
 +        processor.  Right now this is just a driver for the GPIO pins.
 +
 +        If you don't know what to do here, say N.
 +
 +        This support is also available as a module.  If compiled as a
 +        module, it will be called scx200.
 +
 +source "drivers/pcmcia/Kconfig"
 +
 +source "drivers/pci/hotplug/Kconfig"
 +
 +endmenu
 +
 +endif
 +
 +menu "Kernel hacking"
 +
 +config DEBUG_KERNEL
 +      bool "Kernel debugging"
 +      help
 +        Say Y here if you are developing drivers or trying to debug and
 +        identify kernel problems.
 +
 +config EARLY_PRINTK
 +      bool "Early printk" if EMBEDDED
 +      default y
 +      help
 +        Write kernel log output directly into the VGA buffer or to a serial
 +        port.
 +
 +        This is useful for kernel debugging when your machine crashes very
 +        early before the console code is initialized. For normal operation
 +        it is not recommended because it looks ugly and doesn't cooperate
 +        with klogd/syslogd or the X server. You should normally N here,
 +        unless you want to debug such a crash.
 +
 +config DEBUG_STACKOVERFLOW
 +      bool "Check for stack overflows"
 +      depends on DEBUG_KERNEL
 +
 +config DEBUG_STACK_USAGE
 +      bool "Stack utilization instrumentation"
 +      depends on DEBUG_KERNEL
 +      help
 +        Enables the display of the minimum amount of free stack which each
 +        task has ever had available in the sysrq-T and sysrq-P debug output.
 +
 +        This option will slow down process creation somewhat.
 +
 +config DEBUG_SLAB
 +      bool "Debug memory allocations"
 +      depends on DEBUG_KERNEL
 +      help
 +        Say Y here to have the kernel do limited verification on memory
 +        allocation as well as poisoning memory on free to catch use of freed
 +        memory.
 +
 +config MAGIC_SYSRQ
 +      bool "Magic SysRq key"
 +      depends on DEBUG_KERNEL
 +      help
 +        If you say Y here, you will have some control over the system even
 +        if the system crashes for example during kernel debugging (e.g., you
 +        will be able to flush the buffer cache to disk, reboot the system
 +        immediately or dump some status information). This is accomplished
 +        by pressing various keys while holding SysRq (Alt+PrintScreen). It
 +        also works on a serial console (on PC hardware at least), if you
 +        send a BREAK and then within 5 seconds a command keypress. The
 +        keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
 +        unless you really know what this hack does.
 +
 +config DEBUG_SPINLOCK
 +      bool "Spinlock debugging"
 +      depends on DEBUG_KERNEL
 +      help
 +        Say Y here and build SMP to catch missing spinlock initialization
 +        and certain other kinds of spinlock errors commonly made.  This is
 +        best used in conjunction with the NMI watchdog so that spinlock
 +        deadlocks are also debuggable.
 +
 +config DEBUG_PAGEALLOC
 +      bool "Page alloc debugging"
 +      depends on DEBUG_KERNEL
 +      help
 +        Unmap pages from the kernel linear mapping after free_pages().
 +        This results in a large slowdown, but helps to find certain types
 +        of memory corruptions.
 +
 +config DEBUG_HIGHMEM
 +      bool "Highmem debugging"
 +      depends on DEBUG_KERNEL && HIGHMEM
 +      help
 +        This options enables addition error checking for high memory systems.
 +        Disable for production systems.
 +
 +config DEBUG_INFO
 +      bool "Compile the kernel with debug info"
 +      depends on DEBUG_KERNEL
 +      help
 +          If you say Y here the resulting kernel image will include
 +        debugging info resulting in a larger kernel image.
 +        Say Y here only if you plan to use gdb to debug the kernel.
 +        If you don't debug the kernel, you can say N.
 +        
 +config DEBUG_SPINLOCK_SLEEP
 +      bool "Sleep-inside-spinlock checking"
 +      help
 +        If you say Y here, various routines which may sleep will become very
 +        noisy if they are called with a spinlock held.        
 +
 +config FRAME_POINTER
 +      bool "Compile the kernel with frame pointers"
 +      help
 +        If you say Y here the resulting kernel image will be slightly larger
 +        and slower, but it will give very useful debugging information.
 +        If you don't debug the kernel, you can say N, but we may not be able
 +        to solve problems without frame pointers.
 +
 +config 4KSTACKS
 +      bool "Use 4Kb for kernel stacks instead of 8Kb"
 +      help
 +        If you say Y here the kernel will use a 4Kb stacksize for the
 +        kernel stack attached to each process/thread. This facilitates
 +        running more threads on a system and also reduces the pressure
 +        on the VM subsystem for higher order allocations. This option
 +        will also use IRQ stacks to compensate for the reduced stackspace.
 +
 +config X86_FIND_SMP_CONFIG
 +      bool
 +      depends on X86_LOCAL_APIC || X86_VOYAGER
 +      default y
 +
 +config X86_MPPARSE
 +      bool
 +      depends on X86_LOCAL_APIC && !X86_VISWS
 +      default y
 +
 +endmenu
 +
 +#
 +# Use the generic interrupt handling code in kernel/irq/:
 +#
 +config GENERIC_HARDIRQS
 +      bool
 +      default y
 +
 +config GENERIC_IRQ_PROBE
 +      bool
 +      default y
 +
 +config X86_SMP
 +      bool
 +      depends on SMP && !X86_VOYAGER
 +      default y
 +
 +config X86_HT
 +      bool
 +      depends on SMP && !(X86_VISWS || X86_VOYAGER)
 +      default y
 +
 +config X86_BIOS_REBOOT
 +      bool
 +      depends on !(X86_VISWS || X86_VOYAGER)
 +      default y
 +
 +config X86_TRAMPOLINE
 +      bool
 +      depends on X86_SMP || (X86_VOYAGER && SMP)
 +      default y
 +
 +config PC
 +      bool
 +      depends on X86 && !EMBEDDED
 +      default y
 +
 +endmenu
index c837f935b45ef9151c2f897a4465ee0173ad76c1,0000000000000000000000000000000000000000..1936d96c37af41dcf82aa383329733247b883986
mode 100644,000000..100644
--- /dev/null
@@@ -1,990 -1,0 +1,989 @@@
-       clear_page(&default_ldt[0]);
 +/*
 + *  linux/arch/i386/traps.c
 + *
 + *  Copyright (C) 1991, 1992  Linus Torvalds
 + *
 + *  Pentium III FXSR, SSE support
 + *    Gareth Hughes <gareth@valinux.com>, May 2000
 + */
 +
 +/*
 + * 'Traps.c' handles hardware traps and faults after we have saved some
 + * state in 'asm.s'.
 + */
 +#include <linux/config.h>
 +#include <linux/sched.h>
 +#include <linux/kernel.h>
 +#include <linux/string.h>
 +#include <linux/errno.h>
 +#include <linux/timer.h>
 +#include <linux/mm.h>
 +#include <linux/init.h>
 +#include <linux/delay.h>
 +#include <linux/spinlock.h>
 +#include <linux/interrupt.h>
 +#include <linux/highmem.h>
 +#include <linux/kallsyms.h>
 +#include <linux/ptrace.h>
 +#include <linux/utsname.h>
 +#include <linux/kprobes.h>
 +
 +#ifdef CONFIG_EISA
 +#include <linux/ioport.h>
 +#include <linux/eisa.h>
 +#endif
 +
 +#ifdef CONFIG_MCA
 +#include <linux/mca.h>
 +#endif
 +
 +#include <asm/processor.h>
 +#include <asm/system.h>
 +#include <asm/uaccess.h>
 +#include <asm/io.h>
 +#include <asm/atomic.h>
 +#include <asm/debugreg.h>
 +#include <asm/desc.h>
 +#include <asm/i387.h>
 +#include <asm/nmi.h>
 +
 +#include <asm/smp.h>
 +#include <asm/arch_hooks.h>
 +#include <asm/kdebug.h>
 +
 +#include <linux/irq.h>
 +#include <linux/module.h>
 +
 +#include "mach_traps.h"
 +
 +asmlinkage int system_call(void);
 +
 +/* Do we ignore FPU interrupts ? */
 +char ignore_fpu_irq = 0;
 +
 +/*
 + * The IDT has to be page-aligned to simplify the Pentium
 + * F0 0F bug workaround.. We have a special link segment
 + * for this.
 + */
 +struct desc_struct idt_table[256] __attribute__((__section__(".data.idt"))) = { {0, 0}, };
 +
 +asmlinkage void divide_error(void);
 +asmlinkage void debug(void);
 +asmlinkage void nmi(void);
 +asmlinkage void int3(void);
 +asmlinkage void overflow(void);
 +asmlinkage void bounds(void);
 +asmlinkage void invalid_op(void);
 +asmlinkage void device_not_available(void);
 +asmlinkage void coprocessor_segment_overrun(void);
 +asmlinkage void invalid_TSS(void);
 +asmlinkage void segment_not_present(void);
 +asmlinkage void stack_segment(void);
 +asmlinkage void general_protection(void);
 +asmlinkage void page_fault(void);
 +asmlinkage void coprocessor_error(void);
 +asmlinkage void simd_coprocessor_error(void);
 +asmlinkage void alignment_check(void);
 +asmlinkage void fixup_4gb_segment(void);
 +asmlinkage void machine_check(void);
 +
 +static int kstack_depth_to_print = 24;
 +struct notifier_block *i386die_chain;
 +static spinlock_t die_notifier_lock = SPIN_LOCK_UNLOCKED;
 +
 +int register_die_notifier(struct notifier_block *nb)
 +{
 +      int err = 0;
 +      unsigned long flags;
 +      spin_lock_irqsave(&die_notifier_lock, flags);
 +      err = notifier_chain_register(&i386die_chain, nb);
 +      spin_unlock_irqrestore(&die_notifier_lock, flags);
 +      return err;
 +}
 +
 +static inline int valid_stack_ptr(struct thread_info *tinfo, void *p)
 +{
 +      return  p > (void *)tinfo &&
 +              p < (void *)tinfo + THREAD_SIZE - 3;
 +}
 +
 +static inline unsigned long print_context_stack(struct thread_info *tinfo,
 +                              unsigned long *stack, unsigned long ebp)
 +{
 +      unsigned long addr;
 +
 +#ifdef        CONFIG_FRAME_POINTER
 +      while (valid_stack_ptr(tinfo, (void *)ebp)) {
 +              addr = *(unsigned long *)(ebp + 4);
 +              printk(" [<%08lx>] ", addr);
 +              print_symbol("%s", addr);
 +              printk("\n");
 +              ebp = *(unsigned long *)ebp;
 +      }
 +#else
 +      while (valid_stack_ptr(tinfo, stack)) {
 +              addr = *stack++;
 +              if (__kernel_text_address(addr)) {
 +                      printk(" [<%08lx>]", addr);
 +                      print_symbol(" %s", addr);
 +                      printk("\n");
 +              }
 +      }
 +#endif
 +      return ebp;
 +}
 +
 +void show_trace(struct task_struct *task, unsigned long * stack)
 +{
 +      unsigned long ebp;
 +
 +      if (!task)
 +              task = current;
 +
 +      if (task == current) {
 +              /* Grab ebp right from our regs */
 +              asm ("movl %%ebp, %0" : "=r" (ebp) : );
 +      } else {
 +              /* ebp is the last reg pushed by switch_to */
 +              ebp = *(unsigned long *) task->thread.esp;
 +      }
 +
 +      while (1) {
 +              struct thread_info *context;
 +              context = (struct thread_info *)
 +                      ((unsigned long)stack & (~(THREAD_SIZE - 1)));
 +              ebp = print_context_stack(context, stack, ebp);
 +              stack = (unsigned long*)context->previous_esp;
 +              if (!stack)
 +                      break;
 +              printk(" =======================\n");
 +      }
 +}
 +
 +void show_stack(struct task_struct *task, unsigned long *esp)
 +{
 +      unsigned long *stack;
 +      int i;
 +
 +      if (esp == NULL) {
 +              if (task)
 +                      esp = (unsigned long*)task->thread.esp;
 +              else
 +                      esp = (unsigned long *)&esp;
 +      }
 +
 +      stack = esp;
 +      for(i = 0; i < kstack_depth_to_print; i++) {
 +              if (kstack_end(stack))
 +                      break;
 +              if (i && ((i % 8) == 0))
 +                      printk("\n       ");
 +              printk("%08lx ", *stack++);
 +      }
 +      printk("\nCall Trace:\n");
 +      show_trace(task, esp);
 +}
 +
 +/*
 + * The architecture-independent dump_stack generator
 + */
 +void dump_stack(void)
 +{
 +      unsigned long stack;
 +
 +      show_trace(current, &stack);
 +}
 +
 +EXPORT_SYMBOL(dump_stack);
 +
 +void show_registers(struct pt_regs *regs)
 +{
 +      int i;
 +      int in_kernel = 1;
 +      unsigned long esp;
 +      unsigned short ss;
 +
 +      esp = (unsigned long) (&regs->esp);
 +      ss = __KERNEL_DS;
 +      if (regs->xcs & 2) {
 +              in_kernel = 0;
 +              esp = regs->esp;
 +              ss = regs->xss & 0xffff;
 +      }
 +      print_modules();
 +      printk("CPU:    %d\nEIP:    %04x:[<%08lx>]    %s VLI\nEFLAGS: %08lx"
 +                      "   (%s) \n",
 +              smp_processor_id(), 0xffff & regs->xcs, regs->eip,
 +              print_tainted(), regs->eflags, system_utsname.release);
 +      print_symbol("EIP is at %s\n", regs->eip);
 +      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   esp: %08lx\n",
 +              regs->esi, regs->edi, regs->ebp, esp);
 +      printk("ds: %04x   es: %04x   ss: %04x\n",
 +              regs->xds & 0xffff, regs->xes & 0xffff, ss);
 +      printk("Process %s (pid: %d, threadinfo=%p task=%p)",
 +              current->comm, current->pid, current_thread_info(), current);
 +      /*
 +       * When in-kernel, we also print out the stack and code at the
 +       * time of the fault..
 +       */
 +      if (in_kernel) {
 +              u8 *eip;
 +
 +              printk("\nStack: ");
 +              show_stack(NULL, (unsigned long*)esp);
 +
 +              printk("Code: ");
 +
 +              eip = (u8 *)regs->eip - 43;
 +              for (i = 0; i < 64; i++, eip++) {
 +                      unsigned char c;
 +
 +                      if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) {
 +                              printk(" Bad EIP value.");
 +                              break;
 +                      }
 +                      if (eip == (u8 *)regs->eip)
 +                              printk("<%02x> ", c);
 +                      else
 +                              printk("%02x ", c);
 +              }
 +      }
 +      printk("\n");
 +}     
 +
 +static void handle_BUG(struct pt_regs *regs)
 +{
 +      unsigned short ud2;
 +      unsigned short line;
 +      char *file;
 +      char c;
 +      unsigned long eip;
 +
 +      if (regs->xcs & 2)
 +              goto no_bug;            /* Not in kernel */
 +
 +      eip = regs->eip;
 +
 +      if (eip < PAGE_OFFSET)
 +              goto no_bug;
 +      if (__get_user(ud2, (unsigned short *)eip))
 +              goto no_bug;
 +      if (ud2 != 0x0b0f)
 +              goto no_bug;
 +      if (__get_user(line, (unsigned short *)(eip + 2)))
 +              goto bug;
 +      if (__get_user(file, (char **)(eip + 4)) ||
 +              (unsigned long)file < PAGE_OFFSET || __get_user(c, file))
 +              file = "<bad filename>";
 +
 +      printk("------------[ cut here ]------------\n");
 +      printk(KERN_ALERT "kernel BUG at %s:%d!\n", file, line);
 +
 +no_bug:
 +      return;
 +
 +      /* Here we know it was a BUG but file-n-line is unavailable */
 +bug:
 +      printk("Kernel BUG\n");
 +}
 +
 +void die(const char * str, struct pt_regs * regs, long err)
 +{
 +      static struct {
 +              spinlock_t lock;
 +              u32 lock_owner;
 +              int lock_owner_depth;
 +      } die = {
 +              .lock =                 SPIN_LOCK_UNLOCKED,
 +              .lock_owner =           -1,
 +              .lock_owner_depth =     0
 +      };
 +      static int die_counter;
 +
 +      if (die.lock_owner != smp_processor_id()) {
 +              console_verbose();
 +              spin_lock_irq(&die.lock);
 +              die.lock_owner = smp_processor_id();
 +              die.lock_owner_depth = 0;
 +              bust_spinlocks(1);
 +      }
 +
 +      if (++die.lock_owner_depth < 3) {
 +              int nl = 0;
 +              handle_BUG(regs);
 +              printk(KERN_ALERT "%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
 +#ifdef CONFIG_PREEMPT
 +              printk("PREEMPT ");
 +              nl = 1;
 +#endif
 +#ifdef CONFIG_SMP
 +              printk("SMP ");
 +              nl = 1;
 +#endif
 +#ifdef CONFIG_DEBUG_PAGEALLOC
 +              printk("DEBUG_PAGEALLOC");
 +              nl = 1;
 +#endif
 +              if (nl)
 +                      printk("\n");
 +      notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV);
 +              show_registers(regs);
 +      } else
 +              printk(KERN_ERR "Recursive die() failure, output suppressed\n");
 +
 +      bust_spinlocks(0);
 +      die.lock_owner = -1;
 +      spin_unlock_irq(&die.lock);
 +      if (in_interrupt())
 +              panic("Fatal exception in interrupt");
 +
 +      if (panic_on_oops) {
 +              printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
 +              set_current_state(TASK_UNINTERRUPTIBLE);
 +              schedule_timeout(5 * HZ);
 +              panic("Fatal exception");
 +      }
 +      do_exit(SIGSEGV);
 +}
 +
 +static inline void die_if_kernel(const char * str, struct pt_regs * regs, long err)
 +{
 +      if (!(regs->eflags & VM_MASK) && !(2 & regs->xcs))
 +              die(str, regs, err);
 +}
 +
 +static void do_trap(int trapnr, int signr, char *str, int vm86,
 +                         struct pt_regs * regs, long error_code, siginfo_t *info)
 +{
 +      if (regs->eflags & VM_MASK) {
 +              if (vm86)
 +                      goto vm86_trap;
 +              goto trap_signal;
 +      }
 +
 +      if (!(regs->xcs & 2))
 +              goto kernel_trap;
 +
 +      trap_signal: {
 +              struct task_struct *tsk = current;
 +              tsk->thread.error_code = error_code;
 +              tsk->thread.trap_no = trapnr;
 +              if (info)
 +                      force_sig_info(signr, info, tsk);
 +              else
 +                      force_sig(signr, tsk);
 +              return;
 +      }
 +
 +      kernel_trap: {
 +              if (!fixup_exception(regs))
 +                      die(str, regs, error_code);
 +              return;
 +      }
 +
 +      vm86_trap: {
 +              int ret = handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, trapnr);
 +              if (ret) goto trap_signal;
 +              return;
 +      }
 +}
 +
 +#define DO_ERROR(trapnr, signr, str, name) \
 +fastcall void do_##name(struct pt_regs * regs, long error_code) \
 +{ \
 +      if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
 +                                              == NOTIFY_STOP) \
 +              return; \
 +      do_trap(trapnr, signr, str, 0, regs, error_code, NULL); \
 +}
 +
 +#define DO_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \
 +fastcall void do_##name(struct pt_regs * regs, long error_code) \
 +{ \
 +      siginfo_t info; \
 +      info.si_signo = signr; \
 +      info.si_errno = 0; \
 +      info.si_code = sicode; \
 +      info.si_addr = (void __user *)siaddr; \
 +      if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
 +                                              == NOTIFY_STOP) \
 +              return; \
 +      do_trap(trapnr, signr, str, 0, regs, error_code, &info); \
 +}
 +
 +#define DO_VM86_ERROR(trapnr, signr, str, name) \
 +fastcall void do_##name(struct pt_regs * regs, long error_code) \
 +{ \
 +      if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
 +                                              == NOTIFY_STOP) \
 +              return; \
 +      do_trap(trapnr, signr, str, 1, regs, error_code, NULL); \
 +}
 +
 +#define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \
 +fastcall void do_##name(struct pt_regs * regs, long error_code) \
 +{ \
 +      siginfo_t info; \
 +      info.si_signo = signr; \
 +      info.si_errno = 0; \
 +      info.si_code = sicode; \
 +      info.si_addr = (void __user *)siaddr; \
 +      if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
 +                                              == NOTIFY_STOP) \
 +              return; \
 +      do_trap(trapnr, signr, str, 1, regs, error_code, &info); \
 +}
 +
 +DO_VM86_ERROR_INFO( 0, SIGFPE,  "divide error", divide_error, FPE_INTDIV, regs->eip)
 +#ifndef CONFIG_KPROBES
 +DO_VM86_ERROR( 3, SIGTRAP, "int3", int3)
 +#endif
 +DO_VM86_ERROR( 4, SIGSEGV, "overflow", overflow)
 +DO_VM86_ERROR( 5, SIGSEGV, "bounds", bounds)
 +DO_ERROR_INFO( 6, SIGILL,  "invalid operand", 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
 +
 +fastcall void do_general_protection(struct pt_regs * regs, long error_code)
 +{
 +      /*
 +       * If we trapped on an LDT access then ensure that the default_ldt is
 +       * loaded, if nothing else. We load default_ldt lazily because LDT
 +       * switching costs time and many applications don't need it.
 +       */
 +      if (unlikely((error_code & 6) == 4)) {
 +              unsigned long ldt;
 +              __asm__ __volatile__ ("sldt %0" : "=r" (ldt));
 +              if (ldt == 0) {
 +                      mmu_update_t u;
 +                      u.ptr = MMU_EXTENDED_COMMAND;
 +                      u.ptr |= (unsigned long)&default_ldt[0];
 +                      u.val = MMUEXT_SET_LDT | (5 << MMUEXT_CMD_SHIFT);
 +                      if (unlikely(HYPERVISOR_mmu_update(&u, 1, NULL) < 0)) {
 +                              show_trace(NULL, (unsigned long *)&u);
 +                              panic("Failed to install default LDT");
 +                      }
 +                      return;
 +              }
 +      }
 +
 +      if (regs->eflags & VM_MASK)
 +              goto gp_in_vm86;
 +
 +      if (!(regs->xcs & 2))
 +              goto gp_in_kernel;
 +
 +      current->thread.error_code = error_code;
 +      current->thread.trap_no = 13;
 +      force_sig(SIGSEGV, current);
 +      return;
 +
 +gp_in_vm86:
 +      local_irq_enable();
 +      handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
 +      return;
 +
 +gp_in_kernel:
 +      if (!fixup_exception(regs)) {
 +              if (notify_die(DIE_GPF, "general protection fault", regs,
 +                              error_code, 13, SIGSEGV) == NOTIFY_STOP)
 +                      return;
 +              die("general protection fault", regs, error_code);
 +      }
 +}
 +
 +static 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");
 +
 +      /* Clear and disable the memory parity error line. */
 +      clear_mem_error(reason);
 +}
 +
 +static void io_check_error(unsigned char reason, struct pt_regs * regs)
 +{
 +      unsigned long i;
 +
 +      printk("NMI: IOCK error (debug interrupt?)\n");
 +      show_registers(regs);
 +
 +      /* Re-enable the IOCK line, wait for a few seconds */
 +      reason = (reason & 0xf) | 8;
 +      outb(reason, 0x61);
 +      i = 2000;
 +      while (--i) udelay(1000);
 +      reason &= ~8;
 +      outb(reason, 0x61);
 +}
 +
 +static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
 +{
 +#ifdef CONFIG_MCA
 +      /* Might actually be able to figure out what the guilty party
 +      * is. */
 +      if( MCA_bus ) {
 +              mca_handle_nmi();
 +              return;
 +      }
 +#endif
 +      printk("Uhhuh. NMI received for unknown reason %02x on CPU %d.\n",
 +              reason, smp_processor_id());
 +      printk("Dazed and confused, but trying to continue\n");
 +      printk("Do you have a strange power saving mode enabled?\n");
 +}
 +
 +static spinlock_t nmi_print_lock = SPIN_LOCK_UNLOCKED;
 +
 +void die_nmi (struct pt_regs *regs, const char *msg)
 +{
 +      spin_lock(&nmi_print_lock);
 +      /*
 +      * We are in trouble anyway, lets at least try
 +      * to get a message out.
 +      */
 +      bust_spinlocks(1);
 +      printk(msg);
 +      printk(" on CPU%d, eip %08lx, registers:\n",
 +              smp_processor_id(), regs->eip);
 +      show_registers(regs);
 +      printk("console shuts up ...\n");
 +      console_silent();
 +      spin_unlock(&nmi_print_lock);
 +      bust_spinlocks(0);
 +      do_exit(SIGSEGV);
 +}
 +
 +static void default_do_nmi(struct pt_regs * regs)
 +{
 +      unsigned char reason = 0;
 +
 +      /* Only the BSP gets external NMIs from the system.  */
 +      if (!smp_processor_id())
 +              reason = get_nmi_reason();
 + 
 +      if (!(reason & 0xc0)) {
 +              if (notify_die(DIE_NMI_IPI, "nmi_ipi", regs, reason, 0, SIGINT)
 +                                                      == NOTIFY_STOP)
 +                      return;
 +#ifdef CONFIG_X86_LOCAL_APIC
 +              /*
 +               * Ok, so this is none of the documented NMI sources,
 +               * so it must be the NMI watchdog.
 +               */
 +              if (nmi_watchdog) {
 +                      nmi_watchdog_tick(regs);
 +                      return;
 +              }
 +#endif
 +              unknown_nmi_error(reason, regs);
 +              return;
 +      }
 +      if (notify_die(DIE_NMI, "nmi", regs, reason, 0, SIGINT) == NOTIFY_STOP)
 +              return;
 +      if (reason & 0x80)
 +              mem_parity_error(reason, regs);
 +      if (reason & 0x40)
 +              io_check_error(reason, regs);
 +      /*
 +       * Reassert NMI in case it became active meanwhile
 +       * as it's edge-triggered.
 +       */
 +      reassert_nmi();
 +}
 +
 +static int dummy_nmi_callback(struct pt_regs * regs, int cpu)
 +{
 +      return 0;
 +}
 + 
 +static nmi_callback_t nmi_callback = dummy_nmi_callback;
 + 
 +fastcall void do_nmi(struct pt_regs * regs, long error_code)
 +{
 +      int cpu;
 +
 +      nmi_enter();
 +
 +      cpu = smp_processor_id();
 +      ++nmi_count(cpu);
 +
 +      if (!nmi_callback(regs, cpu))
 +              default_do_nmi(regs);
 +
 +      nmi_exit();
 +}
 +
 +void set_nmi_callback(nmi_callback_t callback)
 +{
 +      nmi_callback = callback;
 +}
 +
 +void unset_nmi_callback(void)
 +{
 +      nmi_callback = dummy_nmi_callback;
 +}
 +
 +#ifdef CONFIG_KPROBES
 +fastcall int do_int3(struct pt_regs *regs, long error_code)
 +{
 +      if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
 +                      == NOTIFY_STOP)
 +              return 1;
 +      /* This is an interrupt gate, because kprobes wants interrupts
 +      disabled.  Normal trap handlers don't. */
 +      restore_interrupts(regs);
 +      do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
 +      return 0;
 +}
 +#endif
 +
 +/*
 + * Our handling of the processor debug registers is non-trivial.
 + * We do not clear them on entry and exit from the kernel. Therefore
 + * it is possible to get a watchpoint trap here from inside the kernel.
 + * However, the code in ./ptrace.c has ensured that the user can
 + * only set watchpoints on userspace addresses. Therefore the in-kernel
 + * watchpoint trap can only occur in code which is reading/writing
 + * from user space. Such code must not hold kernel locks (since it
 + * can equally take a page fault), therefore it is safe to call
 + * force_sig_info even though that claims and releases locks.
 + * 
 + * Code in ./signal.c ensures that the debug control register
 + * is restored before we deliver any signal, and therefore that
 + * user code runs with the correct debug control register even though
 + * we clear it here.
 + *
 + * Being careful here means that we don't have to be as careful in a
 + * lot of more complicated places (task switching can be a bit lazy
 + * about restoring all the debug state, and ptrace doesn't have to
 + * find every occurrence of the TF bit that could be saved away even
 + * by user code)
 + */
 +fastcall void do_debug(struct pt_regs * regs, long error_code)
 +{
 +      unsigned int condition;
 +      struct task_struct *tsk = current;
 +      siginfo_t info;
 +
 +      condition = HYPERVISOR_get_debugreg(6);
 +
 +      if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code,
 +                                      SIGTRAP) == NOTIFY_STOP)
 +              return;
 +#if 0
 +      /* It's safe to allow irq's after DR6 has been saved */
 +      if (regs->eflags & X86_EFLAGS_IF)
 +              local_irq_enable();
 +#endif
 +
 +      /* Mask out spurious debug traps due to lazy DR7 setting */
 +      if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) {
 +              if (!tsk->thread.debugreg[7])
 +                      goto clear_dr7;
 +      }
 +
 +      if (regs->eflags & VM_MASK)
 +              goto debug_vm86;
 +
 +      /* Save debug status register where ptrace can see it */
 +      tsk->thread.debugreg[6] = condition;
 +
 +      /* Mask out spurious TF errors due to lazy TF clearing */
 +      if (condition & DR_STEP) {
 +              /*
 +               * The TF error should be masked out only if the current
 +               * process is not traced and if the TRAP flag has been set
 +               * previously by a tracing process (condition detected by
 +               * the PT_DTRACE flag); remember that the i386 TRAP flag
 +               * can be modified by the process itself in user mode,
 +               * allowing programs to debug themselves without the ptrace()
 +               * interface.
 +               */
 +              if ((regs->xcs & 2) == 0)
 +                      goto clear_TF_reenable;
 +              if ((tsk->ptrace & (PT_DTRACE|PT_PTRACED)) == PT_DTRACE)
 +                      goto clear_TF;
 +      }
 +
 +      /* Ok, finally something we can handle */
 +      tsk->thread.trap_no = 1;
 +      tsk->thread.error_code = error_code;
 +      info.si_signo = SIGTRAP;
 +      info.si_errno = 0;
 +      info.si_code = TRAP_BRKPT;
 +      
 +      /* If this is a kernel mode trap, save the user PC on entry to 
 +       * the kernel, that's what the debugger can make sense of.
 +       */
 +      info.si_addr = ((regs->xcs & 2) == 0) ? (void __user *)tsk->thread.eip
 +                                            : (void __user *)regs->eip;
 +      force_sig_info(SIGTRAP, &info, tsk);
 +
 +      /* Disable additional traps. They'll be re-enabled when
 +       * the signal is delivered.
 +       */
 +clear_dr7:
 +      HYPERVISOR_set_debugreg(7, 0);
 +      return;
 +
 +debug_vm86:
 +      handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, 1);
 +      return;
 +
 +clear_TF_reenable:
 +      set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
 +clear_TF:
 +      regs->eflags &= ~TF_MASK;
 +      return;
 +}
 +
 +/*
 + * Note that we play around with the 'TS' bit in an attempt to get
 + * the correct behaviour even in the presence of the asynchronous
 + * IRQ13 behaviour
 + */
 +void math_error(void __user *eip)
 +{
 +      struct task_struct * task;
 +      siginfo_t info;
 +      unsigned short cwd, swd;
 +
 +      /*
 +       * Save the info for the exception handler and clear the error.
 +       */
 +      task = current;
 +      save_init_fpu(task);
 +      task->thread.trap_no = 16;
 +      task->thread.error_code = 0;
 +      info.si_signo = SIGFPE;
 +      info.si_errno = 0;
 +      info.si_code = __SI_FAULT;
 +      info.si_addr = eip;
 +      /*
 +       * (~cwd & swd) will mask out exceptions that are not set to unmasked
 +       * status.  0x3f is the exception bits in these regs, 0x200 is the
 +       * C1 reg you need in case of a stack fault, 0x040 is the stack
 +       * fault bit.  We should only be taking one exception at a time,
 +       * so if this combination doesn't produce any single exception,
 +       * then we have a bad program that isn't syncronizing its FPU usage
 +       * and it will suffer the consequences since we won't be able to
 +       * fully reproduce the context of the exception
 +       */
 +      cwd = get_fpu_cwd(task);
 +      swd = get_fpu_swd(task);
 +      switch (((~cwd) & swd & 0x3f) | (swd & 0x240)) {
 +              case 0x000:
 +              default:
 +                      break;
 +              case 0x001: /* Invalid Op */
 +              case 0x041: /* Stack Fault */
 +              case 0x241: /* Stack Fault | Direction */
 +                      info.si_code = FPE_FLTINV;
 +                      /* Should we clear the SF or let user space do it ???? */
 +                      break;
 +              case 0x002: /* Denormalize */
 +              case 0x010: /* Underflow */
 +                      info.si_code = FPE_FLTUND;
 +                      break;
 +              case 0x004: /* Zero Divide */
 +                      info.si_code = FPE_FLTDIV;
 +                      break;
 +              case 0x008: /* Overflow */
 +                      info.si_code = FPE_FLTOVF;
 +                      break;
 +              case 0x020: /* Precision */
 +                      info.si_code = FPE_FLTRES;
 +                      break;
 +      }
 +      force_sig_info(SIGFPE, &info, task);
 +}
 +
 +fastcall void do_coprocessor_error(struct pt_regs * regs, long error_code)
 +{
 +      ignore_fpu_irq = 1;
 +      math_error((void __user *)regs->eip);
 +}
 +
 +void simd_math_error(void __user *eip)
 +{
 +      struct task_struct * task;
 +      siginfo_t info;
 +      unsigned short mxcsr;
 +
 +      /*
 +       * Save the info for the exception handler and clear the error.
 +       */
 +      task = current;
 +      save_init_fpu(task);
 +      task->thread.trap_no = 19;
 +      task->thread.error_code = 0;
 +      info.si_signo = SIGFPE;
 +      info.si_errno = 0;
 +      info.si_code = __SI_FAULT;
 +      info.si_addr = eip;
 +      /*
 +       * The SIMD FPU exceptions are handled a little differently, as there
 +       * is only a single status/control register.  Thus, to determine which
 +       * unmasked exception was caught we must mask the exception mask bits
 +       * at 0x1f80, and then use these to mask the exception bits at 0x3f.
 +       */
 +      mxcsr = get_fpu_mxcsr(task);
 +      switch (~((mxcsr & 0x1f80) >> 7) & (mxcsr & 0x3f)) {
 +              case 0x000:
 +              default:
 +                      break;
 +              case 0x001: /* Invalid Op */
 +                      info.si_code = FPE_FLTINV;
 +                      break;
 +              case 0x002: /* Denormalize */
 +              case 0x010: /* Underflow */
 +                      info.si_code = FPE_FLTUND;
 +                      break;
 +              case 0x004: /* Zero Divide */
 +                      info.si_code = FPE_FLTDIV;
 +                      break;
 +              case 0x008: /* Overflow */
 +                      info.si_code = FPE_FLTOVF;
 +                      break;
 +              case 0x020: /* Precision */
 +                      info.si_code = FPE_FLTRES;
 +                      break;
 +      }
 +      force_sig_info(SIGFPE, &info, task);
 +}
 +
 +fastcall void do_simd_coprocessor_error(struct pt_regs * regs,
 +                                        long error_code)
 +{
 +      if (cpu_has_xmm) {
 +              /* Handle SIMD FPU exceptions on PIII+ processors. */
 +              ignore_fpu_irq = 1;
 +              simd_math_error((void __user *)regs->eip);
 +      } else {
 +              /*
 +               * Handle strange cache flush from user space exception
 +               * in all other cases.  This is undocumented behaviour.
 +               */
 +              if (regs->eflags & VM_MASK) {
 +                      handle_vm86_fault((struct kernel_vm86_regs *)regs,
 +                                        error_code);
 +                      return;
 +              }
 +              die_if_kernel("cache flush denied", regs, error_code);
 +              current->thread.trap_no = 19;
 +              current->thread.error_code = error_code;
 +              force_sig(SIGSEGV, current);
 +      }
 +}
 +
 +/*
 + *  'math_state_restore()' saves the current math information in the
 + * old math state array, and gets the new ones from the current task
 + *
 + * Careful.. There are problems with IBM-designed IRQ13 behaviour.
 + * Don't touch unless you *really* know how it works.
 + *
 + * Must be called with kernel preemption disabled (in this case,
 + * local interrupts are disabled at the call-site in entry.S).
 + */
 +asmlinkage void math_state_restore(struct pt_regs regs)
 +{
 +      struct thread_info *thread = current_thread_info();
 +      struct task_struct *tsk = thread->task;
 +
 +      /*
 +       * A trap in kernel mode can be ignored. It'll be the fast XOR or
 +       * copying libraries, which will correctly save/restore state and
 +       * reset the TS bit in CR0.
 +       */
 +      if ((regs.xcs & 2) == 0)
 +              return;
 +
 +      clts();         /* Allow maths ops (or we recurse) */
 +      if (!tsk->used_math)
 +              init_fpu(tsk);
 +      restore_fpu(tsk);
 +      thread->status |= TS_USEDFPU;   /* So we fnsave on switch_to() */
 +}
 +
 +#ifndef CONFIG_MATH_EMULATION
 +
 +asmlinkage void math_emulate(long arg)
 +{
 +      printk("math-emulation not enabled and no coprocessor found.\n");
 +      printk("killing %s.\n",current->comm);
 +      force_sig(SIGFPE,current);
 +      schedule();
 +}
 +
 +#endif /* CONFIG_MATH_EMULATION */
 +
 +#ifdef CONFIG_X86_F00F_BUG
 +void __init trap_init_f00f_bug(void)
 +{
 +      __set_fixmap(FIX_F00F_IDT, __pa(&idt_table), PAGE_KERNEL_RO);
 +
 +      /*
 +       * Update the IDT descriptor and reload the IDT so that
 +       * it uses the read-only mapped virtual address.
 +       */
 +      idt_descr.address = fix_to_virt(FIX_F00F_IDT);
 +      __asm__ __volatile__("lidt %0" : : "m" (idt_descr));
 +}
 +#endif
 +
 +
 +/* NB. All these are "trap gates" (i.e. events_mask isn't cleared). */
 +static trap_info_t trap_table[] = {
 +      {  0, 0, __KERNEL_CS, (unsigned long)divide_error               },
 +      {  1, 0, __KERNEL_CS, (unsigned long)debug                      },
 +      {  3, 3, __KERNEL_CS, (unsigned long)int3                       },
 +      {  4, 3, __KERNEL_CS, (unsigned long)overflow                   },
 +      {  5, 3, __KERNEL_CS, (unsigned long)bounds                     },
 +      {  6, 0, __KERNEL_CS, (unsigned long)invalid_op                 },
 +      {  7, 0, __KERNEL_CS, (unsigned long)device_not_available       },
 +      {  9, 0, __KERNEL_CS, (unsigned long)coprocessor_segment_overrun },
 +      { 10, 0, __KERNEL_CS, (unsigned long)invalid_TSS                },
 +      { 11, 0, __KERNEL_CS, (unsigned long)segment_not_present        },
 +      { 12, 0, __KERNEL_CS, (unsigned long)stack_segment              },
 +      { 13, 0, __KERNEL_CS, (unsigned long)general_protection         },
 +      { 14, 0, __KERNEL_CS, (unsigned long)page_fault                 },
 +      { 15, 0, __KERNEL_CS, (unsigned long)fixup_4gb_segment          },
 +      { 16, 0, __KERNEL_CS, (unsigned long)coprocessor_error          },
 +      { 17, 0, __KERNEL_CS, (unsigned long)alignment_check            },
 +#ifdef CONFIG_X86_MCE
 +      { 18, 0, __KERNEL_CS, (unsigned long)machine_check              },
 +#endif
 +      { 19, 0, __KERNEL_CS, (unsigned long)simd_coprocessor_error     },
 +      { SYSCALL_VECTOR,  3, __KERNEL_CS, (unsigned long)system_call   },
 +      {  0, 0,           0, 0                                         }
 +};
 +
 +void __init trap_init(void)
 +{
 +      HYPERVISOR_set_trap_table(trap_table);
 +      HYPERVISOR_set_fast_trap(SYSCALL_VECTOR);
 +
 +      /*
 +       * default LDT is a single-entry callgate to lcall7 for iBCS
 +       * and a callgate to lcall27 for Solaris/x86 binaries
 +       */
 +      make_lowmem_page_readonly(&default_ldt[0]);
 +      xen_flush_page_update_queue();
 +
 +      /*
 +       * Should be a barrier for any external CPU state.
 +       */
 +      cpu_init();
 +}
index 1f7303efd2f4cf5f09db459c3fa08d6f684cb3b8,0000000000000000000000000000000000000000..78c46675f533815ff8810053a0ba20b209371288
mode 100644,000000..100644
--- /dev/null
@@@ -1,243 -1,0 +1,258 @@@
- //#include <asm/suspend.h>
 +
 +#define __KERNEL_SYSCALLS__
 +static int errno;
 +#include <linux/errno.h>
 +#include <linux/version.h>
 +#include <linux/kernel.h>
 +#include <linux/mm.h>
 +#include <linux/unistd.h>
 +#include <linux/module.h>
 +#include <linux/reboot.h>
++#include <linux/sysrq.h>
 +#include <asm/irq.h>
 +#include <asm/mmu_context.h>
 +#include <asm-xen/ctrl_if.h>
 +#include <asm-xen/hypervisor.h>
 +#include <asm-xen/xen-public/dom0_ops.h>
 +#include <asm-xen/linux-public/suspend.h>
 +#include <asm-xen/queues.h>
 +
 +void machine_restart(char * __unused)
 +{
 +      /* We really want to get pending console data out before we die. */
 +      extern void xencons_force_flush(void);
 +      xencons_force_flush();
 +      HYPERVISOR_reboot();
 +}
 +
 +void machine_halt(void)
 +{
 +      machine_power_off();
 +}
 +
 +void machine_power_off(void)
 +{
 +      /* We really want to get pending console data out before we die. */
 +      extern void xencons_force_flush(void);
 +      xencons_force_flush();
 +      HYPERVISOR_shutdown();
 +}
 +
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 +int reboot_thru_bios = 0;     /* for dmi_scan.c */
 +EXPORT_SYMBOL(machine_restart);
 +EXPORT_SYMBOL(machine_halt);
 +EXPORT_SYMBOL(machine_power_off);
 +#endif
 +
 +
 +/******************************************************************************
 + * Stop/pickle callback handling.
 + */
 +
 +/* Ignore multiple shutdown requests. */
 +static int shutting_down = -1;
++static int pending_sysrq = -1;
 +
 +static void __do_suspend(void)
 +{
 +    int i, j;
 +    suspend_record_t *suspend_record;
 +
 +    /* Hmmm... a cleaner interface to suspend/resume blkdevs would be nice. */
 +      /* XXX SMH: yes it would :-( */ 
 +#ifdef CONFIG_XEN_BLKDEV_FRONTEND
 +    extern void blkdev_suspend(void);
 +    extern void blkdev_resume(void);
 +#else
 +#define blkdev_suspend() do{}while(0)
 +#define blkdev_resume()  do{}while(0)
 +#endif
 +
 +#ifdef CONFIG_XEN_NETDEV_FRONTEND
 +    extern void netif_suspend(void);
 +    extern void netif_resume(void);  
 +#else
 +#define netif_suspend() do{}while(0)
 +#define netif_resume()  do{}while(0)
 +#endif
 +
 +    extern void time_suspend(void);
 +    extern void time_resume(void);
 +    extern unsigned long max_pfn;
 +    extern unsigned long *pfn_to_mfn_frame_list;
 +
 +    suspend_record = (suspend_record_t *)__get_free_page(GFP_KERNEL);
 +    if ( suspend_record == NULL )
 +        goto out;
 +
 +    suspend_record->nr_pfns = max_pfn; /* final number of pfns */
 +
 +    __cli();
 +
 +    netif_suspend();
 +
 +    blkdev_suspend();
 +
 +    time_suspend();
 +
 +    ctrl_if_suspend();
 +
 +    irq_suspend();
 +
 +    HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
 +    clear_fixmap(FIX_SHARED_INFO);
 +
 +    memcpy(&suspend_record->resume_info, &xen_start_info, sizeof(xen_start_info));
 +
 +    HYPERVISOR_suspend(virt_to_machine(suspend_record) >> PAGE_SHIFT);
 +
 +    HYPERVISOR_vm_assist(VMASST_CMD_enable,
 +                       VMASST_TYPE_4gb_segments);
 +#ifdef CONFIG_XEN_WRITABLE_PAGETABLES
 +    HYPERVISOR_vm_assist(VMASST_CMD_enable,
 +                       VMASST_TYPE_writable_pagetables);
 +#endif
 +
 +    shutting_down = -1; 
 +
 +    memcpy(&xen_start_info, &suspend_record->resume_info, sizeof(xen_start_info));
 +
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 +    set_fixmap_ma(FIX_SHARED_INFO, xen_start_info.shared_info);
 +#else
 +    set_fixmap(FIX_SHARED_INFO, xen_start_info.shared_info);
 +#endif
 +
 +    HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
 +
 +    memset(empty_zero_page, 0, PAGE_SIZE);
 +
 +    for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ )
 +    {
 +        pfn_to_mfn_frame_list[j] = 
 +            virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT;
 +    }
 +    HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list =
 +        virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT;
 +
 +
 +    irq_resume();
 +
 +    ctrl_if_resume();
 +
 +    time_resume();
 +
 +    blkdev_resume();
 +
 +    netif_resume();
 +
 +    __sti();
 +
 + out:
 +    if ( suspend_record != NULL )
 +        free_page((unsigned long)suspend_record);
 +}
 +
 +static int shutdown_process(void *__unused)
 +{
 +    static char *envp[] = { "HOME=/", "TERM=linux", 
 +                            "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
 +    static char *restart_argv[]  = { "/sbin/shutdown", "-r", "now", NULL };
 +    static char *poweroff_argv[] = { "/sbin/halt",     "-p",        NULL };
 +
 +    extern asmlinkage long sys_reboot(int magic1, int magic2,
 +                                      unsigned int cmd, void *arg);
 +
 +    daemonize(
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 +        "shutdown"
 +#endif
 +        );
 +
 +    switch ( shutting_down )
 +    {
 +    case CMSG_SHUTDOWN_POWEROFF:
 +        if ( execve("/sbin/halt", poweroff_argv, envp) < 0 )
 +        {
 +            sys_reboot(LINUX_REBOOT_MAGIC1,
 +                       LINUX_REBOOT_MAGIC2,
 +                       LINUX_REBOOT_CMD_POWER_OFF,
 +                       NULL);
 +        }
 +        break;
 +
 +    case CMSG_SHUTDOWN_REBOOT:
 +        if ( execve("/sbin/shutdown", restart_argv, envp) < 0 )
 +        {
 +            sys_reboot(LINUX_REBOOT_MAGIC1,
 +                       LINUX_REBOOT_MAGIC2,
 +                       LINUX_REBOOT_CMD_RESTART,
 +                       NULL);
 +        }
 +        break;
 +    }
 +
 +    shutting_down = -1; /* could try again */
 +
 +    return 0;
 +}
 +
 +static void __shutdown_handler(void *unused)
 +{
 +    int err;
 +
 +    if ( shutting_down != CMSG_SHUTDOWN_SUSPEND )
 +    {
 +        err = kernel_thread(shutdown_process, NULL, CLONE_FS | CLONE_FILES);
 +        if ( err < 0 )
 +            printk(KERN_ALERT "Error creating shutdown process!\n");
 +    }
 +    else
 +    {
 +        __do_suspend();
 +    }
 +}
 +
++static void __sysrq_handler(void *unused)
++{
++#ifdef CONFIG_MAGIC_SYSRQ
++    handle_sysrq(pending_sysrq, NULL, NULL);
++#endif
++    pending_sysrq = -1;
++}
++
 +static void shutdown_handler(ctrl_msg_t *msg, unsigned long id)
 +{
 +    static DECLARE_WORK(shutdown_work, __shutdown_handler, NULL);
++    static DECLARE_WORK(sysrq_work, __sysrq_handler, NULL);
 +
 +    if ( (shutting_down == -1) &&
 +         ((msg->subtype == CMSG_SHUTDOWN_POWEROFF) ||
 +          (msg->subtype == CMSG_SHUTDOWN_REBOOT) ||
 +          (msg->subtype == CMSG_SHUTDOWN_SUSPEND)) )
 +    {
 +        shutting_down = msg->subtype;
 +        schedule_work(&shutdown_work);
 +    }
++    else if ( (pending_sysrq == -1) && 
++              (msg->subtype == CMSG_SHUTDOWN_SYSRQ) )
++    {
++        pending_sysrq = msg->msg[0];
++        schedule_work(&sysrq_work);
++    }
 +    else
 +    {
 +        printk("Ignore spurious shutdown request\n");
 +    }
 +
 +    ctrl_if_send_response(msg);
 +}
 +
 +static int __init setup_shutdown_event(void)
 +{
 +    ctrl_if_register_receiver(CMSG_SHUTDOWN, shutdown_handler, 0);
 +    return 0;
 +}
 +
 +__initcall(setup_shutdown_event);
index baa50ace22c19ea478d554ca18e0c8884b5346ff,0000000000000000000000000000000000000000..8de03f644b351fff8b59eabd29774d8e043ea35c
mode 100644,000000..100644
--- /dev/null
@@@ -1,297 -1,0 +1,301 @@@
-     memcpy(dev->dev_addr, create->mac, ETH_ALEN);
 +/******************************************************************************
 + * arch/xen/drivers/netif/backend/interface.c
 + * 
 + * Network-device interface management.
 + * 
 + * Copyright (c) 2004, Keir Fraser
 + */
 +
 +#include "common.h"
 +#include <linux/rtnetlink.h>
 +
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 +#define VMALLOC_VMADDR(x) ((unsigned long)(x))
 +#endif
 +
 +#define NETIF_HASHSZ 1024
 +#define NETIF_HASH(_d,_h) (((int)(_d)^(int)(_h))&(NETIF_HASHSZ-1))
 +
 +static netif_t *netif_hash[NETIF_HASHSZ];
 +
 +netif_t *netif_find_by_handle(domid_t domid, unsigned int handle)
 +{
 +    netif_t *netif = netif_hash[NETIF_HASH(domid, handle)];
 +    while ( (netif != NULL) && 
 +            ((netif->domid != domid) || (netif->handle != handle)) )
 +        netif = netif->hash_next;
 +    return netif;
 +}
 +
 +static void __netif_disconnect_complete(void *arg)
 +{
 +    netif_t              *netif = (netif_t *)arg;
 +    ctrl_msg_t            cmsg;
 +    netif_be_disconnect_t disc;
 +
 +    /*
 +     * These can't be done in netif_disconnect() because at that point there
 +     * may be outstanding requests in the network stack whose asynchronous
 +     * responses must still be notified to the remote driver.
 +     */
 +    unbind_evtchn_from_irq(netif->evtchn);
 +    vfree(netif->tx); /* Frees netif->rx as well. */
 +    rtnl_lock();
 +    (void)dev_close(netif->dev);
 +    rtnl_unlock();
 +
 +    /* Construct the deferred response message. */
 +    cmsg.type         = CMSG_NETIF_BE;
 +    cmsg.subtype      = CMSG_NETIF_BE_DISCONNECT;
 +    cmsg.id           = netif->disconnect_rspid;
 +    cmsg.length       = sizeof(netif_be_disconnect_t);
 +    disc.domid        = netif->domid;
 +    disc.netif_handle = netif->handle;
 +    disc.status       = NETIF_BE_STATUS_OKAY;
 +    memcpy(cmsg.msg, &disc, sizeof(disc));
 +
 +    /*
 +     * Make sure message is constructed /before/ status change, because
 +     * after the status change the 'netif' structure could be deallocated at
 +     * any time. Also make sure we send the response /after/ status change,
 +     * as otherwise a subsequent CONNECT request could spuriously fail if
 +     * another CPU doesn't see the status change yet.
 +     */
 +    mb();
 +    if ( netif->status != DISCONNECTING )
 +        BUG();
 +    netif->status = DISCONNECTED;
 +    mb();
 +
 +    /* Send the successful response. */
 +    ctrl_if_send_response(&cmsg);
 +}
 +
 +void netif_disconnect_complete(netif_t *netif)
 +{
 +    INIT_WORK(&netif->work, __netif_disconnect_complete, (void *)netif);
 +    schedule_work(&netif->work);
 +}
 +
 +void netif_create(netif_be_create_t *create)
 +{
 +    int                err = 0;
 +    domid_t            domid  = create->domid;
 +    unsigned int       handle = create->netif_handle;
 +    struct net_device *dev;
 +    netif_t          **pnetif, *netif;
 +    char               name[IFNAMSIZ];
 +
 +    snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
 +    dev = alloc_netdev(sizeof(netif_t), name, ether_setup);
 +    if ( dev == NULL )
 +    {
 +        DPRINTK("Could not create netif: out of memory\n");
 +        create->status = NETIF_BE_STATUS_OUT_OF_MEMORY;
 +        return;
 +    }
 +
 +    netif = dev->priv;
 +    memset(netif, 0, sizeof(*netif));
 +    netif->domid  = domid;
 +    netif->handle = handle;
 +    netif->status = DISCONNECTED;
 +    spin_lock_init(&netif->rx_lock);
 +    spin_lock_init(&netif->tx_lock);
 +    atomic_set(&netif->refcnt, 0);
 +    netif->dev = dev;
 +
 +    netif->credit_bytes = netif->remaining_credit = ~0UL;
 +    netif->credit_usec  = 0UL;
 +    /*init_ac_timer(&new_vif->credit_timeout);*/
 +
 +    pnetif = &netif_hash[NETIF_HASH(domid, handle)];
 +    while ( *pnetif != NULL )
 +    {
 +        if ( ((*pnetif)->domid == domid) && ((*pnetif)->handle == handle) )
 +        {
 +            DPRINTK("Could not create netif: already exists\n");
 +            create->status = NETIF_BE_STATUS_INTERFACE_EXISTS;
 +            free_netdev(dev);
 +            return;
 +        }
 +        pnetif = &(*pnetif)->hash_next;
 +    }
 +
 +    dev->hard_start_xmit = netif_be_start_xmit;
 +    dev->get_stats       = netif_be_get_stats;
-     /* Force a different MAC from remote end. */
-     dev->dev_addr[2] ^= 1;
 +
 +    /* Disable queuing. */
 +    dev->tx_queue_len = 0;
 +
++    /*
++     * Initialise a dummy MAC address. We choose the numerically largest
++     * non-broadcast address to prevent the address getting stolen by an 
++     * Ethernet bridge for STP purposes. (FE:FF:FF:FF:FF:FF)
++     */
++    memset(dev->dev_addr, 0xFF, ETH_ALEN);
++    dev->dev_addr[0] &= ~0x01;
 +
 +    if ( (err = register_netdev(dev)) != 0 )
 +    {
 +        DPRINTK("Could not register new net device %s: err=%d\n",
 +                dev->name, err);
 +        create->status = NETIF_BE_STATUS_OUT_OF_MEMORY;
 +        free_netdev(dev);
 +        return;
 +    }
 +
 +    netif->hash_next = *pnetif;
 +    *pnetif = netif;
 +
 +    DPRINTK("Successfully created netif\n");
 +    create->status = NETIF_BE_STATUS_OKAY;
 +}
 +
 +void netif_destroy(netif_be_destroy_t *destroy)
 +{
 +    domid_t       domid  = destroy->domid;
 +    unsigned int  handle = destroy->netif_handle;
 +    netif_t     **pnetif, *netif;
 +
 +    pnetif = &netif_hash[NETIF_HASH(domid, handle)];
 +    while ( (netif = *pnetif) != NULL )
 +    {
 +        if ( (netif->domid == domid) && (netif->handle == handle) )
 +        {
 +            if ( netif->status != DISCONNECTED )
 +                goto still_connected;
 +            goto destroy;
 +        }
 +        pnetif = &netif->hash_next;
 +    }
 +
 +    destroy->status = NETIF_BE_STATUS_INTERFACE_NOT_FOUND;
 +    return;
 +
 + still_connected:
 +    destroy->status = NETIF_BE_STATUS_INTERFACE_CONNECTED;
 +    return;
 +
 + destroy:
 +    *pnetif = netif->hash_next;
 +    unregister_netdev(netif->dev);
 +    free_netdev(netif->dev);
 +    destroy->status = NETIF_BE_STATUS_OKAY;
 +}
 +
 +void netif_connect(netif_be_connect_t *connect)
 +{
 +    domid_t       domid  = connect->domid;
 +    unsigned int  handle = connect->netif_handle;
 +    unsigned int  evtchn = connect->evtchn;
 +    unsigned long tx_shmem_frame = connect->tx_shmem_frame;
 +    unsigned long rx_shmem_frame = connect->rx_shmem_frame;
 +    struct vm_struct *vma;
 +    pgprot_t      prot;
 +    int           error;
 +    netif_t      *netif;
 +#if 0
 +    struct net_device *eth0_dev;
 +#endif
 +
 +    netif = netif_find_by_handle(domid, handle);
 +    if ( unlikely(netif == NULL) )
 +    {
 +        DPRINTK("netif_connect attempted for non-existent netif (%u,%u)\n", 
 +                connect->domid, connect->netif_handle); 
 +        connect->status = NETIF_BE_STATUS_INTERFACE_NOT_FOUND;
 +        return;
 +    }
 +
 +    if ( netif->status != DISCONNECTED )
 +    {
 +        connect->status = NETIF_BE_STATUS_INTERFACE_CONNECTED;
 +        return;
 +    }
 +
 +    if ( (vma = get_vm_area(2*PAGE_SIZE, VM_IOREMAP)) == NULL )
 +    {
 +        connect->status = NETIF_BE_STATUS_OUT_OF_MEMORY;
 +        return;
 +    }
 +
 +    prot = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED);
 +    error  = direct_remap_area_pages(&init_mm, 
 +                                     VMALLOC_VMADDR(vma->addr),
 +                                     tx_shmem_frame<<PAGE_SHIFT, PAGE_SIZE,
 +                                     prot, domid);
 +    error |= direct_remap_area_pages(&init_mm, 
 +                                     VMALLOC_VMADDR(vma->addr) + PAGE_SIZE,
 +                                     rx_shmem_frame<<PAGE_SHIFT, PAGE_SIZE,
 +                                     prot, domid);
 +    if ( error != 0 )
 +    {
 +        if ( error == -ENOMEM )
 +            connect->status = NETIF_BE_STATUS_OUT_OF_MEMORY;
 +        else if ( error == -EFAULT )
 +            connect->status = NETIF_BE_STATUS_MAPPING_ERROR;
 +        else
 +            connect->status = NETIF_BE_STATUS_ERROR;
 +        vfree(vma->addr);
 +        return;
 +    }
 +
 +    netif->evtchn         = evtchn;
 +    netif->irq            = bind_evtchn_to_irq(evtchn);
 +    netif->tx_shmem_frame = tx_shmem_frame;
 +    netif->rx_shmem_frame = rx_shmem_frame;
 +    netif->tx             = 
 +        (netif_tx_interface_t *)vma->addr;
 +    netif->rx             = 
 +        (netif_rx_interface_t *)((char *)vma->addr + PAGE_SIZE);
 +    netif->status         = CONNECTED;
 +    netif_get(netif);
 +
 +    netif->tx->resp_prod = netif->rx->resp_prod = 0;
 +
 +    rtnl_lock();
 +    (void)dev_open(netif->dev);
 +    rtnl_unlock();
 +
 +    (void)request_irq(netif->irq, netif_be_int, 0, netif->dev->name, netif);
 +    netif_start_queue(netif->dev);
 +
 +    connect->status = NETIF_BE_STATUS_OKAY;
 +}
 +
 +int netif_disconnect(netif_be_disconnect_t *disconnect, u8 rsp_id)
 +{
 +    domid_t       domid  = disconnect->domid;
 +    unsigned int  handle = disconnect->netif_handle;
 +    netif_t      *netif;
 +
 +    netif = netif_find_by_handle(domid, handle);
 +    if ( unlikely(netif == NULL) )
 +    {
 +        DPRINTK("netif_disconnect attempted for non-existent netif"
 +                " (%u,%u)\n", disconnect->domid, disconnect->netif_handle); 
 +        disconnect->status = NETIF_BE_STATUS_INTERFACE_NOT_FOUND;
 +        return 1; /* Caller will send response error message. */
 +    }
 +
 +    if ( netif->status == CONNECTED )
 +    {
 +        netif->status = DISCONNECTING;
 +        netif->disconnect_rspid = rsp_id;
 +        wmb(); /* Let other CPUs see the status change. */
 +        netif_stop_queue(netif->dev);
 +        free_irq(netif->irq, netif);
 +        netif_deschedule(netif);
 +        netif_put(netif);
 +        return 0; /* Caller should not send response message. */
 +    }
 +
 +    disconnect->status = NETIF_BE_STATUS_OKAY;
 +    return 1;
 +}
 +
 +void netif_interface_init(void)
 +{
 +    memset(netif_hash, 0, sizeof(netif_hash));
 +}