ia64/xen-unstable

changeset 13665:140afd7a5462

merge with xen-unstable.hg
author awilliam@xenbuild2.aw
date Sat Jan 27 14:07:19 2007 -0700 (2007-01-27)
parents 1faf482f119c d1710eb35385
children 781370093c02
files extras/mini-os/time.c linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c linux-2.6-xen-sparse/arch/i386/kernel/traps.c linux-2.6-xen-sparse/arch/i386/mm/pgtable.c linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c linux-2.6-xen-sparse/drivers/acpi/tables.c linux-2.6-xen-sparse/drivers/xen/core/skbuff.c linux-2.6-xen-sparse/include/asm-i386/atomic.h linux-2.6-xen-sparse/include/asm-i386/bitops.h linux-2.6-xen-sparse/include/asm-i386/elf.h linux-2.6-xen-sparse/include/asm-i386/fixmap.h linux-2.6-xen-sparse/include/asm-i386/futex.h linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h linux-2.6-xen-sparse/include/asm-i386/page.h linux-2.6-xen-sparse/include/asm-i386/rwsem.h linux-2.6-xen-sparse/include/asm-i386/smp_alt.h linux-2.6-xen-sparse/include/asm-i386/spinlock.h linux-2.6-xen-sparse/include/asm-i386/system.h linux-2.6-xen-sparse/include/xen/foreign_page.h patches/linux-2.6.16.33/blktap-aio-16_03_06.patch patches/linux-2.6.16.33/device_bind.patch patches/linux-2.6.16.33/fix-hz-suspend.patch patches/linux-2.6.16.33/fix-ide-cd-pio-mode.patch patches/linux-2.6.16.33/git-2a8a3d5b65e86ec1dfef7d268c64a909eab94af7.patch patches/linux-2.6.16.33/git-2efe55a9cec8418f0e0cde3dc3787a42fddc4411.patch patches/linux-2.6.16.33/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch patches/linux-2.6.16.33/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch patches/linux-2.6.16.33/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch patches/linux-2.6.16.33/i386-mach-io-check-nmi.patch patches/linux-2.6.16.33/kasprintf.patch patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch patches/linux-2.6.16.33/net-csum.patch patches/linux-2.6.16.33/net-gso-0-base.patch patches/linux-2.6.16.33/net-gso-1-check-dodgy.patch patches/linux-2.6.16.33/net-gso-2-checksum-fix.patch patches/linux-2.6.16.33/net-gso-3-fix-errorcheck.patch patches/linux-2.6.16.33/net-gso-4-kill-warnon.patch patches/linux-2.6.16.33/net-gso-5-rcv-mss.patch patches/linux-2.6.16.33/net-gso-6-linear-segmentation.patch patches/linux-2.6.16.33/pci-mmconfig-fix-from-2.6.17.patch patches/linux-2.6.16.33/pmd-shared.patch patches/linux-2.6.16.33/rcu_needs_cpu.patch patches/linux-2.6.16.33/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch patches/linux-2.6.16.33/series patches/linux-2.6.16.33/smp-alts.patch patches/linux-2.6.16.33/tpm_plugin_2.6.17.patch patches/linux-2.6.16.33/vsnprintf.patch patches/linux-2.6.16.33/x86-elfnote-as-preprocessor-macro.patch patches/linux-2.6.16.33/x86-increase-interrupt-vector-range.patch patches/linux-2.6.16.33/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch patches/linux-2.6.16.33/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch patches/linux-2.6.16.33/xen-hotplug.patch patches/linux-2.6.16.33/xenoprof-generic.patch tools/libfsimage/common/Makefile tools/python/xen/xend/XendRoot.py xen/arch/ia64/vmx/vmmu.c xen/arch/ia64/xen/domain.c xen/arch/x86/x86_64/domctl.c xen/arch/x86/x86_64/sysctl.c xen/common/compat/domctl.c xen/common/compat/sysctl.c xen/common/elf32.c
line diff
     1.1 --- a/.hgignore	Fri Jan 26 14:19:37 2007 -0700
     1.2 +++ b/.hgignore	Sat Jan 27 14:07:19 2007 -0700
     1.3 @@ -210,6 +210,8 @@
     1.4  ^xen/include/asm-.*/asm-offsets\.h$
     1.5  ^xen/include/compat/.*$
     1.6  ^xen/include/hypervisor-ifs/arch$
     1.7 +^xen/include/public/foreign/.*\.(c|h|size)$
     1.8 +^xen/include/public/foreign/checker$
     1.9  ^xen/include/public/public$
    1.10  ^xen/include/xen/.*\.new$
    1.11  ^xen/include/xen/acm_policy\.h$
     2.1 --- a/Config.mk	Fri Jan 26 14:19:37 2007 -0700
     2.2 +++ b/Config.mk	Sat Jan 27 14:07:19 2007 -0700
     2.3 @@ -6,9 +6,12 @@ debug ?= n
     2.4  XEN_COMPILE_ARCH    ?= $(shell uname -m | sed -e s/i.86/x86_32/ \
     2.5                           -e s/ppc/powerpc/ -e s/i86pc/x86_32/)
     2.6  XEN_TARGET_ARCH     ?= $(XEN_COMPILE_ARCH)
     2.7 -XEN_TARGET_X86_PAE  ?= n
     2.8  XEN_OS              ?= $(shell uname -s)
     2.9  
    2.10 +ifeq ($(XEN_TARGET_ARCH),x86_32)
    2.11 +XEN_TARGET_X86_PAE  ?= y
    2.12 +endif
    2.13 +
    2.14  CONFIG_$(XEN_OS) := y
    2.15  
    2.16  SHELL     ?= /bin/sh
     3.1 --- a/Makefile	Fri Jan 26 14:19:37 2007 -0700
     3.2 +++ b/Makefile	Sat Jan 27 14:07:19 2007 -0700
     3.3 @@ -22,7 +22,7 @@ endif
     3.4  install: install-xen install-kernels install-tools install-docs
     3.5  
     3.6  .PHONY: build
     3.7 -build: kernels
     3.8 +build: kernels build-headers
     3.9  	$(MAKE) -C xen build
    3.10  	$(MAKE) -C tools build
    3.11  	$(MAKE) -C docs build
    3.12 @@ -59,11 +59,11 @@ prep-kernels:
    3.13  	for i in $(XKERNELS) ; do $(MAKE) $$i-prep || exit 1; done
    3.14  
    3.15  .PHONY: install-xen
    3.16 -install-xen:
    3.17 +install-xen: build-headers
    3.18  	$(MAKE) -C xen install
    3.19  
    3.20  .PHONY: install-tools
    3.21 -install-tools:
    3.22 +install-tools: build-headers
    3.23  	$(MAKE) -C tools install
    3.24  
    3.25  .PHONY: install-kernels
    3.26 @@ -82,6 +82,11 @@ dev-docs:
    3.27  .PHONY: kbuild
    3.28  kbuild: kernels
    3.29  
    3.30 +# generate header files
    3.31 +.PHONY: build-headers
    3.32 +build-headers:
    3.33 +	$(MAKE) -C xen/include/public/foreign
    3.34 +
    3.35  # Delete the kernel build trees entirely
    3.36  .PHONY: kdelete
    3.37  kdelete:
     4.1 --- a/buildconfigs/linux-defconfig_xen0_ia64	Fri Jan 26 14:19:37 2007 -0700
     4.2 +++ b/buildconfigs/linux-defconfig_xen0_ia64	Sat Jan 27 14:07:19 2007 -0700
     4.3 @@ -1512,10 +1512,7 @@ CONFIG_CRYPTO_DES=y
     4.4  # Hardware crypto devices
     4.5  #
     4.6  # CONFIG_XEN_UTIL is not set
     4.7 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
     4.8 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
     4.9  CONFIG_XEN_BALLOON=y
    4.10 -CONFIG_XEN_SKBUFF=y
    4.11  # CONFIG_XEN_DEVMEM is not set
    4.12  CONFIG_XEN_REBOOT=y
    4.13  # CONFIG_XEN_SMPBOOT is not set
     5.1 --- a/buildconfigs/linux-defconfig_xen0_x86_32	Fri Jan 26 14:19:37 2007 -0700
     5.2 +++ b/buildconfigs/linux-defconfig_xen0_x86_32	Sat Jan 27 14:07:19 2007 -0700
     5.3 @@ -1,22 +1,27 @@
     5.4  #
     5.5  # Automatically generated make config: don't edit
     5.6 -# Linux kernel version: 2.6.16.13-xen0
     5.7 -# Thu May 11 17:06:31 2006
     5.8 +# Linux kernel version: 2.6.18-xen0
     5.9 +# Wed Jan 17 18:35:52 2007
    5.10  #
    5.11  CONFIG_X86_32=y
    5.12 +CONFIG_GENERIC_TIME=y
    5.13 +CONFIG_LOCKDEP_SUPPORT=y
    5.14 +CONFIG_STACKTRACE_SUPPORT=y
    5.15  CONFIG_SEMAPHORE_SLEEPERS=y
    5.16  CONFIG_X86=y
    5.17  CONFIG_MMU=y
    5.18  CONFIG_GENERIC_ISA_DMA=y
    5.19  CONFIG_GENERIC_IOMAP=y
    5.20 +CONFIG_GENERIC_HWEIGHT=y
    5.21  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
    5.22  CONFIG_DMI=y
    5.23 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    5.24  
    5.25  #
    5.26  # Code maturity level options
    5.27  #
    5.28  CONFIG_EXPERIMENTAL=y
    5.29 -CONFIG_BROKEN_ON_SMP=y
    5.30 +CONFIG_LOCK_KERNEL=y
    5.31  CONFIG_INIT_ENV_ARG_LIMIT=32
    5.32  
    5.33  #
    5.34 @@ -28,14 +33,16 @@ CONFIG_SWAP=y
    5.35  CONFIG_SYSVIPC=y
    5.36  # CONFIG_POSIX_MQUEUE is not set
    5.37  # CONFIG_BSD_PROCESS_ACCT is not set
    5.38 -CONFIG_SYSCTL=y
    5.39 +# CONFIG_TASKSTATS is not set
    5.40  # CONFIG_AUDIT is not set
    5.41  # CONFIG_IKCONFIG is not set
    5.42 +# CONFIG_CPUSETS is not set
    5.43 +# CONFIG_RELAY is not set
    5.44  CONFIG_INITRAMFS_SOURCE=""
    5.45 -CONFIG_UID16=y
    5.46 -CONFIG_VM86=y
    5.47  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
    5.48  # CONFIG_EMBEDDED is not set
    5.49 +CONFIG_UID16=y
    5.50 +CONFIG_SYSCTL=y
    5.51  CONFIG_KALLSYMS=y
    5.52  # CONFIG_KALLSYMS_ALL is not set
    5.53  # CONFIG_KALLSYMS_EXTRA_PASS is not set
    5.54 @@ -47,11 +54,9 @@ CONFIG_BASE_FULL=y
    5.55  CONFIG_FUTEX=y
    5.56  CONFIG_EPOLL=y
    5.57  CONFIG_SHMEM=y
    5.58 -CONFIG_CC_ALIGN_FUNCTIONS=0
    5.59 -CONFIG_CC_ALIGN_LABELS=0
    5.60 -CONFIG_CC_ALIGN_LOOPS=0
    5.61 -CONFIG_CC_ALIGN_JUMPS=0
    5.62  CONFIG_SLAB=y
    5.63 +CONFIG_VM_EVENT_COUNTERS=y
    5.64 +CONFIG_RT_MUTEXES=y
    5.65  # CONFIG_TINY_SHMEM is not set
    5.66  CONFIG_BASE_SMALL=0
    5.67  # CONFIG_SLOB is not set
    5.68 @@ -62,15 +67,17 @@ CONFIG_BASE_SMALL=0
    5.69  CONFIG_MODULES=y
    5.70  CONFIG_MODULE_UNLOAD=y
    5.71  # CONFIG_MODULE_FORCE_UNLOAD is not set
    5.72 -CONFIG_OBSOLETE_MODPARM=y
    5.73  # CONFIG_MODVERSIONS is not set
    5.74  # CONFIG_MODULE_SRCVERSION_ALL is not set
    5.75  CONFIG_KMOD=y
    5.76 +CONFIG_STOP_MACHINE=y
    5.77  
    5.78  #
    5.79  # Block layer
    5.80  #
    5.81  # CONFIG_LBD is not set
    5.82 +# CONFIG_BLK_DEV_IO_TRACE is not set
    5.83 +CONFIG_LSF=y
    5.84  
    5.85  #
    5.86  # IO Schedulers
    5.87 @@ -88,6 +95,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
    5.88  #
    5.89  # Processor type and features
    5.90  #
    5.91 +CONFIG_SMP=y
    5.92  # CONFIG_X86_PC is not set
    5.93  CONFIG_X86_XEN=y
    5.94  # CONFIG_X86_ELAN is not set
    5.95 @@ -135,14 +143,14 @@ CONFIG_X86_CMPXCHG64=y
    5.96  CONFIG_X86_GOOD_APIC=y
    5.97  CONFIG_X86_USE_PPRO_CHECKSUM=y
    5.98  CONFIG_X86_TSC=y
    5.99 -# CONFIG_SMP is not set
   5.100 +CONFIG_NR_CPUS=8
   5.101  CONFIG_PREEMPT_NONE=y
   5.102  # CONFIG_PREEMPT_VOLUNTARY is not set
   5.103  # CONFIG_PREEMPT is not set
   5.104 -CONFIG_X86_UP_APIC=y
   5.105 -CONFIG_X86_UP_IOAPIC=y
   5.106 +CONFIG_PREEMPT_BKL=y
   5.107  CONFIG_X86_LOCAL_APIC=y
   5.108  CONFIG_X86_IO_APIC=y
   5.109 +CONFIG_VM86=y
   5.110  # CONFIG_TOSHIBA is not set
   5.111  # CONFIG_I8K is not set
   5.112  # CONFIG_X86_REBOOTFIXUPS is not set
   5.113 @@ -158,10 +166,6 @@ CONFIG_SWIOTLB=y
   5.114  # CONFIG_NOHIGHMEM is not set
   5.115  CONFIG_HIGHMEM4G=y
   5.116  # CONFIG_HIGHMEM64G is not set
   5.117 -CONFIG_VMSPLIT_3G=y
   5.118 -# CONFIG_VMSPLIT_3G_OPT is not set
   5.119 -# CONFIG_VMSPLIT_2G is not set
   5.120 -# CONFIG_VMSPLIT_1G is not set
   5.121  CONFIG_PAGE_OFFSET=0xC0000000
   5.122  CONFIG_HIGHMEM=y
   5.123  CONFIG_SELECT_MEMORY_MODEL=y
   5.124 @@ -172,6 +176,7 @@ CONFIG_FLATMEM=y
   5.125  CONFIG_FLAT_NODE_MEM_MAP=y
   5.126  # CONFIG_SPARSEMEM_STATIC is not set
   5.127  CONFIG_SPLIT_PTLOCK_CPUS=4096
   5.128 +CONFIG_RESOURCES_64BIT=y
   5.129  # CONFIG_HIGHPTE is not set
   5.130  CONFIG_MTRR=y
   5.131  # CONFIG_REGPARM is not set
   5.132 @@ -183,6 +188,8 @@ CONFIG_HZ=100
   5.133  CONFIG_KEXEC=y
   5.134  # CONFIG_CRASH_DUMP is not set
   5.135  CONFIG_PHYSICAL_START=0x100000
   5.136 +CONFIG_HOTPLUG_CPU=y
   5.137 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
   5.138  
   5.139  #
   5.140  # Power management options (ACPI, APM)
   5.141 @@ -199,6 +206,7 @@ CONFIG_ACPI_BUTTON=m
   5.142  CONFIG_ACPI_VIDEO=m
   5.143  CONFIG_ACPI_HOTKEY=m
   5.144  CONFIG_ACPI_FAN=m
   5.145 +CONFIG_ACPI_DOCK=m
   5.146  CONFIG_ACPI_PROCESSOR=m
   5.147  CONFIG_ACPI_THERMAL=m
   5.148  CONFIG_ACPI_ASUS=m
   5.149 @@ -231,10 +239,10 @@ CONFIG_PCI_MMCONFIG=y
   5.150  CONFIG_XEN_PCIDEV_FRONTEND=y
   5.151  # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
   5.152  # CONFIG_PCIEPORTBUS is not set
   5.153 -CONFIG_PCI_LEGACY_PROC=y
   5.154  # CONFIG_PCI_DEBUG is not set
   5.155  CONFIG_ISA_DMA_API=y
   5.156  # CONFIG_SCx200 is not set
   5.157 +CONFIG_K8_NB=y
   5.158  
   5.159  #
   5.160  # PCCARD (PCMCIA/CardBus) support
   5.161 @@ -265,6 +273,8 @@ CONFIG_NET=y
   5.162  CONFIG_PACKET=y
   5.163  # CONFIG_PACKET_MMAP is not set
   5.164  CONFIG_UNIX=y
   5.165 +CONFIG_XFRM=y
   5.166 +# CONFIG_XFRM_USER is not set
   5.167  # CONFIG_NET_KEY is not set
   5.168  CONFIG_INET=y
   5.169  # CONFIG_IP_MULTICAST is not set
   5.170 @@ -281,7 +291,10 @@ CONFIG_IP_PNP_DHCP=y
   5.171  # CONFIG_INET_AH is not set
   5.172  # CONFIG_INET_ESP is not set
   5.173  # CONFIG_INET_IPCOMP is not set
   5.174 +# CONFIG_INET_XFRM_TUNNEL is not set
   5.175  # CONFIG_INET_TUNNEL is not set
   5.176 +CONFIG_INET_XFRM_MODE_TRANSPORT=y
   5.177 +CONFIG_INET_XFRM_MODE_TUNNEL=y
   5.178  # CONFIG_INET_DIAG is not set
   5.179  # CONFIG_TCP_CONG_ADVANCED is not set
   5.180  CONFIG_TCP_CONG_BIC=y
   5.181 @@ -291,6 +304,9 @@ CONFIG_TCP_CONG_BIC=y
   5.182  #
   5.183  # CONFIG_IP_VS is not set
   5.184  # CONFIG_IPV6 is not set
   5.185 +# CONFIG_INET6_XFRM_TUNNEL is not set
   5.186 +# CONFIG_INET6_TUNNEL is not set
   5.187 +# CONFIG_NETWORK_SECMARK is not set
   5.188  CONFIG_NETFILTER=y
   5.189  # CONFIG_NETFILTER_DEBUG is not set
   5.190  CONFIG_BRIDGE_NETFILTER=y
   5.191 @@ -315,6 +331,8 @@ CONFIG_IP_NF_FTP=m
   5.192  # CONFIG_IP_NF_TFTP is not set
   5.193  # CONFIG_IP_NF_AMANDA is not set
   5.194  # CONFIG_IP_NF_PPTP is not set
   5.195 +# CONFIG_IP_NF_H323 is not set
   5.196 +# CONFIG_IP_NF_SIP is not set
   5.197  # CONFIG_IP_NF_QUEUE is not set
   5.198  
   5.199  #
   5.200 @@ -340,12 +358,12 @@ CONFIG_IP_NF_FTP=m
   5.201  CONFIG_BRIDGE=y
   5.202  # CONFIG_VLAN_8021Q is not set
   5.203  # CONFIG_DECNET is not set
   5.204 +CONFIG_LLC=y
   5.205  # CONFIG_LLC2 is not set
   5.206  # CONFIG_IPX is not set
   5.207  # CONFIG_ATALK is not set
   5.208  # CONFIG_X25 is not set
   5.209  # CONFIG_LAPB is not set
   5.210 -# CONFIG_NET_DIVERT is not set
   5.211  # CONFIG_ECONET is not set
   5.212  # CONFIG_WAN_ROUTER is not set
   5.213  
   5.214 @@ -374,6 +392,7 @@ CONFIG_BRIDGE=y
   5.215  CONFIG_PREVENT_FIRMWARE_BUILD=y
   5.216  # CONFIG_FW_LOADER is not set
   5.217  # CONFIG_DEBUG_DRIVER is not set
   5.218 +# CONFIG_SYS_HYPERVISOR is not set
   5.219  
   5.220  #
   5.221  # Connector - unified userspace <-> kernelspace linker
   5.222 @@ -419,6 +438,7 @@ CONFIG_BLK_DEV_LOOP=y
   5.223  CONFIG_BLK_DEV_RAM=y
   5.224  CONFIG_BLK_DEV_RAM_COUNT=16
   5.225  CONFIG_BLK_DEV_RAM_SIZE=4096
   5.226 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
   5.227  CONFIG_BLK_DEV_INITRD=y
   5.228  # CONFIG_CDROM_PKTCDVD is not set
   5.229  # CONFIG_ATA_OVER_ETH is not set
   5.230 @@ -543,17 +563,19 @@ CONFIG_AIC79XX_DEBUG_ENABLE=y
   5.231  CONFIG_AIC79XX_DEBUG_MASK=0
   5.232  CONFIG_AIC79XX_REG_PRETTY_PRINT=y
   5.233  # CONFIG_SCSI_DPT_I2O is not set
   5.234 +CONFIG_SCSI_ADVANSYS=y
   5.235  CONFIG_MEGARAID_NEWGEN=y
   5.236  # CONFIG_MEGARAID_MM is not set
   5.237  # CONFIG_MEGARAID_LEGACY is not set
   5.238  # CONFIG_MEGARAID_SAS is not set
   5.239  CONFIG_SCSI_SATA=y
   5.240 -# CONFIG_SCSI_SATA_AHCI is not set
   5.241 +CONFIG_SCSI_SATA_AHCI=y
   5.242  # CONFIG_SCSI_SATA_SVW is not set
   5.243  CONFIG_SCSI_ATA_PIIX=y
   5.244  # CONFIG_SCSI_SATA_MV is not set
   5.245  # CONFIG_SCSI_SATA_NV is not set
   5.246  # CONFIG_SCSI_PDC_ADMA is not set
   5.247 +# CONFIG_SCSI_HPTIOP is not set
   5.248  # CONFIG_SCSI_SATA_QSTOR is not set
   5.249  CONFIG_SCSI_SATA_PROMISE=y
   5.250  CONFIG_SCSI_SATA_SX4=y
   5.251 @@ -574,7 +596,6 @@ CONFIG_SCSI_SATA_INTEL_COMBINED=y
   5.252  # CONFIG_SCSI_INIA100 is not set
   5.253  # CONFIG_SCSI_SYM53C8XX_2 is not set
   5.254  # CONFIG_SCSI_IPR is not set
   5.255 -# CONFIG_SCSI_QLOGIC_FC is not set
   5.256  # CONFIG_SCSI_QLOGIC_1280 is not set
   5.257  # CONFIG_SCSI_QLA_FC is not set
   5.258  # CONFIG_SCSI_LPFC is not set
   5.259 @@ -592,8 +613,7 @@ CONFIG_BLK_DEV_MD=y
   5.260  CONFIG_MD_RAID0=y
   5.261  CONFIG_MD_RAID1=y
   5.262  # CONFIG_MD_RAID10 is not set
   5.263 -CONFIG_MD_RAID5=y
   5.264 -# CONFIG_MD_RAID6 is not set
   5.265 +# CONFIG_MD_RAID456 is not set
   5.266  # CONFIG_MD_MULTIPATH is not set
   5.267  # CONFIG_MD_FAULTY is not set
   5.268  CONFIG_BLK_DEV_DM=y
   5.269 @@ -693,6 +713,7 @@ CONFIG_8139TOO_PIO=y
   5.270  # CONFIG_TLAN is not set
   5.271  CONFIG_VIA_RHINE=y
   5.272  # CONFIG_VIA_RHINE_MMIO is not set
   5.273 +# CONFIG_VIA_RHINE_NAPI is not set
   5.274  
   5.275  #
   5.276  # Ethernet (1000 Mbit)
   5.277 @@ -713,7 +734,7 @@ CONFIG_E1000=y
   5.278  CONFIG_SK98LIN=y
   5.279  # CONFIG_VIA_VELOCITY is not set
   5.280  CONFIG_TIGON3=y
   5.281 -# CONFIG_BNX2 is not set
   5.282 +CONFIG_BNX2=y
   5.283  
   5.284  #
   5.285  # Ethernet (10000 Mbit)
   5.286 @@ -721,6 +742,7 @@ CONFIG_TIGON3=y
   5.287  # CONFIG_CHELSIO_T1 is not set
   5.288  # CONFIG_IXGB is not set
   5.289  # CONFIG_S2IO is not set
   5.290 +# CONFIG_MYRI10GE is not set
   5.291  
   5.292  #
   5.293  # Token Ring devices
   5.294 @@ -808,6 +830,7 @@ CONFIG_SERIO_LIBPS2=y
   5.295  CONFIG_VT=y
   5.296  CONFIG_VT_CONSOLE=y
   5.297  CONFIG_HW_CONSOLE=y
   5.298 +CONFIG_VT_HW_CONSOLE_BINDING=y
   5.299  # CONFIG_SERIAL_NONSTANDARD is not set
   5.300  
   5.301  #
   5.302 @@ -843,7 +866,6 @@ CONFIG_LEGACY_PTY_COUNT=256
   5.303  #
   5.304  # Ftape, the floppy tape device driver
   5.305  #
   5.306 -# CONFIG_FTAPE is not set
   5.307  CONFIG_AGP=m
   5.308  CONFIG_AGP_ALI=m
   5.309  CONFIG_AGP_ATI=m
   5.310 @@ -867,6 +889,8 @@ CONFIG_DRM_SIS=m
   5.311  # CONFIG_DRM_VIA is not set
   5.312  # CONFIG_DRM_SAVAGE is not set
   5.313  # CONFIG_MWAVE is not set
   5.314 +# CONFIG_PC8736x_GPIO is not set
   5.315 +# CONFIG_NSC_GPIO is not set
   5.316  # CONFIG_CS5535_GPIO is not set
   5.317  # CONFIG_RAW_DRIVER is not set
   5.318  # CONFIG_HPET is not set
   5.319 @@ -892,7 +916,6 @@ CONFIG_DRM_SIS=m
   5.320  #
   5.321  # Dallas's 1-wire bus
   5.322  #
   5.323 -# CONFIG_W1 is not set
   5.324  
   5.325  #
   5.326  # Hardware Monitoring support
   5.327 @@ -906,30 +929,30 @@ CONFIG_DRM_SIS=m
   5.328  # CONFIG_IBM_ASM is not set
   5.329  
   5.330  #
   5.331 -# Multimedia Capabilities Port drivers
   5.332 -#
   5.333 -
   5.334 -#
   5.335  # Multimedia devices
   5.336  #
   5.337  # CONFIG_VIDEO_DEV is not set
   5.338 +CONFIG_VIDEO_V4L2=y
   5.339  
   5.340  #
   5.341  # Digital Video Broadcasting Devices
   5.342  #
   5.343  # CONFIG_DVB is not set
   5.344 +# CONFIG_USB_DABUSB is not set
   5.345  
   5.346  #
   5.347  # Graphics support
   5.348  #
   5.349 +CONFIG_FIRMWARE_EDID=y
   5.350  # CONFIG_FB is not set
   5.351 -# CONFIG_VIDEO_SELECT is not set
   5.352  
   5.353  #
   5.354  # Console display driver support
   5.355  #
   5.356  CONFIG_VGA_CONSOLE=y
   5.357 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
   5.358  CONFIG_DUMMY_CONSOLE=y
   5.359 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
   5.360  
   5.361  #
   5.362  # Sound
   5.363 @@ -941,6 +964,7 @@ CONFIG_DUMMY_CONSOLE=y
   5.364  #
   5.365  CONFIG_USB_ARCH_HAS_HCD=y
   5.366  CONFIG_USB_ARCH_HAS_OHCI=y
   5.367 +CONFIG_USB_ARCH_HAS_EHCI=y
   5.368  CONFIG_USB=y
   5.369  # CONFIG_USB_DEBUG is not set
   5.370  
   5.371 @@ -993,9 +1017,7 @@ CONFIG_USB_HIDINPUT=y
   5.372  # CONFIG_USB_ACECAD is not set
   5.373  # CONFIG_USB_KBTAB is not set
   5.374  # CONFIG_USB_POWERMATE is not set
   5.375 -# CONFIG_USB_MTOUCH is not set
   5.376 -# CONFIG_USB_ITMTOUCH is not set
   5.377 -# CONFIG_USB_EGALAX is not set
   5.378 +# CONFIG_USB_TOUCHSCREEN is not set
   5.379  # CONFIG_USB_YEALINK is not set
   5.380  # CONFIG_USB_XPAD is not set
   5.381  # CONFIG_USB_ATI_REMOTE is not set
   5.382 @@ -1010,15 +1032,6 @@ CONFIG_USB_HIDINPUT=y
   5.383  # CONFIG_USB_MICROTEK is not set
   5.384  
   5.385  #
   5.386 -# USB Multimedia devices
   5.387 -#
   5.388 -# CONFIG_USB_DABUSB is not set
   5.389 -
   5.390 -#
   5.391 -# Video4Linux support is needed for USB Multimedia device support
   5.392 -#
   5.393 -
   5.394 -#
   5.395  # USB Network Adapters
   5.396  #
   5.397  # CONFIG_USB_CATC is not set
   5.398 @@ -1047,10 +1060,12 @@ CONFIG_USB_MON=y
   5.399  # CONFIG_USB_LEGOTOWER is not set
   5.400  # CONFIG_USB_LCD is not set
   5.401  # CONFIG_USB_LED is not set
   5.402 +# CONFIG_USB_CYPRESS_CY7C63 is not set
   5.403  # CONFIG_USB_CYTHERM is not set
   5.404  # CONFIG_USB_PHIDGETKIT is not set
   5.405  # CONFIG_USB_PHIDGETSERVO is not set
   5.406  # CONFIG_USB_IDMOUSE is not set
   5.407 +# CONFIG_USB_APPLEDISPLAY is not set
   5.408  # CONFIG_USB_LD is not set
   5.409  
   5.410  #
   5.411 @@ -1068,6 +1083,19 @@ CONFIG_USB_MON=y
   5.412  # CONFIG_MMC is not set
   5.413  
   5.414  #
   5.415 +# LED devices
   5.416 +#
   5.417 +# CONFIG_NEW_LEDS is not set
   5.418 +
   5.419 +#
   5.420 +# LED drivers
   5.421 +#
   5.422 +
   5.423 +#
   5.424 +# LED Triggers
   5.425 +#
   5.426 +
   5.427 +#
   5.428  # InfiniBand support
   5.429  #
   5.430  # CONFIG_INFINIBAND is not set
   5.431 @@ -1078,6 +1106,42 @@ CONFIG_USB_MON=y
   5.432  # CONFIG_EDAC is not set
   5.433  
   5.434  #
   5.435 +# Real Time Clock
   5.436 +#
   5.437 +CONFIG_RTC_LIB=m
   5.438 +CONFIG_RTC_CLASS=m
   5.439 +
   5.440 +#
   5.441 +# RTC interfaces
   5.442 +#
   5.443 +CONFIG_RTC_INTF_SYSFS=m
   5.444 +CONFIG_RTC_INTF_PROC=m
   5.445 +CONFIG_RTC_INTF_DEV=m
   5.446 +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
   5.447 +
   5.448 +#
   5.449 +# RTC drivers
   5.450 +#
   5.451 +# CONFIG_RTC_DRV_DS1553 is not set
   5.452 +# CONFIG_RTC_DRV_DS1742 is not set
   5.453 +CONFIG_RTC_DRV_M48T86=m
   5.454 +CONFIG_RTC_DRV_TEST=m
   5.455 +# CONFIG_RTC_DRV_V3020 is not set
   5.456 +
   5.457 +#
   5.458 +# DMA Engine support
   5.459 +#
   5.460 +# CONFIG_DMA_ENGINE is not set
   5.461 +
   5.462 +#
   5.463 +# DMA Clients
   5.464 +#
   5.465 +
   5.466 +#
   5.467 +# DMA Devices
   5.468 +#
   5.469 +
   5.470 +#
   5.471  # File systems
   5.472  #
   5.473  CONFIG_EXT2_FS=y
   5.474 @@ -1101,6 +1165,7 @@ CONFIG_REISERFS_FS=y
   5.475  # CONFIG_MINIX_FS is not set
   5.476  # CONFIG_ROMFS_FS is not set
   5.477  CONFIG_INOTIFY=y
   5.478 +CONFIG_INOTIFY_USER=y
   5.479  # CONFIG_QUOTA is not set
   5.480  CONFIG_DNOTIFY=y
   5.481  CONFIG_AUTOFS_FS=y
   5.482 @@ -1135,7 +1200,6 @@ CONFIG_SYSFS=y
   5.483  CONFIG_TMPFS=y
   5.484  # CONFIG_HUGETLB_PAGE is not set
   5.485  CONFIG_RAMFS=y
   5.486 -# CONFIG_RELAYFS_FS is not set
   5.487  # CONFIG_CONFIGFS_FS is not set
   5.488  
   5.489  #
   5.490 @@ -1242,23 +1306,32 @@ CONFIG_NLS_ISO8859_1=y
   5.491  #
   5.492  # Kernel hacking
   5.493  #
   5.494 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
   5.495  # CONFIG_PRINTK_TIME is not set
   5.496  CONFIG_MAGIC_SYSRQ=y
   5.497 +CONFIG_UNUSED_SYMBOLS=y
   5.498  CONFIG_DEBUG_KERNEL=y
   5.499  CONFIG_LOG_BUF_SHIFT=14
   5.500  CONFIG_DETECT_SOFTLOCKUP=y
   5.501  # CONFIG_SCHEDSTATS is not set
   5.502  # CONFIG_DEBUG_SLAB is not set
   5.503 -# CONFIG_DEBUG_MUTEXES is not set
   5.504 +# CONFIG_DEBUG_RT_MUTEXES is not set
   5.505 +# CONFIG_RT_MUTEX_TESTER is not set
   5.506  # CONFIG_DEBUG_SPINLOCK is not set
   5.507 +# CONFIG_DEBUG_MUTEXES is not set
   5.508 +# CONFIG_DEBUG_RWSEMS is not set
   5.509 +# CONFIG_DEBUG_LOCK_ALLOC is not set
   5.510 +# CONFIG_PROVE_LOCKING is not set
   5.511  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
   5.512 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
   5.513  # CONFIG_DEBUG_KOBJECT is not set
   5.514  # CONFIG_DEBUG_HIGHMEM is not set
   5.515  CONFIG_DEBUG_BUGVERBOSE=y
   5.516 -# CONFIG_DEBUG_INFO is not set
   5.517 +CONFIG_DEBUG_INFO=y
   5.518  # CONFIG_DEBUG_FS is not set
   5.519  # CONFIG_DEBUG_VM is not set
   5.520  CONFIG_FRAME_POINTER=y
   5.521 +# CONFIG_UNWIND_INFO is not set
   5.522  CONFIG_FORCED_INLINING=y
   5.523  # CONFIG_RCU_TORTURE_TEST is not set
   5.524  CONFIG_EARLY_PRINTK=y
   5.525 @@ -1311,24 +1384,26 @@ CONFIG_CRYPTO_CRC32C=m
   5.526  #
   5.527  # CONFIG_CRYPTO_DEV_PADLOCK is not set
   5.528  CONFIG_XEN=y
   5.529 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
   5.530 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
   5.531  
   5.532  #
   5.533  # XEN
   5.534  #
   5.535  CONFIG_XEN_PRIVILEGED_GUEST=y
   5.536  # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
   5.537 +CONFIG_XEN_PRIVCMD=y
   5.538 +CONFIG_XEN_XENBUS_DEV=y
   5.539  CONFIG_XEN_BACKEND=y
   5.540 +CONFIG_XEN_BLKDEV_BACKEND=y
   5.541 +CONFIG_XEN_BLKDEV_TAP=y
   5.542 +CONFIG_XEN_NETDEV_BACKEND=y
   5.543 +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
   5.544 +CONFIG_XEN_NETDEV_LOOPBACK=y
   5.545  CONFIG_XEN_PCIDEV_BACKEND=y
   5.546  # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
   5.547  CONFIG_XEN_PCIDEV_BACKEND_PASS=y
   5.548  # CONFIG_XEN_PCIDEV_BACKEND_SLOT is not set
   5.549  # CONFIG_XEN_PCIDEV_BE_DEBUG is not set
   5.550 -CONFIG_XEN_BLKDEV_BACKEND=y
   5.551 -CONFIG_XEN_BLKDEV_TAP=y
   5.552 -CONFIG_XEN_NETDEV_BACKEND=y
   5.553 -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
   5.554 -CONFIG_XEN_NETDEV_LOOPBACK=y
   5.555  # CONFIG_XEN_TPMDEV_BACKEND is not set
   5.556  CONFIG_XEN_BLKDEV_FRONTEND=y
   5.557  CONFIG_XEN_NETDEV_FRONTEND=y
   5.558 @@ -1338,9 +1413,13 @@ CONFIG_XEN_SYSFS=y
   5.559  CONFIG_XEN_COMPAT_030002_AND_LATER=y
   5.560  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
   5.561  CONFIG_XEN_COMPAT_030002=y
   5.562 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
   5.563 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   5.564 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
   5.565  CONFIG_NO_IDLE_HZ=y
   5.566 +CONFIG_XEN_UTIL=y
   5.567 +CONFIG_XEN_BALLOON=y
   5.568 +CONFIG_XEN_DEVMEM=y
   5.569 +CONFIG_XEN_REBOOT=y
   5.570 +CONFIG_XEN_SMPBOOT=y
   5.571  
   5.572  #
   5.573  # Library routines
   5.574 @@ -1350,9 +1429,13 @@ CONFIG_NO_IDLE_HZ=y
   5.575  CONFIG_CRC32=y
   5.576  CONFIG_LIBCRC32C=y
   5.577  CONFIG_ZLIB_INFLATE=y
   5.578 +CONFIG_PLIST=y
   5.579  CONFIG_GENERIC_HARDIRQS=y
   5.580  CONFIG_GENERIC_IRQ_PROBE=y
   5.581 +CONFIG_GENERIC_PENDING_IRQ=y
   5.582 +CONFIG_X86_SMP=y
   5.583  CONFIG_X86_BIOS_REBOOT=y
   5.584 +CONFIG_X86_TRAMPOLINE=y
   5.585  CONFIG_X86_NO_TSS=y
   5.586  CONFIG_X86_NO_IDT=y
   5.587  CONFIG_KTIME_SCALAR=y
     6.1 --- a/buildconfigs/linux-defconfig_xen0_x86_64	Fri Jan 26 14:19:37 2007 -0700
     6.2 +++ b/buildconfigs/linux-defconfig_xen0_x86_64	Sat Jan 27 14:07:19 2007 -0700
     6.3 @@ -1,14 +1,17 @@
     6.4  #
     6.5  # Automatically generated make config: don't edit
     6.6 -# Linux kernel version: 2.6.16.13-xen0
     6.7 -# Thu May 11 17:17:19 2006
     6.8 +# Linux kernel version: 2.6.18-xen0
     6.9 +# Wed Jan 17 18:26:35 2007
    6.10  #
    6.11  CONFIG_X86_64=y
    6.12  CONFIG_64BIT=y
    6.13  CONFIG_X86=y
    6.14 +CONFIG_LOCKDEP_SUPPORT=y
    6.15 +CONFIG_STACKTRACE_SUPPORT=y
    6.16  CONFIG_SEMAPHORE_SLEEPERS=y
    6.17  CONFIG_MMU=y
    6.18  CONFIG_RWSEM_GENERIC_SPINLOCK=y
    6.19 +CONFIG_GENERIC_HWEIGHT=y
    6.20  CONFIG_GENERIC_CALIBRATE_DELAY=y
    6.21  CONFIG_X86_CMPXCHG=y
    6.22  CONFIG_EARLY_PRINTK=y
    6.23 @@ -16,6 +19,8 @@ CONFIG_GENERIC_ISA_DMA=y
    6.24  CONFIG_GENERIC_IOMAP=y
    6.25  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
    6.26  CONFIG_DMI=y
    6.27 +CONFIG_AUDIT_ARCH=y
    6.28 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    6.29  
    6.30  #
    6.31  # Code maturity level options
    6.32 @@ -33,14 +38,15 @@ CONFIG_SWAP=y
    6.33  CONFIG_SYSVIPC=y
    6.34  # CONFIG_POSIX_MQUEUE is not set
    6.35  # CONFIG_BSD_PROCESS_ACCT is not set
    6.36 -CONFIG_SYSCTL=y
    6.37 +# CONFIG_TASKSTATS is not set
    6.38  # CONFIG_AUDIT is not set
    6.39  # CONFIG_IKCONFIG is not set
    6.40 +# CONFIG_RELAY is not set
    6.41  CONFIG_INITRAMFS_SOURCE=""
    6.42 -CONFIG_UID16=y
    6.43 -CONFIG_VM86=y
    6.44  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
    6.45  # CONFIG_EMBEDDED is not set
    6.46 +CONFIG_UID16=y
    6.47 +CONFIG_SYSCTL=y
    6.48  CONFIG_KALLSYMS=y
    6.49  # CONFIG_KALLSYMS_ALL is not set
    6.50  # CONFIG_KALLSYMS_EXTRA_PASS is not set
    6.51 @@ -52,11 +58,9 @@ CONFIG_BASE_FULL=y
    6.52  CONFIG_FUTEX=y
    6.53  CONFIG_EPOLL=y
    6.54  CONFIG_SHMEM=y
    6.55 -CONFIG_CC_ALIGN_FUNCTIONS=0
    6.56 -CONFIG_CC_ALIGN_LABELS=0
    6.57 -CONFIG_CC_ALIGN_LOOPS=0
    6.58 -CONFIG_CC_ALIGN_JUMPS=0
    6.59  CONFIG_SLAB=y
    6.60 +CONFIG_VM_EVENT_COUNTERS=y
    6.61 +CONFIG_RT_MUTEXES=y
    6.62  # CONFIG_TINY_SHMEM is not set
    6.63  CONFIG_BASE_SMALL=0
    6.64  # CONFIG_SLOB is not set
    6.65 @@ -67,7 +71,6 @@ CONFIG_BASE_SMALL=0
    6.66  CONFIG_MODULES=y
    6.67  CONFIG_MODULE_UNLOAD=y
    6.68  # CONFIG_MODULE_FORCE_UNLOAD is not set
    6.69 -CONFIG_OBSOLETE_MODPARM=y
    6.70  # CONFIG_MODVERSIONS is not set
    6.71  # CONFIG_MODULE_SRCVERSION_ALL is not set
    6.72  CONFIG_KMOD=y
    6.73 @@ -76,6 +79,8 @@ CONFIG_KMOD=y
    6.74  # Block layer
    6.75  #
    6.76  # CONFIG_LBD is not set
    6.77 +# CONFIG_BLK_DEV_IO_TRACE is not set
    6.78 +CONFIG_LSF=y
    6.79  
    6.80  #
    6.81  # IO Schedulers
    6.82 @@ -103,6 +108,7 @@ CONFIG_X86_NO_TSS=y
    6.83  CONFIG_X86_NO_IDT=y
    6.84  CONFIG_X86_L1_CACHE_BYTES=128
    6.85  CONFIG_X86_L1_CACHE_SHIFT=7
    6.86 +CONFIG_X86_INTERNODE_CACHE_BYTES=128
    6.87  CONFIG_X86_GOOD_APIC=y
    6.88  CONFIG_MICROCODE=y
    6.89  # CONFIG_X86_MSR is not set
    6.90 @@ -115,7 +121,6 @@ CONFIG_MTRR=y
    6.91  CONFIG_PREEMPT_NONE=y
    6.92  # CONFIG_PREEMPT_VOLUNTARY is not set
    6.93  # CONFIG_PREEMPT is not set
    6.94 -CONFIG_ARCH_SPARSEMEM_ENABLE=y
    6.95  CONFIG_ARCH_FLATMEM_ENABLE=y
    6.96  CONFIG_SELECT_MEMORY_MODEL=y
    6.97  CONFIG_FLATMEM_MANUAL=y
    6.98 @@ -125,15 +130,20 @@ CONFIG_FLATMEM=y
    6.99  CONFIG_FLAT_NODE_MEM_MAP=y
   6.100  # CONFIG_SPARSEMEM_STATIC is not set
   6.101  CONFIG_SPLIT_PTLOCK_CPUS=4096
   6.102 +CONFIG_RESOURCES_64BIT=y
   6.103 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
   6.104 +# CONFIG_CALGARY_IOMMU is not set
   6.105  CONFIG_SWIOTLB=y
   6.106  CONFIG_KEXEC=y
   6.107  # CONFIG_CRASH_DUMP is not set
   6.108 -CONFIG_PHYSICAL_START=0x100000
   6.109 +CONFIG_PHYSICAL_START=0x200000
   6.110  CONFIG_SECCOMP=y
   6.111  CONFIG_HZ_100=y
   6.112  # CONFIG_HZ_250 is not set
   6.113  # CONFIG_HZ_1000 is not set
   6.114  CONFIG_HZ=100
   6.115 +# CONFIG_REORDER is not set
   6.116 +CONFIG_K8_NB=y
   6.117  CONFIG_GENERIC_HARDIRQS=y
   6.118  CONFIG_GENERIC_IRQ_PROBE=y
   6.119  CONFIG_ISA_DMA_API=y
   6.120 @@ -153,6 +163,7 @@ CONFIG_ACPI_BUTTON=m
   6.121  CONFIG_ACPI_VIDEO=m
   6.122  # CONFIG_ACPI_HOTKEY is not set
   6.123  CONFIG_ACPI_FAN=m
   6.124 +CONFIG_ACPI_DOCK=m
   6.125  CONFIG_ACPI_PROCESSOR=m
   6.126  CONFIG_ACPI_THERMAL=m
   6.127  CONFIG_ACPI_ASUS=m
   6.128 @@ -178,9 +189,7 @@ CONFIG_PCI_DIRECT=y
   6.129  # CONFIG_PCI_MMCONFIG is not set
   6.130  CONFIG_XEN_PCIDEV_FRONTEND=y
   6.131  # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
   6.132 -# CONFIG_UNORDERED_IO is not set
   6.133  # CONFIG_PCIEPORTBUS is not set
   6.134 -CONFIG_PCI_LEGACY_PROC=y
   6.135  # CONFIG_PCI_DEBUG is not set
   6.136  
   6.137  #
   6.138 @@ -231,7 +240,10 @@ CONFIG_IP_PNP_DHCP=y
   6.139  # CONFIG_INET_AH is not set
   6.140  # CONFIG_INET_ESP is not set
   6.141  # CONFIG_INET_IPCOMP is not set
   6.142 +# CONFIG_INET_XFRM_TUNNEL is not set
   6.143  # CONFIG_INET_TUNNEL is not set
   6.144 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
   6.145 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
   6.146  # CONFIG_INET_DIAG is not set
   6.147  # CONFIG_TCP_CONG_ADVANCED is not set
   6.148  CONFIG_TCP_CONG_BIC=y
   6.149 @@ -241,6 +253,9 @@ CONFIG_TCP_CONG_BIC=y
   6.150  #
   6.151  # CONFIG_IP_VS is not set
   6.152  # CONFIG_IPV6 is not set
   6.153 +# CONFIG_INET6_XFRM_TUNNEL is not set
   6.154 +# CONFIG_INET6_TUNNEL is not set
   6.155 +# CONFIG_NETWORK_SECMARK is not set
   6.156  CONFIG_NETFILTER=y
   6.157  # CONFIG_NETFILTER_DEBUG is not set
   6.158  CONFIG_BRIDGE_NETFILTER=y
   6.159 @@ -265,6 +280,8 @@ CONFIG_IP_NF_FTP=m
   6.160  # CONFIG_IP_NF_TFTP is not set
   6.161  # CONFIG_IP_NF_AMANDA is not set
   6.162  # CONFIG_IP_NF_PPTP is not set
   6.163 +# CONFIG_IP_NF_H323 is not set
   6.164 +# CONFIG_IP_NF_SIP is not set
   6.165  # CONFIG_IP_NF_QUEUE is not set
   6.166  
   6.167  #
   6.168 @@ -290,12 +307,12 @@ CONFIG_IP_NF_FTP=m
   6.169  CONFIG_BRIDGE=y
   6.170  # CONFIG_VLAN_8021Q is not set
   6.171  # CONFIG_DECNET is not set
   6.172 +CONFIG_LLC=y
   6.173  # CONFIG_LLC2 is not set
   6.174  # CONFIG_IPX is not set
   6.175  # CONFIG_ATALK is not set
   6.176  # CONFIG_X25 is not set
   6.177  # CONFIG_LAPB is not set
   6.178 -# CONFIG_NET_DIVERT is not set
   6.179  # CONFIG_ECONET is not set
   6.180  # CONFIG_WAN_ROUTER is not set
   6.181  
   6.182 @@ -324,6 +341,7 @@ CONFIG_STANDALONE=y
   6.183  # CONFIG_PREVENT_FIRMWARE_BUILD is not set
   6.184  # CONFIG_FW_LOADER is not set
   6.185  # CONFIG_DEBUG_DRIVER is not set
   6.186 +# CONFIG_SYS_HYPERVISOR is not set
   6.187  
   6.188  #
   6.189  # Connector - unified userspace <-> kernelspace linker
   6.190 @@ -369,6 +387,7 @@ CONFIG_BLK_DEV_LOOP=y
   6.191  CONFIG_BLK_DEV_RAM=y
   6.192  CONFIG_BLK_DEV_RAM_COUNT=16
   6.193  CONFIG_BLK_DEV_RAM_SIZE=16384
   6.194 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
   6.195  CONFIG_BLK_DEV_INITRD=y
   6.196  # CONFIG_CDROM_PKTCDVD is not set
   6.197  # CONFIG_ATA_OVER_ETH is not set
   6.198 @@ -466,7 +485,7 @@ CONFIG_BLK_DEV_SD=y
   6.199  #
   6.200  CONFIG_SCSI_SPI_ATTRS=y
   6.201  # CONFIG_SCSI_FC_ATTRS is not set
   6.202 -# CONFIG_SCSI_ISCSI_ATTRS is not set
   6.203 +CONFIG_SCSI_ISCSI_ATTRS=y
   6.204  # CONFIG_SCSI_SAS_ATTRS is not set
   6.205  
   6.206  #
   6.207 @@ -498,12 +517,13 @@ CONFIG_MEGARAID_NEWGEN=y
   6.208  # CONFIG_MEGARAID_LEGACY is not set
   6.209  # CONFIG_MEGARAID_SAS is not set
   6.210  CONFIG_SCSI_SATA=y
   6.211 -# CONFIG_SCSI_SATA_AHCI is not set
   6.212 +CONFIG_SCSI_SATA_AHCI=y
   6.213  # CONFIG_SCSI_SATA_SVW is not set
   6.214  CONFIG_SCSI_ATA_PIIX=y
   6.215  # CONFIG_SCSI_SATA_MV is not set
   6.216  # CONFIG_SCSI_SATA_NV is not set
   6.217  # CONFIG_SCSI_PDC_ADMA is not set
   6.218 +# CONFIG_SCSI_HPTIOP is not set
   6.219  # CONFIG_SCSI_SATA_QSTOR is not set
   6.220  CONFIG_SCSI_SATA_PROMISE=y
   6.221  CONFIG_SCSI_SATA_SX4=y
   6.222 @@ -525,7 +545,6 @@ CONFIG_SCSI_BUSLOGIC=y
   6.223  # CONFIG_SCSI_INIA100 is not set
   6.224  # CONFIG_SCSI_SYM53C8XX_2 is not set
   6.225  # CONFIG_SCSI_IPR is not set
   6.226 -# CONFIG_SCSI_QLOGIC_FC is not set
   6.227  # CONFIG_SCSI_QLOGIC_1280 is not set
   6.228  # CONFIG_SCSI_QLA_FC is not set
   6.229  # CONFIG_SCSI_LPFC is not set
   6.230 @@ -542,8 +561,8 @@ CONFIG_MD_LINEAR=y
   6.231  CONFIG_MD_RAID0=y
   6.232  CONFIG_MD_RAID1=y
   6.233  # CONFIG_MD_RAID10 is not set
   6.234 -# CONFIG_MD_RAID5 is not set
   6.235 -# CONFIG_MD_RAID6 is not set
   6.236 +CONFIG_MD_RAID456=y
   6.237 +# CONFIG_MD_RAID5_RESHAPE is not set
   6.238  CONFIG_MD_MULTIPATH=y
   6.239  # CONFIG_MD_FAULTY is not set
   6.240  CONFIG_BLK_DEV_DM=y
   6.241 @@ -643,6 +662,7 @@ CONFIG_8139TOO_PIO=y
   6.242  # CONFIG_SUNDANCE is not set
   6.243  CONFIG_VIA_RHINE=y
   6.244  # CONFIG_VIA_RHINE_MMIO is not set
   6.245 +# CONFIG_VIA_RHINE_NAPI is not set
   6.246  
   6.247  #
   6.248  # Ethernet (1000 Mbit)
   6.249 @@ -663,7 +683,7 @@ CONFIG_E1000=y
   6.250  CONFIG_SK98LIN=y
   6.251  # CONFIG_VIA_VELOCITY is not set
   6.252  CONFIG_TIGON3=y
   6.253 -# CONFIG_BNX2 is not set
   6.254 +CONFIG_BNX2=y
   6.255  
   6.256  #
   6.257  # Ethernet (10000 Mbit)
   6.258 @@ -671,6 +691,7 @@ CONFIG_TIGON3=y
   6.259  # CONFIG_CHELSIO_T1 is not set
   6.260  # CONFIG_IXGB is not set
   6.261  # CONFIG_S2IO is not set
   6.262 +# CONFIG_MYRI10GE is not set
   6.263  
   6.264  #
   6.265  # Token Ring devices
   6.266 @@ -758,6 +779,7 @@ CONFIG_SERIO_LIBPS2=y
   6.267  CONFIG_VT=y
   6.268  CONFIG_VT_CONSOLE=y
   6.269  CONFIG_HW_CONSOLE=y
   6.270 +# CONFIG_VT_HW_CONSOLE_BINDING is not set
   6.271  # CONFIG_SERIAL_NONSTANDARD is not set
   6.272  
   6.273  #
   6.274 @@ -795,6 +817,8 @@ CONFIG_RTC=y
   6.275  CONFIG_AGP=m
   6.276  CONFIG_AGP_AMD64=m
   6.277  # CONFIG_AGP_INTEL is not set
   6.278 +CONFIG_AGP_SIS=m
   6.279 +CONFIG_AGP_VIA=m
   6.280  CONFIG_DRM=m
   6.281  CONFIG_DRM_TDFX=m
   6.282  CONFIG_DRM_R128=m
   6.283 @@ -804,6 +828,7 @@ CONFIG_DRM_SIS=m
   6.284  # CONFIG_DRM_VIA is not set
   6.285  # CONFIG_DRM_SAVAGE is not set
   6.286  # CONFIG_MWAVE is not set
   6.287 +# CONFIG_PC8736x_GPIO is not set
   6.288  # CONFIG_RAW_DRIVER is not set
   6.289  # CONFIG_HPET is not set
   6.290  # CONFIG_HANGCHECK_TIMER is not set
   6.291 @@ -828,7 +853,6 @@ CONFIG_DRM_SIS=m
   6.292  #
   6.293  # Dallas's 1-wire bus
   6.294  #
   6.295 -# CONFIG_W1 is not set
   6.296  
   6.297  #
   6.298  # Hardware Monitoring support
   6.299 @@ -842,30 +866,30 @@ CONFIG_DRM_SIS=m
   6.300  # CONFIG_IBM_ASM is not set
   6.301  
   6.302  #
   6.303 -# Multimedia Capabilities Port drivers
   6.304 -#
   6.305 -
   6.306 -#
   6.307  # Multimedia devices
   6.308  #
   6.309  # CONFIG_VIDEO_DEV is not set
   6.310 +CONFIG_VIDEO_V4L2=y
   6.311  
   6.312  #
   6.313  # Digital Video Broadcasting Devices
   6.314  #
   6.315  # CONFIG_DVB is not set
   6.316 +# CONFIG_USB_DABUSB is not set
   6.317  
   6.318  #
   6.319  # Graphics support
   6.320  #
   6.321 +CONFIG_FIRMWARE_EDID=y
   6.322  # CONFIG_FB is not set
   6.323 -# CONFIG_VIDEO_SELECT is not set
   6.324  
   6.325  #
   6.326  # Console display driver support
   6.327  #
   6.328  CONFIG_VGA_CONSOLE=y
   6.329 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
   6.330  CONFIG_DUMMY_CONSOLE=y
   6.331 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
   6.332  
   6.333  #
   6.334  # Sound
   6.335 @@ -877,6 +901,7 @@ CONFIG_DUMMY_CONSOLE=y
   6.336  #
   6.337  CONFIG_USB_ARCH_HAS_HCD=y
   6.338  CONFIG_USB_ARCH_HAS_OHCI=y
   6.339 +CONFIG_USB_ARCH_HAS_EHCI=y
   6.340  CONFIG_USB=y
   6.341  # CONFIG_USB_DEBUG is not set
   6.342  
   6.343 @@ -929,9 +954,7 @@ CONFIG_USB_HIDINPUT=y
   6.344  # CONFIG_USB_ACECAD is not set
   6.345  # CONFIG_USB_KBTAB is not set
   6.346  # CONFIG_USB_POWERMATE is not set
   6.347 -# CONFIG_USB_MTOUCH is not set
   6.348 -# CONFIG_USB_ITMTOUCH is not set
   6.349 -# CONFIG_USB_EGALAX is not set
   6.350 +# CONFIG_USB_TOUCHSCREEN is not set
   6.351  # CONFIG_USB_YEALINK is not set
   6.352  # CONFIG_USB_XPAD is not set
   6.353  # CONFIG_USB_ATI_REMOTE is not set
   6.354 @@ -946,15 +969,6 @@ CONFIG_USB_HIDINPUT=y
   6.355  # CONFIG_USB_MICROTEK is not set
   6.356  
   6.357  #
   6.358 -# USB Multimedia devices
   6.359 -#
   6.360 -# CONFIG_USB_DABUSB is not set
   6.361 -
   6.362 -#
   6.363 -# Video4Linux support is needed for USB Multimedia device support
   6.364 -#
   6.365 -
   6.366 -#
   6.367  # USB Network Adapters
   6.368  #
   6.369  # CONFIG_USB_CATC is not set
   6.370 @@ -983,10 +997,12 @@ CONFIG_USB_MON=y
   6.371  # CONFIG_USB_LEGOTOWER is not set
   6.372  # CONFIG_USB_LCD is not set
   6.373  # CONFIG_USB_LED is not set
   6.374 +# CONFIG_USB_CYPRESS_CY7C63 is not set
   6.375  # CONFIG_USB_CYTHERM is not set
   6.376  # CONFIG_USB_PHIDGETKIT is not set
   6.377  # CONFIG_USB_PHIDGETSERVO is not set
   6.378  # CONFIG_USB_IDMOUSE is not set
   6.379 +# CONFIG_USB_APPLEDISPLAY is not set
   6.380  # CONFIG_USB_LD is not set
   6.381  
   6.382  #
   6.383 @@ -1004,17 +1020,37 @@ CONFIG_USB_MON=y
   6.384  # CONFIG_MMC is not set
   6.385  
   6.386  #
   6.387 +# LED devices
   6.388 +#
   6.389 +CONFIG_NEW_LEDS=y
   6.390 +CONFIG_LEDS_CLASS=m
   6.391 +
   6.392 +#
   6.393 +# LED drivers
   6.394 +#
   6.395 +
   6.396 +#
   6.397 +# LED Triggers
   6.398 +#
   6.399 +CONFIG_LEDS_TRIGGERS=y
   6.400 +CONFIG_LEDS_TRIGGER_TIMER=y
   6.401 +CONFIG_LEDS_TRIGGER_IDE_DISK=y
   6.402 +CONFIG_LEDS_TRIGGER_HEARTBEAT=y
   6.403 +
   6.404 +#
   6.405  # InfiniBand support
   6.406  #
   6.407  CONFIG_INFINIBAND=y
   6.408  # CONFIG_INFINIBAND_USER_MAD is not set
   6.409  # CONFIG_INFINIBAND_USER_ACCESS is not set
   6.410 +CONFIG_INFINIBAND_ADDR_TRANS=y
   6.411  CONFIG_INFINIBAND_MTHCA=y
   6.412  CONFIG_INFINIBAND_MTHCA_DEBUG=y
   6.413  CONFIG_INFINIBAND_IPOIB=y
   6.414  CONFIG_INFINIBAND_IPOIB_DEBUG=y
   6.415  CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
   6.416  CONFIG_INFINIBAND_SRP=y
   6.417 +CONFIG_INFINIBAND_ISER=y
   6.418  
   6.419  #
   6.420  # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
   6.421 @@ -1022,6 +1058,42 @@ CONFIG_INFINIBAND_SRP=y
   6.422  # CONFIG_EDAC is not set
   6.423  
   6.424  #
   6.425 +# Real Time Clock
   6.426 +#
   6.427 +CONFIG_RTC_LIB=m
   6.428 +CONFIG_RTC_CLASS=m
   6.429 +
   6.430 +#
   6.431 +# RTC interfaces
   6.432 +#
   6.433 +CONFIG_RTC_INTF_SYSFS=m
   6.434 +CONFIG_RTC_INTF_PROC=m
   6.435 +CONFIG_RTC_INTF_DEV=m
   6.436 +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
   6.437 +
   6.438 +#
   6.439 +# RTC drivers
   6.440 +#
   6.441 +CONFIG_RTC_DRV_DS1553=m
   6.442 +CONFIG_RTC_DRV_DS1742=m
   6.443 +CONFIG_RTC_DRV_M48T86=m
   6.444 +CONFIG_RTC_DRV_TEST=m
   6.445 +CONFIG_RTC_DRV_V3020=m
   6.446 +
   6.447 +#
   6.448 +# DMA Engine support
   6.449 +#
   6.450 +# CONFIG_DMA_ENGINE is not set
   6.451 +
   6.452 +#
   6.453 +# DMA Clients
   6.454 +#
   6.455 +
   6.456 +#
   6.457 +# DMA Devices
   6.458 +#
   6.459 +
   6.460 +#
   6.461  # Firmware Drivers
   6.462  #
   6.463  # CONFIG_DELL_RBU is not set
   6.464 @@ -1051,6 +1123,7 @@ CONFIG_REISERFS_FS=y
   6.465  # CONFIG_MINIX_FS is not set
   6.466  # CONFIG_ROMFS_FS is not set
   6.467  CONFIG_INOTIFY=y
   6.468 +CONFIG_INOTIFY_USER=y
   6.469  # CONFIG_QUOTA is not set
   6.470  CONFIG_DNOTIFY=y
   6.471  CONFIG_AUTOFS_FS=y
   6.472 @@ -1085,7 +1158,6 @@ CONFIG_SYSFS=y
   6.473  CONFIG_TMPFS=y
   6.474  # CONFIG_HUGETLB_PAGE is not set
   6.475  CONFIG_RAMFS=y
   6.476 -# CONFIG_RELAYFS_FS is not set
   6.477  # CONFIG_CONFIGFS_FS is not set
   6.478  
   6.479  #
   6.480 @@ -1192,24 +1264,35 @@ CONFIG_NLS_ISO8859_1=y
   6.481  #
   6.482  # Kernel hacking
   6.483  #
   6.484 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
   6.485  # CONFIG_PRINTK_TIME is not set
   6.486  CONFIG_MAGIC_SYSRQ=y
   6.487 +CONFIG_UNUSED_SYMBOLS=y
   6.488  CONFIG_DEBUG_KERNEL=y
   6.489  CONFIG_LOG_BUF_SHIFT=15
   6.490  CONFIG_DETECT_SOFTLOCKUP=y
   6.491  # CONFIG_SCHEDSTATS is not set
   6.492  # CONFIG_DEBUG_SLAB is not set
   6.493 -# CONFIG_DEBUG_MUTEXES is not set
   6.494 +# CONFIG_DEBUG_RT_MUTEXES is not set
   6.495 +# CONFIG_RT_MUTEX_TESTER is not set
   6.496  # CONFIG_DEBUG_SPINLOCK is not set
   6.497 +# CONFIG_DEBUG_MUTEXES is not set
   6.498 +# CONFIG_DEBUG_RWSEMS is not set
   6.499 +# CONFIG_DEBUG_LOCK_ALLOC is not set
   6.500 +# CONFIG_PROVE_LOCKING is not set
   6.501  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
   6.502 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
   6.503  # CONFIG_DEBUG_KOBJECT is not set
   6.504  # CONFIG_DEBUG_INFO is not set
   6.505  # CONFIG_DEBUG_FS is not set
   6.506  # CONFIG_DEBUG_VM is not set
   6.507  CONFIG_FRAME_POINTER=y
   6.508 +# CONFIG_UNWIND_INFO is not set
   6.509  CONFIG_FORCED_INLINING=y
   6.510  # CONFIG_RCU_TORTURE_TEST is not set
   6.511  # CONFIG_DEBUG_RODATA is not set
   6.512 +# CONFIG_DEBUG_STACKOVERFLOW is not set
   6.513 +# CONFIG_DEBUG_STACK_USAGE is not set
   6.514  
   6.515  #
   6.516  # Security options
   6.517 @@ -1251,24 +1334,26 @@ CONFIG_CRYPTO_CRC32C=m
   6.518  # Hardware crypto devices
   6.519  #
   6.520  CONFIG_XEN=y
   6.521 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
   6.522 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
   6.523  
   6.524  #
   6.525  # XEN
   6.526  #
   6.527  CONFIG_XEN_PRIVILEGED_GUEST=y
   6.528  # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
   6.529 +CONFIG_XEN_PRIVCMD=y
   6.530 +CONFIG_XEN_XENBUS_DEV=y
   6.531  CONFIG_XEN_BACKEND=y
   6.532 +CONFIG_XEN_BLKDEV_BACKEND=y
   6.533 +CONFIG_XEN_BLKDEV_TAP=y
   6.534 +CONFIG_XEN_NETDEV_BACKEND=y
   6.535 +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
   6.536 +CONFIG_XEN_NETDEV_LOOPBACK=y
   6.537  CONFIG_XEN_PCIDEV_BACKEND=y
   6.538  # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
   6.539  CONFIG_XEN_PCIDEV_BACKEND_PASS=y
   6.540  # CONFIG_XEN_PCIDEV_BACKEND_SLOT is not set
   6.541  # CONFIG_XEN_PCIDEV_BE_DEBUG is not set
   6.542 -CONFIG_XEN_BLKDEV_BACKEND=y
   6.543 -CONFIG_XEN_BLKDEV_TAP=y
   6.544 -CONFIG_XEN_NETDEV_BACKEND=y
   6.545 -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
   6.546 -CONFIG_XEN_NETDEV_LOOPBACK=y
   6.547  # CONFIG_XEN_TPMDEV_BACKEND is not set
   6.548  CONFIG_XEN_BLKDEV_FRONTEND=y
   6.549  CONFIG_XEN_NETDEV_FRONTEND=y
   6.550 @@ -1278,9 +1363,12 @@ CONFIG_XEN_SYSFS=y
   6.551  CONFIG_XEN_COMPAT_030002_AND_LATER=y
   6.552  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
   6.553  CONFIG_XEN_COMPAT_030002=y
   6.554 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
   6.555 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   6.556 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
   6.557  CONFIG_NO_IDLE_HZ=y
   6.558 +CONFIG_XEN_UTIL=y
   6.559 +CONFIG_XEN_BALLOON=y
   6.560 +CONFIG_XEN_DEVMEM=y
   6.561 +CONFIG_XEN_REBOOT=y
   6.562  
   6.563  #
   6.564  # Library routines
   6.565 @@ -1290,3 +1378,4 @@ CONFIG_NO_IDLE_HZ=y
   6.566  CONFIG_CRC32=y
   6.567  CONFIG_LIBCRC32C=m
   6.568  CONFIG_ZLIB_INFLATE=y
   6.569 +CONFIG_PLIST=y
     7.1 --- a/buildconfigs/linux-defconfig_xenU_ia64	Fri Jan 26 14:19:37 2007 -0700
     7.2 +++ b/buildconfigs/linux-defconfig_xenU_ia64	Sat Jan 27 14:07:19 2007 -0700
     7.3 @@ -1386,10 +1386,7 @@ CONFIG_CRYPTO_DES=y
     7.4  # Hardware crypto devices
     7.5  #
     7.6  # CONFIG_XEN_UTIL is not set
     7.7 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
     7.8 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
     7.9  CONFIG_XEN_BALLOON=y
    7.10 -CONFIG_XEN_SKBUFF=y
    7.11  # CONFIG_XEN_DEVMEM is not set
    7.12  CONFIG_XEN_REBOOT=y
    7.13  # CONFIG_XEN_SMPBOOT is not set
     8.1 --- a/buildconfigs/linux-defconfig_xenU_x86_32	Fri Jan 26 14:19:37 2007 -0700
     8.2 +++ b/buildconfigs/linux-defconfig_xenU_x86_32	Sat Jan 27 14:07:19 2007 -0700
     8.3 @@ -1,16 +1,21 @@
     8.4  #
     8.5  # Automatically generated make config: don't edit
     8.6 -# Linux kernel version: 2.6.16.13-xenU
     8.7 -# Thu May 11 17:08:12 2006
     8.8 +# Linux kernel version: 2.6.18-xenU
     8.9 +# Wed Jan 17 18:36:21 2007
    8.10  #
    8.11  CONFIG_X86_32=y
    8.12 +CONFIG_GENERIC_TIME=y
    8.13 +CONFIG_LOCKDEP_SUPPORT=y
    8.14 +CONFIG_STACKTRACE_SUPPORT=y
    8.15  CONFIG_SEMAPHORE_SLEEPERS=y
    8.16  CONFIG_X86=y
    8.17  CONFIG_MMU=y
    8.18  CONFIG_GENERIC_ISA_DMA=y
    8.19  CONFIG_GENERIC_IOMAP=y
    8.20 +CONFIG_GENERIC_HWEIGHT=y
    8.21  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
    8.22  CONFIG_DMI=y
    8.23 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    8.24  
    8.25  #
    8.26  # Code maturity level options
    8.27 @@ -28,15 +33,16 @@ CONFIG_SWAP=y
    8.28  CONFIG_SYSVIPC=y
    8.29  # CONFIG_POSIX_MQUEUE is not set
    8.30  # CONFIG_BSD_PROCESS_ACCT is not set
    8.31 -CONFIG_SYSCTL=y
    8.32 +# CONFIG_TASKSTATS is not set
    8.33  # CONFIG_AUDIT is not set
    8.34  # CONFIG_IKCONFIG is not set
    8.35  # CONFIG_CPUSETS is not set
    8.36 +# CONFIG_RELAY is not set
    8.37  CONFIG_INITRAMFS_SOURCE=""
    8.38 -CONFIG_UID16=y
    8.39 -CONFIG_VM86=y
    8.40  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
    8.41  # CONFIG_EMBEDDED is not set
    8.42 +CONFIG_UID16=y
    8.43 +CONFIG_SYSCTL=y
    8.44  CONFIG_KALLSYMS=y
    8.45  # CONFIG_KALLSYMS_ALL is not set
    8.46  # CONFIG_KALLSYMS_EXTRA_PASS is not set
    8.47 @@ -48,11 +54,9 @@ CONFIG_BASE_FULL=y
    8.48  CONFIG_FUTEX=y
    8.49  CONFIG_EPOLL=y
    8.50  CONFIG_SHMEM=y
    8.51 -CONFIG_CC_ALIGN_FUNCTIONS=0
    8.52 -CONFIG_CC_ALIGN_LABELS=0
    8.53 -CONFIG_CC_ALIGN_LOOPS=0
    8.54 -CONFIG_CC_ALIGN_JUMPS=0
    8.55  CONFIG_SLAB=y
    8.56 +CONFIG_VM_EVENT_COUNTERS=y
    8.57 +CONFIG_RT_MUTEXES=y
    8.58  # CONFIG_TINY_SHMEM is not set
    8.59  CONFIG_BASE_SMALL=0
    8.60  # CONFIG_SLOB is not set
    8.61 @@ -63,7 +67,6 @@ CONFIG_BASE_SMALL=0
    8.62  CONFIG_MODULES=y
    8.63  CONFIG_MODULE_UNLOAD=y
    8.64  # CONFIG_MODULE_FORCE_UNLOAD is not set
    8.65 -CONFIG_OBSOLETE_MODPARM=y
    8.66  # CONFIG_MODVERSIONS is not set
    8.67  # CONFIG_MODULE_SRCVERSION_ALL is not set
    8.68  CONFIG_KMOD=y
    8.69 @@ -73,6 +76,8 @@ CONFIG_STOP_MACHINE=y
    8.70  # Block layer
    8.71  #
    8.72  # CONFIG_LBD is not set
    8.73 +# CONFIG_BLK_DEV_IO_TRACE is not set
    8.74 +CONFIG_LSF=y
    8.75  
    8.76  #
    8.77  # IO Schedulers
    8.78 @@ -90,6 +95,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
    8.79  #
    8.80  # Processor type and features
    8.81  #
    8.82 +CONFIG_SMP=y
    8.83  # CONFIG_X86_PC is not set
    8.84  CONFIG_X86_XEN=y
    8.85  # CONFIG_X86_ELAN is not set
    8.86 @@ -137,13 +143,12 @@ CONFIG_X86_CMPXCHG64=y
    8.87  CONFIG_X86_GOOD_APIC=y
    8.88  CONFIG_X86_USE_PPRO_CHECKSUM=y
    8.89  CONFIG_X86_TSC=y
    8.90 -CONFIG_SMP=y
    8.91 -CONFIG_SMP_ALTERNATIVES=y
    8.92  CONFIG_NR_CPUS=8
    8.93  CONFIG_PREEMPT_NONE=y
    8.94  # CONFIG_PREEMPT_VOLUNTARY is not set
    8.95  # CONFIG_PREEMPT is not set
    8.96  CONFIG_PREEMPT_BKL=y
    8.97 +CONFIG_VM86=y
    8.98  # CONFIG_TOSHIBA is not set
    8.99  # CONFIG_I8K is not set
   8.100  # CONFIG_X86_REBOOTFIXUPS is not set
   8.101 @@ -158,10 +163,6 @@ CONFIG_SWIOTLB=y
   8.102  # CONFIG_NOHIGHMEM is not set
   8.103  CONFIG_HIGHMEM4G=y
   8.104  # CONFIG_HIGHMEM64G is not set
   8.105 -CONFIG_VMSPLIT_3G=y
   8.106 -# CONFIG_VMSPLIT_3G_OPT is not set
   8.107 -# CONFIG_VMSPLIT_2G is not set
   8.108 -# CONFIG_VMSPLIT_1G is not set
   8.109  CONFIG_PAGE_OFFSET=0xC0000000
   8.110  CONFIG_HIGHMEM=y
   8.111  CONFIG_SELECT_MEMORY_MODEL=y
   8.112 @@ -172,6 +173,7 @@ CONFIG_FLATMEM=y
   8.113  CONFIG_FLAT_NODE_MEM_MAP=y
   8.114  # CONFIG_SPARSEMEM_STATIC is not set
   8.115  CONFIG_SPLIT_PTLOCK_CPUS=4096
   8.116 +CONFIG_RESOURCES_64BIT=y
   8.117  # CONFIG_HIGHPTE is not set
   8.118  # CONFIG_REGPARM is not set
   8.119  CONFIG_SECCOMP=y
   8.120 @@ -182,6 +184,7 @@ CONFIG_HZ=100
   8.121  # CONFIG_CRASH_DUMP is not set
   8.122  CONFIG_PHYSICAL_START=0x100000
   8.123  CONFIG_HOTPLUG_CPU=y
   8.124 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
   8.125  
   8.126  #
   8.127  # Bus options (PCI, PCMCIA, EISA, MCA, ISA)
   8.128 @@ -218,6 +221,8 @@ CONFIG_NET=y
   8.129  CONFIG_PACKET=y
   8.130  # CONFIG_PACKET_MMAP is not set
   8.131  CONFIG_UNIX=y
   8.132 +CONFIG_XFRM=y
   8.133 +# CONFIG_XFRM_USER is not set
   8.134  # CONFIG_NET_KEY is not set
   8.135  CONFIG_INET=y
   8.136  # CONFIG_IP_MULTICAST is not set
   8.137 @@ -234,11 +239,17 @@ CONFIG_IP_PNP=y
   8.138  # CONFIG_INET_AH is not set
   8.139  # CONFIG_INET_ESP is not set
   8.140  # CONFIG_INET_IPCOMP is not set
   8.141 +# CONFIG_INET_XFRM_TUNNEL is not set
   8.142  # CONFIG_INET_TUNNEL is not set
   8.143 +CONFIG_INET_XFRM_MODE_TRANSPORT=y
   8.144 +CONFIG_INET_XFRM_MODE_TUNNEL=y
   8.145  # CONFIG_INET_DIAG is not set
   8.146  # CONFIG_TCP_CONG_ADVANCED is not set
   8.147  CONFIG_TCP_CONG_BIC=y
   8.148  # CONFIG_IPV6 is not set
   8.149 +# CONFIG_INET6_XFRM_TUNNEL is not set
   8.150 +# CONFIG_INET6_TUNNEL is not set
   8.151 +# CONFIG_NETWORK_SECMARK is not set
   8.152  # CONFIG_NETFILTER is not set
   8.153  
   8.154  #
   8.155 @@ -264,7 +275,6 @@ CONFIG_TCP_CONG_BIC=y
   8.156  # CONFIG_ATALK is not set
   8.157  # CONFIG_X25 is not set
   8.158  # CONFIG_LAPB is not set
   8.159 -# CONFIG_NET_DIVERT is not set
   8.160  # CONFIG_ECONET is not set
   8.161  # CONFIG_WAN_ROUTER is not set
   8.162  
   8.163 @@ -293,6 +303,7 @@ CONFIG_STANDALONE=y
   8.164  CONFIG_PREVENT_FIRMWARE_BUILD=y
   8.165  # CONFIG_FW_LOADER is not set
   8.166  # CONFIG_DEBUG_DRIVER is not set
   8.167 +# CONFIG_SYS_HYPERVISOR is not set
   8.168  
   8.169  #
   8.170  # Connector - unified userspace <-> kernelspace linker
   8.171 @@ -324,6 +335,7 @@ CONFIG_BLK_DEV_NBD=m
   8.172  CONFIG_BLK_DEV_RAM=y
   8.173  CONFIG_BLK_DEV_RAM_COUNT=16
   8.174  CONFIG_BLK_DEV_RAM_SIZE=4096
   8.175 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
   8.176  CONFIG_BLK_DEV_INITRD=y
   8.177  # CONFIG_CDROM_PKTCDVD is not set
   8.178  # CONFIG_ATA_OVER_ETH is not set
   8.179 @@ -493,6 +505,7 @@ CONFIG_SERIO_SERPORT=y
   8.180  CONFIG_VT=y
   8.181  CONFIG_VT_CONSOLE=y
   8.182  CONFIG_HW_CONSOLE=y
   8.183 +# CONFIG_VT_HW_CONSOLE_BINDING is not set
   8.184  # CONFIG_SERIAL_NONSTANDARD is not set
   8.185  
   8.186  #
   8.187 @@ -515,6 +528,8 @@ CONFIG_LEGACY_PTY_COUNT=256
   8.188  # Watchdog Cards
   8.189  #
   8.190  # CONFIG_WATCHDOG is not set
   8.191 +CONFIG_HW_RANDOM=y
   8.192 +CONFIG_HW_RANDOM_VIA=y
   8.193  # CONFIG_NVRAM is not set
   8.194  # CONFIG_RTC is not set
   8.195  # CONFIG_GEN_RTC is not set
   8.196 @@ -524,8 +539,9 @@ CONFIG_LEGACY_PTY_COUNT=256
   8.197  #
   8.198  # Ftape, the floppy tape device driver
   8.199  #
   8.200 -# CONFIG_AGP is not set
   8.201  # CONFIG_MWAVE is not set
   8.202 +# CONFIG_PC8736x_GPIO is not set
   8.203 +# CONFIG_NSC_GPIO is not set
   8.204  # CONFIG_CS5535_GPIO is not set
   8.205  # CONFIG_RAW_DRIVER is not set
   8.206  # CONFIG_HANGCHECK_TIMER is not set
   8.207 @@ -550,7 +566,6 @@ CONFIG_LEGACY_PTY_COUNT=256
   8.208  #
   8.209  # Dallas's 1-wire bus
   8.210  #
   8.211 -# CONFIG_W1 is not set
   8.212  
   8.213  #
   8.214  # Hardware Monitoring support
   8.215 @@ -563,13 +578,10 @@ CONFIG_LEGACY_PTY_COUNT=256
   8.216  #
   8.217  
   8.218  #
   8.219 -# Multimedia Capabilities Port drivers
   8.220 -#
   8.221 -
   8.222 -#
   8.223  # Multimedia devices
   8.224  #
   8.225  # CONFIG_VIDEO_DEV is not set
   8.226 +CONFIG_VIDEO_V4L2=y
   8.227  
   8.228  #
   8.229  # Digital Video Broadcasting Devices
   8.230 @@ -579,14 +591,16 @@ CONFIG_LEGACY_PTY_COUNT=256
   8.231  #
   8.232  # Graphics support
   8.233  #
   8.234 +CONFIG_FIRMWARE_EDID=y
   8.235  # CONFIG_FB is not set
   8.236 -# CONFIG_VIDEO_SELECT is not set
   8.237  
   8.238  #
   8.239  # Console display driver support
   8.240  #
   8.241  CONFIG_VGA_CONSOLE=y
   8.242 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
   8.243  CONFIG_DUMMY_CONSOLE=y
   8.244 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
   8.245  
   8.246  #
   8.247  # Sound
   8.248 @@ -598,6 +612,7 @@ CONFIG_DUMMY_CONSOLE=y
   8.249  #
   8.250  # CONFIG_USB_ARCH_HAS_HCD is not set
   8.251  # CONFIG_USB_ARCH_HAS_OHCI is not set
   8.252 +# CONFIG_USB_ARCH_HAS_EHCI is not set
   8.253  
   8.254  #
   8.255  # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
   8.256 @@ -614,6 +629,19 @@ CONFIG_DUMMY_CONSOLE=y
   8.257  # CONFIG_MMC is not set
   8.258  
   8.259  #
   8.260 +# LED devices
   8.261 +#
   8.262 +# CONFIG_NEW_LEDS is not set
   8.263 +
   8.264 +#
   8.265 +# LED drivers
   8.266 +#
   8.267 +
   8.268 +#
   8.269 +# LED Triggers
   8.270 +#
   8.271 +
   8.272 +#
   8.273  # InfiniBand support
   8.274  #
   8.275  
   8.276 @@ -623,6 +651,24 @@ CONFIG_DUMMY_CONSOLE=y
   8.277  # CONFIG_EDAC is not set
   8.278  
   8.279  #
   8.280 +# Real Time Clock
   8.281 +#
   8.282 +# CONFIG_RTC_CLASS is not set
   8.283 +
   8.284 +#
   8.285 +# DMA Engine support
   8.286 +#
   8.287 +# CONFIG_DMA_ENGINE is not set
   8.288 +
   8.289 +#
   8.290 +# DMA Clients
   8.291 +#
   8.292 +
   8.293 +#
   8.294 +# DMA Devices
   8.295 +#
   8.296 +
   8.297 +#
   8.298  # File systems
   8.299  #
   8.300  CONFIG_EXT2_FS=y
   8.301 @@ -646,6 +692,7 @@ CONFIG_REISERFS_FS=y
   8.302  # CONFIG_MINIX_FS is not set
   8.303  # CONFIG_ROMFS_FS is not set
   8.304  CONFIG_INOTIFY=y
   8.305 +CONFIG_INOTIFY_USER=y
   8.306  # CONFIG_QUOTA is not set
   8.307  CONFIG_DNOTIFY=y
   8.308  CONFIG_AUTOFS_FS=y
   8.309 @@ -680,7 +727,6 @@ CONFIG_SYSFS=y
   8.310  CONFIG_TMPFS=y
   8.311  # CONFIG_HUGETLB_PAGE is not set
   8.312  CONFIG_RAMFS=y
   8.313 -# CONFIG_RELAYFS_FS is not set
   8.314  # CONFIG_CONFIGFS_FS is not set
   8.315  
   8.316  #
   8.317 @@ -782,23 +828,32 @@ CONFIG_NLS_ISO8859_1=y
   8.318  #
   8.319  # Kernel hacking
   8.320  #
   8.321 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
   8.322  # CONFIG_PRINTK_TIME is not set
   8.323  CONFIG_MAGIC_SYSRQ=y
   8.324 +CONFIG_UNUSED_SYMBOLS=y
   8.325  CONFIG_DEBUG_KERNEL=y
   8.326  CONFIG_LOG_BUF_SHIFT=14
   8.327  CONFIG_DETECT_SOFTLOCKUP=y
   8.328  # CONFIG_SCHEDSTATS is not set
   8.329  # CONFIG_DEBUG_SLAB is not set
   8.330 -# CONFIG_DEBUG_MUTEXES is not set
   8.331 +# CONFIG_DEBUG_RT_MUTEXES is not set
   8.332 +# CONFIG_RT_MUTEX_TESTER is not set
   8.333  # CONFIG_DEBUG_SPINLOCK is not set
   8.334 +# CONFIG_DEBUG_MUTEXES is not set
   8.335 +# CONFIG_DEBUG_RWSEMS is not set
   8.336 +# CONFIG_DEBUG_LOCK_ALLOC is not set
   8.337 +# CONFIG_PROVE_LOCKING is not set
   8.338  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
   8.339 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
   8.340  # CONFIG_DEBUG_KOBJECT is not set
   8.341  # CONFIG_DEBUG_HIGHMEM is not set
   8.342  CONFIG_DEBUG_BUGVERBOSE=y
   8.343 -# CONFIG_DEBUG_INFO is not set
   8.344 +CONFIG_DEBUG_INFO=y
   8.345  # CONFIG_DEBUG_FS is not set
   8.346  # CONFIG_DEBUG_VM is not set
   8.347  CONFIG_FRAME_POINTER=y
   8.348 +# CONFIG_UNWIND_INFO is not set
   8.349  CONFIG_FORCED_INLINING=y
   8.350  # CONFIG_RCU_TORTURE_TEST is not set
   8.351  CONFIG_EARLY_PRINTK=y
   8.352 @@ -849,13 +904,15 @@ CONFIG_CRYPTO_CRC32C=m
   8.353  #
   8.354  # CONFIG_CRYPTO_DEV_PADLOCK is not set
   8.355  CONFIG_XEN=y
   8.356 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
   8.357 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
   8.358  
   8.359  #
   8.360  # XEN
   8.361  #
   8.362  # CONFIG_XEN_PRIVILEGED_GUEST is not set
   8.363  CONFIG_XEN_UNPRIVILEGED_GUEST=y
   8.364 +CONFIG_XEN_PRIVCMD=y
   8.365 +CONFIG_XEN_XENBUS_DEV=y
   8.366  # CONFIG_XEN_BACKEND is not set
   8.367  CONFIG_XEN_BLKDEV_FRONTEND=y
   8.368  CONFIG_XEN_NETDEV_FRONTEND=y
   8.369 @@ -865,9 +922,13 @@ CONFIG_XEN_SYSFS=y
   8.370  CONFIG_XEN_COMPAT_030002_AND_LATER=y
   8.371  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
   8.372  CONFIG_XEN_COMPAT_030002=y
   8.373 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
   8.374 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   8.375 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
   8.376  CONFIG_NO_IDLE_HZ=y
   8.377 +CONFIG_XEN_UTIL=y
   8.378 +CONFIG_XEN_BALLOON=y
   8.379 +CONFIG_XEN_DEVMEM=y
   8.380 +CONFIG_XEN_REBOOT=y
   8.381 +CONFIG_XEN_SMPBOOT=y
   8.382  
   8.383  #
   8.384  # Library routines
   8.385 @@ -877,6 +938,7 @@ CONFIG_NO_IDLE_HZ=y
   8.386  # CONFIG_CRC32 is not set
   8.387  CONFIG_LIBCRC32C=m
   8.388  CONFIG_ZLIB_INFLATE=y
   8.389 +CONFIG_PLIST=y
   8.390  CONFIG_GENERIC_HARDIRQS=y
   8.391  CONFIG_GENERIC_IRQ_PROBE=y
   8.392  CONFIG_GENERIC_PENDING_IRQ=y
     9.1 --- a/buildconfigs/linux-defconfig_xenU_x86_64	Fri Jan 26 14:19:37 2007 -0700
     9.2 +++ b/buildconfigs/linux-defconfig_xenU_x86_64	Sat Jan 27 14:07:19 2007 -0700
     9.3 @@ -1,14 +1,17 @@
     9.4  #
     9.5  # Automatically generated make config: don't edit
     9.6 -# Linux kernel version: 2.6.16.13-xenU
     9.7 -# Thu May 11 17:17:57 2006
     9.8 +# Linux kernel version: 2.6.18-xenU
     9.9 +# Wed Jan 17 18:28:53 2007
    9.10  #
    9.11  CONFIG_X86_64=y
    9.12  CONFIG_64BIT=y
    9.13  CONFIG_X86=y
    9.14 +CONFIG_LOCKDEP_SUPPORT=y
    9.15 +CONFIG_STACKTRACE_SUPPORT=y
    9.16  CONFIG_SEMAPHORE_SLEEPERS=y
    9.17  CONFIG_MMU=y
    9.18  CONFIG_RWSEM_GENERIC_SPINLOCK=y
    9.19 +CONFIG_GENERIC_HWEIGHT=y
    9.20  CONFIG_GENERIC_CALIBRATE_DELAY=y
    9.21  CONFIG_X86_CMPXCHG=y
    9.22  CONFIG_EARLY_PRINTK=y
    9.23 @@ -16,6 +19,8 @@ CONFIG_GENERIC_ISA_DMA=y
    9.24  CONFIG_GENERIC_IOMAP=y
    9.25  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
    9.26  CONFIG_DMI=y
    9.27 +CONFIG_AUDIT_ARCH=y
    9.28 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    9.29  
    9.30  #
    9.31  # Code maturity level options
    9.32 @@ -34,16 +39,17 @@ CONFIG_SYSVIPC=y
    9.33  CONFIG_POSIX_MQUEUE=y
    9.34  CONFIG_BSD_PROCESS_ACCT=y
    9.35  # CONFIG_BSD_PROCESS_ACCT_V3 is not set
    9.36 -CONFIG_SYSCTL=y
    9.37 +# CONFIG_TASKSTATS is not set
    9.38  CONFIG_AUDIT=y
    9.39  CONFIG_AUDITSYSCALL=y
    9.40  # CONFIG_IKCONFIG is not set
    9.41  # CONFIG_CPUSETS is not set
    9.42 +# CONFIG_RELAY is not set
    9.43  CONFIG_INITRAMFS_SOURCE=""
    9.44 -CONFIG_UID16=y
    9.45 -CONFIG_VM86=y
    9.46  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
    9.47  # CONFIG_EMBEDDED is not set
    9.48 +CONFIG_UID16=y
    9.49 +CONFIG_SYSCTL=y
    9.50  CONFIG_KALLSYMS=y
    9.51  # CONFIG_KALLSYMS_ALL is not set
    9.52  CONFIG_KALLSYMS_EXTRA_PASS=y
    9.53 @@ -55,11 +61,9 @@ CONFIG_BASE_FULL=y
    9.54  CONFIG_FUTEX=y
    9.55  CONFIG_EPOLL=y
    9.56  CONFIG_SHMEM=y
    9.57 -CONFIG_CC_ALIGN_FUNCTIONS=0
    9.58 -CONFIG_CC_ALIGN_LABELS=0
    9.59 -CONFIG_CC_ALIGN_LOOPS=0
    9.60 -CONFIG_CC_ALIGN_JUMPS=0
    9.61  CONFIG_SLAB=y
    9.62 +CONFIG_VM_EVENT_COUNTERS=y
    9.63 +CONFIG_RT_MUTEXES=y
    9.64  # CONFIG_TINY_SHMEM is not set
    9.65  CONFIG_BASE_SMALL=0
    9.66  # CONFIG_SLOB is not set
    9.67 @@ -70,7 +74,6 @@ CONFIG_BASE_SMALL=0
    9.68  CONFIG_MODULES=y
    9.69  CONFIG_MODULE_UNLOAD=y
    9.70  # CONFIG_MODULE_FORCE_UNLOAD is not set
    9.71 -CONFIG_OBSOLETE_MODPARM=y
    9.72  CONFIG_MODVERSIONS=y
    9.73  # CONFIG_MODULE_SRCVERSION_ALL is not set
    9.74  CONFIG_KMOD=y
    9.75 @@ -80,6 +83,8 @@ CONFIG_STOP_MACHINE=y
    9.76  # Block layer
    9.77  #
    9.78  CONFIG_LBD=y
    9.79 +# CONFIG_BLK_DEV_IO_TRACE is not set
    9.80 +CONFIG_LSF=y
    9.81  
    9.82  #
    9.83  # IO Schedulers
    9.84 @@ -107,6 +112,7 @@ CONFIG_X86_NO_TSS=y
    9.85  CONFIG_X86_NO_IDT=y
    9.86  CONFIG_X86_L1_CACHE_BYTES=128
    9.87  CONFIG_X86_L1_CACHE_SHIFT=7
    9.88 +CONFIG_X86_INTERNODE_CACHE_BYTES=128
    9.89  CONFIG_X86_GOOD_APIC=y
    9.90  # CONFIG_MICROCODE is not set
    9.91  # CONFIG_X86_MSR is not set
    9.92 @@ -117,7 +123,6 @@ CONFIG_PREEMPT_NONE=y
    9.93  # CONFIG_PREEMPT_VOLUNTARY is not set
    9.94  # CONFIG_PREEMPT is not set
    9.95  CONFIG_PREEMPT_BKL=y
    9.96 -CONFIG_ARCH_SPARSEMEM_ENABLE=y
    9.97  CONFIG_ARCH_FLATMEM_ENABLE=y
    9.98  CONFIG_SELECT_MEMORY_MODEL=y
    9.99  CONFIG_FLATMEM_MANUAL=y
   9.100 @@ -127,16 +132,19 @@ CONFIG_FLATMEM=y
   9.101  CONFIG_FLAT_NODE_MEM_MAP=y
   9.102  # CONFIG_SPARSEMEM_STATIC is not set
   9.103  CONFIG_SPLIT_PTLOCK_CPUS=4096
   9.104 -CONFIG_NR_CPUS=8
   9.105 -CONFIG_HOTPLUG_CPU=y
   9.106 +CONFIG_RESOURCES_64BIT=y
   9.107 +CONFIG_NR_CPUS=16
   9.108 +# CONFIG_HOTPLUG_CPU is not set
   9.109 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
   9.110  CONFIG_SWIOTLB=y
   9.111  # CONFIG_CRASH_DUMP is not set
   9.112 -CONFIG_PHYSICAL_START=0x100000
   9.113 +CONFIG_PHYSICAL_START=0x200000
   9.114  CONFIG_SECCOMP=y
   9.115  CONFIG_HZ_100=y
   9.116  # CONFIG_HZ_250 is not set
   9.117  # CONFIG_HZ_1000 is not set
   9.118  CONFIG_HZ=100
   9.119 +# CONFIG_REORDER is not set
   9.120  CONFIG_GENERIC_HARDIRQS=y
   9.121  CONFIG_GENERIC_IRQ_PROBE=y
   9.122  CONFIG_ISA_DMA_API=y
   9.123 @@ -146,7 +154,6 @@ CONFIG_GENERIC_PENDING_IRQ=y
   9.124  # Bus options (PCI etc.)
   9.125  #
   9.126  # CONFIG_PCI is not set
   9.127 -# CONFIG_UNORDERED_IO is not set
   9.128  
   9.129  #
   9.130  # PCCARD (PCMCIA/CardBus) support
   9.131 @@ -208,7 +215,10 @@ CONFIG_SYN_COOKIES=y
   9.132  CONFIG_INET_AH=m
   9.133  CONFIG_INET_ESP=m
   9.134  CONFIG_INET_IPCOMP=m
   9.135 +CONFIG_INET_XFRM_TUNNEL=m
   9.136  CONFIG_INET_TUNNEL=m
   9.137 +CONFIG_INET_XFRM_MODE_TRANSPORT=y
   9.138 +CONFIG_INET_XFRM_MODE_TUNNEL=y
   9.139  # CONFIG_INET_DIAG is not set
   9.140  # CONFIG_TCP_CONG_ADVANCED is not set
   9.141  CONFIG_TCP_CONG_BIC=y
   9.142 @@ -248,11 +258,16 @@ CONFIG_IP_VS_NQ=m
   9.143  CONFIG_IP_VS_FTP=m
   9.144  CONFIG_IPV6=m
   9.145  CONFIG_IPV6_PRIVACY=y
   9.146 +# CONFIG_IPV6_ROUTER_PREF is not set
   9.147  CONFIG_INET6_AH=m
   9.148  CONFIG_INET6_ESP=m
   9.149  CONFIG_INET6_IPCOMP=m
   9.150 +CONFIG_INET6_XFRM_TUNNEL=m
   9.151  CONFIG_INET6_TUNNEL=m
   9.152 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m
   9.153 +CONFIG_INET6_XFRM_MODE_TUNNEL=m
   9.154  CONFIG_IPV6_TUNNEL=m
   9.155 +# CONFIG_NETWORK_SECMARK is not set
   9.156  CONFIG_NETFILTER=y
   9.157  # CONFIG_NETFILTER_DEBUG is not set
   9.158  CONFIG_BRIDGE_NETFILTER=y
   9.159 @@ -277,6 +292,8 @@ CONFIG_IP_NF_IRC=m
   9.160  CONFIG_IP_NF_TFTP=m
   9.161  CONFIG_IP_NF_AMANDA=m
   9.162  # CONFIG_IP_NF_PPTP is not set
   9.163 +# CONFIG_IP_NF_H323 is not set
   9.164 +# CONFIG_IP_NF_SIP is not set
   9.165  CONFIG_IP_NF_QUEUE=m
   9.166  
   9.167  #
   9.168 @@ -342,13 +359,12 @@ CONFIG_LLC=m
   9.169  CONFIG_IPX=m
   9.170  # CONFIG_IPX_INTERN is not set
   9.171  CONFIG_ATALK=m
   9.172 -CONFIG_DEV_APPLETALK=y
   9.173 +CONFIG_DEV_APPLETALK=m
   9.174  CONFIG_IPDDP=m
   9.175  CONFIG_IPDDP_ENCAP=y
   9.176  CONFIG_IPDDP_DECAP=y
   9.177  # CONFIG_X25 is not set
   9.178  # CONFIG_LAPB is not set
   9.179 -CONFIG_NET_DIVERT=y
   9.180  # CONFIG_ECONET is not set
   9.181  CONFIG_WAN_ROUTER=m
   9.182  
   9.183 @@ -435,6 +451,7 @@ CONFIG_DONGLE=y
   9.184  CONFIG_ESI_DONGLE=m
   9.185  CONFIG_ACTISYS_DONGLE=m
   9.186  CONFIG_TEKRAM_DONGLE=m
   9.187 +# CONFIG_TOIM3232_DONGLE is not set
   9.188  CONFIG_LITELINK_DONGLE=m
   9.189  CONFIG_MA600_DONGLE=m
   9.190  CONFIG_GIRBIL_DONGLE=m
   9.191 @@ -476,6 +493,7 @@ CONFIG_BT_HCIUART_H4=y
   9.192  CONFIG_BT_HCIUART_BCSP=y
   9.193  CONFIG_BT_HCIVHCI=m
   9.194  # CONFIG_IEEE80211 is not set
   9.195 +CONFIG_WIRELESS_EXT=y
   9.196  
   9.197  #
   9.198  # Device Drivers
   9.199 @@ -488,6 +506,7 @@ CONFIG_STANDALONE=y
   9.200  CONFIG_PREVENT_FIRMWARE_BUILD=y
   9.201  CONFIG_FW_LOADER=y
   9.202  # CONFIG_DEBUG_DRIVER is not set
   9.203 +# CONFIG_SYS_HYPERVISOR is not set
   9.204  
   9.205  #
   9.206  # Connector - unified userspace <-> kernelspace linker
   9.207 @@ -519,6 +538,7 @@ CONFIG_BLK_DEV_NBD=m
   9.208  CONFIG_BLK_DEV_RAM=y
   9.209  CONFIG_BLK_DEV_RAM_COUNT=16
   9.210  CONFIG_BLK_DEV_RAM_SIZE=16384
   9.211 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
   9.212  CONFIG_BLK_DEV_INITRD=y
   9.213  # CONFIG_CDROM_PKTCDVD is not set
   9.214  # CONFIG_ATA_OVER_ETH is not set
   9.215 @@ -577,8 +597,7 @@ CONFIG_MD_LINEAR=m
   9.216  CONFIG_MD_RAID0=m
   9.217  CONFIG_MD_RAID1=m
   9.218  CONFIG_MD_RAID10=m
   9.219 -CONFIG_MD_RAID5=m
   9.220 -CONFIG_MD_RAID6=m
   9.221 +# CONFIG_MD_RAID456 is not set
   9.222  CONFIG_MD_MULTIPATH=m
   9.223  # CONFIG_MD_FAULTY is not set
   9.224  CONFIG_BLK_DEV_DM=m
   9.225 @@ -637,12 +656,12 @@ CONFIG_MII=m
   9.226  # Wireless LAN (non-hamradio)
   9.227  #
   9.228  CONFIG_NET_RADIO=y
   9.229 +# CONFIG_NET_WIRELESS_RTNETLINK is not set
   9.230  
   9.231  #
   9.232  # Obsolete Wireless cards support (pre-802.11)
   9.233  #
   9.234  # CONFIG_STRIP is not set
   9.235 -CONFIG_ATMEL=m
   9.236  # CONFIG_HOSTAP is not set
   9.237  
   9.238  #
   9.239 @@ -731,6 +750,7 @@ CONFIG_SERIO_LIBPS2=y
   9.240  CONFIG_VT=y
   9.241  CONFIG_VT_CONSOLE=y
   9.242  CONFIG_HW_CONSOLE=y
   9.243 +# CONFIG_VT_HW_CONSOLE_BINDING is not set
   9.244  # CONFIG_SERIAL_NONSTANDARD is not set
   9.245  
   9.246  #
   9.247 @@ -753,6 +773,7 @@ CONFIG_LEGACY_PTY_COUNT=256
   9.248  # Watchdog Cards
   9.249  #
   9.250  # CONFIG_WATCHDOG is not set
   9.251 +CONFIG_HW_RANDOM=y
   9.252  # CONFIG_NVRAM is not set
   9.253  # CONFIG_RTC is not set
   9.254  # CONFIG_GEN_RTC is not set
   9.255 @@ -762,8 +783,8 @@ CONFIG_LEGACY_PTY_COUNT=256
   9.256  #
   9.257  # Ftape, the floppy tape device driver
   9.258  #
   9.259 -# CONFIG_AGP is not set
   9.260  # CONFIG_MWAVE is not set
   9.261 +# CONFIG_PC8736x_GPIO is not set
   9.262  # CONFIG_RAW_DRIVER is not set
   9.263  # CONFIG_HANGCHECK_TIMER is not set
   9.264  
   9.265 @@ -787,7 +808,6 @@ CONFIG_LEGACY_PTY_COUNT=256
   9.266  #
   9.267  # Dallas's 1-wire bus
   9.268  #
   9.269 -# CONFIG_W1 is not set
   9.270  
   9.271  #
   9.272  # Hardware Monitoring support
   9.273 @@ -800,13 +820,10 @@ CONFIG_LEGACY_PTY_COUNT=256
   9.274  #
   9.275  
   9.276  #
   9.277 -# Multimedia Capabilities Port drivers
   9.278 -#
   9.279 -
   9.280 -#
   9.281  # Multimedia devices
   9.282  #
   9.283  # CONFIG_VIDEO_DEV is not set
   9.284 +CONFIG_VIDEO_V4L2=y
   9.285  
   9.286  #
   9.287  # Digital Video Broadcasting Devices
   9.288 @@ -816,14 +833,16 @@ CONFIG_LEGACY_PTY_COUNT=256
   9.289  #
   9.290  # Graphics support
   9.291  #
   9.292 +CONFIG_FIRMWARE_EDID=y
   9.293  # CONFIG_FB is not set
   9.294 -# CONFIG_VIDEO_SELECT is not set
   9.295  
   9.296  #
   9.297  # Console display driver support
   9.298  #
   9.299  CONFIG_VGA_CONSOLE=y
   9.300 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
   9.301  CONFIG_DUMMY_CONSOLE=y
   9.302 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
   9.303  
   9.304  #
   9.305  # Sound
   9.306 @@ -835,6 +854,7 @@ CONFIG_DUMMY_CONSOLE=y
   9.307  #
   9.308  # CONFIG_USB_ARCH_HAS_HCD is not set
   9.309  # CONFIG_USB_ARCH_HAS_OHCI is not set
   9.310 +# CONFIG_USB_ARCH_HAS_EHCI is not set
   9.311  
   9.312  #
   9.313  # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
   9.314 @@ -851,6 +871,19 @@ CONFIG_DUMMY_CONSOLE=y
   9.315  # CONFIG_MMC is not set
   9.316  
   9.317  #
   9.318 +# LED devices
   9.319 +#
   9.320 +# CONFIG_NEW_LEDS is not set
   9.321 +
   9.322 +#
   9.323 +# LED drivers
   9.324 +#
   9.325 +
   9.326 +#
   9.327 +# LED Triggers
   9.328 +#
   9.329 +
   9.330 +#
   9.331  # InfiniBand support
   9.332  #
   9.333  
   9.334 @@ -860,6 +893,24 @@ CONFIG_DUMMY_CONSOLE=y
   9.335  # CONFIG_EDAC is not set
   9.336  
   9.337  #
   9.338 +# Real Time Clock
   9.339 +#
   9.340 +# CONFIG_RTC_CLASS is not set
   9.341 +
   9.342 +#
   9.343 +# DMA Engine support
   9.344 +#
   9.345 +# CONFIG_DMA_ENGINE is not set
   9.346 +
   9.347 +#
   9.348 +# DMA Clients
   9.349 +#
   9.350 +
   9.351 +#
   9.352 +# DMA Devices
   9.353 +#
   9.354 +
   9.355 +#
   9.356  # Firmware Drivers
   9.357  #
   9.358  # CONFIG_DELL_RBU is not set
   9.359 @@ -893,7 +944,6 @@ CONFIG_JFS_POSIX_ACL=y
   9.360  # CONFIG_JFS_STATISTICS is not set
   9.361  CONFIG_FS_POSIX_ACL=y
   9.362  CONFIG_XFS_FS=m
   9.363 -CONFIG_XFS_EXPORT=y
   9.364  # CONFIG_XFS_QUOTA is not set
   9.365  CONFIG_XFS_SECURITY=y
   9.366  CONFIG_XFS_POSIX_ACL=y
   9.367 @@ -902,6 +952,7 @@ CONFIG_XFS_POSIX_ACL=y
   9.368  CONFIG_MINIX_FS=m
   9.369  CONFIG_ROMFS_FS=m
   9.370  CONFIG_INOTIFY=y
   9.371 +CONFIG_INOTIFY_USER=y
   9.372  CONFIG_QUOTA=y
   9.373  # CONFIG_QFMT_V1 is not set
   9.374  CONFIG_QFMT_V2=y
   9.375 @@ -940,7 +991,6 @@ CONFIG_SYSFS=y
   9.376  CONFIG_TMPFS=y
   9.377  # CONFIG_HUGETLB_PAGE is not set
   9.378  CONFIG_RAMFS=y
   9.379 -# CONFIG_RELAYFS_FS is not set
   9.380  # CONFIG_CONFIGFS_FS is not set
   9.381  
   9.382  #
   9.383 @@ -960,6 +1010,8 @@ CONFIG_VXFS_FS=m
   9.384  CONFIG_QNX4FS_FS=m
   9.385  CONFIG_SYSV_FS=m
   9.386  CONFIG_UFS_FS=m
   9.387 +# CONFIG_UFS_FS_WRITE is not set
   9.388 +# CONFIG_UFS_DEBUG is not set
   9.389  
   9.390  #
   9.391  # Network File Systems
   9.392 @@ -986,8 +1038,10 @@ CONFIG_SMB_FS=m
   9.393  # CONFIG_SMB_NLS_DEFAULT is not set
   9.394  CONFIG_CIFS=m
   9.395  # CONFIG_CIFS_STATS is not set
   9.396 +# CONFIG_CIFS_WEAK_PW_HASH is not set
   9.397  CONFIG_CIFS_XATTR=y
   9.398  CONFIG_CIFS_POSIX=y
   9.399 +# CONFIG_CIFS_DEBUG2 is not set
   9.400  # CONFIG_CIFS_EXPERIMENTAL is not set
   9.401  CONFIG_NCP_FS=m
   9.402  CONFIG_NCPFS_PACKET_SIGNING=y
   9.403 @@ -1076,24 +1130,35 @@ CONFIG_NLS_UTF8=m
   9.404  #
   9.405  # Kernel hacking
   9.406  #
   9.407 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
   9.408  # CONFIG_PRINTK_TIME is not set
   9.409  CONFIG_MAGIC_SYSRQ=y
   9.410 +CONFIG_UNUSED_SYMBOLS=y
   9.411  CONFIG_DEBUG_KERNEL=y
   9.412  CONFIG_LOG_BUF_SHIFT=15
   9.413  CONFIG_DETECT_SOFTLOCKUP=y
   9.414  # CONFIG_SCHEDSTATS is not set
   9.415  # CONFIG_DEBUG_SLAB is not set
   9.416 +# CONFIG_DEBUG_RT_MUTEXES is not set
   9.417 +# CONFIG_RT_MUTEX_TESTER is not set
   9.418 +# CONFIG_DEBUG_SPINLOCK is not set
   9.419  # CONFIG_DEBUG_MUTEXES is not set
   9.420 -# CONFIG_DEBUG_SPINLOCK is not set
   9.421 +# CONFIG_DEBUG_RWSEMS is not set
   9.422 +# CONFIG_DEBUG_LOCK_ALLOC is not set
   9.423 +# CONFIG_PROVE_LOCKING is not set
   9.424  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
   9.425 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
   9.426  # CONFIG_DEBUG_KOBJECT is not set
   9.427 -# CONFIG_DEBUG_INFO is not set
   9.428 +CONFIG_DEBUG_INFO=y
   9.429  # CONFIG_DEBUG_FS is not set
   9.430  # CONFIG_DEBUG_VM is not set
   9.431  CONFIG_FRAME_POINTER=y
   9.432 +# CONFIG_UNWIND_INFO is not set
   9.433  CONFIG_FORCED_INLINING=y
   9.434  # CONFIG_RCU_TORTURE_TEST is not set
   9.435  # CONFIG_DEBUG_RODATA is not set
   9.436 +# CONFIG_DEBUG_STACKOVERFLOW is not set
   9.437 +# CONFIG_DEBUG_STACK_USAGE is not set
   9.438  
   9.439  #
   9.440  # Security options
   9.441 @@ -1135,13 +1200,15 @@ CONFIG_CRYPTO_CRC32C=m
   9.442  # Hardware crypto devices
   9.443  #
   9.444  CONFIG_XEN=y
   9.445 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
   9.446 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
   9.447  
   9.448  #
   9.449  # XEN
   9.450  #
   9.451  # CONFIG_XEN_PRIVILEGED_GUEST is not set
   9.452  CONFIG_XEN_UNPRIVILEGED_GUEST=y
   9.453 +CONFIG_XEN_PRIVCMD=y
   9.454 +CONFIG_XEN_XENBUS_DEV=y
   9.455  # CONFIG_XEN_BACKEND is not set
   9.456  CONFIG_XEN_BLKDEV_FRONTEND=y
   9.457  CONFIG_XEN_NETDEV_FRONTEND=y
   9.458 @@ -1151,9 +1218,13 @@ CONFIG_XEN_SYSFS=y
   9.459  CONFIG_XEN_COMPAT_030002_AND_LATER=y
   9.460  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
   9.461  CONFIG_XEN_COMPAT_030002=y
   9.462 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
   9.463 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   9.464 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
   9.465  CONFIG_NO_IDLE_HZ=y
   9.466 +CONFIG_XEN_UTIL=y
   9.467 +CONFIG_XEN_BALLOON=y
   9.468 +CONFIG_XEN_DEVMEM=y
   9.469 +CONFIG_XEN_REBOOT=y
   9.470 +CONFIG_XEN_SMPBOOT=y
   9.471  
   9.472  #
   9.473  # Library routines
   9.474 @@ -1164,3 +1235,6 @@ CONFIG_CRC32=y
   9.475  CONFIG_LIBCRC32C=m
   9.476  CONFIG_ZLIB_INFLATE=y
   9.477  CONFIG_ZLIB_DEFLATE=m
   9.478 +CONFIG_TEXTSEARCH=y
   9.479 +CONFIG_TEXTSEARCH_KMP=m
   9.480 +CONFIG_PLIST=y
    10.1 --- a/buildconfigs/linux-defconfig_xen_ia64	Fri Jan 26 14:19:37 2007 -0700
    10.2 +++ b/buildconfigs/linux-defconfig_xen_ia64	Sat Jan 27 14:07:19 2007 -0700
    10.3 @@ -1518,10 +1518,7 @@ CONFIG_CRYPTO_DES=y
    10.4  # Hardware crypto devices
    10.5  #
    10.6  # CONFIG_XEN_UTIL is not set
    10.7 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
    10.8 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
    10.9  CONFIG_XEN_BALLOON=y
   10.10 -CONFIG_XEN_SKBUFF=y
   10.11  # CONFIG_XEN_DEVMEM is not set
   10.12  CONFIG_XEN_REBOOT=y
   10.13  # CONFIG_XEN_SMPBOOT is not set
    11.1 --- a/buildconfigs/linux-defconfig_xen_x86_32	Fri Jan 26 14:19:37 2007 -0700
    11.2 +++ b/buildconfigs/linux-defconfig_xen_x86_32	Sat Jan 27 14:07:19 2007 -0700
    11.3 @@ -1,16 +1,21 @@
    11.4  #
    11.5  # Automatically generated make config: don't edit
    11.6 -# Linux kernel version: 2.6.16.13-xen
    11.7 -# Thu May 11 17:11:00 2006
    11.8 +# Linux kernel version: 2.6.18-xen
    11.9 +# Wed Jan 17 18:39:50 2007
   11.10  #
   11.11  CONFIG_X86_32=y
   11.12 +CONFIG_GENERIC_TIME=y
   11.13 +CONFIG_LOCKDEP_SUPPORT=y
   11.14 +CONFIG_STACKTRACE_SUPPORT=y
   11.15  CONFIG_SEMAPHORE_SLEEPERS=y
   11.16  CONFIG_X86=y
   11.17  CONFIG_MMU=y
   11.18  CONFIG_GENERIC_ISA_DMA=y
   11.19  CONFIG_GENERIC_IOMAP=y
   11.20 +CONFIG_GENERIC_HWEIGHT=y
   11.21  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
   11.22  CONFIG_DMI=y
   11.23 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
   11.24  
   11.25  #
   11.26  # Code maturity level options
   11.27 @@ -29,17 +34,19 @@ CONFIG_SYSVIPC=y
   11.28  CONFIG_POSIX_MQUEUE=y
   11.29  CONFIG_BSD_PROCESS_ACCT=y
   11.30  CONFIG_BSD_PROCESS_ACCT_V3=y
   11.31 -CONFIG_SYSCTL=y
   11.32 +CONFIG_TASKSTATS=y
   11.33 +CONFIG_TASK_DELAY_ACCT=y
   11.34  CONFIG_AUDIT=y
   11.35  CONFIG_AUDITSYSCALL=y
   11.36  CONFIG_IKCONFIG=y
   11.37  CONFIG_IKCONFIG_PROC=y
   11.38  CONFIG_CPUSETS=y
   11.39 +# CONFIG_RELAY is not set
   11.40  CONFIG_INITRAMFS_SOURCE=""
   11.41 -CONFIG_UID16=y
   11.42 -CONFIG_VM86=y
   11.43  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
   11.44  # CONFIG_EMBEDDED is not set
   11.45 +CONFIG_UID16=y
   11.46 +CONFIG_SYSCTL=y
   11.47  CONFIG_KALLSYMS=y
   11.48  # CONFIG_KALLSYMS_ALL is not set
   11.49  # CONFIG_KALLSYMS_EXTRA_PASS is not set
   11.50 @@ -51,15 +58,12 @@ CONFIG_BASE_FULL=y
   11.51  CONFIG_FUTEX=y
   11.52  CONFIG_EPOLL=y
   11.53  CONFIG_SHMEM=y
   11.54 -CONFIG_CC_ALIGN_FUNCTIONS=0
   11.55 -CONFIG_CC_ALIGN_LABELS=0
   11.56 -CONFIG_CC_ALIGN_LOOPS=0
   11.57 -CONFIG_CC_ALIGN_JUMPS=0
   11.58  CONFIG_SLAB=y
   11.59 +CONFIG_VM_EVENT_COUNTERS=y
   11.60 +CONFIG_RT_MUTEXES=y
   11.61  # CONFIG_TINY_SHMEM is not set
   11.62  CONFIG_BASE_SMALL=0
   11.63  # CONFIG_SLOB is not set
   11.64 -CONFIG_OBSOLETE_INTERMODULE=m
   11.65  
   11.66  #
   11.67  # Loadable module support
   11.68 @@ -67,7 +71,6 @@ CONFIG_OBSOLETE_INTERMODULE=m
   11.69  CONFIG_MODULES=y
   11.70  CONFIG_MODULE_UNLOAD=y
   11.71  CONFIG_MODULE_FORCE_UNLOAD=y
   11.72 -CONFIG_OBSOLETE_MODPARM=y
   11.73  CONFIG_MODVERSIONS=y
   11.74  CONFIG_MODULE_SRCVERSION_ALL=y
   11.75  CONFIG_KMOD=y
   11.76 @@ -77,6 +80,8 @@ CONFIG_STOP_MACHINE=y
   11.77  # Block layer
   11.78  #
   11.79  CONFIG_LBD=y
   11.80 +# CONFIG_BLK_DEV_IO_TRACE is not set
   11.81 +CONFIG_LSF=y
   11.82  
   11.83  #
   11.84  # IO Schedulers
   11.85 @@ -94,6 +99,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
   11.86  #
   11.87  # Processor type and features
   11.88  #
   11.89 +CONFIG_SMP=y
   11.90  # CONFIG_X86_PC is not set
   11.91  CONFIG_X86_XEN=y
   11.92  # CONFIG_X86_ELAN is not set
   11.93 @@ -142,8 +148,6 @@ CONFIG_X86_GOOD_APIC=y
   11.94  CONFIG_X86_INTEL_USERCOPY=y
   11.95  CONFIG_X86_USE_PPRO_CHECKSUM=y
   11.96  CONFIG_X86_TSC=y
   11.97 -CONFIG_SMP=y
   11.98 -CONFIG_SMP_ALTERNATIVES=y
   11.99  CONFIG_NR_CPUS=32
  11.100  # CONFIG_PREEMPT_NONE is not set
  11.101  CONFIG_PREEMPT_VOLUNTARY=y
  11.102 @@ -151,6 +155,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
  11.103  CONFIG_PREEMPT_BKL=y
  11.104  CONFIG_X86_LOCAL_APIC=y
  11.105  CONFIG_X86_IO_APIC=y
  11.106 +CONFIG_VM86=y
  11.107  # CONFIG_TOSHIBA is not set
  11.108  # CONFIG_I8K is not set
  11.109  # CONFIG_X86_REBOOTFIXUPS is not set
  11.110 @@ -166,10 +171,6 @@ CONFIG_DCDBAS=m
  11.111  # CONFIG_NOHIGHMEM is not set
  11.112  CONFIG_HIGHMEM4G=y
  11.113  # CONFIG_HIGHMEM64G is not set
  11.114 -CONFIG_VMSPLIT_3G=y
  11.115 -# CONFIG_VMSPLIT_3G_OPT is not set
  11.116 -# CONFIG_VMSPLIT_2G is not set
  11.117 -# CONFIG_VMSPLIT_1G is not set
  11.118  CONFIG_PAGE_OFFSET=0xC0000000
  11.119  CONFIG_HIGHMEM=y
  11.120  CONFIG_SELECT_MEMORY_MODEL=y
  11.121 @@ -180,18 +181,20 @@ CONFIG_FLATMEM=y
  11.122  CONFIG_FLAT_NODE_MEM_MAP=y
  11.123  # CONFIG_SPARSEMEM_STATIC is not set
  11.124  CONFIG_SPLIT_PTLOCK_CPUS=4096
  11.125 +CONFIG_RESOURCES_64BIT=y
  11.126  # CONFIG_HIGHPTE is not set
  11.127  CONFIG_MTRR=y
  11.128  CONFIG_REGPARM=y
  11.129  CONFIG_SECCOMP=y
  11.130  CONFIG_HZ_100=y
  11.131 -CONFIG_KEXEC=y
  11.132  # CONFIG_HZ_250 is not set
  11.133  # CONFIG_HZ_1000 is not set
  11.134  CONFIG_HZ=100
  11.135 +CONFIG_KEXEC=y
  11.136  # CONFIG_CRASH_DUMP is not set
  11.137  CONFIG_PHYSICAL_START=0x100000
  11.138  CONFIG_HOTPLUG_CPU=y
  11.139 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
  11.140  
  11.141  #
  11.142  # Power management options (ACPI, APM)
  11.143 @@ -208,6 +211,7 @@ CONFIG_ACPI_BUTTON=m
  11.144  CONFIG_ACPI_VIDEO=m
  11.145  CONFIG_ACPI_HOTKEY=m
  11.146  CONFIG_ACPI_FAN=m
  11.147 +CONFIG_ACPI_DOCK=m
  11.148  CONFIG_ACPI_PROCESSOR=m
  11.149  CONFIG_ACPI_HOTPLUG_CPU=y
  11.150  CONFIG_ACPI_THERMAL=m
  11.151 @@ -220,6 +224,7 @@ CONFIG_ACPI_EC=y
  11.152  CONFIG_ACPI_POWER=y
  11.153  CONFIG_ACPI_SYSTEM=y
  11.154  CONFIG_ACPI_CONTAINER=m
  11.155 +CONFIG_ACPI_SBS=m
  11.156  
  11.157  #
  11.158  # CPU Frequency scaling
  11.159 @@ -240,10 +245,11 @@ CONFIG_PCI_MMCONFIG=y
  11.160  CONFIG_XEN_PCIDEV_FRONTEND=y
  11.161  # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
  11.162  # CONFIG_PCIEPORTBUS is not set
  11.163 -# CONFIG_PCI_LEGACY_PROC is not set
  11.164  # CONFIG_PCI_DEBUG is not set
  11.165  CONFIG_ISA_DMA_API=y
  11.166  CONFIG_SCx200=m
  11.167 +CONFIG_SCx200HR_TIMER=m
  11.168 +CONFIG_K8_NB=y
  11.169  
  11.170  #
  11.171  # PCCARD (PCMCIA/CardBus) support
  11.172 @@ -326,7 +332,10 @@ CONFIG_SYN_COOKIES=y
  11.173  CONFIG_INET_AH=m
  11.174  CONFIG_INET_ESP=m
  11.175  CONFIG_INET_IPCOMP=m
  11.176 +CONFIG_INET_XFRM_TUNNEL=m
  11.177  CONFIG_INET_TUNNEL=m
  11.178 +CONFIG_INET_XFRM_MODE_TRANSPORT=m
  11.179 +CONFIG_INET_XFRM_MODE_TUNNEL=m
  11.180  CONFIG_INET_DIAG=m
  11.181  CONFIG_INET_TCP_DIAG=m
  11.182  CONFIG_TCP_CONG_ADVANCED=y
  11.183 @@ -342,6 +351,8 @@ CONFIG_TCP_CONG_HSTCP=m
  11.184  CONFIG_TCP_CONG_HYBLA=m
  11.185  CONFIG_TCP_CONG_VEGAS=m
  11.186  CONFIG_TCP_CONG_SCALABLE=m
  11.187 +CONFIG_TCP_CONG_LP=m
  11.188 +CONFIG_TCP_CONG_VENO=m
  11.189  
  11.190  #
  11.191  # IP: Virtual Server Configuration
  11.192 @@ -378,11 +389,16 @@ CONFIG_IP_VS_NQ=m
  11.193  CONFIG_IP_VS_FTP=m
  11.194  CONFIG_IPV6=m
  11.195  CONFIG_IPV6_PRIVACY=y
  11.196 +# CONFIG_IPV6_ROUTER_PREF is not set
  11.197  CONFIG_INET6_AH=m
  11.198  CONFIG_INET6_ESP=m
  11.199  CONFIG_INET6_IPCOMP=m
  11.200 +CONFIG_INET6_XFRM_TUNNEL=m
  11.201  CONFIG_INET6_TUNNEL=m
  11.202 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m
  11.203 +CONFIG_INET6_XFRM_MODE_TUNNEL=m
  11.204  CONFIG_IPV6_TUNNEL=m
  11.205 +CONFIG_NETWORK_SECMARK=y
  11.206  CONFIG_NETFILTER=y
  11.207  # CONFIG_NETFILTER_DEBUG is not set
  11.208  CONFIG_BRIDGE_NETFILTER=y
  11.209 @@ -399,21 +415,28 @@ CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
  11.210  CONFIG_NETFILTER_XT_TARGET_MARK=m
  11.211  CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
  11.212  CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
  11.213 +CONFIG_NETFILTER_XT_TARGET_SECMARK=m
  11.214 +# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
  11.215  CONFIG_NETFILTER_XT_MATCH_COMMENT=m
  11.216  CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
  11.217  CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
  11.218  CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
  11.219  CONFIG_NETFILTER_XT_MATCH_DCCP=m
  11.220 +CONFIG_NETFILTER_XT_MATCH_ESP=m
  11.221  CONFIG_NETFILTER_XT_MATCH_HELPER=m
  11.222  CONFIG_NETFILTER_XT_MATCH_LENGTH=m
  11.223  CONFIG_NETFILTER_XT_MATCH_LIMIT=m
  11.224  CONFIG_NETFILTER_XT_MATCH_MAC=m
  11.225  CONFIG_NETFILTER_XT_MATCH_MARK=m
  11.226 +CONFIG_NETFILTER_XT_MATCH_POLICY=m
  11.227 +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
  11.228  CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
  11.229  CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
  11.230 +CONFIG_NETFILTER_XT_MATCH_QUOTA=m
  11.231  CONFIG_NETFILTER_XT_MATCH_REALM=m
  11.232  CONFIG_NETFILTER_XT_MATCH_SCTP=m
  11.233  CONFIG_NETFILTER_XT_MATCH_STATE=m
  11.234 +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
  11.235  CONFIG_NETFILTER_XT_MATCH_STRING=m
  11.236  CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
  11.237  
  11.238 @@ -423,6 +446,7 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
  11.239  CONFIG_IP_NF_CONNTRACK=m
  11.240  CONFIG_IP_NF_CT_ACCT=y
  11.241  CONFIG_IP_NF_CONNTRACK_MARK=y
  11.242 +CONFIG_IP_NF_CONNTRACK_SECMARK=y
  11.243  CONFIG_IP_NF_CONNTRACK_EVENTS=y
  11.244  CONFIG_IP_NF_CONNTRACK_NETLINK=m
  11.245  CONFIG_IP_NF_CT_PROTO_SCTP=m
  11.246 @@ -432,20 +456,20 @@ CONFIG_IP_NF_NETBIOS_NS=m
  11.247  CONFIG_IP_NF_TFTP=m
  11.248  CONFIG_IP_NF_AMANDA=m
  11.249  CONFIG_IP_NF_PPTP=m
  11.250 +CONFIG_IP_NF_H323=m
  11.251 +CONFIG_IP_NF_SIP=m
  11.252  CONFIG_IP_NF_QUEUE=m
  11.253  CONFIG_IP_NF_IPTABLES=m
  11.254  CONFIG_IP_NF_MATCH_IPRANGE=m
  11.255 -CONFIG_IP_NF_MATCH_MULTIPORT=m
  11.256  CONFIG_IP_NF_MATCH_TOS=m
  11.257  CONFIG_IP_NF_MATCH_RECENT=m
  11.258  CONFIG_IP_NF_MATCH_ECN=m
  11.259  CONFIG_IP_NF_MATCH_DSCP=m
  11.260 -CONFIG_IP_NF_MATCH_AH_ESP=m
  11.261 +CONFIG_IP_NF_MATCH_AH=m
  11.262  CONFIG_IP_NF_MATCH_TTL=m
  11.263  CONFIG_IP_NF_MATCH_OWNER=m
  11.264  CONFIG_IP_NF_MATCH_ADDRTYPE=m
  11.265  CONFIG_IP_NF_MATCH_HASHLIMIT=m
  11.266 -CONFIG_IP_NF_MATCH_POLICY=m
  11.267  CONFIG_IP_NF_FILTER=m
  11.268  CONFIG_IP_NF_TARGET_REJECT=m
  11.269  CONFIG_IP_NF_TARGET_LOG=m
  11.270 @@ -463,6 +487,8 @@ CONFIG_IP_NF_NAT_FTP=m
  11.271  CONFIG_IP_NF_NAT_TFTP=m
  11.272  CONFIG_IP_NF_NAT_AMANDA=m
  11.273  CONFIG_IP_NF_NAT_PPTP=m
  11.274 +CONFIG_IP_NF_NAT_H323=m
  11.275 +CONFIG_IP_NF_NAT_SIP=m
  11.276  CONFIG_IP_NF_MANGLE=m
  11.277  CONFIG_IP_NF_TARGET_TOS=m
  11.278  CONFIG_IP_NF_TARGET_ECN=m
  11.279 @@ -483,12 +509,10 @@ CONFIG_IP6_NF_MATCH_RT=m
  11.280  CONFIG_IP6_NF_MATCH_OPTS=m
  11.281  CONFIG_IP6_NF_MATCH_FRAG=m
  11.282  CONFIG_IP6_NF_MATCH_HL=m
  11.283 -CONFIG_IP6_NF_MATCH_MULTIPORT=m
  11.284  CONFIG_IP6_NF_MATCH_OWNER=m
  11.285  CONFIG_IP6_NF_MATCH_IPV6HEADER=m
  11.286 -CONFIG_IP6_NF_MATCH_AHESP=m
  11.287 +CONFIG_IP6_NF_MATCH_AH=m
  11.288  CONFIG_IP6_NF_MATCH_EUI64=m
  11.289 -CONFIG_IP6_NF_MATCH_POLICY=m
  11.290  CONFIG_IP6_NF_FILTER=m
  11.291  CONFIG_IP6_NF_TARGET_LOG=m
  11.292  CONFIG_IP6_NF_TARGET_REJECT=m
  11.293 @@ -530,10 +554,12 @@ CONFIG_BRIDGE_EBT_ULOG=m
  11.294  #
  11.295  CONFIG_IP_DCCP=m
  11.296  CONFIG_INET_DCCP_DIAG=m
  11.297 +CONFIG_IP_DCCP_ACKVEC=y
  11.298  
  11.299  #
  11.300  # DCCP CCIDs Configuration (EXPERIMENTAL)
  11.301  #
  11.302 +CONFIG_IP_DCCP_CCID2=m
  11.303  CONFIG_IP_DCCP_CCID3=m
  11.304  CONFIG_IP_DCCP_TFRC_LIB=m
  11.305  
  11.306 @@ -541,7 +567,6 @@ CONFIG_IP_DCCP_TFRC_LIB=m
  11.307  # DCCP Kernel Hacking
  11.308  #
  11.309  # CONFIG_IP_DCCP_DEBUG is not set
  11.310 -# CONFIG_IP_DCCP_UNLOAD_HACK is not set
  11.311  
  11.312  #
  11.313  # SCTP Configuration (EXPERIMENTAL)
  11.314 @@ -574,13 +599,12 @@ CONFIG_LLC2=m
  11.315  CONFIG_IPX=m
  11.316  # CONFIG_IPX_INTERN is not set
  11.317  CONFIG_ATALK=m
  11.318 -CONFIG_DEV_APPLETALK=y
  11.319 +CONFIG_DEV_APPLETALK=m
  11.320  CONFIG_IPDDP=m
  11.321  CONFIG_IPDDP_ENCAP=y
  11.322  CONFIG_IPDDP_DECAP=y
  11.323  CONFIG_X25=m
  11.324  CONFIG_LAPB=m
  11.325 -# CONFIG_NET_DIVERT is not set
  11.326  CONFIG_ECONET=m
  11.327  CONFIG_ECONET_AUNUDP=y
  11.328  CONFIG_ECONET_NATIVE=y
  11.329 @@ -695,6 +719,7 @@ CONFIG_DONGLE=y
  11.330  CONFIG_ESI_DONGLE=m
  11.331  CONFIG_ACTISYS_DONGLE=m
  11.332  CONFIG_TEKRAM_DONGLE=m
  11.333 +CONFIG_TOIM3232_DONGLE=m
  11.334  CONFIG_LITELINK_DONGLE=m
  11.335  CONFIG_MA600_DONGLE=m
  11.336  CONFIG_GIRBIL_DONGLE=m
  11.337 @@ -722,6 +747,7 @@ CONFIG_SMC_IRCC_FIR=m
  11.338  CONFIG_ALI_FIR=m
  11.339  CONFIG_VLSI_FIR=m
  11.340  CONFIG_VIA_FIR=m
  11.341 +CONFIG_MCS_FIR=m
  11.342  CONFIG_BT=m
  11.343  CONFIG_BT_L2CAP=m
  11.344  CONFIG_BT_SCO=m
  11.345 @@ -754,6 +780,9 @@ CONFIG_IEEE80211=m
  11.346  CONFIG_IEEE80211_CRYPT_WEP=m
  11.347  CONFIG_IEEE80211_CRYPT_CCMP=m
  11.348  CONFIG_IEEE80211_CRYPT_TKIP=m
  11.349 +CONFIG_IEEE80211_SOFTMAC=m
  11.350 +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
  11.351 +CONFIG_WIRELESS_EXT=y
  11.352  
  11.353  #
  11.354  # Device Drivers
  11.355 @@ -766,6 +795,7 @@ CONFIG_STANDALONE=y
  11.356  CONFIG_PREVENT_FIRMWARE_BUILD=y
  11.357  CONFIG_FW_LOADER=m
  11.358  # CONFIG_DEBUG_DRIVER is not set
  11.359 +# CONFIG_SYS_HYPERVISOR is not set
  11.360  
  11.361  #
  11.362  # Connector - unified userspace <-> kernelspace linker
  11.363 @@ -821,7 +851,6 @@ CONFIG_MTD_CFI_I2=y
  11.364  # CONFIG_MTD_OTP is not set
  11.365  CONFIG_MTD_CFI_INTELEXT=m
  11.366  CONFIG_MTD_CFI_AMDSTD=m
  11.367 -CONFIG_MTD_CFI_AMDSTD_RETRY=0
  11.368  CONFIG_MTD_CFI_STAA=m
  11.369  CONFIG_MTD_CFI_UTIL=m
  11.370  CONFIG_MTD_RAM=m
  11.371 @@ -866,7 +895,6 @@ CONFIG_MTD_PHRAM=m
  11.372  CONFIG_MTD_MTDRAM=m
  11.373  CONFIG_MTDRAM_TOTAL_SIZE=4096
  11.374  CONFIG_MTDRAM_ERASE_SIZE=128
  11.375 -CONFIG_MTD_BLKMTD=m
  11.376  CONFIG_MTD_BLOCK2MTD=m
  11.377  
  11.378  #
  11.379 @@ -885,6 +913,7 @@ CONFIG_MTD_DOCPROBE_ADDRESS=0
  11.380  #
  11.381  CONFIG_MTD_NAND=m
  11.382  # CONFIG_MTD_NAND_VERIFY_WRITE is not set
  11.383 +# CONFIG_MTD_NAND_ECC_SMC is not set
  11.384  CONFIG_MTD_NAND_IDS=m
  11.385  CONFIG_MTD_NAND_DISKONCHIP=m
  11.386  # CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
  11.387 @@ -897,6 +926,7 @@ CONFIG_MTD_NAND_NANDSIM=m
  11.388  #
  11.389  CONFIG_MTD_ONENAND=m
  11.390  # CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
  11.391 +# CONFIG_MTD_ONENAND_OTP is not set
  11.392  
  11.393  #
  11.394  # Parallel port support
  11.395 @@ -909,6 +939,7 @@ CONFIG_PARPORT_PC_SUPERIO=y
  11.396  CONFIG_PARPORT_PC_PCMCIA=m
  11.397  CONFIG_PARPORT_NOT_PC=y
  11.398  # CONFIG_PARPORT_GSC is not set
  11.399 +CONFIG_PARPORT_AX88796=m
  11.400  CONFIG_PARPORT_1284=y
  11.401  
  11.402  #
  11.403 @@ -971,6 +1002,7 @@ CONFIG_BLK_DEV_SX8=m
  11.404  CONFIG_BLK_DEV_RAM=y
  11.405  CONFIG_BLK_DEV_RAM_COUNT=16
  11.406  CONFIG_BLK_DEV_RAM_SIZE=16384
  11.407 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
  11.408  CONFIG_BLK_DEV_INITRD=y
  11.409  CONFIG_CDROM_PKTCDVD=m
  11.410  CONFIG_CDROM_PKTCDVD_BUFFERS=8
  11.411 @@ -1103,6 +1135,7 @@ CONFIG_AIC79XX_DEBUG_ENABLE=y
  11.412  CONFIG_AIC79XX_DEBUG_MASK=0
  11.413  CONFIG_AIC79XX_REG_PRETTY_PRINT=y
  11.414  CONFIG_SCSI_DPT_I2O=m
  11.415 +CONFIG_SCSI_ADVANSYS=m
  11.416  CONFIG_MEGARAID_NEWGEN=y
  11.417  CONFIG_MEGARAID_MM=m
  11.418  CONFIG_MEGARAID_MAILBOX=m
  11.419 @@ -1115,6 +1148,7 @@ CONFIG_SCSI_ATA_PIIX=m
  11.420  CONFIG_SCSI_SATA_MV=m
  11.421  CONFIG_SCSI_SATA_NV=m
  11.422  CONFIG_SCSI_PDC_ADMA=m
  11.423 +CONFIG_SCSI_HPTIOP=m
  11.424  CONFIG_SCSI_SATA_QSTOR=m
  11.425  CONFIG_SCSI_SATA_PROMISE=m
  11.426  CONFIG_SCSI_SATA_SX4=m
  11.427 @@ -1145,15 +1179,12 @@ CONFIG_SCSI_SYM53C8XX_2=m
  11.428  CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
  11.429  CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
  11.430  CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
  11.431 -# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
  11.432 +CONFIG_SCSI_SYM53C8XX_MMIO=y
  11.433  CONFIG_SCSI_IPR=m
  11.434  CONFIG_SCSI_IPR_TRACE=y
  11.435  CONFIG_SCSI_IPR_DUMP=y
  11.436 -CONFIG_SCSI_QLOGIC_FC=m
  11.437 -CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
  11.438  CONFIG_SCSI_QLOGIC_1280=m
  11.439  CONFIG_SCSI_QLA_FC=m
  11.440 -# CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE is not set
  11.441  CONFIG_SCSI_LPFC=m
  11.442  CONFIG_SCSI_DC395x=m
  11.443  CONFIG_SCSI_DC390T=m
  11.444 @@ -1178,8 +1209,8 @@ CONFIG_MD_LINEAR=m
  11.445  CONFIG_MD_RAID0=m
  11.446  CONFIG_MD_RAID1=m
  11.447  CONFIG_MD_RAID10=m
  11.448 -CONFIG_MD_RAID5=m
  11.449 -CONFIG_MD_RAID6=m
  11.450 +CONFIG_MD_RAID456=m
  11.451 +CONFIG_MD_RAID5_RESHAPE=y
  11.452  CONFIG_MD_MULTIPATH=m
  11.453  CONFIG_MD_FAULTY=m
  11.454  CONFIG_BLK_DEV_DM=m
  11.455 @@ -1237,7 +1268,6 @@ CONFIG_IEEE1394_RAWIO=m
  11.456  CONFIG_I2O=m
  11.457  CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
  11.458  CONFIG_I2O_EXT_ADAPTEC=y
  11.459 -CONFIG_I2O_EXT_ADAPTEC_DMA64=y
  11.460  CONFIG_I2O_CONFIG=m
  11.461  CONFIG_I2O_CONFIG_OLD_IOCTL=y
  11.462  CONFIG_I2O_BUS=m
  11.463 @@ -1281,6 +1311,11 @@ CONFIG_DAVICOM_PHY=m
  11.464  CONFIG_QSEMI_PHY=m
  11.465  CONFIG_LXT_PHY=m
  11.466  CONFIG_CICADA_PHY=m
  11.467 +CONFIG_VITESSE_PHY=m
  11.468 +CONFIG_SMSC_PHY=m
  11.469 +CONFIG_FIXED_PHY=m
  11.470 +# CONFIG_FIXED_MII_10_FDX is not set
  11.471 +# CONFIG_FIXED_MII_100_FDX is not set
  11.472  
  11.473  #
  11.474  # Ethernet (10 or 100Mbit)
  11.475 @@ -1337,6 +1372,7 @@ CONFIG_SUNDANCE=m
  11.476  CONFIG_TLAN=m
  11.477  CONFIG_VIA_RHINE=m
  11.478  # CONFIG_VIA_RHINE_MMIO is not set
  11.479 +# CONFIG_VIA_RHINE_NAPI is not set
  11.480  CONFIG_NET_POCKET=y
  11.481  CONFIG_ATP=m
  11.482  CONFIG_DE600=m
  11.483 @@ -1373,6 +1409,7 @@ CONFIG_IXGB=m
  11.484  CONFIG_IXGB_NAPI=y
  11.485  CONFIG_S2IO=m
  11.486  CONFIG_S2IO_NAPI=y
  11.487 +CONFIG_MYRI10GE=m
  11.488  
  11.489  #
  11.490  # Token Ring devices
  11.491 @@ -1389,6 +1426,7 @@ CONFIG_ABYSS=m
  11.492  # Wireless LAN (non-hamradio)
  11.493  #
  11.494  CONFIG_NET_RADIO=y
  11.495 +CONFIG_NET_WIRELESS_RTNETLINK=y
  11.496  
  11.497  #
  11.498  # Obsolete Wireless cards support (pre-802.11)
  11.499 @@ -1409,6 +1447,10 @@ CONFIG_IPW2100=m
  11.500  CONFIG_IPW2100_MONITOR=y
  11.501  # CONFIG_IPW2100_DEBUG is not set
  11.502  CONFIG_IPW2200=m
  11.503 +CONFIG_IPW2200_MONITOR=y
  11.504 +CONFIG_IPW2200_RADIOTAP=y
  11.505 +CONFIG_IPW2200_PROMISCUOUS=y
  11.506 +CONFIG_IPW2200_QOS=y
  11.507  # CONFIG_IPW2200_DEBUG is not set
  11.508  CONFIG_AIRO=m
  11.509  CONFIG_HERMES=m
  11.510 @@ -1432,12 +1474,22 @@ CONFIG_PCMCIA_WL3501=m
  11.511  # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
  11.512  #
  11.513  CONFIG_PRISM54=m
  11.514 +CONFIG_USB_ZD1201=m
  11.515  CONFIG_HOSTAP=m
  11.516  CONFIG_HOSTAP_FIRMWARE=y
  11.517  CONFIG_HOSTAP_FIRMWARE_NVRAM=y
  11.518  CONFIG_HOSTAP_PLX=m
  11.519  CONFIG_HOSTAP_PCI=m
  11.520  CONFIG_HOSTAP_CS=m
  11.521 +CONFIG_BCM43XX=m
  11.522 +CONFIG_BCM43XX_DEBUG=y
  11.523 +CONFIG_BCM43XX_DMA=y
  11.524 +CONFIG_BCM43XX_PIO=y
  11.525 +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
  11.526 +# CONFIG_BCM43XX_DMA_MODE is not set
  11.527 +# CONFIG_BCM43XX_PIO_MODE is not set
  11.528 +CONFIG_ZD1211RW=m
  11.529 +# CONFIG_ZD1211RW_DEBUG is not set
  11.530  CONFIG_NET_WIRELESS=y
  11.531  
  11.532  #
  11.533 @@ -1462,7 +1514,6 @@ CONFIG_DSCC4=m
  11.534  CONFIG_DSCC4_PCISYNC=y
  11.535  CONFIG_DSCC4_PCI_RST=y
  11.536  CONFIG_LANMEDIA=m
  11.537 -CONFIG_SYNCLINK_SYNCPPP=m
  11.538  CONFIG_HDLC=m
  11.539  CONFIG_HDLC_RAW=y
  11.540  CONFIG_HDLC_RAW_ETH=y
  11.541 @@ -1638,6 +1689,15 @@ CONFIG_HISAX_HDLC=y
  11.542  #
  11.543  
  11.544  #
  11.545 +# Siemens Gigaset
  11.546 +#
  11.547 +CONFIG_ISDN_DRV_GIGASET=m
  11.548 +CONFIG_GIGASET_BASE=m
  11.549 +CONFIG_GIGASET_M105=m
  11.550 +# CONFIG_GIGASET_DEBUG is not set
  11.551 +# CONFIG_GIGASET_UNDOCREQ is not set
  11.552 +
  11.553 +#
  11.554  # CAPI subsystem
  11.555  #
  11.556  CONFIG_ISDN_CAPI=m
  11.557 @@ -1772,14 +1832,16 @@ CONFIG_GAMEPORT_FM801=m
  11.558  CONFIG_VT=y
  11.559  CONFIG_VT_CONSOLE=y
  11.560  CONFIG_HW_CONSOLE=y
  11.561 +CONFIG_VT_HW_CONSOLE_BINDING=y
  11.562  # CONFIG_SERIAL_NONSTANDARD is not set
  11.563  
  11.564  #
  11.565  # Serial drivers
  11.566  #
  11.567  CONFIG_SERIAL_8250=m
  11.568 +CONFIG_SERIAL_8250_PCI=m
  11.569 +CONFIG_SERIAL_8250_PNP=m
  11.570  # CONFIG_SERIAL_8250_CS is not set
  11.571 -# CONFIG_SERIAL_8250_ACPI is not set
  11.572  CONFIG_SERIAL_8250_NR_UARTS=4
  11.573  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  11.574  # CONFIG_SERIAL_8250_EXTENDED is not set
  11.575 @@ -1850,7 +1912,11 @@ CONFIG_WDT_501_PCI=y
  11.576  # USB-based Watchdog Cards
  11.577  #
  11.578  CONFIG_USBPCWATCHDOG=m
  11.579 -CONFIG_HW_RANDOM=m
  11.580 +CONFIG_HW_RANDOM=y
  11.581 +CONFIG_HW_RANDOM_INTEL=m
  11.582 +CONFIG_HW_RANDOM_AMD=m
  11.583 +CONFIG_HW_RANDOM_GEODE=m
  11.584 +CONFIG_HW_RANDOM_VIA=m
  11.585  CONFIG_NVRAM=m
  11.586  CONFIG_RTC=m
  11.587  CONFIG_GEN_RTC=m
  11.588 @@ -1894,6 +1960,8 @@ CONFIG_CARDMAN_4000=m
  11.589  CONFIG_CARDMAN_4040=m
  11.590  CONFIG_MWAVE=m
  11.591  CONFIG_SCx200_GPIO=m
  11.592 +CONFIG_PC8736x_GPIO=m
  11.593 +CONFIG_NSC_GPIO=m
  11.594  CONFIG_CS5535_GPIO=m
  11.595  CONFIG_RAW_DRIVER=m
  11.596  CONFIG_MAX_RAW_DEVS=256
  11.597 @@ -1938,6 +2006,7 @@ CONFIG_I2C_I810=m
  11.598  CONFIG_I2C_PIIX4=m
  11.599  CONFIG_I2C_ISA=m
  11.600  CONFIG_I2C_NFORCE2=m
  11.601 +CONFIG_I2C_OCORES=m
  11.602  CONFIG_I2C_PARPORT=m
  11.603  CONFIG_I2C_PARPORT_LIGHT=m
  11.604  CONFIG_I2C_PROSAVAGE=m
  11.605 @@ -1964,9 +2033,7 @@ CONFIG_SENSORS_EEPROM=m
  11.606  CONFIG_SENSORS_PCF8574=m
  11.607  CONFIG_SENSORS_PCA9539=m
  11.608  CONFIG_SENSORS_PCF8591=m
  11.609 -CONFIG_SENSORS_RTC8564=m
  11.610  CONFIG_SENSORS_MAX6875=m
  11.611 -CONFIG_RTC_X1205_I2C=m
  11.612  # CONFIG_I2C_DEBUG_CORE is not set
  11.613  # CONFIG_I2C_DEBUG_ALGO is not set
  11.614  # CONFIG_I2C_DEBUG_BUS is not set
  11.615 @@ -1993,19 +2060,29 @@ CONFIG_SPI_BUTTERFLY=m
  11.616  # Dallas's 1-wire bus
  11.617  #
  11.618  CONFIG_W1=m
  11.619 -CONFIG_W1_MATROX=m
  11.620 -CONFIG_W1_DS9490=m
  11.621 -CONFIG_W1_DS9490_BRIDGE=m
  11.622 -CONFIG_W1_THERM=m
  11.623 -CONFIG_W1_SMEM=m
  11.624 -CONFIG_W1_DS2433=m
  11.625 -CONFIG_W1_DS2433_CRC=y
  11.626 +CONFIG_W1_CON=y
  11.627 +
  11.628 +#
  11.629 +# 1-wire Bus Masters
  11.630 +#
  11.631 +CONFIG_W1_MASTER_MATROX=m
  11.632 +CONFIG_W1_MASTER_DS2490=m
  11.633 +CONFIG_W1_MASTER_DS2482=m
  11.634 +
  11.635 +#
  11.636 +# 1-wire Slaves
  11.637 +#
  11.638 +CONFIG_W1_SLAVE_THERM=m
  11.639 +CONFIG_W1_SLAVE_SMEM=m
  11.640 +CONFIG_W1_SLAVE_DS2433=m
  11.641 +# CONFIG_W1_SLAVE_DS2433_CRC is not set
  11.642  
  11.643  #
  11.644  # Hardware Monitoring support
  11.645  #
  11.646  CONFIG_HWMON=m
  11.647  CONFIG_HWMON_VID=m
  11.648 +CONFIG_SENSORS_ABITUGURU=m
  11.649  CONFIG_SENSORS_ADM1021=m
  11.650  CONFIG_SENSORS_ADM1025=m
  11.651  CONFIG_SENSORS_ADM1026=m
  11.652 @@ -2021,6 +2098,7 @@ CONFIG_SENSORS_GL518SM=m
  11.653  CONFIG_SENSORS_GL520SM=m
  11.654  CONFIG_SENSORS_IT87=m
  11.655  CONFIG_SENSORS_LM63=m
  11.656 +CONFIG_SENSORS_LM70=m
  11.657  CONFIG_SENSORS_LM75=m
  11.658  CONFIG_SENSORS_LM77=m
  11.659  CONFIG_SENSORS_LM78=m
  11.660 @@ -2034,10 +2112,12 @@ CONFIG_SENSORS_MAX1619=m
  11.661  CONFIG_SENSORS_PC87360=m
  11.662  CONFIG_SENSORS_SIS5595=m
  11.663  CONFIG_SENSORS_SMSC47M1=m
  11.664 +CONFIG_SENSORS_SMSC47M192=m
  11.665  CONFIG_SENSORS_SMSC47B397=m
  11.666  CONFIG_SENSORS_VIA686A=m
  11.667  CONFIG_SENSORS_VT8231=m
  11.668  CONFIG_SENSORS_W83781D=m
  11.669 +CONFIG_SENSORS_W83791D=m
  11.670  CONFIG_SENSORS_W83792D=m
  11.671  CONFIG_SENSORS_W83L785TS=m
  11.672  CONFIG_SENSORS_W83627HF=m
  11.673 @@ -2051,22 +2131,22 @@ CONFIG_SENSORS_HDAPS=m
  11.674  CONFIG_IBM_ASM=m
  11.675  
  11.676  #
  11.677 -# Multimedia Capabilities Port drivers
  11.678 -#
  11.679 -
  11.680 -#
  11.681  # Multimedia devices
  11.682  #
  11.683  CONFIG_VIDEO_DEV=m
  11.684 +CONFIG_VIDEO_V4L1=y
  11.685 +CONFIG_VIDEO_V4L1_COMPAT=y
  11.686 +CONFIG_VIDEO_V4L2=y
  11.687  
  11.688  #
  11.689 -# Video For Linux
  11.690 +# Video Capture Adapters
  11.691  #
  11.692  
  11.693  #
  11.694 -# Video Adapters
  11.695 +# Video Capture Adapters
  11.696  #
  11.697  # CONFIG_VIDEO_ADV_DEBUG is not set
  11.698 +CONFIG_VIDEO_VIVI=m
  11.699  CONFIG_VIDEO_BT848=m
  11.700  CONFIG_VIDEO_BT848_DVB=y
  11.701  CONFIG_VIDEO_SAA6588=m
  11.702 @@ -2076,6 +2156,7 @@ CONFIG_VIDEO_W9966=m
  11.703  CONFIG_VIDEO_CPIA=m
  11.704  CONFIG_VIDEO_CPIA_PP=m
  11.705  CONFIG_VIDEO_CPIA_USB=m
  11.706 +CONFIG_VIDEO_CPIA2=m
  11.707  CONFIG_VIDEO_SAA5246A=m
  11.708  CONFIG_VIDEO_SAA5249=m
  11.709  CONFIG_TUNER_3036=m
  11.710 @@ -2086,6 +2167,7 @@ CONFIG_VIDEO_ZORAN_DC10=m
  11.711  CONFIG_VIDEO_ZORAN_DC30=m
  11.712  CONFIG_VIDEO_ZORAN_LML33=m
  11.713  CONFIG_VIDEO_ZORAN_LML33R10=m
  11.714 +CONFIG_VIDEO_ZORAN_AVS6EYES=m
  11.715  CONFIG_VIDEO_MEYE=m
  11.716  CONFIG_VIDEO_SAA7134=m
  11.717  CONFIG_VIDEO_SAA7134_ALSA=m
  11.718 @@ -2096,15 +2178,51 @@ CONFIG_VIDEO_MXB=m
  11.719  CONFIG_VIDEO_DPC=m
  11.720  CONFIG_VIDEO_HEXIUM_ORION=m
  11.721  CONFIG_VIDEO_HEXIUM_GEMINI=m
  11.722 +CONFIG_VIDEO_CX88_VP3054=m
  11.723  CONFIG_VIDEO_CX88=m
  11.724  CONFIG_VIDEO_CX88_ALSA=m
  11.725 +CONFIG_VIDEO_CX88_BLACKBIRD=m
  11.726  CONFIG_VIDEO_CX88_DVB=m
  11.727  CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y
  11.728 -CONFIG_VIDEO_CX88_VP3054=m
  11.729 +
  11.730 +#
  11.731 +# Encoders and Decoders
  11.732 +#
  11.733 +CONFIG_VIDEO_MSP3400=m
  11.734 +CONFIG_VIDEO_CS53L32A=m
  11.735 +CONFIG_VIDEO_TLV320AIC23B=m
  11.736 +CONFIG_VIDEO_WM8775=m
  11.737 +CONFIG_VIDEO_WM8739=m
  11.738 +CONFIG_VIDEO_CX2341X=m
  11.739 +CONFIG_VIDEO_CX25840=m
  11.740 +CONFIG_VIDEO_SAA711X=m
  11.741 +CONFIG_VIDEO_SAA7127=m
  11.742 +CONFIG_VIDEO_UPD64031A=m
  11.743 +CONFIG_VIDEO_UPD64083=m
  11.744 +
  11.745 +#
  11.746 +# V4L USB devices
  11.747 +#
  11.748 +CONFIG_VIDEO_PVRUSB2=m
  11.749 +CONFIG_VIDEO_PVRUSB2_24XXX=y
  11.750 +CONFIG_VIDEO_PVRUSB2_SYSFS=y
  11.751 +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
  11.752  CONFIG_VIDEO_EM28XX=m
  11.753 +CONFIG_VIDEO_USBVIDEO=m
  11.754 +CONFIG_USB_VICAM=m
  11.755 +CONFIG_USB_IBMCAM=m
  11.756 +CONFIG_USB_KONICAWC=m
  11.757 +CONFIG_USB_QUICKCAM_MESSENGER=m
  11.758 +CONFIG_USB_ET61X251=m
  11.759  CONFIG_VIDEO_OVCAMCHIP=m
  11.760 -CONFIG_VIDEO_AUDIO_DECODER=m
  11.761 -CONFIG_VIDEO_DECODER=m
  11.762 +CONFIG_USB_W9968CF=m
  11.763 +CONFIG_USB_OV511=m
  11.764 +CONFIG_USB_SE401=m
  11.765 +CONFIG_USB_SN9C102=m
  11.766 +CONFIG_USB_STV680=m
  11.767 +CONFIG_USB_ZC0301=m
  11.768 +CONFIG_USB_PWC=m
  11.769 +# CONFIG_USB_PWC_DEBUG is not set
  11.770  
  11.771  #
  11.772  # Radio Adapters
  11.773 @@ -2112,6 +2230,7 @@ CONFIG_VIDEO_DECODER=m
  11.774  CONFIG_RADIO_GEMTEK_PCI=m
  11.775  CONFIG_RADIO_MAXIRADIO=m
  11.776  CONFIG_RADIO_MAESTRO=m
  11.777 +CONFIG_USB_DSBR=m
  11.778  
  11.779  #
  11.780  # Digital Video Broadcasting Devices
  11.781 @@ -2143,6 +2262,7 @@ CONFIG_DVB_USB_CXUSB=m
  11.782  CONFIG_DVB_USB_DIGITV=m
  11.783  CONFIG_DVB_USB_VP7045=m
  11.784  CONFIG_DVB_USB_VP702X=m
  11.785 +CONFIG_DVB_USB_GP8PSK=m
  11.786  CONFIG_DVB_USB_NOVA_T_USB2=m
  11.787  CONFIG_DVB_USB_DTT200U=m
  11.788  CONFIG_DVB_TTUSB_BUDGET=m
  11.789 @@ -2198,6 +2318,7 @@ CONFIG_DVB_L64781=m
  11.790  CONFIG_DVB_TDA1004X=m
  11.791  CONFIG_DVB_NXT6000=m
  11.792  CONFIG_DVB_MT352=m
  11.793 +CONFIG_DVB_ZL10353=m
  11.794  CONFIG_DVB_DIB3000MB=m
  11.795  CONFIG_DVB_DIB3000MC=m
  11.796  
  11.797 @@ -2209,13 +2330,20 @@ CONFIG_DVB_TDA10021=m
  11.798  CONFIG_DVB_STV0297=m
  11.799  
  11.800  #
  11.801 -# ATSC (North American/Korean Terresterial DTV) frontends
  11.802 +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
  11.803  #
  11.804  CONFIG_DVB_NXT200X=m
  11.805  CONFIG_DVB_OR51211=m
  11.806  CONFIG_DVB_OR51132=m
  11.807  CONFIG_DVB_BCM3510=m
  11.808  CONFIG_DVB_LGDT330X=m
  11.809 +
  11.810 +#
  11.811 +# Miscellaneous devices
  11.812 +#
  11.813 +CONFIG_DVB_PLL=m
  11.814 +CONFIG_DVB_LNBP21=m
  11.815 +CONFIG_DVB_ISL6421=m
  11.816  CONFIG_VIDEO_SAA7146=m
  11.817  CONFIG_VIDEO_SAA7146_VV=m
  11.818  CONFIG_VIDEO_VIDEOBUF=m
  11.819 @@ -2225,15 +2353,18 @@ CONFIG_VIDEO_BUF_DVB=m
  11.820  CONFIG_VIDEO_BTCX=m
  11.821  CONFIG_VIDEO_IR=m
  11.822  CONFIG_VIDEO_TVEEPROM=m
  11.823 +CONFIG_USB_DABUSB=m
  11.824  
  11.825  #
  11.826  # Graphics support
  11.827  #
  11.828 +CONFIG_FIRMWARE_EDID=y
  11.829  CONFIG_FB=y
  11.830  CONFIG_FB_CFB_FILLRECT=y
  11.831  CONFIG_FB_CFB_COPYAREA=y
  11.832  CONFIG_FB_CFB_IMAGEBLIT=y
  11.833  # CONFIG_FB_MACMODES is not set
  11.834 +# CONFIG_FB_BACKLIGHT is not set
  11.835  CONFIG_FB_MODE_HELPERS=y
  11.836  CONFIG_FB_TILEBLITTING=y
  11.837  CONFIG_FB_CIRRUS=m
  11.838 @@ -2245,7 +2376,6 @@ CONFIG_FB_ARC=m
  11.839  # CONFIG_FB_IMSTT is not set
  11.840  CONFIG_FB_VGA16=m
  11.841  CONFIG_FB_VESA=y
  11.842 -CONFIG_VIDEO_SELECT=y
  11.843  CONFIG_FB_HGA=m
  11.844  # CONFIG_FB_HGA_ACCEL is not set
  11.845  CONFIG_FB_S1D13XXX=m
  11.846 @@ -2264,7 +2394,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
  11.847  CONFIG_FB_MATROX_G=y
  11.848  # CONFIG_FB_MATROX_I2C is not set
  11.849  CONFIG_FB_MATROX_MULTIHEAD=y
  11.850 -# CONFIG_FB_RADEON_OLD is not set
  11.851  CONFIG_FB_RADEON=m
  11.852  CONFIG_FB_RADEON_I2C=y
  11.853  # CONFIG_FB_RADEON_DEBUG is not set
  11.854 @@ -2288,6 +2417,7 @@ CONFIG_FB_CYBLA=m
  11.855  CONFIG_FB_TRIDENT=m
  11.856  # CONFIG_FB_TRIDENT_ACCEL is not set
  11.857  CONFIG_FB_GEODE=y
  11.858 +CONFIG_FB_GEODE_GX=m
  11.859  CONFIG_FB_GEODE_GX1=m
  11.860  CONFIG_FB_VIRTUAL=m
  11.861  
  11.862 @@ -2295,6 +2425,8 @@ CONFIG_FB_VIRTUAL=m
  11.863  # Console display driver support
  11.864  #
  11.865  CONFIG_VGA_CONSOLE=y
  11.866 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
  11.867 +CONFIG_VIDEO_SELECT=y
  11.868  CONFIG_DUMMY_CONSOLE=y
  11.869  CONFIG_FRAMEBUFFER_CONSOLE=m
  11.870  # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
  11.871 @@ -2330,11 +2462,13 @@ CONFIG_SND_SEQ_DUMMY=m
  11.872  CONFIG_SND_OSSEMUL=y
  11.873  CONFIG_SND_MIXER_OSS=m
  11.874  CONFIG_SND_PCM_OSS=m
  11.875 +CONFIG_SND_PCM_OSS_PLUGINS=y
  11.876  CONFIG_SND_SEQUENCER_OSS=y
  11.877  CONFIG_SND_RTCTIMER=m
  11.878  CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
  11.879  # CONFIG_SND_DYNAMIC_MINORS is not set
  11.880  CONFIG_SND_SUPPORT_OLD_API=y
  11.881 +CONFIG_SND_VERBOSE_PROCFS=y
  11.882  # CONFIG_SND_VERBOSE_PRINTK is not set
  11.883  # CONFIG_SND_DEBUG is not set
  11.884  
  11.885 @@ -2356,6 +2490,7 @@ CONFIG_SND_MPU401=m
  11.886  # PCI devices
  11.887  #
  11.888  CONFIG_SND_AD1889=m
  11.889 +CONFIG_SND_ALS300=m
  11.890  CONFIG_SND_ALS4000=m
  11.891  CONFIG_SND_ALI5451=m
  11.892  CONFIG_SND_ATIIXP=m
  11.893 @@ -2372,6 +2507,18 @@ CONFIG_SND_CS4281=m
  11.894  CONFIG_SND_CS46XX=m
  11.895  CONFIG_SND_CS46XX_NEW_DSP=y
  11.896  CONFIG_SND_CS5535AUDIO=m
  11.897 +CONFIG_SND_DARLA20=m
  11.898 +CONFIG_SND_GINA20=m
  11.899 +CONFIG_SND_LAYLA20=m
  11.900 +CONFIG_SND_DARLA24=m
  11.901 +CONFIG_SND_GINA24=m
  11.902 +CONFIG_SND_LAYLA24=m
  11.903 +CONFIG_SND_MONA=m
  11.904 +CONFIG_SND_MIA=m
  11.905 +CONFIG_SND_ECHO3G=m
  11.906 +CONFIG_SND_INDIGO=m
  11.907 +CONFIG_SND_INDIGOIO=m
  11.908 +CONFIG_SND_INDIGODJ=m
  11.909  CONFIG_SND_EMU10K1=m
  11.910  CONFIG_SND_EMU10K1X=m
  11.911  CONFIG_SND_ENS1370=m
  11.912 @@ -2380,7 +2527,6 @@ CONFIG_SND_ES1938=m
  11.913  CONFIG_SND_ES1968=m
  11.914  CONFIG_SND_FM801=m
  11.915  # CONFIG_SND_FM801_TEA575X_BOOL is not set
  11.916 -CONFIG_SND_FM801_TEA575X=m
  11.917  CONFIG_SND_HDA_INTEL=m
  11.918  CONFIG_SND_HDSP=m
  11.919  CONFIG_SND_HDSPM=m
  11.920 @@ -2393,6 +2539,7 @@ CONFIG_SND_MAESTRO3=m
  11.921  CONFIG_SND_MIXART=m
  11.922  CONFIG_SND_NM256=m
  11.923  CONFIG_SND_PCXHR=m
  11.924 +CONFIG_SND_RIPTIDE=m
  11.925  CONFIG_SND_RME32=m
  11.926  CONFIG_SND_RME96=m
  11.927  CONFIG_SND_RME9652=m
  11.928 @@ -2412,17 +2559,22 @@ CONFIG_SND_USB_USX2Y=m
  11.929  #
  11.930  # PCMCIA devices
  11.931  #
  11.932 +CONFIG_SND_VXPOCKET=m
  11.933 +CONFIG_SND_PDAUDIOCF=m
  11.934  
  11.935  #
  11.936  # Open Sound System
  11.937  #
  11.938  CONFIG_SOUND_PRIME=m
  11.939 -# CONFIG_OBSOLETE_OSS_DRIVER is not set
  11.940 -CONFIG_SOUND_FUSION=m
  11.941 +# CONFIG_OSS_OBSOLETE_DRIVER is not set
  11.942 +CONFIG_SOUND_BT878=m
  11.943 +CONFIG_SOUND_ES1371=m
  11.944  CONFIG_SOUND_ICH=m
  11.945  CONFIG_SOUND_TRIDENT=m
  11.946  # CONFIG_SOUND_MSNDCLAS is not set
  11.947  # CONFIG_SOUND_MSNDPIN is not set
  11.948 +CONFIG_SOUND_VIA82CXXX=m
  11.949 +# CONFIG_MIDI_VIA82CXXX is not set
  11.950  # CONFIG_SOUND_OSS is not set
  11.951  CONFIG_SOUND_TVMIXER=m
  11.952  
  11.953 @@ -2431,6 +2583,7 @@ CONFIG_SOUND_TVMIXER=m
  11.954  #
  11.955  CONFIG_USB_ARCH_HAS_HCD=y
  11.956  CONFIG_USB_ARCH_HAS_OHCI=y
  11.957 +CONFIG_USB_ARCH_HAS_EHCI=y
  11.958  CONFIG_USB=m
  11.959  # CONFIG_USB_DEBUG is not set
  11.960  
  11.961 @@ -2449,6 +2602,7 @@ CONFIG_USB_BANDWIDTH=y
  11.962  CONFIG_USB_EHCI_HCD=m
  11.963  CONFIG_USB_EHCI_SPLIT_ISO=y
  11.964  CONFIG_USB_EHCI_ROOT_HUB_TT=y
  11.965 +CONFIG_USB_EHCI_TT_NEWSCHED=y
  11.966  CONFIG_USB_ISP116X_HCD=m
  11.967  CONFIG_USB_OHCI_HCD=m
  11.968  # CONFIG_USB_OHCI_BIG_ENDIAN is not set
  11.969 @@ -2460,7 +2614,6 @@ CONFIG_USB_SL811_CS=m
  11.970  #
  11.971  # USB Device Class drivers
  11.972  #
  11.973 -# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
  11.974  CONFIG_USB_ACM=m
  11.975  CONFIG_USB_PRINTER=m
  11.976  
  11.977 @@ -2506,9 +2659,11 @@ CONFIG_USB_WACOM=m
  11.978  CONFIG_USB_ACECAD=m
  11.979  CONFIG_USB_KBTAB=m
  11.980  CONFIG_USB_POWERMATE=m
  11.981 -CONFIG_USB_MTOUCH=m
  11.982 -CONFIG_USB_ITMTOUCH=m
  11.983 -CONFIG_USB_EGALAX=m
  11.984 +CONFIG_USB_TOUCHSCREEN=m
  11.985 +CONFIG_USB_TOUCHSCREEN_EGALAX=y
  11.986 +CONFIG_USB_TOUCHSCREEN_PANJIT=y
  11.987 +CONFIG_USB_TOUCHSCREEN_3M=y
  11.988 +CONFIG_USB_TOUCHSCREEN_ITM=y
  11.989  CONFIG_USB_YEALINK=m
  11.990  CONFIG_USB_XPAD=m
  11.991  CONFIG_USB_ATI_REMOTE=m
  11.992 @@ -2523,22 +2678,6 @@ CONFIG_USB_MDC800=m
  11.993  CONFIG_USB_MICROTEK=m
  11.994  
  11.995  #
  11.996 -# USB Multimedia devices
  11.997 -#
  11.998 -CONFIG_USB_DABUSB=m
  11.999 -CONFIG_USB_VICAM=m
 11.1000 -CONFIG_USB_DSBR=m
 11.1001 -CONFIG_USB_ET61X251=m
 11.1002 -CONFIG_USB_IBMCAM=m
 11.1003 -CONFIG_USB_KONICAWC=m
 11.1004 -CONFIG_USB_OV511=m
 11.1005 -CONFIG_USB_SE401=m
 11.1006 -CONFIG_USB_SN9C102=m
 11.1007 -CONFIG_USB_STV680=m
 11.1008 -CONFIG_USB_W9968CF=m
 11.1009 -CONFIG_USB_PWC=m
 11.1010 -
 11.1011 -#
 11.1012  # USB Network Adapters
 11.1013  #
 11.1014  CONFIG_USB_CATC=m
 11.1015 @@ -2559,7 +2698,6 @@ CONFIG_USB_BELKIN=y
 11.1016  CONFIG_USB_ARMLINUX=y
 11.1017  # CONFIG_USB_EPSON2888 is not set
 11.1018  CONFIG_USB_NET_ZAURUS=m
 11.1019 -CONFIG_USB_ZD1201=m
 11.1020  CONFIG_USB_MON=y
 11.1021  
 11.1022  #
 11.1023 @@ -2573,7 +2711,7 @@ CONFIG_USB_USS720=m
 11.1024  CONFIG_USB_SERIAL=m
 11.1025  CONFIG_USB_SERIAL_GENERIC=y
 11.1026  CONFIG_USB_SERIAL_AIRPRIME=m
 11.1027 -CONFIG_USB_SERIAL_ANYDATA=m
 11.1028 +CONFIG_USB_SERIAL_ARK3116=m
 11.1029  CONFIG_USB_SERIAL_BELKIN=m
 11.1030  CONFIG_USB_SERIAL_WHITEHEAT=m
 11.1031  CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 11.1032 @@ -2581,6 +2719,7 @@ CONFIG_USB_SERIAL_CP2101=m
 11.1033  CONFIG_USB_SERIAL_CYPRESS_M8=m
 11.1034  CONFIG_USB_SERIAL_EMPEG=m
 11.1035  CONFIG_USB_SERIAL_FTDI_SIO=m
 11.1036 +CONFIG_USB_SERIAL_FUNSOFT=m
 11.1037  CONFIG_USB_SERIAL_VISOR=m
 11.1038  CONFIG_USB_SERIAL_IPAQ=m
 11.1039  CONFIG_USB_SERIAL_IR=m
 11.1040 @@ -2605,10 +2744,12 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
 11.1041  CONFIG_USB_SERIAL_KLSI=m
 11.1042  CONFIG_USB_SERIAL_KOBIL_SCT=m
 11.1043  CONFIG_USB_SERIAL_MCT_U232=m
 11.1044 +CONFIG_USB_SERIAL_NAVMAN=m
 11.1045  CONFIG_USB_SERIAL_PL2303=m
 11.1046  CONFIG_USB_SERIAL_HP4X=m
 11.1047  CONFIG_USB_SERIAL_SAFE=m
 11.1048  CONFIG_USB_SERIAL_SAFE_PADDED=y
 11.1049 +CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 11.1050  CONFIG_USB_SERIAL_TI=m
 11.1051  CONFIG_USB_SERIAL_CYBERJACK=m
 11.1052  CONFIG_USB_SERIAL_XIRCOM=m
 11.1053 @@ -2626,10 +2767,12 @@ CONFIG_USB_RIO500=m
 11.1054  CONFIG_USB_LEGOTOWER=m
 11.1055  CONFIG_USB_LCD=m
 11.1056  CONFIG_USB_LED=m
 11.1057 +CONFIG_USB_CYPRESS_CY7C63=m
 11.1058  CONFIG_USB_CYTHERM=m
 11.1059  CONFIG_USB_PHIDGETKIT=m
 11.1060  CONFIG_USB_PHIDGETSERVO=m
 11.1061  CONFIG_USB_IDMOUSE=m
 11.1062 +CONFIG_USB_APPLEDISPLAY=m
 11.1063  CONFIG_USB_SISUSBVGA=m
 11.1064  CONFIG_USB_SISUSBVGA_CON=y
 11.1065  CONFIG_USB_LD=m
 11.1066 @@ -2656,6 +2799,7 @@ CONFIG_USB_NET2280=m
 11.1067  # CONFIG_USB_GADGET_GOKU is not set
 11.1068  # CONFIG_USB_GADGET_LH7A40X is not set
 11.1069  # CONFIG_USB_GADGET_OMAP is not set
 11.1070 +# CONFIG_USB_GADGET_AT91 is not set
 11.1071  # CONFIG_USB_GADGET_DUMMY_HCD is not set
 11.1072  CONFIG_USB_GADGET_DUALSPEED=y
 11.1073  CONFIG_USB_ZERO=m
 11.1074 @@ -2672,19 +2816,42 @@ CONFIG_USB_G_SERIAL=m
 11.1075  CONFIG_MMC=m
 11.1076  # CONFIG_MMC_DEBUG is not set
 11.1077  CONFIG_MMC_BLOCK=m
 11.1078 +CONFIG_MMC_SDHCI=m
 11.1079  CONFIG_MMC_WBSD=m
 11.1080  
 11.1081  #
 11.1082 +# LED devices
 11.1083 +#
 11.1084 +CONFIG_NEW_LEDS=y
 11.1085 +CONFIG_LEDS_CLASS=m
 11.1086 +
 11.1087 +#
 11.1088 +# LED drivers
 11.1089 +#
 11.1090 +CONFIG_LEDS_NET48XX=m
 11.1091 +
 11.1092 +#
 11.1093 +# LED Triggers
 11.1094 +#
 11.1095 +CONFIG_LEDS_TRIGGERS=y
 11.1096 +CONFIG_LEDS_TRIGGER_TIMER=m
 11.1097 +CONFIG_LEDS_TRIGGER_IDE_DISK=y
 11.1098 +CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 11.1099 +
 11.1100 +#
 11.1101  # InfiniBand support
 11.1102  #
 11.1103  CONFIG_INFINIBAND=m
 11.1104  CONFIG_INFINIBAND_USER_MAD=m
 11.1105  CONFIG_INFINIBAND_USER_ACCESS=m
 11.1106 +CONFIG_INFINIBAND_ADDR_TRANS=y
 11.1107  CONFIG_INFINIBAND_MTHCA=m
 11.1108 -# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
 11.1109 +CONFIG_INFINIBAND_MTHCA_DEBUG=y
 11.1110  CONFIG_INFINIBAND_IPOIB=m
 11.1111 -# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
 11.1112 +CONFIG_INFINIBAND_IPOIB_DEBUG=y
 11.1113 +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
 11.1114  CONFIG_INFINIBAND_SRP=m
 11.1115 +CONFIG_INFINIBAND_ISER=m
 11.1116  
 11.1117  #
 11.1118  # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
 11.1119 @@ -2705,6 +2872,53 @@ CONFIG_EDAC_R82600=m
 11.1120  CONFIG_EDAC_POLL=y
 11.1121  
 11.1122  #
 11.1123 +# Real Time Clock
 11.1124 +#
 11.1125 +CONFIG_RTC_LIB=m
 11.1126 +CONFIG_RTC_CLASS=m
 11.1127 +
 11.1128 +#
 11.1129 +# RTC interfaces
 11.1130 +#
 11.1131 +CONFIG_RTC_INTF_SYSFS=m
 11.1132 +CONFIG_RTC_INTF_PROC=m
 11.1133 +CONFIG_RTC_INTF_DEV=m
 11.1134 +CONFIG_RTC_INTF_DEV_UIE_EMUL=y
 11.1135 +
 11.1136 +#
 11.1137 +# RTC drivers
 11.1138 +#
 11.1139 +CONFIG_RTC_DRV_X1205=m
 11.1140 +CONFIG_RTC_DRV_DS1307=m
 11.1141 +CONFIG_RTC_DRV_DS1553=m
 11.1142 +CONFIG_RTC_DRV_ISL1208=m
 11.1143 +CONFIG_RTC_DRV_DS1672=m
 11.1144 +CONFIG_RTC_DRV_DS1742=m
 11.1145 +CONFIG_RTC_DRV_PCF8563=m
 11.1146 +CONFIG_RTC_DRV_PCF8583=m
 11.1147 +CONFIG_RTC_DRV_RS5C348=m
 11.1148 +CONFIG_RTC_DRV_RS5C372=m
 11.1149 +CONFIG_RTC_DRV_M48T86=m
 11.1150 +CONFIG_RTC_DRV_TEST=m
 11.1151 +CONFIG_RTC_DRV_MAX6902=m
 11.1152 +CONFIG_RTC_DRV_V3020=m
 11.1153 +
 11.1154 +#
 11.1155 +# DMA Engine support
 11.1156 +#
 11.1157 +CONFIG_DMA_ENGINE=y
 11.1158 +
 11.1159 +#
 11.1160 +# DMA Clients
 11.1161 +#
 11.1162 +CONFIG_NET_DMA=y
 11.1163 +
 11.1164 +#
 11.1165 +# DMA Devices
 11.1166 +#
 11.1167 +CONFIG_INTEL_IOATDMA=m
 11.1168 +
 11.1169 +#
 11.1170  # File systems
 11.1171  #
 11.1172  CONFIG_EXT2_FS=y
 11.1173 @@ -2733,15 +2947,16 @@ CONFIG_JFS_POSIX_ACL=y
 11.1174  CONFIG_JFS_STATISTICS=y
 11.1175  CONFIG_FS_POSIX_ACL=y
 11.1176  CONFIG_XFS_FS=m
 11.1177 -CONFIG_XFS_EXPORT=y
 11.1178  CONFIG_XFS_QUOTA=y
 11.1179  CONFIG_XFS_SECURITY=y
 11.1180  CONFIG_XFS_POSIX_ACL=y
 11.1181  CONFIG_XFS_RT=y
 11.1182  CONFIG_OCFS2_FS=m
 11.1183 +CONFIG_OCFS2_DEBUG_MASKLOG=y
 11.1184  CONFIG_MINIX_FS=m
 11.1185  CONFIG_ROMFS_FS=m
 11.1186  CONFIG_INOTIFY=y
 11.1187 +CONFIG_INOTIFY_USER=y
 11.1188  CONFIG_QUOTA=y
 11.1189  CONFIG_QFMT_V1=m
 11.1190  CONFIG_QFMT_V2=m
 11.1191 @@ -2778,12 +2993,10 @@ CONFIG_NTFS_FS=m
 11.1192  #
 11.1193  CONFIG_PROC_FS=y
 11.1194  CONFIG_PROC_KCORE=y
 11.1195 -# CONFIG_PROC_VMCORE is not set
 11.1196  CONFIG_SYSFS=y
 11.1197  CONFIG_TMPFS=y
 11.1198  # CONFIG_HUGETLB_PAGE is not set
 11.1199  CONFIG_RAMFS=y
 11.1200 -CONFIG_RELAYFS_FS=m
 11.1201  CONFIG_CONFIGFS_FS=m
 11.1202  
 11.1203  #
 11.1204 @@ -2805,6 +3018,7 @@ CONFIG_JFFS2_FS=m
 11.1205  CONFIG_JFFS2_FS_DEBUG=0
 11.1206  CONFIG_JFFS2_FS_WRITEBUFFER=y
 11.1207  # CONFIG_JFFS2_SUMMARY is not set
 11.1208 +# CONFIG_JFFS2_FS_XATTR is not set
 11.1209  # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
 11.1210  CONFIG_JFFS2_ZLIB=y
 11.1211  CONFIG_JFFS2_RTIME=y
 11.1212 @@ -2815,6 +3029,8 @@ CONFIG_HPFS_FS=m
 11.1213  CONFIG_QNX4FS_FS=m
 11.1214  CONFIG_SYSV_FS=m
 11.1215  CONFIG_UFS_FS=m
 11.1216 +# CONFIG_UFS_FS_WRITE is not set
 11.1217 +# CONFIG_UFS_DEBUG is not set
 11.1218  
 11.1219  #
 11.1220  # Network File Systems
 11.1221 @@ -2845,8 +3061,10 @@ CONFIG_SMB_NLS_REMOTE="cp850"
 11.1222  CONFIG_CIFS=m
 11.1223  CONFIG_CIFS_STATS=y
 11.1224  CONFIG_CIFS_STATS2=y
 11.1225 +# CONFIG_CIFS_WEAK_PW_HASH is not set
 11.1226  CONFIG_CIFS_XATTR=y
 11.1227  # CONFIG_CIFS_POSIX is not set
 11.1228 +# CONFIG_CIFS_DEBUG2 is not set
 11.1229  # CONFIG_CIFS_EXPERIMENTAL is not set
 11.1230  CONFIG_NCP_FS=m
 11.1231  CONFIG_NCPFS_PACKET_SIGNING=y
 11.1232 @@ -2938,16 +3156,24 @@ CONFIG_NLS_UTF8=m
 11.1233  #
 11.1234  # Kernel hacking
 11.1235  #
 11.1236 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 11.1237  # CONFIG_PRINTK_TIME is not set
 11.1238  CONFIG_MAGIC_SYSRQ=y
 11.1239 +CONFIG_UNUSED_SYMBOLS=y
 11.1240  CONFIG_DEBUG_KERNEL=y
 11.1241  CONFIG_LOG_BUF_SHIFT=14
 11.1242  CONFIG_DETECT_SOFTLOCKUP=y
 11.1243  # CONFIG_SCHEDSTATS is not set
 11.1244  # CONFIG_DEBUG_SLAB is not set
 11.1245 -# CONFIG_DEBUG_MUTEXES is not set
 11.1246 +# CONFIG_DEBUG_RT_MUTEXES is not set
 11.1247 +# CONFIG_RT_MUTEX_TESTER is not set
 11.1248  # CONFIG_DEBUG_SPINLOCK is not set
 11.1249 +# CONFIG_DEBUG_MUTEXES is not set
 11.1250 +# CONFIG_DEBUG_RWSEMS is not set
 11.1251 +# CONFIG_DEBUG_LOCK_ALLOC is not set
 11.1252 +# CONFIG_PROVE_LOCKING is not set
 11.1253  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 11.1254 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 11.1255  # CONFIG_DEBUG_KOBJECT is not set
 11.1256  # CONFIG_DEBUG_HIGHMEM is not set
 11.1257  CONFIG_DEBUG_BUGVERBOSE=y
 11.1258 @@ -2955,6 +3181,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
 11.1259  # CONFIG_DEBUG_FS is not set
 11.1260  # CONFIG_DEBUG_VM is not set
 11.1261  # CONFIG_FRAME_POINTER is not set
 11.1262 +# CONFIG_UNWIND_INFO is not set
 11.1263  CONFIG_FORCED_INLINING=y
 11.1264  # CONFIG_RCU_TORTURE_TEST is not set
 11.1265  CONFIG_EARLY_PRINTK=y
 11.1266 @@ -3014,24 +3241,26 @@ CONFIG_CRYPTO_TEST=m
 11.1267  #
 11.1268  # CONFIG_CRYPTO_DEV_PADLOCK is not set
 11.1269  CONFIG_XEN=y
 11.1270 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
 11.1271 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
 11.1272  
 11.1273  #
 11.1274  # XEN
 11.1275  #
 11.1276  CONFIG_XEN_PRIVILEGED_GUEST=y
 11.1277  # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
 11.1278 +CONFIG_XEN_PRIVCMD=y
 11.1279 +CONFIG_XEN_XENBUS_DEV=y
 11.1280  CONFIG_XEN_BACKEND=y
 11.1281 +CONFIG_XEN_BLKDEV_BACKEND=y
 11.1282 +CONFIG_XEN_BLKDEV_TAP=y
 11.1283 +CONFIG_XEN_NETDEV_BACKEND=y
 11.1284 +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
 11.1285 +CONFIG_XEN_NETDEV_LOOPBACK=y
 11.1286  CONFIG_XEN_PCIDEV_BACKEND=m
 11.1287  CONFIG_XEN_PCIDEV_BACKEND_VPCI=y
 11.1288  # CONFIG_XEN_PCIDEV_BACKEND_PASS is not set
 11.1289  # CONFIG_XEN_PCIDEV_BACKEND_SLOT is not set
 11.1290  # CONFIG_XEN_PCIDEV_BE_DEBUG is not set
 11.1291 -CONFIG_XEN_BLKDEV_BACKEND=y
 11.1292 -CONFIG_XEN_BLKDEV_TAP=y
 11.1293 -CONFIG_XEN_NETDEV_BACKEND=y
 11.1294 -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
 11.1295 -CONFIG_XEN_NETDEV_LOOPBACK=y
 11.1296  # CONFIG_XEN_TPMDEV_BACKEND is not set
 11.1297  CONFIG_XEN_BLKDEV_FRONTEND=y
 11.1298  CONFIG_XEN_NETDEV_FRONTEND=y
 11.1299 @@ -3043,9 +3272,13 @@ CONFIG_XEN_SYSFS=y
 11.1300  CONFIG_XEN_COMPAT_030002_AND_LATER=y
 11.1301  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
 11.1302  CONFIG_XEN_COMPAT_030002=y
 11.1303 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
 11.1304 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
 11.1305 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
 11.1306  CONFIG_NO_IDLE_HZ=y
 11.1307 +CONFIG_XEN_UTIL=y
 11.1308 +CONFIG_XEN_BALLOON=y
 11.1309 +CONFIG_XEN_DEVMEM=y
 11.1310 +CONFIG_XEN_REBOOT=y
 11.1311 +CONFIG_XEN_SMPBOOT=y
 11.1312  
 11.1313  #
 11.1314  # Library routines
 11.1315 @@ -3054,6 +3287,7 @@ CONFIG_CRC_CCITT=m
 11.1316  CONFIG_CRC16=m
 11.1317  CONFIG_CRC32=y
 11.1318  CONFIG_LIBCRC32C=m
 11.1319 +CONFIG_AUDIT_GENERIC=y
 11.1320  CONFIG_ZLIB_INFLATE=m
 11.1321  CONFIG_ZLIB_DEFLATE=m
 11.1322  CONFIG_REED_SOLOMON=m
 11.1323 @@ -3062,6 +3296,7 @@ CONFIG_TEXTSEARCH=y
 11.1324  CONFIG_TEXTSEARCH_KMP=m
 11.1325  CONFIG_TEXTSEARCH_BM=m
 11.1326  CONFIG_TEXTSEARCH_FSM=m
 11.1327 +CONFIG_PLIST=y
 11.1328  CONFIG_GENERIC_HARDIRQS=y
 11.1329  CONFIG_GENERIC_IRQ_PROBE=y
 11.1330  CONFIG_GENERIC_PENDING_IRQ=y
    12.1 --- a/buildconfigs/linux-defconfig_xen_x86_64	Fri Jan 26 14:19:37 2007 -0700
    12.2 +++ b/buildconfigs/linux-defconfig_xen_x86_64	Sat Jan 27 14:07:19 2007 -0700
    12.3 @@ -1,14 +1,17 @@
    12.4  #
    12.5  # Automatically generated make config: don't edit
    12.6 -# Linux kernel version: 2.6.16.13-xen
    12.7 -# Thu May 11 17:18:58 2006
    12.8 +# Linux kernel version: 2.6.18-xen
    12.9 +# Wed Jan 17 18:33:45 2007
   12.10  #
   12.11  CONFIG_X86_64=y
   12.12  CONFIG_64BIT=y
   12.13  CONFIG_X86=y
   12.14 +CONFIG_LOCKDEP_SUPPORT=y
   12.15 +CONFIG_STACKTRACE_SUPPORT=y
   12.16  CONFIG_SEMAPHORE_SLEEPERS=y
   12.17  CONFIG_MMU=y
   12.18  CONFIG_RWSEM_GENERIC_SPINLOCK=y
   12.19 +CONFIG_GENERIC_HWEIGHT=y
   12.20  CONFIG_GENERIC_CALIBRATE_DELAY=y
   12.21  CONFIG_X86_CMPXCHG=y
   12.22  CONFIG_EARLY_PRINTK=y
   12.23 @@ -16,6 +19,8 @@ CONFIG_GENERIC_ISA_DMA=y
   12.24  CONFIG_GENERIC_IOMAP=y
   12.25  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
   12.26  CONFIG_DMI=y
   12.27 +CONFIG_AUDIT_ARCH=y
   12.28 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
   12.29  
   12.30  #
   12.31  # Code maturity level options
   12.32 @@ -34,17 +39,19 @@ CONFIG_SYSVIPC=y
   12.33  CONFIG_POSIX_MQUEUE=y
   12.34  CONFIG_BSD_PROCESS_ACCT=y
   12.35  CONFIG_BSD_PROCESS_ACCT_V3=y
   12.36 -CONFIG_SYSCTL=y
   12.37 +CONFIG_TASKSTATS=y
   12.38 +CONFIG_TASK_DELAY_ACCT=y
   12.39  CONFIG_AUDIT=y
   12.40  CONFIG_AUDITSYSCALL=y
   12.41  CONFIG_IKCONFIG=y
   12.42  CONFIG_IKCONFIG_PROC=y
   12.43  CONFIG_CPUSETS=y
   12.44 +# CONFIG_RELAY is not set
   12.45  CONFIG_INITRAMFS_SOURCE=""
   12.46 -CONFIG_UID16=y
   12.47 -CONFIG_VM86=y
   12.48  CONFIG_CC_OPTIMIZE_FOR_SIZE=y
   12.49  # CONFIG_EMBEDDED is not set
   12.50 +CONFIG_UID16=y
   12.51 +CONFIG_SYSCTL=y
   12.52  CONFIG_KALLSYMS=y
   12.53  # CONFIG_KALLSYMS_ALL is not set
   12.54  CONFIG_KALLSYMS_EXTRA_PASS=y
   12.55 @@ -56,15 +63,12 @@ CONFIG_BASE_FULL=y
   12.56  CONFIG_FUTEX=y
   12.57  CONFIG_EPOLL=y
   12.58  CONFIG_SHMEM=y
   12.59 -CONFIG_CC_ALIGN_FUNCTIONS=0
   12.60 -CONFIG_CC_ALIGN_LABELS=0
   12.61 -CONFIG_CC_ALIGN_LOOPS=0
   12.62 -CONFIG_CC_ALIGN_JUMPS=0
   12.63  CONFIG_SLAB=y
   12.64 +CONFIG_VM_EVENT_COUNTERS=y
   12.65 +CONFIG_RT_MUTEXES=y
   12.66  # CONFIG_TINY_SHMEM is not set
   12.67  CONFIG_BASE_SMALL=0
   12.68  # CONFIG_SLOB is not set
   12.69 -CONFIG_OBSOLETE_INTERMODULE=m
   12.70  
   12.71  #
   12.72  # Loadable module support
   12.73 @@ -72,7 +76,6 @@ CONFIG_OBSOLETE_INTERMODULE=m
   12.74  CONFIG_MODULES=y
   12.75  CONFIG_MODULE_UNLOAD=y
   12.76  CONFIG_MODULE_FORCE_UNLOAD=y
   12.77 -CONFIG_OBSOLETE_MODPARM=y
   12.78  CONFIG_MODVERSIONS=y
   12.79  CONFIG_MODULE_SRCVERSION_ALL=y
   12.80  CONFIG_KMOD=y
   12.81 @@ -82,6 +85,8 @@ CONFIG_STOP_MACHINE=y
   12.82  # Block layer
   12.83  #
   12.84  CONFIG_LBD=y
   12.85 +# CONFIG_BLK_DEV_IO_TRACE is not set
   12.86 +CONFIG_LSF=y
   12.87  
   12.88  #
   12.89  # IO Schedulers
   12.90 @@ -109,6 +114,7 @@ CONFIG_X86_NO_TSS=y
   12.91  CONFIG_X86_NO_IDT=y
   12.92  CONFIG_X86_L1_CACHE_BYTES=128
   12.93  CONFIG_X86_L1_CACHE_SHIFT=7
   12.94 +CONFIG_X86_INTERNODE_CACHE_BYTES=128
   12.95  CONFIG_X86_GOOD_APIC=y
   12.96  CONFIG_MICROCODE=y
   12.97  CONFIG_X86_MSR=m
   12.98 @@ -122,7 +128,6 @@ CONFIG_SMP=y
   12.99  CONFIG_PREEMPT_VOLUNTARY=y
  12.100  # CONFIG_PREEMPT is not set
  12.101  CONFIG_PREEMPT_BKL=y
  12.102 -CONFIG_ARCH_SPARSEMEM_ENABLE=y
  12.103  CONFIG_ARCH_FLATMEM_ENABLE=y
  12.104  CONFIG_SELECT_MEMORY_MODEL=y
  12.105  CONFIG_FLATMEM_MANUAL=y
  12.106 @@ -132,17 +137,22 @@ CONFIG_FLATMEM=y
  12.107  CONFIG_FLAT_NODE_MEM_MAP=y
  12.108  # CONFIG_SPARSEMEM_STATIC is not set
  12.109  CONFIG_SPLIT_PTLOCK_CPUS=4096
  12.110 +CONFIG_RESOURCES_64BIT=y
  12.111  CONFIG_NR_CPUS=32
  12.112  CONFIG_HOTPLUG_CPU=y
  12.113 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
  12.114 +# CONFIG_CALGARY_IOMMU is not set
  12.115  CONFIG_SWIOTLB=y
  12.116 +CONFIG_KEXEC=y
  12.117  # CONFIG_CRASH_DUMP is not set
  12.118 -CONFIG_PHYSICAL_START=0x100000
  12.119 +CONFIG_PHYSICAL_START=0x200000
  12.120  CONFIG_SECCOMP=y
  12.121  CONFIG_HZ_100=y
  12.122 -CONFIG_KEXEC=y
  12.123  # CONFIG_HZ_250 is not set
  12.124  # CONFIG_HZ_1000 is not set
  12.125  CONFIG_HZ=100
  12.126 +# CONFIG_REORDER is not set
  12.127 +CONFIG_K8_NB=y
  12.128  CONFIG_GENERIC_HARDIRQS=y
  12.129  CONFIG_GENERIC_IRQ_PROBE=y
  12.130  CONFIG_ISA_DMA_API=y
  12.131 @@ -163,6 +173,7 @@ CONFIG_ACPI_BUTTON=m
  12.132  CONFIG_ACPI_VIDEO=m
  12.133  CONFIG_ACPI_HOTKEY=m
  12.134  CONFIG_ACPI_FAN=m
  12.135 +CONFIG_ACPI_DOCK=m
  12.136  CONFIG_ACPI_PROCESSOR=m
  12.137  CONFIG_ACPI_HOTPLUG_CPU=y
  12.138  CONFIG_ACPI_THERMAL=m
  12.139 @@ -175,6 +186,7 @@ CONFIG_ACPI_EC=y
  12.140  CONFIG_ACPI_POWER=y
  12.141  CONFIG_ACPI_SYSTEM=y
  12.142  CONFIG_ACPI_CONTAINER=m
  12.143 +CONFIG_ACPI_SBS=m
  12.144  
  12.145  #
  12.146  # CPU Frequency scaling
  12.147 @@ -189,9 +201,7 @@ CONFIG_PCI_DIRECT=y
  12.148  # CONFIG_PCI_MMCONFIG is not set
  12.149  CONFIG_XEN_PCIDEV_FRONTEND=y
  12.150  # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
  12.151 -# CONFIG_UNORDERED_IO is not set
  12.152  # CONFIG_PCIEPORTBUS is not set
  12.153 -# CONFIG_PCI_LEGACY_PROC is not set
  12.154  # CONFIG_PCI_DEBUG is not set
  12.155  
  12.156  #
  12.157 @@ -277,7 +287,10 @@ CONFIG_SYN_COOKIES=y
  12.158  CONFIG_INET_AH=m
  12.159  CONFIG_INET_ESP=m
  12.160  CONFIG_INET_IPCOMP=m
  12.161 +CONFIG_INET_XFRM_TUNNEL=m
  12.162  CONFIG_INET_TUNNEL=m
  12.163 +CONFIG_INET_XFRM_MODE_TRANSPORT=m
  12.164 +CONFIG_INET_XFRM_MODE_TUNNEL=m
  12.165  CONFIG_INET_DIAG=m
  12.166  CONFIG_INET_TCP_DIAG=m
  12.167  CONFIG_TCP_CONG_ADVANCED=y
  12.168 @@ -293,6 +306,8 @@ CONFIG_TCP_CONG_HSTCP=m
  12.169  CONFIG_TCP_CONG_HYBLA=m
  12.170  CONFIG_TCP_CONG_VEGAS=m
  12.171  CONFIG_TCP_CONG_SCALABLE=m
  12.172 +CONFIG_TCP_CONG_LP=m
  12.173 +CONFIG_TCP_CONG_VENO=m
  12.174  
  12.175  #
  12.176  # IP: Virtual Server Configuration
  12.177 @@ -329,11 +344,16 @@ CONFIG_IP_VS_NQ=m
  12.178  CONFIG_IP_VS_FTP=m
  12.179  CONFIG_IPV6=m
  12.180  CONFIG_IPV6_PRIVACY=y
  12.181 +# CONFIG_IPV6_ROUTER_PREF is not set
  12.182  CONFIG_INET6_AH=m
  12.183  CONFIG_INET6_ESP=m
  12.184  CONFIG_INET6_IPCOMP=m
  12.185 +CONFIG_INET6_XFRM_TUNNEL=m
  12.186  CONFIG_INET6_TUNNEL=m
  12.187 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m
  12.188 +CONFIG_INET6_XFRM_MODE_TUNNEL=m
  12.189  CONFIG_IPV6_TUNNEL=m
  12.190 +CONFIG_NETWORK_SECMARK=y
  12.191  CONFIG_NETFILTER=y
  12.192  # CONFIG_NETFILTER_DEBUG is not set
  12.193  CONFIG_BRIDGE_NETFILTER=y
  12.194 @@ -350,21 +370,28 @@ CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
  12.195  CONFIG_NETFILTER_XT_TARGET_MARK=m
  12.196  CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
  12.197  CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
  12.198 +CONFIG_NETFILTER_XT_TARGET_SECMARK=m
  12.199 +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
  12.200  CONFIG_NETFILTER_XT_MATCH_COMMENT=m
  12.201  CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
  12.202  CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
  12.203  CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
  12.204  CONFIG_NETFILTER_XT_MATCH_DCCP=m
  12.205 +CONFIG_NETFILTER_XT_MATCH_ESP=m
  12.206  CONFIG_NETFILTER_XT_MATCH_HELPER=m
  12.207  CONFIG_NETFILTER_XT_MATCH_LENGTH=m
  12.208  CONFIG_NETFILTER_XT_MATCH_LIMIT=m
  12.209  CONFIG_NETFILTER_XT_MATCH_MAC=m
  12.210  CONFIG_NETFILTER_XT_MATCH_MARK=m
  12.211 +CONFIG_NETFILTER_XT_MATCH_POLICY=m
  12.212 +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
  12.213  CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
  12.214  CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
  12.215 +CONFIG_NETFILTER_XT_MATCH_QUOTA=m
  12.216  CONFIG_NETFILTER_XT_MATCH_REALM=m
  12.217  CONFIG_NETFILTER_XT_MATCH_SCTP=m
  12.218  CONFIG_NETFILTER_XT_MATCH_STATE=m
  12.219 +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
  12.220  CONFIG_NETFILTER_XT_MATCH_STRING=m
  12.221  CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
  12.222  
  12.223 @@ -374,6 +401,7 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
  12.224  CONFIG_IP_NF_CONNTRACK=m
  12.225  CONFIG_IP_NF_CT_ACCT=y
  12.226  CONFIG_IP_NF_CONNTRACK_MARK=y
  12.227 +CONFIG_IP_NF_CONNTRACK_SECMARK=y
  12.228  CONFIG_IP_NF_CONNTRACK_EVENTS=y
  12.229  CONFIG_IP_NF_CONNTRACK_NETLINK=m
  12.230  CONFIG_IP_NF_CT_PROTO_SCTP=m
  12.231 @@ -383,20 +411,20 @@ CONFIG_IP_NF_NETBIOS_NS=m
  12.232  CONFIG_IP_NF_TFTP=m
  12.233  CONFIG_IP_NF_AMANDA=m
  12.234  CONFIG_IP_NF_PPTP=m
  12.235 +CONFIG_IP_NF_H323=m
  12.236 +CONFIG_IP_NF_SIP=m
  12.237  CONFIG_IP_NF_QUEUE=m
  12.238  CONFIG_IP_NF_IPTABLES=m
  12.239  CONFIG_IP_NF_MATCH_IPRANGE=m
  12.240 -CONFIG_IP_NF_MATCH_MULTIPORT=m
  12.241  CONFIG_IP_NF_MATCH_TOS=m
  12.242  CONFIG_IP_NF_MATCH_RECENT=m
  12.243  CONFIG_IP_NF_MATCH_ECN=m
  12.244  CONFIG_IP_NF_MATCH_DSCP=m
  12.245 -CONFIG_IP_NF_MATCH_AH_ESP=m
  12.246 +CONFIG_IP_NF_MATCH_AH=m
  12.247  CONFIG_IP_NF_MATCH_TTL=m
  12.248  CONFIG_IP_NF_MATCH_OWNER=m
  12.249  CONFIG_IP_NF_MATCH_ADDRTYPE=m
  12.250  CONFIG_IP_NF_MATCH_HASHLIMIT=m
  12.251 -CONFIG_IP_NF_MATCH_POLICY=m
  12.252  CONFIG_IP_NF_FILTER=m
  12.253  CONFIG_IP_NF_TARGET_REJECT=m
  12.254  CONFIG_IP_NF_TARGET_LOG=m
  12.255 @@ -414,6 +442,8 @@ CONFIG_IP_NF_NAT_FTP=m
  12.256  CONFIG_IP_NF_NAT_TFTP=m
  12.257  CONFIG_IP_NF_NAT_AMANDA=m
  12.258  CONFIG_IP_NF_NAT_PPTP=m
  12.259 +CONFIG_IP_NF_NAT_H323=m
  12.260 +CONFIG_IP_NF_NAT_SIP=m
  12.261  CONFIG_IP_NF_MANGLE=m
  12.262  CONFIG_IP_NF_TARGET_TOS=m
  12.263  CONFIG_IP_NF_TARGET_ECN=m
  12.264 @@ -434,12 +464,10 @@ CONFIG_IP6_NF_MATCH_RT=m
  12.265  CONFIG_IP6_NF_MATCH_OPTS=m
  12.266  CONFIG_IP6_NF_MATCH_FRAG=m
  12.267  CONFIG_IP6_NF_MATCH_HL=m
  12.268 -CONFIG_IP6_NF_MATCH_MULTIPORT=m
  12.269  CONFIG_IP6_NF_MATCH_OWNER=m
  12.270  CONFIG_IP6_NF_MATCH_IPV6HEADER=m
  12.271 -CONFIG_IP6_NF_MATCH_AHESP=m
  12.272 +CONFIG_IP6_NF_MATCH_AH=m
  12.273  CONFIG_IP6_NF_MATCH_EUI64=m
  12.274 -CONFIG_IP6_NF_MATCH_POLICY=m
  12.275  CONFIG_IP6_NF_FILTER=m
  12.276  CONFIG_IP6_NF_TARGET_LOG=m
  12.277  CONFIG_IP6_NF_TARGET_REJECT=m
  12.278 @@ -481,10 +509,12 @@ CONFIG_BRIDGE_EBT_ULOG=m
  12.279  #
  12.280  CONFIG_IP_DCCP=m
  12.281  CONFIG_INET_DCCP_DIAG=m
  12.282 +CONFIG_IP_DCCP_ACKVEC=y
  12.283  
  12.284  #
  12.285  # DCCP CCIDs Configuration (EXPERIMENTAL)
  12.286  #
  12.287 +CONFIG_IP_DCCP_CCID2=m
  12.288  CONFIG_IP_DCCP_CCID3=m
  12.289  CONFIG_IP_DCCP_TFRC_LIB=m
  12.290  
  12.291 @@ -492,7 +522,6 @@ CONFIG_IP_DCCP_TFRC_LIB=m
  12.292  # DCCP Kernel Hacking
  12.293  #
  12.294  # CONFIG_IP_DCCP_DEBUG is not set
  12.295 -# CONFIG_IP_DCCP_UNLOAD_HACK is not set
  12.296  
  12.297  #
  12.298  # SCTP Configuration (EXPERIMENTAL)
  12.299 @@ -526,13 +555,12 @@ CONFIG_LLC2=m
  12.300  CONFIG_IPX=m
  12.301  CONFIG_IPX_INTERN=y
  12.302  CONFIG_ATALK=m
  12.303 -CONFIG_DEV_APPLETALK=y
  12.304 +CONFIG_DEV_APPLETALK=m
  12.305  CONFIG_IPDDP=m
  12.306  CONFIG_IPDDP_ENCAP=y
  12.307  CONFIG_IPDDP_DECAP=y
  12.308  CONFIG_X25=m
  12.309  CONFIG_LAPB=m
  12.310 -CONFIG_NET_DIVERT=y
  12.311  CONFIG_ECONET=m
  12.312  # CONFIG_ECONET_AUNUDP is not set
  12.313  # CONFIG_ECONET_NATIVE is not set
  12.314 @@ -646,6 +674,7 @@ CONFIG_DONGLE=y
  12.315  CONFIG_ESI_DONGLE=m
  12.316  CONFIG_ACTISYS_DONGLE=m
  12.317  CONFIG_TEKRAM_DONGLE=m
  12.318 +CONFIG_TOIM3232_DONGLE=m
  12.319  CONFIG_LITELINK_DONGLE=m
  12.320  CONFIG_MA600_DONGLE=m
  12.321  CONFIG_GIRBIL_DONGLE=m
  12.322 @@ -672,6 +701,7 @@ CONFIG_SMC_IRCC_FIR=m
  12.323  CONFIG_ALI_FIR=m
  12.324  CONFIG_VLSI_FIR=m
  12.325  CONFIG_VIA_FIR=m
  12.326 +CONFIG_MCS_FIR=m
  12.327  CONFIG_BT=m
  12.328  CONFIG_BT_L2CAP=m
  12.329  CONFIG_BT_SCO=m
  12.330 @@ -704,6 +734,9 @@ CONFIG_IEEE80211=m
  12.331  CONFIG_IEEE80211_CRYPT_WEP=m
  12.332  CONFIG_IEEE80211_CRYPT_CCMP=m
  12.333  CONFIG_IEEE80211_CRYPT_TKIP=m
  12.334 +CONFIG_IEEE80211_SOFTMAC=m
  12.335 +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
  12.336 +CONFIG_WIRELESS_EXT=y
  12.337  
  12.338  #
  12.339  # Device Drivers
  12.340 @@ -716,6 +749,7 @@ CONFIG_STANDALONE=y
  12.341  CONFIG_PREVENT_FIRMWARE_BUILD=y
  12.342  CONFIG_FW_LOADER=m
  12.343  # CONFIG_DEBUG_DRIVER is not set
  12.344 +# CONFIG_SYS_HYPERVISOR is not set
  12.345  
  12.346  #
  12.347  # Connector - unified userspace <-> kernelspace linker
  12.348 @@ -772,7 +806,6 @@ CONFIG_MTD_CFI_I2=y
  12.349  # CONFIG_MTD_OTP is not set
  12.350  CONFIG_MTD_CFI_INTELEXT=m
  12.351  CONFIG_MTD_CFI_AMDSTD=m
  12.352 -CONFIG_MTD_CFI_AMDSTD_RETRY=3
  12.353  CONFIG_MTD_CFI_STAA=m
  12.354  CONFIG_MTD_CFI_UTIL=m
  12.355  CONFIG_MTD_RAM=m
  12.356 @@ -815,7 +848,6 @@ CONFIG_MTD_M25P80=m
  12.357  CONFIG_MTD_MTDRAM=m
  12.358  CONFIG_MTDRAM_TOTAL_SIZE=4096
  12.359  CONFIG_MTDRAM_ERASE_SIZE=128
  12.360 -# CONFIG_MTD_BLKMTD is not set
  12.361  CONFIG_MTD_BLOCK2MTD=m
  12.362  
  12.363  #
  12.364 @@ -836,6 +868,7 @@ CONFIG_MTD_DOCPROBE_55AA=y
  12.365  #
  12.366  CONFIG_MTD_NAND=m
  12.367  # CONFIG_MTD_NAND_VERIFY_WRITE is not set
  12.368 +# CONFIG_MTD_NAND_ECC_SMC is not set
  12.369  CONFIG_MTD_NAND_IDS=m
  12.370  CONFIG_MTD_NAND_DISKONCHIP=m
  12.371  # CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
  12.372 @@ -848,6 +881,7 @@ CONFIG_MTD_NAND_NANDSIM=m
  12.373  #
  12.374  CONFIG_MTD_ONENAND=m
  12.375  # CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
  12.376 +# CONFIG_MTD_ONENAND_OTP is not set
  12.377  
  12.378  #
  12.379  # Parallel port support
  12.380 @@ -859,6 +893,7 @@ CONFIG_PARPORT_PC=m
  12.381  # CONFIG_PARPORT_PC_PCMCIA is not set
  12.382  CONFIG_PARPORT_NOT_PC=y
  12.383  # CONFIG_PARPORT_GSC is not set
  12.384 +CONFIG_PARPORT_AX88796=m
  12.385  CONFIG_PARPORT_1284=y
  12.386  
  12.387  #
  12.388 @@ -920,6 +955,7 @@ CONFIG_BLK_DEV_SX8=m
  12.389  CONFIG_BLK_DEV_RAM=y
  12.390  CONFIG_BLK_DEV_RAM_COUNT=16
  12.391  CONFIG_BLK_DEV_RAM_SIZE=16384
  12.392 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
  12.393  CONFIG_BLK_DEV_INITRD=y
  12.394  CONFIG_CDROM_PKTCDVD=m
  12.395  CONFIG_CDROM_PKTCDVD_BUFFERS=8
  12.396 @@ -1062,6 +1098,7 @@ CONFIG_SCSI_ATA_PIIX=m
  12.397  CONFIG_SCSI_SATA_MV=m
  12.398  CONFIG_SCSI_SATA_NV=m
  12.399  CONFIG_SCSI_PDC_ADMA=m
  12.400 +CONFIG_SCSI_HPTIOP=m
  12.401  CONFIG_SCSI_SATA_QSTOR=m
  12.402  CONFIG_SCSI_SATA_PROMISE=m
  12.403  CONFIG_SCSI_SATA_SX4=m
  12.404 @@ -1092,13 +1129,10 @@ CONFIG_SCSI_SYM53C8XX_2=m
  12.405  CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
  12.406  CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
  12.407  CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
  12.408 -# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
  12.409 +CONFIG_SCSI_SYM53C8XX_MMIO=y
  12.410  # CONFIG_SCSI_IPR is not set
  12.411 -CONFIG_SCSI_QLOGIC_FC=m
  12.412 -CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
  12.413  CONFIG_SCSI_QLOGIC_1280=m
  12.414  CONFIG_SCSI_QLA_FC=m
  12.415 -# CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE is not set
  12.416  CONFIG_SCSI_LPFC=m
  12.417  CONFIG_SCSI_DC395x=m
  12.418  CONFIG_SCSI_DC390T=m
  12.419 @@ -1120,8 +1154,8 @@ CONFIG_MD_LINEAR=m
  12.420  CONFIG_MD_RAID0=m
  12.421  CONFIG_MD_RAID1=m
  12.422  CONFIG_MD_RAID10=m
  12.423 -CONFIG_MD_RAID5=m
  12.424 -CONFIG_MD_RAID6=m
  12.425 +CONFIG_MD_RAID456=m
  12.426 +CONFIG_MD_RAID5_RESHAPE=y
  12.427  CONFIG_MD_MULTIPATH=m
  12.428  CONFIG_MD_FAULTY=m
  12.429  CONFIG_BLK_DEV_DM=m
  12.430 @@ -1168,7 +1202,6 @@ CONFIG_IEEE1394_OHCI1394=m
  12.431  #
  12.432  CONFIG_IEEE1394_VIDEO1394=m
  12.433  CONFIG_IEEE1394_SBP2=m
  12.434 -# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
  12.435  CONFIG_IEEE1394_ETH1394=m
  12.436  CONFIG_IEEE1394_DV1394=m
  12.437  CONFIG_IEEE1394_RAWIO=m
  12.438 @@ -1223,6 +1256,11 @@ CONFIG_DAVICOM_PHY=m
  12.439  CONFIG_QSEMI_PHY=m
  12.440  CONFIG_LXT_PHY=m
  12.441  CONFIG_CICADA_PHY=m
  12.442 +CONFIG_VITESSE_PHY=m
  12.443 +CONFIG_SMSC_PHY=m
  12.444 +CONFIG_FIXED_PHY=m
  12.445 +# CONFIG_FIXED_MII_10_FDX is not set
  12.446 +# CONFIG_FIXED_MII_100_FDX is not set
  12.447  
  12.448  #
  12.449  # Ethernet (10 or 100Mbit)
  12.450 @@ -1278,6 +1316,7 @@ CONFIG_SUNDANCE=m
  12.451  # CONFIG_SUNDANCE_MMIO is not set
  12.452  CONFIG_VIA_RHINE=m
  12.453  # CONFIG_VIA_RHINE_MMIO is not set
  12.454 +# CONFIG_VIA_RHINE_NAPI is not set
  12.455  # CONFIG_NET_POCKET is not set
  12.456  
  12.457  #
  12.458 @@ -1311,6 +1350,7 @@ CONFIG_IXGB=m
  12.459  CONFIG_IXGB_NAPI=y
  12.460  CONFIG_S2IO=m
  12.461  CONFIG_S2IO_NAPI=y
  12.462 +CONFIG_MYRI10GE=m
  12.463  
  12.464  #
  12.465  # Token Ring devices
  12.466 @@ -1326,6 +1366,7 @@ CONFIG_ABYSS=m
  12.467  # Wireless LAN (non-hamradio)
  12.468  #
  12.469  CONFIG_NET_RADIO=y
  12.470 +CONFIG_NET_WIRELESS_RTNETLINK=y
  12.471  
  12.472  #
  12.473  # Obsolete Wireless cards support (pre-802.11)
  12.474 @@ -1346,6 +1387,10 @@ CONFIG_IPW2100=m
  12.475  CONFIG_IPW2100_MONITOR=y
  12.476  # CONFIG_IPW2100_DEBUG is not set
  12.477  CONFIG_IPW2200=m
  12.478 +CONFIG_IPW2200_MONITOR=y
  12.479 +# CONFIG_IPW2200_RADIOTAP is not set
  12.480 +# CONFIG_IPW2200_PROMISCUOUS is not set
  12.481 +CONFIG_IPW2200_QOS=y
  12.482  # CONFIG_IPW2200_DEBUG is not set
  12.483  CONFIG_AIRO=m
  12.484  CONFIG_HERMES=m
  12.485 @@ -1369,12 +1414,22 @@ CONFIG_PCI_ATMEL=m
  12.486  # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
  12.487  #
  12.488  CONFIG_PRISM54=m
  12.489 +CONFIG_USB_ZD1201=m
  12.490  CONFIG_HOSTAP=m
  12.491  CONFIG_HOSTAP_FIRMWARE=y
  12.492  CONFIG_HOSTAP_FIRMWARE_NVRAM=y
  12.493  CONFIG_HOSTAP_PLX=m
  12.494  CONFIG_HOSTAP_PCI=m
  12.495  # CONFIG_HOSTAP_CS is not set
  12.496 +CONFIG_BCM43XX=m
  12.497 +CONFIG_BCM43XX_DEBUG=y
  12.498 +CONFIG_BCM43XX_DMA=y
  12.499 +CONFIG_BCM43XX_PIO=y
  12.500 +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
  12.501 +# CONFIG_BCM43XX_DMA_MODE is not set
  12.502 +# CONFIG_BCM43XX_PIO_MODE is not set
  12.503 +CONFIG_ZD1211RW=m
  12.504 +# CONFIG_ZD1211RW_DEBUG is not set
  12.505  CONFIG_NET_WIRELESS=y
  12.506  
  12.507  #
  12.508 @@ -1528,6 +1583,15 @@ CONFIG_HISAX_HDLC=y
  12.509  #
  12.510  
  12.511  #
  12.512 +# Siemens Gigaset
  12.513 +#
  12.514 +CONFIG_ISDN_DRV_GIGASET=m
  12.515 +CONFIG_GIGASET_BASE=m
  12.516 +CONFIG_GIGASET_M105=m
  12.517 +# CONFIG_GIGASET_DEBUG is not set
  12.518 +# CONFIG_GIGASET_UNDOCREQ is not set
  12.519 +
  12.520 +#
  12.521  # CAPI subsystem
  12.522  #
  12.523  CONFIG_ISDN_CAPI=m
  12.524 @@ -1655,6 +1719,7 @@ CONFIG_GAMEPORT_FM801=m
  12.525  CONFIG_VT=y
  12.526  CONFIG_VT_CONSOLE=y
  12.527  CONFIG_HW_CONSOLE=y
  12.528 +CONFIG_VT_HW_CONSOLE_BINDING=y
  12.529  # CONFIG_SERIAL_NONSTANDARD is not set
  12.530  
  12.531  #
  12.532 @@ -1726,7 +1791,10 @@ CONFIG_WDT_501_PCI=y
  12.533  # USB-based Watchdog Cards
  12.534  #
  12.535  CONFIG_USBPCWATCHDOG=m
  12.536 -CONFIG_HW_RANDOM=m
  12.537 +CONFIG_HW_RANDOM=y
  12.538 +CONFIG_HW_RANDOM_INTEL=m
  12.539 +CONFIG_HW_RANDOM_AMD=m
  12.540 +CONFIG_HW_RANDOM_GEODE=m
  12.541  CONFIG_NVRAM=y
  12.542  CONFIG_RTC=y
  12.543  CONFIG_DTLK=m
  12.544 @@ -1739,6 +1807,8 @@ CONFIG_APPLICOM=m
  12.545  CONFIG_AGP=m
  12.546  CONFIG_AGP_AMD64=m
  12.547  CONFIG_AGP_INTEL=m
  12.548 +CONFIG_AGP_SIS=m
  12.549 +CONFIG_AGP_VIA=m
  12.550  CONFIG_DRM=m
  12.551  CONFIG_DRM_TDFX=m
  12.552  CONFIG_DRM_R128=m
  12.553 @@ -1758,6 +1828,8 @@ CONFIG_DRM_SAVAGE=m
  12.554  # CONFIG_CARDMAN_4000 is not set
  12.555  # CONFIG_CARDMAN_4040 is not set
  12.556  # CONFIG_MWAVE is not set
  12.557 +CONFIG_PC8736x_GPIO=m
  12.558 +CONFIG_NSC_GPIO=m
  12.559  # CONFIG_RAW_DRIVER is not set
  12.560  # CONFIG_HPET is not set
  12.561  CONFIG_HANGCHECK_TIMER=m
  12.562 @@ -1800,11 +1872,11 @@ CONFIG_I2C_I810=m
  12.563  CONFIG_I2C_PIIX4=m
  12.564  CONFIG_I2C_ISA=m
  12.565  CONFIG_I2C_NFORCE2=m
  12.566 +CONFIG_I2C_OCORES=m
  12.567  CONFIG_I2C_PARPORT=m
  12.568  CONFIG_I2C_PARPORT_LIGHT=m
  12.569  CONFIG_I2C_PROSAVAGE=m
  12.570  CONFIG_I2C_SAVAGE4=m
  12.571 -CONFIG_SCx200_ACB=m
  12.572  CONFIG_I2C_SIS5595=m
  12.573  CONFIG_I2C_SIS630=m
  12.574  CONFIG_I2C_SIS96X=m
  12.575 @@ -1823,9 +1895,7 @@ CONFIG_SENSORS_EEPROM=m
  12.576  CONFIG_SENSORS_PCF8574=m
  12.577  CONFIG_SENSORS_PCA9539=m
  12.578  CONFIG_SENSORS_PCF8591=m
  12.579 -CONFIG_SENSORS_RTC8564=m
  12.580  CONFIG_SENSORS_MAX6875=m
  12.581 -CONFIG_RTC_X1205_I2C=m
  12.582  # CONFIG_I2C_DEBUG_CORE is not set
  12.583  # CONFIG_I2C_DEBUG_ALGO is not set
  12.584  # CONFIG_I2C_DEBUG_BUS is not set
  12.585 @@ -1852,19 +1922,29 @@ CONFIG_SPI_BUTTERFLY=m
  12.586  # Dallas's 1-wire bus
  12.587  #
  12.588  CONFIG_W1=m
  12.589 -CONFIG_W1_MATROX=m
  12.590 -CONFIG_W1_DS9490=m
  12.591 -CONFIG_W1_DS9490_BRIDGE=m
  12.592 -CONFIG_W1_THERM=m
  12.593 -CONFIG_W1_SMEM=m
  12.594 -CONFIG_W1_DS2433=m
  12.595 -CONFIG_W1_DS2433_CRC=y
  12.596 +CONFIG_W1_CON=y
  12.597 +
  12.598 +#
  12.599 +# 1-wire Bus Masters
  12.600 +#
  12.601 +CONFIG_W1_MASTER_MATROX=m
  12.602 +CONFIG_W1_MASTER_DS2490=m
  12.603 +CONFIG_W1_MASTER_DS2482=m
  12.604 +
  12.605 +#
  12.606 +# 1-wire Slaves
  12.607 +#
  12.608 +CONFIG_W1_SLAVE_THERM=m
  12.609 +CONFIG_W1_SLAVE_SMEM=m
  12.610 +CONFIG_W1_SLAVE_DS2433=m
  12.611 +# CONFIG_W1_SLAVE_DS2433_CRC is not set
  12.612  
  12.613  #
  12.614  # Hardware Monitoring support
  12.615  #
  12.616  CONFIG_HWMON=m
  12.617  CONFIG_HWMON_VID=m
  12.618 +CONFIG_SENSORS_ABITUGURU=m
  12.619  CONFIG_SENSORS_ADM1021=m
  12.620  CONFIG_SENSORS_ADM1025=m
  12.621  CONFIG_SENSORS_ADM1026=m
  12.622 @@ -1880,6 +1960,7 @@ CONFIG_SENSORS_GL518SM=m
  12.623  CONFIG_SENSORS_GL520SM=m
  12.624  CONFIG_SENSORS_IT87=m
  12.625  CONFIG_SENSORS_LM63=m
  12.626 +CONFIG_SENSORS_LM70=m
  12.627  CONFIG_SENSORS_LM75=m
  12.628  CONFIG_SENSORS_LM77=m
  12.629  CONFIG_SENSORS_LM78=m
  12.630 @@ -1893,10 +1974,12 @@ CONFIG_SENSORS_MAX1619=m
  12.631  CONFIG_SENSORS_PC87360=m
  12.632  CONFIG_SENSORS_SIS5595=m
  12.633  CONFIG_SENSORS_SMSC47M1=m
  12.634 +CONFIG_SENSORS_SMSC47M192=m
  12.635  CONFIG_SENSORS_SMSC47B397=m
  12.636  CONFIG_SENSORS_VIA686A=m
  12.637  CONFIG_SENSORS_VT8231=m
  12.638  CONFIG_SENSORS_W83781D=m
  12.639 +CONFIG_SENSORS_W83791D=m
  12.640  CONFIG_SENSORS_W83792D=m
  12.641  CONFIG_SENSORS_W83L785TS=m
  12.642  CONFIG_SENSORS_W83627HF=m
  12.643 @@ -1910,22 +1993,22 @@ CONFIG_SENSORS_HDAPS=m
  12.644  CONFIG_IBM_ASM=m
  12.645  
  12.646  #
  12.647 -# Multimedia Capabilities Port drivers
  12.648 -#
  12.649 -
  12.650 -#
  12.651  # Multimedia devices
  12.652  #
  12.653  CONFIG_VIDEO_DEV=m
  12.654 +CONFIG_VIDEO_V4L1=y
  12.655 +CONFIG_VIDEO_V4L1_COMPAT=y
  12.656 +CONFIG_VIDEO_V4L2=y
  12.657  
  12.658  #
  12.659 -# Video For Linux
  12.660 +# Video Capture Adapters
  12.661  #
  12.662  
  12.663  #
  12.664 -# Video Adapters
  12.665 +# Video Capture Adapters
  12.666  #
  12.667  # CONFIG_VIDEO_ADV_DEBUG is not set
  12.668 +CONFIG_VIDEO_VIVI=m
  12.669  CONFIG_VIDEO_BT848=m
  12.670  CONFIG_VIDEO_BT848_DVB=y
  12.671  CONFIG_VIDEO_SAA6588=m
  12.672 @@ -1935,6 +2018,7 @@ CONFIG_VIDEO_W9966=m
  12.673  CONFIG_VIDEO_CPIA=m
  12.674  CONFIG_VIDEO_CPIA_PP=m
  12.675  CONFIG_VIDEO_CPIA_USB=m
  12.676 +CONFIG_VIDEO_CPIA2=m
  12.677  CONFIG_VIDEO_SAA5246A=m
  12.678  CONFIG_VIDEO_SAA5249=m
  12.679  CONFIG_TUNER_3036=m
  12.680 @@ -1945,6 +2029,7 @@ CONFIG_VIDEO_ZORAN_DC10=m
  12.681  CONFIG_VIDEO_ZORAN_DC30=m
  12.682  CONFIG_VIDEO_ZORAN_LML33=m
  12.683  CONFIG_VIDEO_ZORAN_LML33R10=m
  12.684 +CONFIG_VIDEO_ZORAN_AVS6EYES=m
  12.685  CONFIG_VIDEO_SAA7134=m
  12.686  CONFIG_VIDEO_SAA7134_ALSA=m
  12.687  CONFIG_VIDEO_SAA7134_DVB=m
  12.688 @@ -1953,15 +2038,51 @@ CONFIG_VIDEO_MXB=m
  12.689  CONFIG_VIDEO_DPC=m
  12.690  CONFIG_VIDEO_HEXIUM_ORION=m
  12.691  CONFIG_VIDEO_HEXIUM_GEMINI=m
  12.692 +CONFIG_VIDEO_CX88_VP3054=m
  12.693  CONFIG_VIDEO_CX88=m
  12.694  CONFIG_VIDEO_CX88_ALSA=m
  12.695 +CONFIG_VIDEO_CX88_BLACKBIRD=m
  12.696  CONFIG_VIDEO_CX88_DVB=m
  12.697  CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y
  12.698 -CONFIG_VIDEO_CX88_VP3054=m
  12.699 +
  12.700 +#
  12.701 +# Encoders and Decoders
  12.702 +#
  12.703 +CONFIG_VIDEO_MSP3400=m
  12.704 +CONFIG_VIDEO_CS53L32A=m
  12.705 +CONFIG_VIDEO_TLV320AIC23B=m
  12.706 +CONFIG_VIDEO_WM8775=m
  12.707 +CONFIG_VIDEO_WM8739=m
  12.708 +CONFIG_VIDEO_CX2341X=m
  12.709 +CONFIG_VIDEO_CX25840=m
  12.710 +CONFIG_VIDEO_SAA711X=m
  12.711 +CONFIG_VIDEO_SAA7127=m
  12.712 +CONFIG_VIDEO_UPD64031A=m
  12.713 +CONFIG_VIDEO_UPD64083=m
  12.714 +
  12.715 +#
  12.716 +# V4L USB devices
  12.717 +#
  12.718 +CONFIG_VIDEO_PVRUSB2=m
  12.719 +CONFIG_VIDEO_PVRUSB2_24XXX=y
  12.720 +CONFIG_VIDEO_PVRUSB2_SYSFS=y
  12.721 +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
  12.722  CONFIG_VIDEO_EM28XX=m
  12.723 +CONFIG_VIDEO_USBVIDEO=m
  12.724 +CONFIG_USB_VICAM=m
  12.725 +CONFIG_USB_IBMCAM=m
  12.726 +CONFIG_USB_KONICAWC=m
  12.727 +CONFIG_USB_QUICKCAM_MESSENGER=m
  12.728 +CONFIG_USB_ET61X251=m
  12.729  CONFIG_VIDEO_OVCAMCHIP=m
  12.730 -CONFIG_VIDEO_AUDIO_DECODER=m
  12.731 -CONFIG_VIDEO_DECODER=m
  12.732 +CONFIG_USB_W9968CF=m
  12.733 +CONFIG_USB_OV511=m
  12.734 +CONFIG_USB_SE401=m
  12.735 +CONFIG_USB_SN9C102=m
  12.736 +CONFIG_USB_STV680=m
  12.737 +CONFIG_USB_ZC0301=m
  12.738 +CONFIG_USB_PWC=m
  12.739 +# CONFIG_USB_PWC_DEBUG is not set
  12.740  
  12.741  #
  12.742  # Radio Adapters
  12.743 @@ -1969,6 +2090,7 @@ CONFIG_VIDEO_DECODER=m
  12.744  CONFIG_RADIO_GEMTEK_PCI=m
  12.745  CONFIG_RADIO_MAXIRADIO=m
  12.746  CONFIG_RADIO_MAESTRO=m
  12.747 +CONFIG_USB_DSBR=m
  12.748  
  12.749  #
  12.750  # Digital Video Broadcasting Devices
  12.751 @@ -2000,6 +2122,7 @@ CONFIG_DVB_USB_CXUSB=m
  12.752  CONFIG_DVB_USB_DIGITV=m
  12.753  CONFIG_DVB_USB_VP7045=m
  12.754  CONFIG_DVB_USB_VP702X=m
  12.755 +CONFIG_DVB_USB_GP8PSK=m
  12.756  CONFIG_DVB_USB_NOVA_T_USB2=m
  12.757  CONFIG_DVB_USB_DTT200U=m
  12.758  CONFIG_DVB_TTUSB_BUDGET=m
  12.759 @@ -2060,6 +2183,7 @@ CONFIG_DVB_L64781=m
  12.760  CONFIG_DVB_TDA1004X=m
  12.761  CONFIG_DVB_NXT6000=m
  12.762  CONFIG_DVB_MT352=m
  12.763 +CONFIG_DVB_ZL10353=m
  12.764  CONFIG_DVB_DIB3000MB=m
  12.765  CONFIG_DVB_DIB3000MC=m
  12.766  
  12.767 @@ -2071,13 +2195,20 @@ CONFIG_DVB_TDA10021=m
  12.768  CONFIG_DVB_STV0297=m
  12.769  
  12.770  #
  12.771 -# ATSC (North American/Korean Terresterial DTV) frontends
  12.772 +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
  12.773  #
  12.774  CONFIG_DVB_NXT200X=m
  12.775  CONFIG_DVB_OR51211=m
  12.776  CONFIG_DVB_OR51132=m
  12.777  CONFIG_DVB_BCM3510=m
  12.778  CONFIG_DVB_LGDT330X=m
  12.779 +
  12.780 +#
  12.781 +# Miscellaneous devices
  12.782 +#
  12.783 +CONFIG_DVB_PLL=m
  12.784 +CONFIG_DVB_LNBP21=m
  12.785 +CONFIG_DVB_ISL6421=m
  12.786  CONFIG_VIDEO_SAA7146=m
  12.787  CONFIG_VIDEO_SAA7146_VV=m
  12.788  CONFIG_VIDEO_VIDEOBUF=m
  12.789 @@ -2087,15 +2218,18 @@ CONFIG_VIDEO_BUF_DVB=m
  12.790  CONFIG_VIDEO_BTCX=m
  12.791  CONFIG_VIDEO_IR=m
  12.792  CONFIG_VIDEO_TVEEPROM=m
  12.793 +CONFIG_USB_DABUSB=m
  12.794  
  12.795  #
  12.796  # Graphics support
  12.797  #
  12.798 +CONFIG_FIRMWARE_EDID=y
  12.799  CONFIG_FB=y
  12.800  CONFIG_FB_CFB_FILLRECT=y
  12.801  CONFIG_FB_CFB_COPYAREA=y
  12.802  CONFIG_FB_CFB_IMAGEBLIT=y
  12.803  # CONFIG_FB_MACMODES is not set
  12.804 +# CONFIG_FB_BACKLIGHT is not set
  12.805  CONFIG_FB_MODE_HELPERS=y
  12.806  CONFIG_FB_TILEBLITTING=y
  12.807  CONFIG_FB_CIRRUS=m
  12.808 @@ -2106,7 +2240,6 @@ CONFIG_FB_ARC=m
  12.809  # CONFIG_FB_IMSTT is not set
  12.810  CONFIG_FB_VGA16=m
  12.811  CONFIG_FB_VESA=y
  12.812 -CONFIG_VIDEO_SELECT=y
  12.813  CONFIG_FB_HGA=m
  12.814  CONFIG_FB_HGA_ACCEL=y
  12.815  CONFIG_FB_S1D13XXX=m
  12.816 @@ -2115,6 +2248,8 @@ CONFIG_FB_NVIDIA_I2C=y
  12.817  CONFIG_FB_RIVA=m
  12.818  CONFIG_FB_RIVA_I2C=y
  12.819  # CONFIG_FB_RIVA_DEBUG is not set
  12.820 +CONFIG_FB_INTEL=m
  12.821 +# CONFIG_FB_INTEL_DEBUG is not set
  12.822  CONFIG_FB_MATROX=m
  12.823  CONFIG_FB_MATROX_MILLENIUM=y
  12.824  CONFIG_FB_MATROX_MYSTIQUE=y
  12.825 @@ -2122,7 +2257,6 @@ CONFIG_FB_MATROX_G=y
  12.826  CONFIG_FB_MATROX_I2C=m
  12.827  CONFIG_FB_MATROX_MAVEN=m
  12.828  CONFIG_FB_MATROX_MULTIHEAD=y
  12.829 -# CONFIG_FB_RADEON_OLD is not set
  12.830  CONFIG_FB_RADEON=m
  12.831  CONFIG_FB_RADEON_I2C=y
  12.832  # CONFIG_FB_RADEON_DEBUG is not set
  12.833 @@ -2145,6 +2279,7 @@ CONFIG_FB_VOODOO1=m
  12.834  CONFIG_FB_TRIDENT=m
  12.835  CONFIG_FB_TRIDENT_ACCEL=y
  12.836  CONFIG_FB_GEODE=y
  12.837 +CONFIG_FB_GEODE_GX=m
  12.838  CONFIG_FB_GEODE_GX1=m
  12.839  CONFIG_FB_VIRTUAL=m
  12.840  
  12.841 @@ -2152,6 +2287,7 @@ CONFIG_FB_VIRTUAL=m
  12.842  # Console display driver support
  12.843  #
  12.844  CONFIG_VGA_CONSOLE=y
  12.845 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
  12.846  CONFIG_DUMMY_CONSOLE=y
  12.847  CONFIG_FRAMEBUFFER_CONSOLE=y
  12.848  CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
  12.849 @@ -2190,11 +2326,13 @@ CONFIG_SND_SEQ_DUMMY=m
  12.850  CONFIG_SND_OSSEMUL=y
  12.851  CONFIG_SND_MIXER_OSS=m
  12.852  CONFIG_SND_PCM_OSS=m
  12.853 +CONFIG_SND_PCM_OSS_PLUGINS=y
  12.854  CONFIG_SND_SEQUENCER_OSS=y
  12.855  CONFIG_SND_RTCTIMER=m
  12.856  CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
  12.857  CONFIG_SND_DYNAMIC_MINORS=y
  12.858  CONFIG_SND_SUPPORT_OLD_API=y
  12.859 +CONFIG_SND_VERBOSE_PROCFS=y
  12.860  # CONFIG_SND_VERBOSE_PRINTK is not set
  12.861  # CONFIG_SND_DEBUG is not set
  12.862  
  12.863 @@ -2216,6 +2354,7 @@ CONFIG_SND_MPU401=m
  12.864  # PCI devices
  12.865  #
  12.866  CONFIG_SND_AD1889=m
  12.867 +CONFIG_SND_ALS300=m
  12.868  CONFIG_SND_ALS4000=m
  12.869  CONFIG_SND_ALI5451=m
  12.870  CONFIG_SND_ATIIXP=m
  12.871 @@ -2231,6 +2370,18 @@ CONFIG_SND_CMIPCI=m
  12.872  CONFIG_SND_CS4281=m
  12.873  CONFIG_SND_CS46XX=m
  12.874  CONFIG_SND_CS46XX_NEW_DSP=y
  12.875 +CONFIG_SND_DARLA20=m
  12.876 +CONFIG_SND_GINA20=m
  12.877 +CONFIG_SND_LAYLA20=m
  12.878 +CONFIG_SND_DARLA24=m
  12.879 +CONFIG_SND_GINA24=m
  12.880 +CONFIG_SND_LAYLA24=m
  12.881 +CONFIG_SND_MONA=m
  12.882 +CONFIG_SND_MIA=m
  12.883 +CONFIG_SND_ECHO3G=m
  12.884 +CONFIG_SND_INDIGO=m
  12.885 +CONFIG_SND_INDIGOIO=m
  12.886 +CONFIG_SND_INDIGODJ=m
  12.887  CONFIG_SND_EMU10K1=m
  12.888  CONFIG_SND_EMU10K1X=m
  12.889  CONFIG_SND_ENS1370=m
  12.890 @@ -2238,7 +2389,7 @@ CONFIG_SND_ENS1371=m
  12.891  CONFIG_SND_ES1938=m
  12.892  CONFIG_SND_ES1968=m
  12.893  CONFIG_SND_FM801=m
  12.894 -# CONFIG_SND_FM801_TEA575X_BOOL is not set
  12.895 +CONFIG_SND_FM801_TEA575X_BOOL=y
  12.896  CONFIG_SND_FM801_TEA575X=m
  12.897  CONFIG_SND_HDA_INTEL=m
  12.898  CONFIG_SND_HDSP=m
  12.899 @@ -2252,6 +2403,7 @@ CONFIG_SND_MAESTRO3=m
  12.900  CONFIG_SND_MIXART=m
  12.901  CONFIG_SND_NM256=m
  12.902  CONFIG_SND_PCXHR=m
  12.903 +CONFIG_SND_RIPTIDE=m
  12.904  CONFIG_SND_RME32=m
  12.905  CONFIG_SND_RME96=m
  12.906  CONFIG_SND_RME9652=m
  12.907 @@ -2271,6 +2423,8 @@ CONFIG_SND_USB_USX2Y=m
  12.908  #
  12.909  # PCMCIA devices
  12.910  #
  12.911 +CONFIG_SND_VXPOCKET=m
  12.912 +CONFIG_SND_PDAUDIOCF=m
  12.913  
  12.914  #
  12.915  # Open Sound System
  12.916 @@ -2282,6 +2436,7 @@ CONFIG_SND_USB_USX2Y=m
  12.917  #
  12.918  CONFIG_USB_ARCH_HAS_HCD=y
  12.919  CONFIG_USB_ARCH_HAS_OHCI=y
  12.920 +CONFIG_USB_ARCH_HAS_EHCI=y
  12.921  CONFIG_USB=m
  12.922  # CONFIG_USB_DEBUG is not set
  12.923  
  12.924 @@ -2300,6 +2455,7 @@ CONFIG_USB_DEVICEFS=y
  12.925  CONFIG_USB_EHCI_HCD=m
  12.926  CONFIG_USB_EHCI_SPLIT_ISO=y
  12.927  CONFIG_USB_EHCI_ROOT_HUB_TT=y
  12.928 +CONFIG_USB_EHCI_TT_NEWSCHED=y
  12.929  CONFIG_USB_ISP116X_HCD=m
  12.930  CONFIG_USB_OHCI_HCD=m
  12.931  # CONFIG_USB_OHCI_BIG_ENDIAN is not set
  12.932 @@ -2311,7 +2467,6 @@ CONFIG_USB_SL811_HCD=m
  12.933  #
  12.934  # USB Device Class drivers
  12.935  #
  12.936 -# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
  12.937  CONFIG_USB_ACM=m
  12.938  CONFIG_USB_PRINTER=m
  12.939  
  12.940 @@ -2357,9 +2512,11 @@ CONFIG_USB_WACOM=m
  12.941  CONFIG_USB_ACECAD=m
  12.942  CONFIG_USB_KBTAB=m
  12.943  CONFIG_USB_POWERMATE=m
  12.944 -CONFIG_USB_MTOUCH=m
  12.945 -CONFIG_USB_ITMTOUCH=m
  12.946 -CONFIG_USB_EGALAX=m
  12.947 +CONFIG_USB_TOUCHSCREEN=m
  12.948 +CONFIG_USB_TOUCHSCREEN_EGALAX=y
  12.949 +CONFIG_USB_TOUCHSCREEN_PANJIT=y
  12.950 +CONFIG_USB_TOUCHSCREEN_3M=y
  12.951 +CONFIG_USB_TOUCHSCREEN_ITM=y
  12.952  CONFIG_USB_YEALINK=m
  12.953  CONFIG_USB_XPAD=m
  12.954  CONFIG_USB_ATI_REMOTE=m
  12.955 @@ -2374,22 +2531,6 @@ CONFIG_USB_MDC800=m
  12.956  CONFIG_USB_MICROTEK=m
  12.957  
  12.958  #
  12.959 -# USB Multimedia devices
  12.960 -#
  12.961 -CONFIG_USB_DABUSB=m
  12.962 -CONFIG_USB_VICAM=m
  12.963 -CONFIG_USB_DSBR=m
  12.964 -CONFIG_USB_ET61X251=m
  12.965 -CONFIG_USB_IBMCAM=m
  12.966 -CONFIG_USB_KONICAWC=m
  12.967 -CONFIG_USB_OV511=m
  12.968 -CONFIG_USB_SE401=m
  12.969 -CONFIG_USB_SN9C102=m
  12.970 -CONFIG_USB_STV680=m
  12.971 -CONFIG_USB_W9968CF=m
  12.972 -CONFIG_USB_PWC=m
  12.973 -
  12.974 -#
  12.975  # USB Network Adapters
  12.976  #
  12.977  CONFIG_USB_CATC=m
  12.978 @@ -2410,7 +2551,6 @@ CONFIG_USB_BELKIN=y
  12.979  CONFIG_USB_ARMLINUX=y
  12.980  CONFIG_USB_EPSON2888=y
  12.981  CONFIG_USB_NET_ZAURUS=m
  12.982 -CONFIG_USB_ZD1201=m
  12.983  CONFIG_USB_MON=y
  12.984  
  12.985  #
  12.986 @@ -2424,7 +2564,7 @@ CONFIG_USB_USS720=m
  12.987  CONFIG_USB_SERIAL=m
  12.988  CONFIG_USB_SERIAL_GENERIC=y
  12.989  CONFIG_USB_SERIAL_AIRPRIME=m
  12.990 -CONFIG_USB_SERIAL_ANYDATA=m
  12.991 +CONFIG_USB_SERIAL_ARK3116=m
  12.992  CONFIG_USB_SERIAL_BELKIN=m
  12.993  CONFIG_USB_SERIAL_WHITEHEAT=m
  12.994  CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
  12.995 @@ -2432,6 +2572,7 @@ CONFIG_USB_SERIAL_CP2101=m
  12.996  CONFIG_USB_SERIAL_CYPRESS_M8=m
  12.997  CONFIG_USB_SERIAL_EMPEG=m
  12.998  CONFIG_USB_SERIAL_FTDI_SIO=m
  12.999 +CONFIG_USB_SERIAL_FUNSOFT=m
 12.1000  CONFIG_USB_SERIAL_VISOR=m
 12.1001  CONFIG_USB_SERIAL_IPAQ=m
 12.1002  CONFIG_USB_SERIAL_IR=m
 12.1003 @@ -2456,10 +2597,12 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
 12.1004  CONFIG_USB_SERIAL_KLSI=m
 12.1005  CONFIG_USB_SERIAL_KOBIL_SCT=m
 12.1006  CONFIG_USB_SERIAL_MCT_U232=m
 12.1007 +CONFIG_USB_SERIAL_NAVMAN=m
 12.1008  CONFIG_USB_SERIAL_PL2303=m
 12.1009  CONFIG_USB_SERIAL_HP4X=m
 12.1010  CONFIG_USB_SERIAL_SAFE=m
 12.1011  CONFIG_USB_SERIAL_SAFE_PADDED=y
 12.1012 +CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 12.1013  CONFIG_USB_SERIAL_TI=m
 12.1014  CONFIG_USB_SERIAL_CYBERJACK=m
 12.1015  CONFIG_USB_SERIAL_XIRCOM=m
 12.1016 @@ -2477,10 +2620,12 @@ CONFIG_USB_RIO500=m
 12.1017  CONFIG_USB_LEGOTOWER=m
 12.1018  CONFIG_USB_LCD=m
 12.1019  CONFIG_USB_LED=m
 12.1020 +CONFIG_USB_CYPRESS_CY7C63=m
 12.1021  CONFIG_USB_CYTHERM=m
 12.1022  CONFIG_USB_PHIDGETKIT=m
 12.1023  CONFIG_USB_PHIDGETSERVO=m
 12.1024  CONFIG_USB_IDMOUSE=m
 12.1025 +CONFIG_USB_APPLEDISPLAY=m
 12.1026  CONFIG_USB_SISUSBVGA=m
 12.1027  CONFIG_USB_SISUSBVGA_CON=y
 12.1028  CONFIG_USB_LD=m
 12.1029 @@ -2506,19 +2651,41 @@ CONFIG_USB_XUSBATM=m
 12.1030  CONFIG_MMC=m
 12.1031  # CONFIG_MMC_DEBUG is not set
 12.1032  CONFIG_MMC_BLOCK=m
 12.1033 +CONFIG_MMC_SDHCI=m
 12.1034  CONFIG_MMC_WBSD=m
 12.1035  
 12.1036  #
 12.1037 +# LED devices
 12.1038 +#
 12.1039 +CONFIG_NEW_LEDS=y
 12.1040 +CONFIG_LEDS_CLASS=m
 12.1041 +
 12.1042 +#
 12.1043 +# LED drivers
 12.1044 +#
 12.1045 +
 12.1046 +#
 12.1047 +# LED Triggers
 12.1048 +#
 12.1049 +CONFIG_LEDS_TRIGGERS=y
 12.1050 +CONFIG_LEDS_TRIGGER_TIMER=m
 12.1051 +CONFIG_LEDS_TRIGGER_IDE_DISK=y
 12.1052 +CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 12.1053 +
 12.1054 +#
 12.1055  # InfiniBand support
 12.1056  #
 12.1057  CONFIG_INFINIBAND=m
 12.1058  CONFIG_INFINIBAND_USER_MAD=m
 12.1059  CONFIG_INFINIBAND_USER_ACCESS=m
 12.1060 +CONFIG_INFINIBAND_ADDR_TRANS=y
 12.1061  CONFIG_INFINIBAND_MTHCA=m
 12.1062 -# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
 12.1063 +CONFIG_INFINIBAND_MTHCA_DEBUG=y
 12.1064  CONFIG_INFINIBAND_IPOIB=m
 12.1065 -# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
 12.1066 +CONFIG_INFINIBAND_IPOIB_DEBUG=y
 12.1067 +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
 12.1068  CONFIG_INFINIBAND_SRP=m
 12.1069 +CONFIG_INFINIBAND_ISER=m
 12.1070  
 12.1071  #
 12.1072  # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
 12.1073 @@ -2530,14 +2697,57 @@ CONFIG_EDAC=m
 12.1074  #
 12.1075  # CONFIG_EDAC_DEBUG is not set
 12.1076  CONFIG_EDAC_MM_EDAC=m
 12.1077 -CONFIG_EDAC_E7XXX=m
 12.1078  CONFIG_EDAC_E752X=m
 12.1079 -CONFIG_EDAC_I82875P=m
 12.1080 -CONFIG_EDAC_I82860=m
 12.1081 -CONFIG_EDAC_R82600=m
 12.1082  CONFIG_EDAC_POLL=y
 12.1083  
 12.1084  #
 12.1085 +# Real Time Clock
 12.1086 +#
 12.1087 +CONFIG_RTC_LIB=m
 12.1088 +CONFIG_RTC_CLASS=m
 12.1089 +
 12.1090 +#
 12.1091 +# RTC interfaces
 12.1092 +#
 12.1093 +CONFIG_RTC_INTF_SYSFS=m
 12.1094 +CONFIG_RTC_INTF_PROC=m
 12.1095 +CONFIG_RTC_INTF_DEV=m
 12.1096 +CONFIG_RTC_INTF_DEV_UIE_EMUL=y
 12.1097 +
 12.1098 +#
 12.1099 +# RTC drivers
 12.1100 +#
 12.1101 +CONFIG_RTC_DRV_X1205=m
 12.1102 +CONFIG_RTC_DRV_DS1307=m
 12.1103 +CONFIG_RTC_DRV_DS1553=m
 12.1104 +CONFIG_RTC_DRV_ISL1208=m
 12.1105 +CONFIG_RTC_DRV_DS1672=m
 12.1106 +CONFIG_RTC_DRV_DS1742=m
 12.1107 +CONFIG_RTC_DRV_PCF8563=m
 12.1108 +CONFIG_RTC_DRV_PCF8583=m
 12.1109 +CONFIG_RTC_DRV_RS5C348=m
 12.1110 +CONFIG_RTC_DRV_RS5C372=m
 12.1111 +CONFIG_RTC_DRV_M48T86=m
 12.1112 +CONFIG_RTC_DRV_TEST=m
 12.1113 +CONFIG_RTC_DRV_MAX6902=m
 12.1114 +CONFIG_RTC_DRV_V3020=m
 12.1115 +
 12.1116 +#
 12.1117 +# DMA Engine support
 12.1118 +#
 12.1119 +CONFIG_DMA_ENGINE=y
 12.1120 +
 12.1121 +#
 12.1122 +# DMA Clients
 12.1123 +#
 12.1124 +CONFIG_NET_DMA=y
 12.1125 +
 12.1126 +#
 12.1127 +# DMA Devices
 12.1128 +#
 12.1129 +CONFIG_INTEL_IOATDMA=m
 12.1130 +
 12.1131 +#
 12.1132  # Firmware Drivers
 12.1133  #
 12.1134  CONFIG_DELL_RBU=m
 12.1135 @@ -2572,15 +2782,16 @@ CONFIG_JFS_SECURITY=y
 12.1136  # CONFIG_JFS_STATISTICS is not set
 12.1137  CONFIG_FS_POSIX_ACL=y
 12.1138  CONFIG_XFS_FS=m
 12.1139 -CONFIG_XFS_EXPORT=y
 12.1140  CONFIG_XFS_QUOTA=y
 12.1141  CONFIG_XFS_SECURITY=y
 12.1142  CONFIG_XFS_POSIX_ACL=y
 12.1143  CONFIG_XFS_RT=y
 12.1144  CONFIG_OCFS2_FS=m
 12.1145 +CONFIG_OCFS2_DEBUG_MASKLOG=y
 12.1146  CONFIG_MINIX_FS=m
 12.1147  CONFIG_ROMFS_FS=m
 12.1148  CONFIG_INOTIFY=y
 12.1149 +CONFIG_INOTIFY_USER=y
 12.1150  CONFIG_QUOTA=y
 12.1151  # CONFIG_QFMT_V1 is not set
 12.1152  CONFIG_QFMT_V2=m
 12.1153 @@ -2621,7 +2832,6 @@ CONFIG_SYSFS=y
 12.1154  CONFIG_TMPFS=y
 12.1155  # CONFIG_HUGETLB_PAGE is not set
 12.1156  CONFIG_RAMFS=y
 12.1157 -CONFIG_RELAYFS_FS=m
 12.1158  CONFIG_CONFIGFS_FS=m
 12.1159  
 12.1160  #
 12.1161 @@ -2643,6 +2853,9 @@ CONFIG_JFFS2_FS=m
 12.1162  CONFIG_JFFS2_FS_DEBUG=0
 12.1163  CONFIG_JFFS2_FS_WRITEBUFFER=y
 12.1164  CONFIG_JFFS2_SUMMARY=y
 12.1165 +CONFIG_JFFS2_FS_XATTR=y
 12.1166 +CONFIG_JFFS2_FS_POSIX_ACL=y
 12.1167 +CONFIG_JFFS2_FS_SECURITY=y
 12.1168  CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 12.1169  CONFIG_JFFS2_ZLIB=y
 12.1170  CONFIG_JFFS2_RTIME=y
 12.1171 @@ -2656,6 +2869,8 @@ CONFIG_HPFS_FS=m
 12.1172  CONFIG_QNX4FS_FS=m
 12.1173  CONFIG_SYSV_FS=m
 12.1174  CONFIG_UFS_FS=m
 12.1175 +# CONFIG_UFS_FS_WRITE is not set
 12.1176 +# CONFIG_UFS_DEBUG is not set
 12.1177  
 12.1178  #
 12.1179  # Network File Systems
 12.1180 @@ -2686,8 +2901,10 @@ CONFIG_SMB_NLS_REMOTE="cp850"
 12.1181  CONFIG_CIFS=m
 12.1182  CONFIG_CIFS_STATS=y
 12.1183  # CONFIG_CIFS_STATS2 is not set
 12.1184 +# CONFIG_CIFS_WEAK_PW_HASH is not set
 12.1185  CONFIG_CIFS_XATTR=y
 12.1186  CONFIG_CIFS_POSIX=y
 12.1187 +# CONFIG_CIFS_DEBUG2 is not set
 12.1188  # CONFIG_CIFS_EXPERIMENTAL is not set
 12.1189  CONFIG_NCP_FS=m
 12.1190  CONFIG_NCPFS_PACKET_SIGNING=y
 12.1191 @@ -2778,24 +2995,35 @@ CONFIG_NLS_UTF8=m
 12.1192  #
 12.1193  # Kernel hacking
 12.1194  #
 12.1195 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 12.1196  # CONFIG_PRINTK_TIME is not set
 12.1197  CONFIG_MAGIC_SYSRQ=y
 12.1198 +CONFIG_UNUSED_SYMBOLS=y
 12.1199  CONFIG_DEBUG_KERNEL=y
 12.1200  CONFIG_LOG_BUF_SHIFT=15
 12.1201  CONFIG_DETECT_SOFTLOCKUP=y
 12.1202  # CONFIG_SCHEDSTATS is not set
 12.1203  # CONFIG_DEBUG_SLAB is not set
 12.1204 -# CONFIG_DEBUG_MUTEXES is not set
 12.1205 +# CONFIG_DEBUG_RT_MUTEXES is not set
 12.1206 +# CONFIG_RT_MUTEX_TESTER is not set
 12.1207  # CONFIG_DEBUG_SPINLOCK is not set
 12.1208 +# CONFIG_DEBUG_MUTEXES is not set
 12.1209 +# CONFIG_DEBUG_RWSEMS is not set
 12.1210 +# CONFIG_DEBUG_LOCK_ALLOC is not set
 12.1211 +# CONFIG_PROVE_LOCKING is not set
 12.1212  # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 12.1213 +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 12.1214  # CONFIG_DEBUG_KOBJECT is not set
 12.1215  # CONFIG_DEBUG_INFO is not set
 12.1216  # CONFIG_DEBUG_FS is not set
 12.1217  # CONFIG_DEBUG_VM is not set
 12.1218  # CONFIG_FRAME_POINTER is not set
 12.1219 +# CONFIG_UNWIND_INFO is not set
 12.1220  CONFIG_FORCED_INLINING=y
 12.1221  # CONFIG_RCU_TORTURE_TEST is not set
 12.1222  # CONFIG_DEBUG_RODATA is not set
 12.1223 +# CONFIG_DEBUG_STACKOVERFLOW is not set
 12.1224 +# CONFIG_DEBUG_STACK_USAGE is not set
 12.1225  
 12.1226  #
 12.1227  # Security options
 12.1228 @@ -2844,26 +3072,27 @@ CONFIG_CRYPTO_TEST=m
 12.1229  # Hardware crypto devices
 12.1230  #
 12.1231  CONFIG_XEN=y
 12.1232 -CONFIG_XEN_INTERFACE_VERSION=0x00030202
 12.1233 +CONFIG_XEN_INTERFACE_VERSION=0x00030203
 12.1234  
 12.1235  #
 12.1236  # XEN
 12.1237  #
 12.1238  CONFIG_XEN_PRIVILEGED_GUEST=y
 12.1239  # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
 12.1240 +CONFIG_XEN_PRIVCMD=y
 12.1241 +CONFIG_XEN_XENBUS_DEV=y
 12.1242  CONFIG_XEN_BACKEND=y
 12.1243 +CONFIG_XEN_BLKDEV_BACKEND=y
 12.1244 +CONFIG_XEN_BLKDEV_TAP=y
 12.1245 +CONFIG_XEN_NETDEV_BACKEND=y
 12.1246 +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
 12.1247 +CONFIG_XEN_NETDEV_LOOPBACK=y
 12.1248  CONFIG_XEN_PCIDEV_BACKEND=m
 12.1249  # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
 12.1250  CONFIG_XEN_PCIDEV_BACKEND_PASS=y
 12.1251  # CONFIG_XEN_PCIDEV_BACKEND_SLOT is not set
 12.1252  # CONFIG_XEN_PCIDEV_BE_DEBUG is not set
 12.1253 -CONFIG_XEN_BLKDEV_BACKEND=y
 12.1254 -CONFIG_XEN_BLKDEV_TAP=y
 12.1255 -CONFIG_XEN_NETDEV_BACKEND=y
 12.1256 -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
 12.1257 -CONFIG_XEN_NETDEV_LOOPBACK=y
 12.1258  CONFIG_XEN_TPMDEV_BACKEND=m
 12.1259 -# CONFIG_XEN_TPMDEV_CLOSE_IF_VTPM_FAILS is not set
 12.1260  CONFIG_XEN_BLKDEV_FRONTEND=y
 12.1261  CONFIG_XEN_NETDEV_FRONTEND=y
 12.1262  CONFIG_XEN_FRAMEBUFFER=y
 12.1263 @@ -2874,9 +3103,13 @@ CONFIG_XEN_SYSFS=y
 12.1264  CONFIG_XEN_COMPAT_030002_AND_LATER=y
 12.1265  # CONFIG_XEN_COMPAT_LATEST_ONLY is not set
 12.1266  CONFIG_XEN_COMPAT_030002=y
 12.1267 -CONFIG_HAVE_ARCH_ALLOC_SKB=y
 12.1268 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
 12.1269 +CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
 12.1270  CONFIG_NO_IDLE_HZ=y
 12.1271 +CONFIG_XEN_UTIL=y
 12.1272 +CONFIG_XEN_BALLOON=y
 12.1273 +CONFIG_XEN_DEVMEM=y
 12.1274 +CONFIG_XEN_REBOOT=y
 12.1275 +CONFIG_XEN_SMPBOOT=y
 12.1276  
 12.1277  #
 12.1278  # Library routines
 12.1279 @@ -2893,3 +3126,4 @@ CONFIG_TEXTSEARCH=y
 12.1280  CONFIG_TEXTSEARCH_KMP=m
 12.1281  CONFIG_TEXTSEARCH_BM=m
 12.1282  CONFIG_TEXTSEARCH_FSM=m
 12.1283 +CONFIG_PLIST=y
    13.1 --- a/buildconfigs/mk.linux-2.6-xen	Fri Jan 26 14:19:37 2007 -0700
    13.2 +++ b/buildconfigs/mk.linux-2.6-xen	Sat Jan 27 14:07:19 2007 -0700
    13.3 @@ -1,5 +1,5 @@
    13.4  LINUX_SERIES = 2.6
    13.5 -LINUX_VER    = 2.6.16.33
    13.6 +LINUX_VER    = 2.6.18
    13.7  
    13.8  EXTRAVERSION ?= xen
    13.9  
   13.10 @@ -9,6 +9,10 @@ LINUX_DIR    = build-linux-$(LINUX_VER)-
   13.11  IMAGE_TARGET ?= vmlinuz
   13.12  INSTALL_BOOT_PATH ?= $(DESTDIR)
   13.13  
   13.14 +ifeq ($(XEN_TARGET_ARCH),ia64)
   13.15 +INSTALL_BOOT_PATH := $(DESTDIR)/boot
   13.16 +endif
   13.17 +
   13.18  LINUX_VER3  := $(LINUX_SERIES).$(word 3, $(subst ., ,$(LINUX_VER)))
   13.19  
   13.20  include buildconfigs/Rules.mk
    14.1 --- a/extras/mini-os/Makefile	Fri Jan 26 14:19:37 2007 -0700
    14.2 +++ b/extras/mini-os/Makefile	Sat Jan 27 14:07:19 2007 -0700
    14.3 @@ -9,7 +9,7 @@ pae ?= n
    14.4  XEN_ROOT = ../..
    14.5  include $(XEN_ROOT)/Config.mk
    14.6  
    14.7 -XEN_INTERFACE_VERSION := 0x00030204
    14.8 +XEN_INTERFACE_VERSION := 0x00030205
    14.9  export XEN_INTERFACE_VERSION
   14.10  
   14.11  # Set TARGET_ARCH
    15.1 --- a/extras/mini-os/arch/x86/mm.c	Fri Jan 26 14:19:37 2007 -0700
    15.2 +++ b/extras/mini-os/arch/x86/mm.c	Sat Jan 27 14:07:19 2007 -0700
    15.3 @@ -61,6 +61,7 @@ void new_pt_frame(unsigned long *pt_pfn,
    15.4      mmu_update_t mmu_updates[1];
    15.5      struct mmuext_op pin_request;
    15.6      
    15.7 +    prot_e = prot_t = pincmd = 0;
    15.8      DEBUG("Allocating new L%d pt frame for pt_pfn=%lx, "
    15.9             "prev_l_mfn=%lx, offset=%lx", 
   15.10             level, *pt_pfn, prev_l_mfn, offset);
    16.1 --- a/extras/mini-os/arch/x86/sched.c	Fri Jan 26 14:19:37 2007 -0700
    16.2 +++ b/extras/mini-os/arch/x86/sched.c	Sat Jan 27 14:07:19 2007 -0700
    16.3 @@ -91,10 +91,11 @@ static void stack_push(struct thread *th
    16.4      *((unsigned long *)thread->sp) = value;
    16.5  }
    16.6  
    16.7 -struct thread* create_thread(char *name, void (*function)(void *), void *data)
    16.8 +/* Architecture specific setup of thread creation */
    16.9 +struct thread* arch_create_thread(char *name, void (*function)(void *),
   16.10 +                                  void *data)
   16.11  {
   16.12      struct thread *thread;
   16.13 -    unsigned long flags;
   16.14      
   16.15      thread = xmalloc(struct thread);
   16.16      /* Allocate 2 pages for stack, stack will be 2pages aligned */
   16.17 @@ -110,24 +111,9 @@ struct thread* create_thread(char *name,
   16.18      stack_push(thread, (unsigned long) function);
   16.19      stack_push(thread, (unsigned long) data);
   16.20      thread->ip = (unsigned long) thread_starter;
   16.21 -     
   16.22 -    /* Not runable, not exited, not sleeping */
   16.23 -    thread->flags = 0;
   16.24 -    thread->wakeup_time = 0LL;
   16.25 -    set_runnable(thread);
   16.26 -    local_irq_save(flags);
   16.27 -    if(idle_thread != NULL) {
   16.28 -        list_add_tail(&thread->thread_list, &idle_thread->thread_list); 
   16.29 -    } else if(function != idle_thread_fn)
   16.30 -    {
   16.31 -        printk("BUG: Not allowed to create thread before initialising scheduler.\n");
   16.32 -        BUG();
   16.33 -    }
   16.34 -    local_irq_restore(flags);
   16.35      return thread;
   16.36  }
   16.37  
   16.38 -
   16.39  void run_idle_thread(void)
   16.40  {
   16.41      /* Switch stacks and run the thread */ 
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/extras/mini-os/arch/x86/time.c	Sat Jan 27 14:07:19 2007 -0700
    17.3 @@ -0,0 +1,225 @@
    17.4 +/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    17.5 + ****************************************************************************
    17.6 + * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    17.7 + * (C) 2002-2003 - Keir Fraser - University of Cambridge 
    17.8 + * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
    17.9 + * (C) 2006 - Robert Kaiser - FH Wiesbaden
   17.10 + ****************************************************************************
   17.11 + *
   17.12 + *        File: time.c
   17.13 + *      Author: Rolf Neugebauer and Keir Fraser
   17.14 + *     Changes: Grzegorz Milos
   17.15 + *
   17.16 + * Description: Simple time and timer functions
   17.17 + *
   17.18 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   17.19 + * of this software and associated documentation files (the "Software"), to
   17.20 + * deal in the Software without restriction, including without limitation the
   17.21 + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   17.22 + * sell copies of the Software, and to permit persons to whom the Software is
   17.23 + * furnished to do so, subject to the following conditions:
   17.24 + * 
   17.25 + * The above copyright notice and this permission notice shall be included in
   17.26 + * all copies or substantial portions of the Software.
   17.27 + * 
   17.28 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
   17.29 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
   17.30 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
   17.31 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
   17.32 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
   17.33 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
   17.34 + * DEALINGS IN THE SOFTWARE.
   17.35 + */
   17.36 +
   17.37 +
   17.38 +#include <os.h>
   17.39 +#include <traps.h>
   17.40 +#include <types.h>
   17.41 +#include <hypervisor.h>
   17.42 +#include <events.h>
   17.43 +#include <time.h>
   17.44 +#include <lib.h>
   17.45 +
   17.46 +/************************************************************************
   17.47 + * Time functions
   17.48 + *************************************************************************/
   17.49 +
   17.50 +/* These are peridically updated in shared_info, and then copied here. */
   17.51 +struct shadow_time_info {
   17.52 +	u64 tsc_timestamp;     /* TSC at last update of time vals.  */
   17.53 +	u64 system_timestamp;  /* Time, in nanosecs, since boot.    */
   17.54 +	u32 tsc_to_nsec_mul;
   17.55 +	u32 tsc_to_usec_mul;
   17.56 +	int tsc_shift;
   17.57 +	u32 version;
   17.58 +};
   17.59 +static struct timespec shadow_ts;
   17.60 +static u32 shadow_ts_version;
   17.61 +
   17.62 +static struct shadow_time_info shadow;
   17.63 +
   17.64 +
   17.65 +#ifndef rmb
   17.66 +#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
   17.67 +#endif
   17.68 +
   17.69 +#define HANDLE_USEC_OVERFLOW(_tv)          \
   17.70 +    do {                                   \
   17.71 +        while ( (_tv)->tv_usec >= 1000000 ) \
   17.72 +        {                                  \
   17.73 +            (_tv)->tv_usec -= 1000000;      \
   17.74 +            (_tv)->tv_sec++;                \
   17.75 +        }                                  \
   17.76 +    } while ( 0 )
   17.77 +
   17.78 +static inline int time_values_up_to_date(void)
   17.79 +{
   17.80 +	struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time; 
   17.81 +
   17.82 +	return (shadow.version == src->version);
   17.83 +}
   17.84 +
   17.85 +
   17.86 +/*
   17.87 + * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
   17.88 + * yielding a 64-bit result.
   17.89 + */
   17.90 +static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)
   17.91 +{
   17.92 +	u64 product;
   17.93 +#ifdef __i386__
   17.94 +	u32 tmp1, tmp2;
   17.95 +#endif
   17.96 +
   17.97 +	if ( shift < 0 )
   17.98 +		delta >>= -shift;
   17.99 +	else
  17.100 +		delta <<= shift;
  17.101 +
  17.102 +#ifdef __i386__
  17.103 +	__asm__ (
  17.104 +		"mul  %5       ; "
  17.105 +		"mov  %4,%%eax ; "
  17.106 +		"mov  %%edx,%4 ; "
  17.107 +		"mul  %5       ; "
  17.108 +		"add  %4,%%eax ; "
  17.109 +		"xor  %5,%5    ; "
  17.110 +		"adc  %5,%%edx ; "
  17.111 +		: "=A" (product), "=r" (tmp1), "=r" (tmp2)
  17.112 +		: "a" ((u32)delta), "1" ((u32)(delta >> 32)), "2" (mul_frac) );
  17.113 +#else
  17.114 +	__asm__ (
  17.115 +		"mul %%rdx ; shrd $32,%%rdx,%%rax"
  17.116 +		: "=a" (product) : "0" (delta), "d" ((u64)mul_frac) );
  17.117 +#endif
  17.118 +
  17.119 +	return product;
  17.120 +}
  17.121 +
  17.122 +
  17.123 +static unsigned long get_nsec_offset(void)
  17.124 +{
  17.125 +	u64 now, delta;
  17.126 +	rdtscll(now);
  17.127 +	delta = now - shadow.tsc_timestamp;
  17.128 +	return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
  17.129 +}
  17.130 +
  17.131 +
  17.132 +static void get_time_values_from_xen(void)
  17.133 +{
  17.134 +	struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
  17.135 +
  17.136 + 	do {
  17.137 +		shadow.version = src->version;
  17.138 +		rmb();
  17.139 +		shadow.tsc_timestamp     = src->tsc_timestamp;
  17.140 +		shadow.system_timestamp  = src->system_time;
  17.141 +		shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
  17.142 +		shadow.tsc_shift         = src->tsc_shift;
  17.143 +		rmb();
  17.144 +	}
  17.145 +	while ((src->version & 1) | (shadow.version ^ src->version));
  17.146 +
  17.147 +	shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
  17.148 +}
  17.149 +
  17.150 +
  17.151 +
  17.152 +
  17.153 +/* monotonic_clock(): returns # of nanoseconds passed since time_init()
  17.154 + *		Note: This function is required to return accurate
  17.155 + *		time even in the absence of multiple timer ticks.
  17.156 + */
  17.157 +u64 monotonic_clock(void)
  17.158 +{
  17.159 +	u64 time;
  17.160 +	u32 local_time_version;
  17.161 +
  17.162 +	do {
  17.163 +		local_time_version = shadow.version;
  17.164 +		rmb();
  17.165 +		time = shadow.system_timestamp + get_nsec_offset();
  17.166 +        if (!time_values_up_to_date())
  17.167 +			get_time_values_from_xen();
  17.168 +		rmb();
  17.169 +	} while (local_time_version != shadow.version);
  17.170 +
  17.171 +	return time;
  17.172 +}
  17.173 +
  17.174 +static void update_wallclock(void)
  17.175 +{
  17.176 +	shared_info_t *s = HYPERVISOR_shared_info;
  17.177 +
  17.178 +	do {
  17.179 +		shadow_ts_version = s->wc_version;
  17.180 +		rmb();
  17.181 +		shadow_ts.ts_sec  = s->wc_sec;
  17.182 +		shadow_ts.ts_nsec = s->wc_nsec;
  17.183 +		rmb();
  17.184 +	}
  17.185 +	while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
  17.186 +}
  17.187 +
  17.188 +
  17.189 +void gettimeofday(struct timeval *tv)
  17.190 +{
  17.191 +    u64 nsec = monotonic_clock();
  17.192 +    nsec += shadow_ts.ts_nsec;
  17.193 +    
  17.194 +    
  17.195 +    tv->tv_sec = shadow_ts.ts_sec;
  17.196 +    tv->tv_sec += NSEC_TO_SEC(nsec);
  17.197 +    tv->tv_usec = NSEC_TO_USEC(nsec % 1000000000UL);
  17.198 +}
  17.199 +
  17.200 +
  17.201 +void block_domain(s_time_t until)
  17.202 +{
  17.203 +    struct timeval tv;
  17.204 +    gettimeofday(&tv);
  17.205 +    if(monotonic_clock() < until)
  17.206 +    {
  17.207 +        HYPERVISOR_set_timer_op(until);
  17.208 +        HYPERVISOR_sched_op(SCHEDOP_block, 0);
  17.209 +    }
  17.210 +}
  17.211 +
  17.212 +
  17.213 +/*
  17.214 + * Just a dummy 
  17.215 + */
  17.216 +static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
  17.217 +{
  17.218 +    get_time_values_from_xen();
  17.219 +    update_wallclock();
  17.220 +}
  17.221 +
  17.222 +
  17.223 +
  17.224 +void init_time(void)
  17.225 +{
  17.226 +    printk("Initialising timer interface\n");
  17.227 +    bind_virq(VIRQ_TIMER, &timer_handler, NULL);
  17.228 +}
    18.1 --- a/extras/mini-os/include/sched.h	Fri Jan 26 14:19:37 2007 -0700
    18.2 +++ b/extras/mini-os/include/sched.h	Sat Jan 27 14:07:19 2007 -0700
    18.3 @@ -31,6 +31,9 @@ void idle_thread_fn(void *unused);
    18.4  
    18.5  #define switch_threads(prev, next) arch_switch_threads(prev, next)
    18.6   
    18.7 +    /* Architecture specific setup of thread creation. */
    18.8 +struct thread* arch_create_thread(char *name, void (*function)(void *),
    18.9 +                                  void *data);
   18.10  
   18.11  void init_sched(void);
   18.12  void run_idle_thread(void);
    19.1 --- a/extras/mini-os/include/x86/x86_32/hypercall-x86_32.h	Fri Jan 26 14:19:37 2007 -0700
    19.2 +++ b/extras/mini-os/include/x86/x86_32/hypercall-x86_32.h	Sat Jan 27 14:07:19 2007 -0700
    19.3 @@ -305,6 +305,20 @@ HYPERVISOR_nmi_op(
    19.4  	return _hypercall2(int, nmi_op, op, arg);
    19.5  }
    19.6  
    19.7 +static inline int
    19.8 +HYPERVISOR_sysctl(
    19.9 +	unsigned long op)
   19.10 +{
   19.11 +	return _hypercall1(int, sysctl, op);
   19.12 +}
   19.13 +
   19.14 +static inline int
   19.15 +HYPERVISOR_domctl(
   19.16 +	unsigned long op)
   19.17 +{
   19.18 +	return _hypercall1(int, domctl, op);
   19.19 +}
   19.20 +
   19.21  #endif /* __HYPERCALL_X86_32_H__ */
   19.22  
   19.23  /*
    20.1 --- a/extras/mini-os/include/x86/x86_64/hypercall-x86_64.h	Fri Jan 26 14:19:37 2007 -0700
    20.2 +++ b/extras/mini-os/include/x86/x86_64/hypercall-x86_64.h	Sat Jan 27 14:07:19 2007 -0700
    20.3 @@ -305,6 +305,20 @@ HYPERVISOR_nmi_op(
    20.4  	return _hypercall2(int, nmi_op, op, arg);
    20.5  }
    20.6  
    20.7 +static inline int
    20.8 +HYPERVISOR_sysctl(
    20.9 +	unsigned long op)
   20.10 +{
   20.11 +	return _hypercall1(int, sysctl, op);
   20.12 +}
   20.13 +
   20.14 +static inline int
   20.15 +HYPERVISOR_domctl(
   20.16 +	unsigned long op)
   20.17 +{
   20.18 +	return _hypercall1(int, domctl, op);
   20.19 +}
   20.20 +
   20.21  #endif /* __HYPERCALL_X86_64_H__ */
   20.22  
   20.23  /*
    21.1 --- a/extras/mini-os/lib/math.c	Fri Jan 26 14:19:37 2007 -0700
    21.2 +++ b/extras/mini-os/lib/math.c	Sat Jan 27 14:07:19 2007 -0700
    21.3 @@ -57,6 +57,10 @@
    21.4  
    21.5  #include <types.h>
    21.6  
    21.7 +	/* On ia64 these functions lead to crashes. These are replaced by
    21.8 +	 * assembler functions. */
    21.9 +#if !defined(__ia64__)
   21.10 +
   21.11  /*
   21.12   * Depending on the desired operation, we view a `long long' (aka quad_t) in
   21.13   * one or more of the following formats.
   21.14 @@ -380,3 +384,4 @@ u_quad_t
   21.15          return (r);
   21.16  }
   21.17  
   21.18 +#endif /* !defined(__ia64__) */
    22.1 --- a/extras/mini-os/lib/xmalloc.c	Fri Jan 26 14:19:37 2007 -0700
    22.2 +++ b/extras/mini-os/lib/xmalloc.c	Sat Jan 27 14:07:19 2007 -0700
    22.3 @@ -48,6 +48,12 @@ struct xmalloc_hdr
    22.4      /* Total including this hdr. */
    22.5      size_t size;
    22.6      struct list_head freelist;
    22.7 +#if defined(__ia64__)
    22.8 +		// Needed for ia64 as long as the align parameter in _xmalloc()
    22.9 +		// is not supported.
   22.10 +    uint64_t pad;
   22.11 +#endif
   22.12 +
   22.13  } __cacheline_aligned;
   22.14  
   22.15  static void maybe_split(struct xmalloc_hdr *hdr, size_t size, size_t block)
    23.1 --- a/extras/mini-os/netfront.c	Fri Jan 26 14:19:37 2007 -0700
    23.2 +++ b/extras/mini-os/netfront.c	Sat Jan 27 14:07:19 2007 -0700
    23.3 @@ -324,10 +324,17 @@ done:
    23.4      msg = xenbus_read(XBT_NIL, "device/vif/0/backend", &backend);
    23.5      msg = xenbus_read(XBT_NIL, "device/vif/0/mac", &mac);
    23.6  
    23.7 +    if ((backend == NULL) || (mac == NULL)) {
    23.8 +        struct evtchn_close op = { info->local_port };
    23.9 +        printk("%s: backend/mac failed\n", __func__);
   23.10 +        unbind_evtchn(info->local_port);
   23.11 +        HYPERVISOR_event_channel_op(EVTCHNOP_close, &op);
   23.12 +        return;
   23.13 +    }
   23.14 +
   23.15      printk("backend at %s\n",backend);
   23.16      printk("mac is %s\n",mac);
   23.17  
   23.18 -    char *res;
   23.19      char path[256];
   23.20      sprintf(path,"%s/state",backend);
   23.21  
   23.22 @@ -336,7 +343,6 @@ done:
   23.23      xenbus_wait_for_value(path,"4");
   23.24  
   23.25      //free(backend);
   23.26 -    free(res);
   23.27  
   23.28      printk("**************************\n");
   23.29  
   23.30 @@ -385,10 +391,7 @@ void init_rx_buffers(void)
   23.31      netif_rx_request_t *req;
   23.32      int notify;
   23.33  
   23.34 -    np->rx.req_prod_pvt = requeue_idx;
   23.35 -
   23.36 -
   23.37 -    /* Step 2: Rebuild the RX buffer freelist and the RX ring itself. */
   23.38 +    /* Rebuild the RX buffer freelist and the RX ring itself. */
   23.39      for (requeue_idx = 0, i = 0; i < NET_RX_RING_SIZE; i++) 
   23.40      {
   23.41          struct net_buffer* buf = &rx_buffers[requeue_idx];
   23.42 @@ -404,16 +407,12 @@ void init_rx_buffers(void)
   23.43  
   23.44      np->rx.req_prod_pvt = requeue_idx;
   23.45  
   23.46 -
   23.47 -
   23.48      RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&np->rx, notify);
   23.49  
   23.50 -    if(notify) 
   23.51 +    if (notify) 
   23.52          notify_remote_via_evtchn(np->evtchn);
   23.53  
   23.54      np->rx.sring->rsp_event = np->rx.rsp_cons + 1;
   23.55 -
   23.56 -
   23.57  }
   23.58  
   23.59  
    24.1 --- a/extras/mini-os/sched.c	Fri Jan 26 14:19:37 2007 -0700
    24.2 +++ b/extras/mini-os/sched.c	Sat Jan 27 14:07:19 2007 -0700
    24.3 @@ -155,11 +155,27 @@ void schedule(void)
    24.4      if(prev != next) switch_threads(prev, next);
    24.5  }
    24.6  
    24.7 -
    24.8 -/* Gets run when a new thread is scheduled the first time ever, 
    24.9 -   defined in x86_[32/64].S */
   24.10 -extern void thread_starter(void);
   24.11 -
   24.12 +struct thread* create_thread(char *name, void (*function)(void *), void *data)
   24.13 +{
   24.14 +    struct thread *thread;
   24.15 +    unsigned long flags;
   24.16 +    /* Call architecture specific setup. */
   24.17 +    thread = arch_create_thread(name, function, data);
   24.18 +    /* Not runable, not exited, not sleeping */
   24.19 +    thread->flags = 0;
   24.20 +    thread->wakeup_time = 0LL;
   24.21 +    set_runnable(thread);
   24.22 +    local_irq_save(flags);
   24.23 +    if(idle_thread != NULL) {
   24.24 +        list_add_tail(&thread->thread_list, &idle_thread->thread_list); 
   24.25 +    } else if(function != idle_thread_fn)
   24.26 +    {
   24.27 +        printk("BUG: Not allowed to create thread before initialising scheduler.\n");
   24.28 +        BUG();
   24.29 +    }
   24.30 +    local_irq_restore(flags);
   24.31 +    return thread;
   24.32 +}
   24.33  
   24.34  void exit_thread(void)
   24.35  {
    25.1 --- a/extras/mini-os/time.c	Fri Jan 26 14:19:37 2007 -0700
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,225 +0,0 @@
    25.4 -/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
    25.5 - ****************************************************************************
    25.6 - * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
    25.7 - * (C) 2002-2003 - Keir Fraser - University of Cambridge 
    25.8 - * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
    25.9 - * (C) 2006 - Robert Kaiser - FH Wiesbaden
   25.10 - ****************************************************************************
   25.11 - *
   25.12 - *        File: time.c
   25.13 - *      Author: Rolf Neugebauer and Keir Fraser
   25.14 - *     Changes: Grzegorz Milos
   25.15 - *
   25.16 - * Description: Simple time and timer functions
   25.17 - *
   25.18 - * Permission is hereby granted, free of charge, to any person obtaining a copy
   25.19 - * of this software and associated documentation files (the "Software"), to
   25.20 - * deal in the Software without restriction, including without limitation the
   25.21 - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   25.22 - * sell copies of the Software, and to permit persons to whom the Software is
   25.23 - * furnished to do so, subject to the following conditions:
   25.24 - * 
   25.25 - * The above copyright notice and this permission notice shall be included in
   25.26 - * all copies or substantial portions of the Software.
   25.27 - * 
   25.28 - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
   25.29 - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
   25.30 - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
   25.31 - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
   25.32 - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
   25.33 - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
   25.34 - * DEALINGS IN THE SOFTWARE.
   25.35 - */
   25.36 -
   25.37 -
   25.38 -#include <os.h>
   25.39 -#include <traps.h>
   25.40 -#include <types.h>
   25.41 -#include <hypervisor.h>
   25.42 -#include <events.h>
   25.43 -#include <time.h>
   25.44 -#include <lib.h>
   25.45 -
   25.46 -/************************************************************************
   25.47 - * Time functions
   25.48 - *************************************************************************/
   25.49 -
   25.50 -/* These are peridically updated in shared_info, and then copied here. */
   25.51 -struct shadow_time_info {
   25.52 -	u64 tsc_timestamp;     /* TSC at last update of time vals.  */
   25.53 -	u64 system_timestamp;  /* Time, in nanosecs, since boot.    */
   25.54 -	u32 tsc_to_nsec_mul;
   25.55 -	u32 tsc_to_usec_mul;
   25.56 -	int tsc_shift;
   25.57 -	u32 version;
   25.58 -};
   25.59 -static struct timespec shadow_ts;
   25.60 -static u32 shadow_ts_version;
   25.61 -
   25.62 -static struct shadow_time_info shadow;
   25.63 -
   25.64 -
   25.65 -#ifndef rmb
   25.66 -#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
   25.67 -#endif
   25.68 -
   25.69 -#define HANDLE_USEC_OVERFLOW(_tv)          \
   25.70 -    do {                                   \
   25.71 -        while ( (_tv)->tv_usec >= 1000000 ) \
   25.72 -        {                                  \
   25.73 -            (_tv)->tv_usec -= 1000000;      \
   25.74 -            (_tv)->tv_sec++;                \
   25.75 -        }                                  \
   25.76 -    } while ( 0 )
   25.77 -
   25.78 -static inline int time_values_up_to_date(void)
   25.79 -{
   25.80 -	struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time; 
   25.81 -
   25.82 -	return (shadow.version == src->version);
   25.83 -}
   25.84 -
   25.85 -
   25.86 -/*
   25.87 - * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
   25.88 - * yielding a 64-bit result.
   25.89 - */
   25.90 -static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)
   25.91 -{
   25.92 -	u64 product;
   25.93 -#ifdef __i386__
   25.94 -	u32 tmp1, tmp2;
   25.95 -#endif
   25.96 -
   25.97 -	if ( shift < 0 )
   25.98 -		delta >>= -shift;
   25.99 -	else
  25.100 -		delta <<= shift;
  25.101 -
  25.102 -#ifdef __i386__
  25.103 -	__asm__ (
  25.104 -		"mul  %5       ; "
  25.105 -		"mov  %4,%%eax ; "
  25.106 -		"mov  %%edx,%4 ; "
  25.107 -		"mul  %5       ; "
  25.108 -		"add  %4,%%eax ; "
  25.109 -		"xor  %5,%5    ; "
  25.110 -		"adc  %5,%%edx ; "
  25.111 -		: "=A" (product), "=r" (tmp1), "=r" (tmp2)
  25.112 -		: "a" ((u32)delta), "1" ((u32)(delta >> 32)), "2" (mul_frac) );
  25.113 -#else
  25.114 -	__asm__ (
  25.115 -		"mul %%rdx ; shrd $32,%%rdx,%%rax"
  25.116 -		: "=a" (product) : "0" (delta), "d" ((u64)mul_frac) );
  25.117 -#endif
  25.118 -
  25.119 -	return product;
  25.120 -}
  25.121 -
  25.122 -
  25.123 -static unsigned long get_nsec_offset(void)
  25.124 -{
  25.125 -	u64 now, delta;
  25.126 -	rdtscll(now);
  25.127 -	delta = now - shadow.tsc_timestamp;
  25.128 -	return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
  25.129 -}
  25.130 -
  25.131 -
  25.132 -static void get_time_values_from_xen(void)
  25.133 -{
  25.134 -	struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
  25.135 -
  25.136 - 	do {
  25.137 -		shadow.version = src->version;
  25.138 -		rmb();
  25.139 -		shadow.tsc_timestamp     = src->tsc_timestamp;
  25.140 -		shadow.system_timestamp  = src->system_time;
  25.141 -		shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
  25.142 -		shadow.tsc_shift         = src->tsc_shift;
  25.143 -		rmb();
  25.144 -	}
  25.145 -	while ((src->version & 1) | (shadow.version ^ src->version));
  25.146 -
  25.147 -	shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
  25.148 -}
  25.149 -
  25.150 -
  25.151 -
  25.152 -
  25.153 -/* monotonic_clock(): returns # of nanoseconds passed since time_init()
  25.154 - *		Note: This function is required to return accurate
  25.155 - *		time even in the absence of multiple timer ticks.
  25.156 - */
  25.157 -u64 monotonic_clock(void)
  25.158 -{
  25.159 -	u64 time;
  25.160 -	u32 local_time_version;
  25.161 -
  25.162 -	do {
  25.163 -		local_time_version = shadow.version;
  25.164 -		rmb();
  25.165 -		time = shadow.system_timestamp + get_nsec_offset();
  25.166 -        if (!time_values_up_to_date())
  25.167 -			get_time_values_from_xen();
  25.168 -		rmb();
  25.169 -	} while (local_time_version != shadow.version);
  25.170 -
  25.171 -	return time;
  25.172 -}
  25.173 -
  25.174 -static void update_wallclock(void)
  25.175 -{
  25.176 -	shared_info_t *s = HYPERVISOR_shared_info;
  25.177 -
  25.178 -	do {
  25.179 -		shadow_ts_version = s->wc_version;
  25.180 -		rmb();
  25.181 -		shadow_ts.ts_sec  = s->wc_sec;
  25.182 -		shadow_ts.ts_nsec = s->wc_nsec;
  25.183 -		rmb();
  25.184 -	}
  25.185 -	while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
  25.186 -}
  25.187 -
  25.188 -
  25.189 -void gettimeofday(struct timeval *tv)
  25.190 -{
  25.191 -    u64 nsec = monotonic_clock();
  25.192 -    nsec += shadow_ts.ts_nsec;
  25.193 -    
  25.194 -    
  25.195 -    tv->tv_sec = shadow_ts.ts_sec;
  25.196 -    tv->tv_sec += NSEC_TO_SEC(nsec);
  25.197 -    tv->tv_usec = NSEC_TO_USEC(nsec % 1000000000UL);
  25.198 -}
  25.199 -
  25.200 -
  25.201 -void block_domain(s_time_t until)
  25.202 -{
  25.203 -    struct timeval tv;
  25.204 -    gettimeofday(&tv);
  25.205 -    if(monotonic_clock() < until)
  25.206 -    {
  25.207 -        HYPERVISOR_set_timer_op(until);
  25.208 -        HYPERVISOR_sched_op(SCHEDOP_block, 0);
  25.209 -    }
  25.210 -}
  25.211 -
  25.212 -
  25.213 -/*
  25.214 - * Just a dummy 
  25.215 - */
  25.216 -static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
  25.217 -{
  25.218 -    get_time_values_from_xen();
  25.219 -    update_wallclock();
  25.220 -}
  25.221 -
  25.222 -
  25.223 -
  25.224 -void init_time(void)
  25.225 -{
  25.226 -    printk("Initialising timer interface\n");
  25.227 -    bind_virq(VIRQ_TIMER, &timer_handler, NULL);
  25.228 -}
    26.1 --- a/extras/mini-os/xenbus/xenbus.c	Fri Jan 26 14:19:37 2007 -0700
    26.2 +++ b/extras/mini-os/xenbus/xenbus.c	Sat Jan 27 14:07:19 2007 -0700
    26.3 @@ -103,7 +103,7 @@ char* xenbus_wait_for_value(const char* 
    26.4  static void xenbus_thread_func(void *ign)
    26.5  {
    26.6      struct xsd_sockmsg msg;
    26.7 -    unsigned prod;
    26.8 +    unsigned prod = 0;
    26.9  
   26.10      for (;;) 
   26.11      {
    27.1 --- a/linux-2.6-xen-sparse/arch/i386/Kconfig	Fri Jan 26 14:19:37 2007 -0700
    27.2 +++ b/linux-2.6-xen-sparse/arch/i386/Kconfig	Sat Jan 27 14:07:19 2007 -0700
    27.3 @@ -14,6 +14,19 @@ config X86_32
    27.4  	  486, 586, Pentiums, and various instruction-set-compatible chips by
    27.5  	  AMD, Cyrix, and others.
    27.6  
    27.7 +config GENERIC_TIME
    27.8 +	bool
    27.9 +	depends on !X86_XEN
   27.10 +	default y
   27.11 +
   27.12 +config LOCKDEP_SUPPORT
   27.13 +	bool
   27.14 +	default y
   27.15 +
   27.16 +config STACKTRACE_SUPPORT
   27.17 +	bool
   27.18 +	default y
   27.19 +
   27.20  config SEMAPHORE_SLEEPERS
   27.21  	bool
   27.22  	default y
   27.23 @@ -37,6 +50,10 @@ config GENERIC_IOMAP
   27.24  	bool
   27.25  	default y
   27.26  
   27.27 +config GENERIC_HWEIGHT
   27.28 +	bool
   27.29 +	default y
   27.30 +
   27.31  config ARCH_MAY_HAVE_PC_FDC
   27.32  	bool
   27.33  	default y
   27.34 @@ -49,6 +66,35 @@ source "init/Kconfig"
   27.35  
   27.36  menu "Processor type and features"
   27.37  
   27.38 +config SMP
   27.39 +	bool "Symmetric multi-processing support"
   27.40 +	---help---
   27.41 +	  This enables support for systems with more than one CPU. If you have
   27.42 +	  a system with only one CPU, like most personal computers, say N. If
   27.43 +	  you have a system with more than one CPU, say Y.
   27.44 +
   27.45 +	  If you say N here, the kernel will run on single and multiprocessor
   27.46 +	  machines, but will use only one CPU of a multiprocessor machine. If
   27.47 +	  you say Y here, the kernel will run on many, but not all,
   27.48 +	  singleprocessor machines. On a singleprocessor machine, the kernel
   27.49 +	  will run faster if you say N here.
   27.50 +
   27.51 +	  Note that if you say Y here and choose architecture "586" or
   27.52 +	  "Pentium" under "Processor family", the kernel will not work on 486
   27.53 +	  architectures. Similarly, multiprocessor kernels for the "PPro"
   27.54 +	  architecture may not work on all Pentium based boards.
   27.55 +
   27.56 +	  People using multiprocessor machines who say Y here should also say
   27.57 +	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
   27.58 +	  Management" code will be disabled if you say Y here.
   27.59 +
   27.60 +	  See also the <file:Documentation/smp.txt>,
   27.61 +	  <file:Documentation/i386/IO-APIC.txt>,
   27.62 +	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
   27.63 +	  <http://www.tldp.org/docs.html#howto>.
   27.64 +
   27.65 +	  If you don't know what to do here, say N.
   27.66 +
   27.67  choice
   27.68  	prompt "Subarchitecture Type"
   27.69  	default X86_PC
   27.70 @@ -89,6 +135,7 @@ config X86_VOYAGER
   27.71  
   27.72  config X86_NUMAQ
   27.73  	bool "NUMAQ (IBM/Sequent)"
   27.74 +	select SMP
   27.75  	select NUMA
   27.76  	help
   27.77  	  This option is used for getting Linux to run on a (IBM/Sequent) NUMA
   27.78 @@ -105,6 +152,7 @@ config X86_SUMMIT
   27.79  	  In particular, it is needed for the x440.
   27.80  
   27.81  	  If you don't have one of these computers, you should say N here.
   27.82 +	  If you want to build a NUMA kernel, you must select ACPI.
   27.83  
   27.84  config X86_BIGSMP
   27.85  	bool "Support for other sub-arch SMP systems with more than 8 CPUs"
   27.86 @@ -132,6 +180,7 @@ config X86_GENERICARCH
   27.87         help
   27.88            This option compiles in the Summit, bigsmp, ES7000, default subarchitectures.
   27.89  	  It is intended for a generic binary kernel.
   27.90 +	  If you want a NUMA kernel, select ACPI.   We need SRAT for NUMA.
   27.91  
   27.92  config X86_ES7000
   27.93  	bool "Support for Unisys ES7000 IA32 series"
   27.94 @@ -147,7 +196,13 @@ endchoice
   27.95  config ACPI_SRAT
   27.96  	bool
   27.97  	default y
   27.98 -	depends on NUMA && (X86_SUMMIT || X86_GENERICARCH)
   27.99 +	depends on ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH)
  27.100 +	select ACPI_NUMA
  27.101 +
  27.102 +config HAVE_ARCH_PARSE_SRAT
  27.103 +       bool
  27.104 +       default y
  27.105 +       depends on ACPI_SRAT
  27.106  
  27.107  config X86_SUMMIT_NUMA
  27.108  	bool
  27.109 @@ -183,48 +238,6 @@ config HPET_EMULATE_RTC
  27.110  	depends on HPET_TIMER && RTC=y
  27.111  	default y
  27.112  
  27.113 -config SMP
  27.114 -	bool "Symmetric multi-processing support"
  27.115 -	---help---
  27.116 -	  This enables support for systems with more than one CPU. If you have
  27.117 -	  a system with only one CPU, like most personal computers, say N. If
  27.118 -	  you have a system with more than one CPU, say Y.
  27.119 -
  27.120 -	  If you say N here, the kernel will run on single and multiprocessor
  27.121 -	  machines, but will use only one CPU of a multiprocessor machine. If
  27.122 -	  you say Y here, the kernel will run on many, but not all,
  27.123 -	  singleprocessor machines. On a singleprocessor machine, the kernel
  27.124 -	  will run faster if you say N here.
  27.125 -
  27.126 -	  Note that if you say Y here and choose architecture "586" or
  27.127 -	  "Pentium" under "Processor family", the kernel will not work on 486
  27.128 -	  architectures. Similarly, multiprocessor kernels for the "PPro"
  27.129 -	  architecture may not work on all Pentium based boards.
  27.130 -
  27.131 -	  People using multiprocessor machines who say Y here should also say
  27.132 -	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
  27.133 -	  Management" code will be disabled if you say Y here.
  27.134 -
  27.135 -	  See also the <file:Documentation/smp.txt>,
  27.136 -	  <file:Documentation/i386/IO-APIC.txt>,
  27.137 -	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
  27.138 -	  <http://www.tldp.org/docs.html#howto>.
  27.139 -
  27.140 -	  If you don't know what to do here, say N.
  27.141 -
  27.142 -config SMP_ALTERNATIVES
  27.143 -	bool "SMP alternatives support (EXPERIMENTAL)"
  27.144 -	depends on SMP && EXPERIMENTAL
  27.145 -	help
  27.146 -	  Try to reduce the overhead of running an SMP kernel on a uniprocessor
  27.147 -	  host slightly by replacing certain key instruction sequences
  27.148 -	  according to whether we currently have more than one CPU available.
  27.149 -	  This should provide a noticeable boost to performance when
  27.150 -	  running SMP kernels on UP machines, and have negligible impact
  27.151 -	  when running on an true SMP host.
  27.152 -
  27.153 -          If unsure, say N.
  27.154 -	  
  27.155  config NR_CPUS
  27.156  	int "Maximum number of CPUs (2-255)"
  27.157  	range 2 255
  27.158 @@ -241,14 +254,23 @@ config NR_CPUS
  27.159  
  27.160  config SCHED_SMT
  27.161  	bool "SMT (Hyperthreading) scheduler support"
  27.162 -	depends on SMP && !X86_XEN
  27.163 -	default off
  27.164 +	depends on X86_HT
  27.165 +	depends on !X86_XEN
  27.166  	help
  27.167  	  SMT scheduler support improves the CPU scheduler's decision making
  27.168  	  when dealing with Intel Pentium 4 chips with HyperThreading at a
  27.169  	  cost of slightly increased overhead in some places. If unsure say
  27.170  	  N here.
  27.171  
  27.172 +config SCHED_MC
  27.173 +	bool "Multi-core scheduler support"
  27.174 +	depends on X86_HT
  27.175 +	default y
  27.176 +	help
  27.177 +	  Multi-core scheduler support improves the CPU scheduler's decision
  27.178 +	  making when dealing with multi-core CPU chips at a cost of slightly
  27.179 +	  increased overhead in some places. If unsure say N here.
  27.180 +
  27.181  source "kernel/Kconfig.preempt"
  27.182  
  27.183  config X86_UP_APIC
  27.184 @@ -333,6 +355,15 @@ config X86_MCE_P4THERMAL
  27.185  	  Enabling this feature will cause a message to be printed when the P4
  27.186  	  enters thermal throttling.
  27.187  
  27.188 +config VM86
  27.189 +	default y
  27.190 +	bool "Enable VM86 support" if EMBEDDED
  27.191 +	help
  27.192 +          This option is required by programs like DOSEMU to run 16-bit legacy
  27.193 +	  code on X86 processors. It also may be needed by software like
  27.194 +          XFree86 to initialize some video cards via BIOS. Disabling this
  27.195 +          option saves about 6k.
  27.196 +
  27.197  config TOSHIBA
  27.198  	tristate "Toshiba Laptop support"
  27.199  	---help---
  27.200 @@ -434,6 +465,7 @@ choice
  27.201  
  27.202  config NOHIGHMEM
  27.203  	bool "off"
  27.204 +	depends on !X86_NUMAQ
  27.205  	---help---
  27.206  	  Linux can use up to 64 Gigabytes of physical memory on x86 systems.
  27.207  	  However, the address space of 32-bit x86 processors is only 4
  27.208 @@ -470,6 +502,7 @@ config NOHIGHMEM
  27.209  
  27.210  config HIGHMEM4G
  27.211  	bool "4GB"
  27.212 +	depends on !X86_NUMAQ
  27.213  	help
  27.214  	  Select this if you have a 32-bit processor and between 1 and 4
  27.215  	  gigabytes of physical RAM.
  27.216 @@ -485,7 +518,7 @@ endchoice
  27.217  
  27.218  choice
  27.219  	depends on EXPERIMENTAL && !X86_PAE
  27.220 -	prompt "Memory split"
  27.221 +	prompt "Memory split" if EMBEDDED
  27.222  	default VMSPLIT_3G
  27.223  	help
  27.224  	  Select the desired split between kernel and user memory.
  27.225 @@ -529,21 +562,24 @@ config X86_PAE
  27.226  	bool
  27.227  	depends on HIGHMEM64G
  27.228  	default y
  27.229 +	select RESOURCES_64BIT
  27.230  
  27.231  # Common NUMA Features
  27.232  config NUMA
  27.233  	bool "Numa Memory Allocation and Scheduler Support"
  27.234 -	depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI))
  27.235 +	depends on SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI)
  27.236  	default n if X86_PC
  27.237  	default y if (X86_NUMAQ || X86_SUMMIT)
  27.238  
  27.239 -# Need comments to help the hapless user trying to turn on NUMA support
  27.240 -comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
  27.241 -	depends on X86_NUMAQ && (!HIGHMEM64G || !SMP)
  27.242 -
  27.243  comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
  27.244  	depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
  27.245  
  27.246 +config NODES_SHIFT
  27.247 +	int
  27.248 +	default "4" if X86_NUMAQ
  27.249 +	default "3"
  27.250 +	depends on NEED_MULTIPLE_NODES
  27.251 +
  27.252  config HAVE_ARCH_BOOTMEM_NODE
  27.253  	bool
  27.254  	depends on NUMA
  27.255 @@ -664,7 +700,7 @@ config MTRR
  27.256  	  See <file:Documentation/mtrr.txt> for more information.
  27.257  
  27.258  config EFI
  27.259 -	bool "Boot from EFI support (EXPERIMENTAL)"
  27.260 +	bool "Boot from EFI support"
  27.261  	depends on ACPI && !X86_XEN
  27.262  	default n
  27.263  	---help---
  27.264 @@ -697,13 +733,18 @@ config BOOT_IOREMAP
  27.265  	default y
  27.266  
  27.267  config REGPARM
  27.268 -	bool "Use register arguments (EXPERIMENTAL)"
  27.269 -	depends on EXPERIMENTAL
  27.270 -	default n
  27.271 +	bool "Use register arguments"
  27.272 +	default y
  27.273  	help
  27.274 -	Compile the kernel with -mregparm=3. This uses a different ABI
  27.275 -	and passes the first three arguments of a function call in registers.
  27.276 -	This will probably break binary only modules.
  27.277 +	Compile the kernel with -mregparm=3. This instructs gcc to use
  27.278 +	a more efficient function call ABI which passes the first three
  27.279 +	arguments of a function call via registers, which results in denser
  27.280 +	and faster code.
  27.281 +
  27.282 +	If this option is disabled, then the default ABI of passing
  27.283 +	arguments via the stack is used.
  27.284 +
  27.285 +	If unsure, say Y.
  27.286  
  27.287  config SECCOMP
  27.288  	bool "Enable seccomp to safely compute untrusted bytecode"
  27.289 @@ -730,10 +771,10 @@ config KEXEC
  27.290  	help
  27.291  	  kexec is a system call that implements the ability to shutdown your
  27.292  	  current kernel, and to start another kernel.  It is like a reboot
  27.293 -	  but it is indepedent of the system firmware.   And like a reboot
  27.294 +	  but it is independent of the system firmware.   And like a reboot
  27.295  	  you can start any kernel with it, not just Linux.
  27.296  
  27.297 -	  The name comes from the similiarity to the exec system call.
  27.298 +	  The name comes from the similarity to the exec system call.
  27.299  
  27.300  	  It is an ongoing process to be certain the hardware in a machine
  27.301  	  is properly shutdown, so do not be surprised if this code does not
  27.302 @@ -772,20 +813,22 @@ config HOTPLUG_CPU
  27.303  	bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
  27.304  	depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
  27.305  	---help---
  27.306 -	  Say Y here to experiment with turning CPUs off and on.  CPUs
  27.307 -	  can be controlled through /sys/devices/system/cpu.
  27.308 +	  Say Y here to experiment with turning CPUs off and on, and to
  27.309 +	  enable suspend on SMP systems. CPUs can be controlled through
  27.310 +	  /sys/devices/system/cpu.
  27.311  
  27.312 -	  Say N.
  27.313 -
  27.314 -config DOUBLEFAULT
  27.315 +config COMPAT_VDSO
  27.316 +	bool "Compat VDSO support"
  27.317 +	depends on !X86_XEN
  27.318  	default y
  27.319 -	bool "Enable doublefault exception handler" if EMBEDDED
  27.320 -	depends on !X86_NO_TSS
  27.321  	help
  27.322 -          This option allows trapping of rare doublefault exceptions that
  27.323 -          would otherwise cause a system to silently reboot. Disabling this
  27.324 -          option saves about 4k and might cause you much additional grey
  27.325 -          hair.
  27.326 +	  Map the VDSO to the predictable old-style address too.
  27.327 +	---help---
  27.328 +	  Say N here if you are running a sufficiently recent glibc
  27.329 +	  version (2.3.3 or later), to remove the high-mapped
  27.330 +	  VDSO mapping and to exclusively use the randomized VDSO.
  27.331 +
  27.332 +	  If unsure, say Y.
  27.333  
  27.334  endmenu
  27.335  
  27.336 @@ -1090,13 +1133,27 @@ config SCx200
  27.337  	tristate "NatSemi SCx200 support"
  27.338  	depends on !X86_VOYAGER
  27.339  	help
  27.340 -	  This provides basic support for the National Semiconductor SCx200
  27.341 -	  processor.  Right now this is just a driver for the GPIO pins.
  27.342 +	  This provides basic support for National Semiconductor's
  27.343 +	  (now AMD's) Geode processors.  The driver probes for the
  27.344 +	  PCI-IDs of several on-chip devices, so its a good dependency
  27.345 +	  for other scx200_* drivers.
  27.346 +
  27.347 +	  If compiled as a module, the driver is named scx200.
  27.348  
  27.349 -	  If you don't know what to do here, say N.
  27.350 +config SCx200HR_TIMER
  27.351 +	tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
  27.352 +	depends on SCx200 && GENERIC_TIME
  27.353 +	default y
  27.354 +	help
  27.355 +	  This driver provides a clocksource built upon the on-chip
  27.356 +	  27MHz high-resolution timer.  Its also a workaround for
  27.357 +	  NSC Geode SC-1100's buggy TSC, which loses time when the
  27.358 +	  processor goes idle (as is done by the scheduler).  The
  27.359 +	  other workaround is idle=poll boot option.
  27.360  
  27.361 -	  This support is also available as a module.  If compiled as a
  27.362 -	  module, it will be called scx200.
  27.363 +config K8_NB
  27.364 +	def_bool y
  27.365 +	depends on AGP_AMD64
  27.366  
  27.367  source "drivers/pcmcia/Kconfig"
  27.368  
    28.1 --- a/linux-2.6-xen-sparse/arch/i386/Kconfig.cpu	Fri Jan 26 14:19:37 2007 -0700
    28.2 +++ b/linux-2.6-xen-sparse/arch/i386/Kconfig.cpu	Sat Jan 27 14:07:19 2007 -0700
    28.3 @@ -41,7 +41,7 @@ config M386
    28.4  	  - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
    28.5  	  - "Geode GX/LX" For AMD Geode GX and LX processors.
    28.6  	  - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
    28.7 -	  - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
    28.8 +	  - "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above).
    28.9  
   28.10  	  If you don't know what to do, choose "386".
   28.11  
   28.12 @@ -311,5 +311,5 @@ config X86_OOSTORE
   28.13  
   28.14  config X86_TSC
   28.15  	bool
   28.16 -	depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1) && !X86_NUMAQ
   28.17 +	depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1 || MGEODE_LX) && !X86_NUMAQ
   28.18  	default y
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/linux-2.6-xen-sparse/arch/i386/Kconfig.debug	Sat Jan 27 14:07:19 2007 -0700
    29.3 @@ -0,0 +1,89 @@
    29.4 +menu "Kernel hacking"
    29.5 +
    29.6 +config TRACE_IRQFLAGS_SUPPORT
    29.7 +	bool
    29.8 +	default y
    29.9 +
   29.10 +source "lib/Kconfig.debug"
   29.11 +
   29.12 +config EARLY_PRINTK
   29.13 +	bool "Early printk" if EMBEDDED && DEBUG_KERNEL
   29.14 +	default y
   29.15 +	help
   29.16 +	  Write kernel log output directly into the VGA buffer or to a serial
   29.17 +	  port.
   29.18 +
   29.19 +	  This is useful for kernel debugging when your machine crashes very
   29.20 +	  early before the console code is initialized. For normal operation
   29.21 +	  it is not recommended because it looks ugly and doesn't cooperate
   29.22 +	  with klogd/syslogd or the X server. You should normally N here,
   29.23 +	  unless you want to debug such a crash.
   29.24 +
   29.25 +config DEBUG_STACKOVERFLOW
   29.26 +	bool "Check for stack overflows"
   29.27 +	depends on DEBUG_KERNEL
   29.28 +	help
   29.29 +	  This option will cause messages to be printed if free stack space
   29.30 +	  drops below a certain limit.
   29.31 +
   29.32 +config DEBUG_STACK_USAGE
   29.33 +	bool "Stack utilization instrumentation"
   29.34 +	depends on DEBUG_KERNEL
   29.35 +	help
   29.36 +	  Enables the display of the minimum amount of free stack which each
   29.37 +	  task has ever had available in the sysrq-T and sysrq-P debug output.
   29.38 +
   29.39 +	  This option will slow down process creation somewhat.
   29.40 +
   29.41 +comment "Page alloc debug is incompatible with Software Suspend on i386"
   29.42 +	depends on DEBUG_KERNEL && SOFTWARE_SUSPEND
   29.43 +
   29.44 +config DEBUG_PAGEALLOC
   29.45 +	bool "Debug page memory allocations"
   29.46 +	depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND && !HUGETLBFS
   29.47 +	help
   29.48 +	  Unmap pages from the kernel linear mapping after free_pages().
   29.49 +	  This results in a large slowdown, but helps to find certain types
   29.50 +	  of memory corruptions.
   29.51 +
   29.52 +config DEBUG_RODATA
   29.53 +	bool "Write protect kernel read-only data structures"
   29.54 +	depends on DEBUG_KERNEL
   29.55 +	help
   29.56 +	  Mark the kernel read-only data as write-protected in the pagetables,
   29.57 +	  in order to catch accidental (and incorrect) writes to such const
   29.58 +	  data. This option may have a slight performance impact because a
   29.59 +	  portion of the kernel code won't be covered by a 2MB TLB anymore.
   29.60 +	  If in doubt, say "N".
   29.61 +
   29.62 +config 4KSTACKS
   29.63 +	bool "Use 4Kb for kernel stacks instead of 8Kb"
   29.64 +	depends on DEBUG_KERNEL
   29.65 +	help
   29.66 +	  If you say Y here the kernel will use a 4Kb stacksize for the
   29.67 +	  kernel stack attached to each process/thread. This facilitates
   29.68 +	  running more threads on a system and also reduces the pressure
   29.69 +	  on the VM subsystem for higher order allocations. This option
   29.70 +	  will also use IRQ stacks to compensate for the reduced stackspace.
   29.71 +
   29.72 +config X86_FIND_SMP_CONFIG
   29.73 +	bool
   29.74 +	depends on X86_LOCAL_APIC || X86_VOYAGER
   29.75 +	default y
   29.76 +
   29.77 +config X86_MPPARSE
   29.78 +	bool
   29.79 +	depends on X86_LOCAL_APIC && !X86_VISWS
   29.80 +	default y
   29.81 +
   29.82 +config DOUBLEFAULT
   29.83 +	default y
   29.84 +	bool "Enable doublefault exception handler" if EMBEDDED
   29.85 +	depends on !X86_NO_TSS
   29.86 +	help
   29.87 +          This option allows trapping of rare doublefault exceptions that
   29.88 +          would otherwise cause a system to silently reboot. Disabling this
   29.89 +          option saves about 4k and might cause you much additional grey
   29.90 +          hair.
   29.91 +
   29.92 +endmenu
    30.1 --- a/linux-2.6-xen-sparse/arch/i386/Makefile	Fri Jan 26 14:19:37 2007 -0700
    30.2 +++ b/linux-2.6-xen-sparse/arch/i386/Makefile	Sat Jan 27 14:07:19 2007 -0700
    30.3 @@ -39,6 +39,9 @@ include $(srctree)/arch/i386/Makefile.cp
    30.4  
    30.5  cflags-$(CONFIG_REGPARM) += -mregparm=3
    30.6  
    30.7 +# temporary until string.h is fixed
    30.8 +cflags-y += -ffreestanding
    30.9 +
   30.10  # Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
   30.11  # a lot more stack due to the lack of sharing of stacklots:
   30.12  CFLAGS				+= $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;)
   30.13 @@ -108,8 +111,8 @@ AFLAGS += $(mflags-y)
   30.14  
   30.15  boot := arch/i386/boot
   30.16  
   30.17 -.PHONY: zImage bzImage compressed zlilo bzlilo \
   30.18 -	zdisk bzdisk fdimage fdimage144 fdimage288 install
   30.19 +PHONY += zImage bzImage compressed zlilo bzlilo \
   30.20 +         zdisk bzdisk fdimage fdimage144 fdimage288 isoimage install
   30.21  
   30.22  ifdef CONFIG_XEN
   30.23  CPPFLAGS := -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(CPPFLAGS)
   30.24 @@ -141,7 +144,7 @@ zlilo bzlilo: vmlinux
   30.25  zdisk bzdisk: vmlinux
   30.26  	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk
   30.27  
   30.28 -fdimage fdimage144 fdimage288: vmlinux
   30.29 +fdimage fdimage144 fdimage288 isoimage: vmlinux
   30.30  	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
   30.31  
   30.32  install:
   30.33 @@ -159,7 +162,10 @@ define archhelp
   30.34    echo  '		   install to $$(INSTALL_PATH) and run lilo'
   30.35    echo  '  bzdisk       - Create a boot floppy in /dev/fd0'
   30.36    echo  '  fdimage      - Create a boot floppy image'
   30.37 +  echo  '  isoimage     - Create a boot CD-ROM image'
   30.38  endef
   30.39  
   30.40 -CLEAN_FILES += arch/$(ARCH)/boot/fdimage arch/$(ARCH)/boot/mtools.conf
   30.41 +CLEAN_FILES += arch/$(ARCH)/boot/fdimage \
   30.42 +	       arch/$(ARCH)/boot/image.iso \
   30.43 +	       arch/$(ARCH)/boot/mtools.conf
   30.44  CLEAN_FILES += vmlinuz vmlinux-stripped
    31.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/Makefile	Fri Jan 26 14:19:37 2007 -0700
    31.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/Makefile	Sat Jan 27 14:07:19 2007 -0700
    31.3 @@ -6,11 +6,11 @@ extra-y := head.o init_task.o vmlinux.ld
    31.4  
    31.5  obj-y	:= process.o semaphore.o signal.o entry.o traps.o irq.o \
    31.6  		ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \
    31.7 -		pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \
    31.8 -		quirks.o i8237.o topology.o
    31.9 +		pci-dma.o i386_ksyms.o i387.o bootflag.o \
   31.10 +		quirks.o i8237.o topology.o alternative.o i8253.o tsc.o
   31.11  
   31.12 +obj-$(CONFIG_STACKTRACE)	+= stacktrace.o
   31.13  obj-y				+= cpu/
   31.14 -obj-y				+= timers/
   31.15  obj-y				+= acpi/
   31.16  obj-$(CONFIG_X86_BIOS_REBOOT)	+= reboot.o
   31.17  obj-$(CONFIG_MCA)		+= mca.o
   31.18 @@ -37,7 +37,8 @@ obj-$(CONFIG_EFI) 		+= efi.o efi_stub.o
   31.19  obj-$(CONFIG_DOUBLEFAULT) 	+= doublefault.o
   31.20  obj-$(CONFIG_VM86)		+= vm86.o
   31.21  obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
   31.22 -obj-$(CONFIG_SMP_ALTERNATIVES)	+= smpalts.o
   31.23 +obj-$(CONFIG_HPET_TIMER) 	+= hpet.o
   31.24 +obj-$(CONFIG_K8_NB)		+= k8.o
   31.25  
   31.26  EXTRA_AFLAGS   := -traditional
   31.27  
   31.28 @@ -63,7 +64,8 @@ quiet_cmd_syscall = SYSCALL $@
   31.29  
   31.30  export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH)
   31.31  
   31.32 -vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1
   31.33 +vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 \
   31.34 +		 $(call ld-option, -Wl$(comma)--hash-style=sysv)
   31.35  SYSCFLAGS_vsyscall-sysenter.so	= $(vsyscall-flags)
   31.36  SYSCFLAGS_vsyscall-int80.so	= $(vsyscall-flags)
   31.37  
   31.38 @@ -84,6 +86,8 @@ SYSCFLAGS_vsyscall-syms.o = -r
   31.39  			$(obj)/vsyscall-sysenter.o $(obj)/$(vsyscall_note) FORCE
   31.40  	$(call if_changed,syscall)
   31.41  
   31.42 +k8-y                      += ../../x86_64/kernel/k8.o
   31.43 +
   31.44  ifdef CONFIG_XEN
   31.45  include $(srctree)/scripts/Makefile.xen
   31.46  
    32.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c	Fri Jan 26 14:19:37 2007 -0700
    32.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c	Sat Jan 27 14:07:19 2007 -0700
    32.3 @@ -24,7 +24,6 @@
    32.4   */
    32.5  
    32.6  #include <linux/init.h>
    32.7 -#include <linux/config.h>
    32.8  #include <linux/acpi.h>
    32.9  #include <linux/efi.h>
   32.10  #include <linux/module.h>
   32.11 @@ -60,7 +59,7 @@ static inline int gsi_irq_sharing(int gs
   32.12  
   32.13  #define BAD_MADT_ENTRY(entry, end) (					    \
   32.14  		(!entry) || (unsigned long)entry + sizeof(*entry) > end ||  \
   32.15 -		((acpi_table_entry_header *)entry)->length != sizeof(*entry))
   32.16 +		((acpi_table_entry_header *)entry)->length < sizeof(*entry))
   32.17  
   32.18  #define PREFIX			"ACPI: "
   32.19  
   32.20 @@ -204,6 +203,8 @@ int __init acpi_parse_mcfg(unsigned long
   32.21  		if (mcfg->config[i].base_reserved) {
   32.22  			printk(KERN_ERR PREFIX
   32.23  			       "MMCONFIG not in low 4GB of memory\n");
   32.24 +			kfree(pci_mmcfg_config);
   32.25 +			pci_mmcfg_config_num = 0;
   32.26  			return -ENODEV;
   32.27  		}
   32.28  	}
   32.29 @@ -217,7 +218,7 @@ static int __init acpi_parse_madt(unsign
   32.30  {
   32.31  	struct acpi_table_madt *madt = NULL;
   32.32  
   32.33 -	if (!phys_addr || !size)
   32.34 +	if (!phys_addr || !size || !cpu_has_apic)
   32.35  		return -EINVAL;
   32.36  
   32.37  	madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
   32.38 @@ -624,9 +625,9 @@ extern u32 pmtmr_ioport;
   32.39  
   32.40  static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
   32.41  {
   32.42 -	struct fadt_descriptor_rev2 *fadt = NULL;
   32.43 +	struct fadt_descriptor *fadt = NULL;
   32.44  
   32.45 -	fadt = (struct fadt_descriptor_rev2 *)__acpi_map_table(phys, size);
   32.46 +	fadt = (struct fadt_descriptor *)__acpi_map_table(phys, size);
   32.47  	if (!fadt) {
   32.48  		printk(KERN_WARNING PREFIX "Unable to map FADT\n");
   32.49  		return 0;
   32.50 @@ -671,10 +672,10 @@ unsigned long __init acpi_find_rsdp(void
   32.51  	unsigned long rsdp_phys = 0;
   32.52  
   32.53  	if (efi_enabled) {
   32.54 -		if (efi.acpi20)
   32.55 -			return __pa(efi.acpi20);
   32.56 -		else if (efi.acpi)
   32.57 -			return __pa(efi.acpi);
   32.58 +		if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
   32.59 +			return efi.acpi20;
   32.60 +		else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
   32.61 +			return efi.acpi;
   32.62  	}
   32.63  	/*
   32.64  	 * Scan memory looking for the RSDP signature. First search EBDA (low
   32.65 @@ -696,6 +697,9 @@ static int __init acpi_parse_madt_lapic_
   32.66  {
   32.67  	int count;
   32.68  
   32.69 +	if (!cpu_has_apic)
   32.70 +		return -ENODEV;
   32.71 +
   32.72  	/* 
   32.73  	 * Note that the LAPIC address is obtained from the MADT (32-bit value)
   32.74  	 * and (optionally) overriden by a LAPIC_ADDR_OVR entry (64-bit value).
   32.75 @@ -754,6 +758,9 @@ static int __init acpi_parse_madt_ioapic
   32.76  		return -ENODEV;
   32.77  	}
   32.78  
   32.79 +	if (!cpu_has_apic) 
   32.80 +		return -ENODEV;
   32.81 +
   32.82  	/*
   32.83  	 * if "noapic" boot option, don't look for IO-APICs
   32.84  	 */
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/alternative-xen.c	Sat Jan 27 14:07:19 2007 -0700
    33.3 @@ -0,0 +1,389 @@
    33.4 +#include <linux/module.h>
    33.5 +#include <linux/spinlock.h>
    33.6 +#include <linux/list.h>
    33.7 +#include <asm/alternative.h>
    33.8 +#include <asm/sections.h>
    33.9 +
   33.10 +static int no_replacement    = 0;
   33.11 +static int smp_alt_once      = 0;
   33.12 +static int debug_alternative = 0;
   33.13 +
   33.14 +static int __init noreplacement_setup(char *s)
   33.15 +{
   33.16 +	no_replacement = 1;
   33.17 +	return 1;
   33.18 +}
   33.19 +static int __init bootonly(char *str)
   33.20 +{
   33.21 +	smp_alt_once = 1;
   33.22 +	return 1;
   33.23 +}
   33.24 +static int __init debug_alt(char *str)
   33.25 +{
   33.26 +	debug_alternative = 1;
   33.27 +	return 1;
   33.28 +}
   33.29 +
   33.30 +__setup("noreplacement", noreplacement_setup);
   33.31 +__setup("smp-alt-boot", bootonly);
   33.32 +__setup("debug-alternative", debug_alt);
   33.33 +
   33.34 +#define DPRINTK(fmt, args...) if (debug_alternative) \
   33.35 +	printk(KERN_DEBUG fmt, args)
   33.36 +
   33.37 +#ifdef GENERIC_NOP1
   33.38 +/* Use inline assembly to define this because the nops are defined
   33.39 +   as inline assembly strings in the include files and we cannot
   33.40 +   get them easily into strings. */
   33.41 +asm("\t.data\nintelnops: "
   33.42 +	GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6
   33.43 +	GENERIC_NOP7 GENERIC_NOP8);
   33.44 +extern unsigned char intelnops[];
   33.45 +static unsigned char *intel_nops[ASM_NOP_MAX+1] = {
   33.46 +	NULL,
   33.47 +	intelnops,
   33.48 +	intelnops + 1,
   33.49 +	intelnops + 1 + 2,
   33.50 +	intelnops + 1 + 2 + 3,
   33.51 +	intelnops + 1 + 2 + 3 + 4,
   33.52 +	intelnops + 1 + 2 + 3 + 4 + 5,
   33.53 +	intelnops + 1 + 2 + 3 + 4 + 5 + 6,
   33.54 +	intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
   33.55 +};
   33.56 +#endif
   33.57 +
   33.58 +#ifdef K8_NOP1
   33.59 +asm("\t.data\nk8nops: "
   33.60 +	K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6
   33.61 +	K8_NOP7 K8_NOP8);
   33.62 +extern unsigned char k8nops[];
   33.63 +static unsigned char *k8_nops[ASM_NOP_MAX+1] = {
   33.64 +	NULL,
   33.65 +	k8nops,
   33.66 +	k8nops + 1,
   33.67 +	k8nops + 1 + 2,
   33.68 +	k8nops + 1 + 2 + 3,
   33.69 +	k8nops + 1 + 2 + 3 + 4,
   33.70 +	k8nops + 1 + 2 + 3 + 4 + 5,
   33.71 +	k8nops + 1 + 2 + 3 + 4 + 5 + 6,
   33.72 +	k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
   33.73 +};
   33.74 +#endif
   33.75 +
   33.76 +#ifdef K7_NOP1
   33.77 +asm("\t.data\nk7nops: "
   33.78 +	K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6
   33.79 +	K7_NOP7 K7_NOP8);
   33.80 +extern unsigned char k7nops[];
   33.81 +static unsigned char *k7_nops[ASM_NOP_MAX+1] = {
   33.82 +	NULL,
   33.83 +	k7nops,
   33.84 +	k7nops + 1,
   33.85 +	k7nops + 1 + 2,
   33.86 +	k7nops + 1 + 2 + 3,
   33.87 +	k7nops + 1 + 2 + 3 + 4,
   33.88 +	k7nops + 1 + 2 + 3 + 4 + 5,
   33.89 +	k7nops + 1 + 2 + 3 + 4 + 5 + 6,
   33.90 +	k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
   33.91 +};
   33.92 +#endif
   33.93 +
   33.94 +#ifdef CONFIG_X86_64
   33.95 +
   33.96 +extern char __vsyscall_0;
   33.97 +static inline unsigned char** find_nop_table(void)
   33.98 +{
   33.99 +	return k8_nops;
  33.100 +}
  33.101 +
  33.102 +#else /* CONFIG_X86_64 */
  33.103 +
  33.104 +static struct nop {
  33.105 +	int cpuid;
  33.106 +	unsigned char **noptable;
  33.107 +} noptypes[] = {
  33.108 +	{ X86_FEATURE_K8, k8_nops },
  33.109 +	{ X86_FEATURE_K7, k7_nops },
  33.110 +	{ -1, NULL }
  33.111 +};
  33.112 +
  33.113 +static unsigned char** find_nop_table(void)
  33.114 +{
  33.115 +	unsigned char **noptable = intel_nops;
  33.116 +	int i;
  33.117 +
  33.118 +	for (i = 0; noptypes[i].cpuid >= 0; i++) {
  33.119 +		if (boot_cpu_has(noptypes[i].cpuid)) {
  33.120 +			noptable = noptypes[i].noptable;
  33.121 +			break;
  33.122 +		}
  33.123 +	}
  33.124 +	return noptable;
  33.125 +}
  33.126 +
  33.127 +#endif /* CONFIG_X86_64 */
  33.128 +
  33.129 +extern struct alt_instr __alt_instructions[], __alt_instructions_end[];
  33.130 +extern struct alt_instr __smp_alt_instructions[], __smp_alt_instructions_end[];
  33.131 +extern u8 *__smp_locks[], *__smp_locks_end[];
  33.132 +
  33.133 +extern u8 __smp_alt_begin[], __smp_alt_end[];
  33.134 +
  33.135 +/* Replace instructions with better alternatives for this CPU type.
  33.136 +   This runs before SMP is initialized to avoid SMP problems with
  33.137 +   self modifying code. This implies that assymetric systems where
  33.138 +   APs have less capabilities than the boot processor are not handled.
  33.139 +   Tough. Make sure you disable such features by hand. */
  33.140 +
  33.141 +void apply_alternatives(struct alt_instr *start, struct alt_instr *end)
  33.142 +{
  33.143 +	unsigned char **noptable = find_nop_table();
  33.144 +	struct alt_instr *a;
  33.145 +	u8 *instr;
  33.146 +	int diff, i, k;
  33.147 +
  33.148 +	DPRINTK("%s: alt table %p -> %p\n", __FUNCTION__, start, end);
  33.149 +	for (a = start; a < end; a++) {
  33.150 +		BUG_ON(a->replacementlen > a->instrlen);
  33.151 +		if (!boot_cpu_has(a->cpuid))
  33.152 +			continue;
  33.153 +		instr = a->instr;
  33.154 +#ifdef CONFIG_X86_64
  33.155 +		/* vsyscall code is not mapped yet. resolve it manually. */
  33.156 +		if (instr >= (u8 *)VSYSCALL_START && instr < (u8*)VSYSCALL_END) {
  33.157 +			instr -= VSYSCALL_START - (unsigned long)&__vsyscall_0;
  33.158 +			DPRINTK("%s: vsyscall fixup: %p => %p\n",
  33.159 +				__FUNCTION__, a->instr, instr);
  33.160 +		}
  33.161 +#endif
  33.162 +		memcpy(instr, a->replacement, a->replacementlen);
  33.163 +		diff = a->instrlen - a->replacementlen;
  33.164 +		/* Pad the rest with nops */
  33.165 +		for (i = a->replacementlen; diff > 0; diff -= k, i += k) {
  33.166 +			k = diff;
  33.167 +			if (k > ASM_NOP_MAX)
  33.168 +				k = ASM_NOP_MAX;
  33.169 +			memcpy(a->instr + i, noptable[k], k);
  33.170 +		}
  33.171 +	}
  33.172 +}
  33.173 +
  33.174 +#ifdef CONFIG_SMP
  33.175 +
  33.176 +static void alternatives_smp_save(struct alt_instr *start, struct alt_instr *end)
  33.177 +{
  33.178 +	struct alt_instr *a;
  33.179 +
  33.180 +	DPRINTK("%s: alt table %p-%p\n", __FUNCTION__, start, end);
  33.181 +	for (a = start; a < end; a++) {
  33.182 +		memcpy(a->replacement + a->replacementlen,
  33.183 +		       a->instr,
  33.184 +		       a->instrlen);
  33.185 +	}
  33.186 +}
  33.187 +
  33.188 +static void alternatives_smp_apply(struct alt_instr *start, struct alt_instr *end)
  33.189 +{
  33.190 +	struct alt_instr *a;
  33.191 +
  33.192 +	for (a = start; a < end; a++) {
  33.193 +		memcpy(a->instr,
  33.194 +		       a->replacement + a->replacementlen,
  33.195 +		       a->instrlen);
  33.196 +	}
  33.197 +}
  33.198 +
  33.199 +static void alternatives_smp_lock(u8 **start, u8 **end, u8 *text, u8 *text_end)
  33.200 +{
  33.201 +	u8 **ptr;
  33.202 +
  33.203 +	for (ptr = start; ptr < end; ptr++) {
  33.204 +		if (*ptr < text)
  33.205 +			continue;
  33.206 +		if (*ptr > text_end)
  33.207 +			continue;
  33.208 +		**ptr = 0xf0; /* lock prefix */
  33.209 +	};
  33.210 +}
  33.211 +
  33.212 +static void alternatives_smp_unlock(u8 **start, u8 **end, u8 *text, u8 *text_end)
  33.213 +{
  33.214 +	unsigned char **noptable = find_nop_table();
  33.215 +	u8 **ptr;
  33.216 +
  33.217 +	for (ptr = start; ptr < end; ptr++) {
  33.218 +		if (*ptr < text)
  33.219 +			continue;
  33.220 +		if (*ptr > text_end)
  33.221 +			continue;
  33.222 +		**ptr = noptable[1][0];
  33.223 +	};
  33.224 +}
  33.225 +
  33.226 +struct smp_alt_module {
  33.227 +	/* what is this ??? */
  33.228 +	struct module	*mod;
  33.229 +	char		*name;
  33.230 +
  33.231 +	/* ptrs to lock prefixes */
  33.232 +	u8		**locks;
  33.233 +	u8		**locks_end;
  33.234 +
  33.235 +	/* .text segment, needed to avoid patching init code ;) */
  33.236 +	u8		*text;
  33.237 +	u8		*text_end;
  33.238 +
  33.239 +	struct list_head next;
  33.240 +};
  33.241 +static LIST_HEAD(smp_alt_modules);
  33.242 +static DEFINE_SPINLOCK(smp_alt);
  33.243 +
  33.244 +void alternatives_smp_module_add(struct module *mod, char *name,
  33.245 +				 void *locks, void *locks_end,
  33.246 +				 void *text,  void *text_end)
  33.247 +{
  33.248 +	struct smp_alt_module *smp;
  33.249 +	unsigned long flags;
  33.250 +
  33.251 +	if (no_replacement)
  33.252 +		return;
  33.253 +
  33.254 +	if (smp_alt_once) {
  33.255 +		if (boot_cpu_has(X86_FEATURE_UP))
  33.256 +			alternatives_smp_unlock(locks, locks_end,
  33.257 +						text, text_end);
  33.258 +		return;
  33.259 +	}
  33.260 +
  33.261 +	smp = kzalloc(sizeof(*smp), GFP_KERNEL);
  33.262 +	if (NULL == smp)
  33.263 +		return; /* we'll run the (safe but slow) SMP code then ... */
  33.264 +
  33.265 +	smp->mod	= mod;
  33.266 +	smp->name	= name;
  33.267 +	smp->locks	= locks;
  33.268 +	smp->locks_end	= locks_end;
  33.269 +	smp->text	= text;
  33.270 +	smp->text_end	= text_end;
  33.271 +	DPRINTK("%s: locks %p -> %p, text %p -> %p, name %s\n",
  33.272 +		__FUNCTION__, smp->locks, smp->locks_end,
  33.273 +		smp->text, smp->text_end, smp->name);
  33.274 +
  33.275 +	spin_lock_irqsave(&smp_alt, flags);
  33.276 +	list_add_tail(&smp->next, &smp_alt_modules);
  33.277 +	if (boot_cpu_has(X86_FEATURE_UP))
  33.278 +		alternatives_smp_unlock(smp->locks, smp->locks_end,
  33.279 +					smp->text, smp->text_end);
  33.280 +	spin_unlock_irqrestore(&smp_alt, flags);
  33.281 +}
  33.282 +
  33.283 +void alternatives_smp_module_del(struct module *mod)
  33.284 +{
  33.285 +	struct smp_alt_module *item;
  33.286 +	unsigned long flags;
  33.287 +
  33.288 +	if (no_replacement || smp_alt_once)
  33.289 +		return;
  33.290 +
  33.291 +	spin_lock_irqsave(&smp_alt, flags);
  33.292 +	list_for_each_entry(item, &smp_alt_modules, next) {
  33.293 +		if (mod != item->mod)
  33.294 +			continue;
  33.295 +		list_del(&item->next);
  33.296 +		spin_unlock_irqrestore(&smp_alt, flags);
  33.297 +		DPRINTK("%s: %s\n", __FUNCTION__, item->name);
  33.298 +		kfree(item);
  33.299 +		return;
  33.300 +	}
  33.301 +	spin_unlock_irqrestore(&smp_alt, flags);
  33.302 +}
  33.303 +
  33.304 +void alternatives_smp_switch(int smp)
  33.305 +{
  33.306 +	struct smp_alt_module *mod;
  33.307 +	unsigned long flags;
  33.308 +
  33.309 +#ifdef CONFIG_LOCKDEP
  33.310 +	/*
  33.311 +	 * A not yet fixed binutils section handling bug prevents
  33.312 +	 * alternatives-replacement from working reliably, so turn
  33.313 +	 * it off:
  33.314 +	 */
  33.315 +	printk("lockdep: not fixing up alternatives.\n");
  33.316 +	return;
  33.317 +#endif
  33.318 +
  33.319 +	if (no_replacement || smp_alt_once)
  33.320 +		return;
  33.321 +	BUG_ON(!smp && (num_online_cpus() > 1));
  33.322 +
  33.323 +	spin_lock_irqsave(&smp_alt, flags);
  33.324 +	if (smp) {
  33.325 +		printk(KERN_INFO "SMP alternatives: switching to SMP code\n");
  33.326 +		clear_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability);
  33.327 +		clear_bit(X86_FEATURE_UP, cpu_data[0].x86_capability);
  33.328 +		alternatives_smp_apply(__smp_alt_instructions,
  33.329 +				       __smp_alt_instructions_end);
  33.330 +		list_for_each_entry(mod, &smp_alt_modules, next)
  33.331 +			alternatives_smp_lock(mod->locks, mod->locks_end,
  33.332 +					      mod->text, mod->text_end);
  33.333 +	} else {
  33.334 +		printk(KERN_INFO "SMP alternatives: switching to UP code\n");
  33.335 +		set_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability);
  33.336 +		set_bit(X86_FEATURE_UP, cpu_data[0].x86_capability);
  33.337 +		apply_alternatives(__smp_alt_instructions,
  33.338 +				   __smp_alt_instructions_end);
  33.339 +		list_for_each_entry(mod, &smp_alt_modules, next)
  33.340 +			alternatives_smp_unlock(mod->locks, mod->locks_end,
  33.341 +						mod->text, mod->text_end);
  33.342 +	}
  33.343 +	spin_unlock_irqrestore(&smp_alt, flags);
  33.344 +}
  33.345 +
  33.346 +#endif
  33.347 +
  33.348 +void __init alternative_instructions(void)
  33.349 +{
  33.350 +	if (no_replacement) {
  33.351 +		printk(KERN_INFO "(SMP-)alternatives turned off\n");
  33.352 +		free_init_pages("SMP alternatives",
  33.353 +				(unsigned long)__smp_alt_begin,
  33.354 +				(unsigned long)__smp_alt_end);
  33.355 +		return;
  33.356 +	}
  33.357 +	apply_alternatives(__alt_instructions, __alt_instructions_end);
  33.358 +
  33.359 +	/* switch to patch-once-at-boottime-only mode and free the
  33.360 +	 * tables in case we know the number of CPUs will never ever
  33.361 +	 * change */
  33.362 +#ifdef CONFIG_HOTPLUG_CPU
  33.363 +	if (num_possible_cpus() < 2)
  33.364 +		smp_alt_once = 1;
  33.365 +#else
  33.366 +	smp_alt_once = 1;
  33.367 +#endif
  33.368 +
  33.369 +#ifdef CONFIG_SMP
  33.370 +	if (smp_alt_once) {
  33.371 +		if (1 == num_possible_cpus()) {
  33.372 +			printk(KERN_INFO "SMP alternatives: switching to UP code\n");
  33.373 +			set_bit(X86_FEATURE_UP, boot_cpu_data.x86_capability);
  33.374 +			set_bit(X86_FEATURE_UP, cpu_data[0].x86_capability);
  33.375 +			apply_alternatives(__smp_alt_instructions,
  33.376 +					   __smp_alt_instructions_end);
  33.377 +			alternatives_smp_unlock(__smp_locks, __smp_locks_end,
  33.378 +						_text, _etext);
  33.379 +		}
  33.380 +		free_init_pages("SMP alternatives",
  33.381 +				(unsigned long)__smp_alt_begin,
  33.382 +				(unsigned long)__smp_alt_end);
  33.383 +	} else {
  33.384 +		alternatives_smp_save(__smp_alt_instructions,
  33.385 +				      __smp_alt_instructions_end);
  33.386 +		alternatives_smp_module_add(NULL, "core kernel",
  33.387 +					    __smp_locks, __smp_locks_end,
  33.388 +					    _text, _etext);
  33.389 +		alternatives_smp_switch(0);
  33.390 +	}
  33.391 +#endif
  33.392 +}
    34.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c	Fri Jan 26 14:19:37 2007 -0700
    34.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c	Sat Jan 27 14:07:19 2007 -0700
    34.3 @@ -14,7 +14,6 @@
    34.4   *	Mikael Pettersson	:	PM converted to driver model.
    34.5   */
    34.6  
    34.7 -#include <linux/config.h>
    34.8  #include <linux/init.h>
    34.9  
   34.10  #include <linux/mm.h>
   34.11 @@ -36,8 +35,10 @@
   34.12  #include <asm/arch_hooks.h>
   34.13  #include <asm/hpet.h>
   34.14  #include <asm/i8253.h>
   34.15 +#include <asm/nmi.h>
   34.16  
   34.17  #include <mach_apic.h>
   34.18 +#include <mach_apicdef.h>
   34.19  #include <mach_ipi.h>
   34.20  
   34.21  #include "io_ports.h"
   34.22 @@ -60,6 +61,20 @@ int enable_local_apic __initdata = 0; /*
   34.23   */
   34.24  int apic_verbosity;
   34.25  
   34.26 +#ifndef CONFIG_XEN
   34.27 +static int modern_apic(void)
   34.28 +{
   34.29 +	unsigned int lvr, version;
   34.30 +	/* AMD systems use old APIC versions, so check the CPU */
   34.31 +	if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
   34.32 +		boot_cpu_data.x86 >= 0xf)
   34.33 +		return 1;
   34.34 +	lvr = apic_read(APIC_LVR);
   34.35 +	version = GET_APIC_VERSION(lvr);
   34.36 +	return version >= 0x14;
   34.37 +}
   34.38 +#endif /* !CONFIG_XEN */
   34.39 +
   34.40  /*
   34.41   * 'what should we do if we get a hw irq event on an illegal vector'.
   34.42   * each architecture has to answer this themselves.
    35.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/asm-offsets.c	Fri Jan 26 14:19:37 2007 -0700
    35.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/asm-offsets.c	Sat Jan 27 14:07:19 2007 -0700
    35.3 @@ -4,6 +4,7 @@
    35.4   * to extract and format the required data.
    35.5   */
    35.6  
    35.7 +#include <linux/crypto.h>
    35.8  #include <linux/sched.h>
    35.9  #include <linux/signal.h>
   35.10  #include <linux/personality.h>
   35.11 @@ -54,6 +55,7 @@ void foo(void)
   35.12  	OFFSET(TI_preempt_count, thread_info, preempt_count);
   35.13  	OFFSET(TI_addr_limit, thread_info, addr_limit);
   35.14  	OFFSET(TI_restart_block, thread_info, restart_block);
   35.15 +	OFFSET(TI_sysenter_return, thread_info, sysenter_return);
   35.16  	BLANK();
   35.17  
   35.18  	OFFSET(EXEC_DOMAIN_handler, exec_domain, handler);
   35.19 @@ -74,5 +76,7 @@ void foo(void)
   35.20  #endif
   35.21  
   35.22  	DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
   35.23 -	DEFINE(VSYSCALL_BASE, VSYSCALL_BASE);
   35.24 +	DEFINE(VDSO_PRELINK, VDSO_PRELINK);
   35.25 +
   35.26 +	OFFSET(crypto_tfm_ctx_offset, crypto_tfm, __crt_ctx);
   35.27  }
    36.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c	Fri Jan 26 14:19:37 2007 -0700
    36.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c	Sat Jan 27 14:07:19 2007 -0700
    36.3 @@ -11,10 +11,16 @@
    36.4  #include <asm/msr.h>
    36.5  #include <asm/io.h>
    36.6  #include <asm/mmu_context.h>
    36.7 +#include <asm/mtrr.h>
    36.8 +#include <asm/mce.h>
    36.9  #ifdef CONFIG_X86_LOCAL_APIC
   36.10  #include <asm/mpspec.h>
   36.11  #include <asm/apic.h>
   36.12  #include <mach_apic.h>
   36.13 +#else
   36.14 +#ifdef CONFIG_XEN
   36.15 +#define phys_pkg_id(a,b) a
   36.16 +#endif
   36.17  #endif
   36.18  #include <asm/hypervisor.h>
   36.19  
   36.20 @@ -28,9 +34,10 @@ DEFINE_PER_CPU(unsigned char, cpu_16bit_
   36.21  EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack);
   36.22  #endif
   36.23  
   36.24 -static int cachesize_override __devinitdata = -1;
   36.25 -static int disable_x86_fxsr __devinitdata = 0;
   36.26 -static int disable_x86_serial_nr __devinitdata = 1;
   36.27 +static int cachesize_override __cpuinitdata = -1;
   36.28 +static int disable_x86_fxsr __cpuinitdata;
   36.29 +static int disable_x86_serial_nr __cpuinitdata = 1;
   36.30 +static int disable_x86_sep __cpuinitdata;
   36.31  
   36.32  struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {};
   36.33  
   36.34 @@ -62,7 +69,7 @@ static int __init cachesize_setup(char *
   36.35  }
   36.36  __setup("cachesize=", cachesize_setup);
   36.37  
   36.38 -int __devinit get_model_name(struct cpuinfo_x86 *c)
   36.39 +int __cpuinit get_model_name(struct cpuinfo_x86 *c)
   36.40  {
   36.41  	unsigned int *v;
   36.42  	char *p, *q;
   36.43 @@ -92,7 +99,7 @@ int __devinit get_model_name(struct cpui
   36.44  }
   36.45  
   36.46  
   36.47 -void __devinit display_cacheinfo(struct cpuinfo_x86 *c)
   36.48 +void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c)
   36.49  {
   36.50  	unsigned int n, dummy, ecx, edx, l2size;
   36.51  
   36.52 @@ -133,7 +140,7 @@ void __devinit display_cacheinfo(struct 
   36.53  /* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */
   36.54  
   36.55  /* Look up CPU names by table lookup. */
   36.56 -static char __devinit *table_lookup_model(struct cpuinfo_x86 *c)
   36.57 +static char __cpuinit *table_lookup_model(struct cpuinfo_x86 *c)
   36.58  {
   36.59  	struct cpu_model_info *info;
   36.60  
   36.61 @@ -154,7 +161,7 @@ static char __devinit *table_lookup_mode
   36.62  }
   36.63  
   36.64  
   36.65 -static void __devinit get_cpu_vendor(struct cpuinfo_x86 *c, int early)
   36.66 +static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c, int early)
   36.67  {
   36.68  	char *v = c->x86_vendor_id;
   36.69  	int i;
   36.70 @@ -190,6 +197,14 @@ static int __init x86_fxsr_setup(char * 
   36.71  __setup("nofxsr", x86_fxsr_setup);
   36.72  
   36.73  
   36.74 +static int __init x86_sep_setup(char * s)
   36.75 +{
   36.76 +	disable_x86_sep = 1;
   36.77 +	return 1;
   36.78 +}
   36.79 +__setup("nosep", x86_sep_setup);
   36.80 +
   36.81 +
   36.82  /* Standard macro to see if a specific flag is changeable */
   36.83  static inline int flag_is_changeable_p(u32 flag)
   36.84  {
   36.85 @@ -213,7 +228,7 @@ static inline int flag_is_changeable_p(u
   36.86  
   36.87  
   36.88  /* Probe for the CPUID instruction */
   36.89 -static int __devinit have_cpuid_p(void)
   36.90 +static int __cpuinit have_cpuid_p(void)
   36.91  {
   36.92  	return flag_is_changeable_p(X86_EFLAGS_ID);
   36.93  }
   36.94 @@ -257,10 +272,10 @@ static void __init early_cpu_detect(void
   36.95  	}
   36.96  }
   36.97  
   36.98 -void __devinit generic_identify(struct cpuinfo_x86 * c)
   36.99 +void __cpuinit generic_identify(struct cpuinfo_x86 * c)
  36.100  {
  36.101  	u32 tfms, xlvl;
  36.102 -	int junk;
  36.103 +	int ebx;
  36.104  
  36.105  	if (have_cpuid_p()) {
  36.106  		/* Get vendor name */
  36.107 @@ -276,7 +291,7 @@ void __devinit generic_identify(struct c
  36.108  		/* Intel-defined flags: level 0x00000001 */
  36.109  		if ( c->cpuid_level >= 0x00000001 ) {
  36.110  			u32 capability, excap;
  36.111 -			cpuid(0x00000001, &tfms, &junk, &excap, &capability);
  36.112 +			cpuid(0x00000001, &tfms, &ebx, &excap, &capability);
  36.113  			c->x86_capability[0] = capability;
  36.114  			c->x86_capability[4] = excap;
  36.115  			c->x86 = (tfms >> 8) & 15;
  36.116 @@ -286,6 +301,11 @@ void __devinit generic_identify(struct c
  36.117  			if (c->x86 >= 0x6)
  36.118  				c->x86_model += ((tfms >> 16) & 0xF) << 4;
  36.119  			c->x86_mask = tfms & 15;
  36.120 +#ifdef CONFIG_X86_HT
  36.121 +			c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0);
  36.122 +#else
  36.123 +			c->apicid = (ebx >> 24) & 0xFF;
  36.124 +#endif
  36.125  		} else {
  36.126  			/* Have CPUID level 0 only - unheard of */
  36.127  			c->x86 = 4;
  36.128 @@ -306,11 +326,11 @@ void __devinit generic_identify(struct c
  36.129  	early_intel_workaround(c);
  36.130  
  36.131  #ifdef CONFIG_X86_HT
  36.132 -	phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff;
  36.133 +	c->phys_proc_id = (cpuid_ebx(1) >> 24) & 0xff;
  36.134  #endif
  36.135  }
  36.136  
  36.137 -static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
  36.138 +static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
  36.139  {
  36.140  	if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) {
  36.141  		/* Disable processor serial number */
  36.142 @@ -338,7 +358,7 @@ static int __init x86_serial_nr_setup(ch
  36.143  /*
  36.144   * This does the hard work of actually picking apart the CPU stuff...
  36.145   */
  36.146 -void __devinit identify_cpu(struct cpuinfo_x86 *c)
  36.147 +void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
  36.148  {
  36.149  	int i;
  36.150  
  36.151 @@ -408,6 +428,10 @@ void __devinit identify_cpu(struct cpuin
  36.152  		clear_bit(X86_FEATURE_XMM, c->x86_capability);
  36.153  	}
  36.154  
  36.155 +	/* SEP disabled? */
  36.156 +	if (disable_x86_sep)
  36.157 +		clear_bit(X86_FEATURE_SEP, c->x86_capability);
  36.158 +
  36.159  	if (disable_pse)
  36.160  		clear_bit(X86_FEATURE_PSE, c->x86_capability);
  36.161  
  36.162 @@ -420,7 +444,7 @@ void __devinit identify_cpu(struct cpuin
  36.163  		else
  36.164  			/* Last resort... */
  36.165  			sprintf(c->x86_model_id, "%02x/%02x",
  36.166 -				c->x86_vendor, c->x86_model);
  36.167 +				c->x86, c->x86_model);
  36.168  	}
  36.169  
  36.170  	/* Now the feature flags better reflect actual CPU features! */
  36.171 @@ -456,16 +480,13 @@ void __devinit identify_cpu(struct cpuin
  36.172  }
  36.173  
  36.174  #ifdef CONFIG_X86_HT
  36.175 -void __devinit detect_ht(struct cpuinfo_x86 *c)
  36.176 +void __cpuinit detect_ht(struct cpuinfo_x86 *c)
  36.177  {
  36.178  	u32 	eax, ebx, ecx, edx;
  36.179  	int 	index_msb, core_bits;
  36.180 -	int 	cpu = smp_processor_id();
  36.181  
  36.182  	cpuid(1, &eax, &ebx, &ecx, &edx);
  36.183  
  36.184 -	c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0);
  36.185 -
  36.186  	if (!cpu_has(c, X86_FEATURE_HT) || cpu_has(c, X86_FEATURE_CMP_LEGACY))
  36.187  		return;
  36.188  
  36.189 @@ -476,16 +497,17 @@ void __devinit detect_ht(struct cpuinfo_
  36.190  	} else if (smp_num_siblings > 1 ) {
  36.191  
  36.192  		if (smp_num_siblings > NR_CPUS) {
  36.193 -			printk(KERN_WARNING "CPU: Unsupported number of the siblings %d", smp_num_siblings);
  36.194 +			printk(KERN_WARNING "CPU: Unsupported number of the "
  36.195 +					"siblings %d", smp_num_siblings);
  36.196  			smp_num_siblings = 1;
  36.197  			return;
  36.198  		}
  36.199  
  36.200  		index_msb = get_count_order(smp_num_siblings);
  36.201 -		phys_proc_id[cpu] = phys_pkg_id((ebx >> 24) & 0xFF, index_msb);
  36.202 +		c->phys_proc_id = phys_pkg_id((ebx >> 24) & 0xFF, index_msb);
  36.203  
  36.204  		printk(KERN_INFO  "CPU: Physical Processor ID: %d\n",
  36.205 -		       phys_proc_id[cpu]);
  36.206 +		       c->phys_proc_id);
  36.207  
  36.208  		smp_num_siblings = smp_num_siblings / c->x86_max_cores;
  36.209  
  36.210 @@ -493,17 +515,17 @@ void __devinit detect_ht(struct cpuinfo_
  36.211  
  36.212  		core_bits = get_count_order(c->x86_max_cores);
  36.213  
  36.214 -		cpu_core_id[cpu] = phys_pkg_id((ebx >> 24) & 0xFF, index_msb) &
  36.215 +		c->cpu_core_id = phys_pkg_id((ebx >> 24) & 0xFF, index_msb) &
  36.216  					       ((1 << core_bits) - 1);
  36.217  
  36.218  		if (c->x86_max_cores > 1)
  36.219  			printk(KERN_INFO  "CPU: Processor Core ID: %d\n",
  36.220 -			       cpu_core_id[cpu]);
  36.221 +			       c->cpu_core_id);
  36.222  	}
  36.223  }
  36.224  #endif
  36.225  
  36.226 -void __devinit print_cpu_info(struct cpuinfo_x86 *c)
  36.227 +void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
  36.228  {
  36.229  	char *vendor = NULL;
  36.230  
  36.231 @@ -617,6 +639,12 @@ void __cpuinit cpu_init(void)
  36.232  	}
  36.233  
  36.234  #ifndef CONFIG_XEN
  36.235 +	/* The CPU hotplug case */
  36.236 +	if (cpu_gdt_descr->address) {
  36.237 +		gdt = (struct desc_struct *)cpu_gdt_descr->address;
  36.238 +		memset(gdt, 0, PAGE_SIZE);
  36.239 +		goto old_gdt;
  36.240 +	}
  36.241  	/*
  36.242  	 * This is a horrible hack to allocate the GDT.  The problem
  36.243  	 * is that cpu_init() is called really early for the boot CPU
  36.244 @@ -635,7 +663,7 @@ void __cpuinit cpu_init(void)
  36.245  				local_irq_enable();
  36.246  		}
  36.247  	}
  36.248 -
  36.249 +old_gdt:
  36.250  	/*
  36.251  	 * Initialize the per-CPU GDT with the boot GDT,
  36.252  	 * and set up the GDT descriptor:
  36.253 @@ -703,7 +731,7 @@ void __cpuinit cpu_init(void)
  36.254  }
  36.255  
  36.256  #ifdef CONFIG_HOTPLUG_CPU
  36.257 -void __devinit cpu_uninit(void)
  36.258 +void __cpuinit cpu_uninit(void)
  36.259  {
  36.260  	int cpu = raw_smp_processor_id();
  36.261  	cpu_clear(cpu, cpu_initialized);
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/intel_cacheinfo-xen.c	Sat Jan 27 14:07:19 2007 -0700
    37.3 @@ -0,0 +1,774 @@
    37.4 +/*
    37.5 + *      Routines to indentify caches on Intel CPU.
    37.6 + *
    37.7 + *      Changes:
    37.8 + *      Venkatesh Pallipadi	: Adding cache identification through cpuid(4)
    37.9 + *		Ashok Raj <ashok.raj@intel.com>: Work with CPU hotplug infrastructure.
   37.10 + *	Andi Kleen		: CPUID4 emulation on AMD.
   37.11 + */
   37.12 +
   37.13 +#include <linux/init.h>
   37.14 +#include <linux/slab.h>
   37.15 +#include <linux/device.h>
   37.16 +#include <linux/compiler.h>
   37.17 +#include <linux/cpu.h>
   37.18 +#include <linux/sched.h>
   37.19 +
   37.20 +#include <asm/processor.h>
   37.21 +#include <asm/smp.h>
   37.22 +
   37.23 +#define LVL_1_INST	1
   37.24 +#define LVL_1_DATA	2
   37.25 +#define LVL_2		3
   37.26 +#define LVL_3		4
   37.27 +#define LVL_TRACE	5
   37.28 +
   37.29 +struct _cache_table
   37.30 +{
   37.31 +	unsigned char descriptor;
   37.32 +	char cache_type;
   37.33 +	short size;
   37.34 +};
   37.35 +
   37.36 +/* all the cache descriptor types we care about (no TLB or trace cache entries) */
   37.37 +static struct _cache_table cache_table[] __cpuinitdata =
   37.38 +{
   37.39 +	{ 0x06, LVL_1_INST, 8 },	/* 4-way set assoc, 32 byte line size */
   37.40 +	{ 0x08, LVL_1_INST, 16 },	/* 4-way set assoc, 32 byte line size */
   37.41 +	{ 0x0a, LVL_1_DATA, 8 },	/* 2 way set assoc, 32 byte line size */
   37.42 +	{ 0x0c, LVL_1_DATA, 16 },	/* 4-way set assoc, 32 byte line size */
   37.43 +	{ 0x22, LVL_3,      512 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.44 +	{ 0x23, LVL_3,      1024 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.45 +	{ 0x25, LVL_3,      2048 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.46 +	{ 0x29, LVL_3,      4096 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.47 +	{ 0x2c, LVL_1_DATA, 32 },	/* 8-way set assoc, 64 byte line size */
   37.48 +	{ 0x30, LVL_1_INST, 32 },	/* 8-way set assoc, 64 byte line size */
   37.49 +	{ 0x39, LVL_2,      128 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.50 +	{ 0x3a, LVL_2,      192 },	/* 6-way set assoc, sectored cache, 64 byte line size */
   37.51 +	{ 0x3b, LVL_2,      128 },	/* 2-way set assoc, sectored cache, 64 byte line size */
   37.52 +	{ 0x3c, LVL_2,      256 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.53 +	{ 0x3d, LVL_2,      384 },	/* 6-way set assoc, sectored cache, 64 byte line size */
   37.54 +	{ 0x3e, LVL_2,      512 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.55 +	{ 0x41, LVL_2,      128 },	/* 4-way set assoc, 32 byte line size */
   37.56 +	{ 0x42, LVL_2,      256 },	/* 4-way set assoc, 32 byte line size */
   37.57 +	{ 0x43, LVL_2,      512 },	/* 4-way set assoc, 32 byte line size */
   37.58 +	{ 0x44, LVL_2,      1024 },	/* 4-way set assoc, 32 byte line size */
   37.59 +	{ 0x45, LVL_2,      2048 },	/* 4-way set assoc, 32 byte line size */
   37.60 +	{ 0x46, LVL_3,      4096 },	/* 4-way set assoc, 64 byte line size */
   37.61 +	{ 0x47, LVL_3,      8192 },	/* 8-way set assoc, 64 byte line size */
   37.62 +	{ 0x49, LVL_3,      4096 },	/* 16-way set assoc, 64 byte line size */
   37.63 +	{ 0x4a, LVL_3,      6144 },	/* 12-way set assoc, 64 byte line size */
   37.64 +	{ 0x4b, LVL_3,      8192 },	/* 16-way set assoc, 64 byte line size */
   37.65 +	{ 0x4c, LVL_3,     12288 },	/* 12-way set assoc, 64 byte line size */
   37.66 +	{ 0x4d, LVL_3,     16384 },	/* 16-way set assoc, 64 byte line size */
   37.67 +	{ 0x60, LVL_1_DATA, 16 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.68 +	{ 0x66, LVL_1_DATA, 8 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.69 +	{ 0x67, LVL_1_DATA, 16 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.70 +	{ 0x68, LVL_1_DATA, 32 },	/* 4-way set assoc, sectored cache, 64 byte line size */
   37.71 +	{ 0x70, LVL_TRACE,  12 },	/* 8-way set assoc */
   37.72 +	{ 0x71, LVL_TRACE,  16 },	/* 8-way set assoc */
   37.73 +	{ 0x72, LVL_TRACE,  32 },	/* 8-way set assoc */
   37.74 +	{ 0x73, LVL_TRACE,  64 },	/* 8-way set assoc */
   37.75 +	{ 0x78, LVL_2,    1024 },	/* 4-way set assoc, 64 byte line size */
   37.76 +	{ 0x79, LVL_2,     128 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.77 +	{ 0x7a, LVL_2,     256 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.78 +	{ 0x7b, LVL_2,     512 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.79 +	{ 0x7c, LVL_2,    1024 },	/* 8-way set assoc, sectored cache, 64 byte line size */
   37.80 +	{ 0x7d, LVL_2,    2048 },	/* 8-way set assoc, 64 byte line size */
   37.81 +	{ 0x7f, LVL_2,     512 },	/* 2-way set assoc, 64 byte line size */
   37.82 +	{ 0x82, LVL_2,     256 },	/* 8-way set assoc, 32 byte line size */
   37.83 +	{ 0x83, LVL_2,     512 },	/* 8-way set assoc, 32 byte line size */
   37.84 +	{ 0x84, LVL_2,    1024 },	/* 8-way set assoc, 32 byte line size */
   37.85 +	{ 0x85, LVL_2,    2048 },	/* 8-way set assoc, 32 byte line size */
   37.86 +	{ 0x86, LVL_2,     512 },	/* 4-way set assoc, 64 byte line size */
   37.87 +	{ 0x87, LVL_2,    1024 },	/* 8-way set assoc, 64 byte line size */
   37.88 +	{ 0x00, 0, 0}
   37.89 +};
   37.90 +
   37.91 +
   37.92 +enum _cache_type
   37.93 +{
   37.94 +	CACHE_TYPE_NULL	= 0,
   37.95 +	CACHE_TYPE_DATA = 1,
   37.96 +	CACHE_TYPE_INST = 2,
   37.97 +	CACHE_TYPE_UNIFIED = 3
   37.98 +};
   37.99 +
  37.100 +union _cpuid4_leaf_eax {
  37.101 +	struct {
  37.102 +		enum _cache_type	type:5;
  37.103 +		unsigned int		level:3;
  37.104 +		unsigned int		is_self_initializing:1;
  37.105 +		unsigned int		is_fully_associative:1;
  37.106 +		unsigned int		reserved:4;
  37.107 +		unsigned int		num_threads_sharing:12;
  37.108 +		unsigned int		num_cores_on_die:6;
  37.109 +	} split;
  37.110 +	u32 full;
  37.111 +};
  37.112 +
  37.113 +union _cpuid4_leaf_ebx {
  37.114 +	struct {
  37.115 +		unsigned int		coherency_line_size:12;
  37.116 +		unsigned int		physical_line_partition:10;
  37.117 +		unsigned int		ways_of_associativity:10;
  37.118 +	} split;
  37.119 +	u32 full;
  37.120 +};
  37.121 +
  37.122 +union _cpuid4_leaf_ecx {
  37.123 +	struct {
  37.124 +		unsigned int		number_of_sets:32;
  37.125 +	} split;
  37.126 +	u32 full;
  37.127 +};
  37.128 +
  37.129 +struct _cpuid4_info {
  37.130 +	union _cpuid4_leaf_eax eax;
  37.131 +	union _cpuid4_leaf_ebx ebx;
  37.132 +	union _cpuid4_leaf_ecx ecx;
  37.133 +	unsigned long size;
  37.134 +	cpumask_t shared_cpu_map;
  37.135 +};
  37.136 +
  37.137 +unsigned short			num_cache_leaves;
  37.138 +
  37.139 +/* AMD doesn't have CPUID4. Emulate it here to report the same
  37.140 +   information to the user.  This makes some assumptions about the machine:
  37.141 +   No L3, L2 not shared, no SMT etc. that is currently true on AMD CPUs.
  37.142 +
  37.143 +   In theory the TLBs could be reported as fake type (they are in "dummy").
  37.144 +   Maybe later */
  37.145 +union l1_cache {
  37.146 +	struct {
  37.147 +		unsigned line_size : 8;
  37.148 +		unsigned lines_per_tag : 8;
  37.149 +		unsigned assoc : 8;
  37.150 +		unsigned size_in_kb : 8;
  37.151 +	};
  37.152 +	unsigned val;
  37.153 +};
  37.154 +
  37.155 +union l2_cache {
  37.156 +	struct {
  37.157 +		unsigned line_size : 8;
  37.158 +		unsigned lines_per_tag : 4;
  37.159 +		unsigned assoc : 4;
  37.160 +		unsigned size_in_kb : 16;
  37.161 +	};
  37.162 +	unsigned val;
  37.163 +};
  37.164 +
  37.165 +static const unsigned short assocs[] = {
  37.166 +	[1] = 1, [2] = 2, [4] = 4, [6] = 8,
  37.167 +	[8] = 16,
  37.168 +	[0xf] = 0xffff // ??
  37.169 +	};
  37.170 +static const unsigned char levels[] = { 1, 1, 2 };
  37.171 +static const unsigned char types[] = { 1, 2, 3 };
  37.172 +
  37.173 +static void __cpuinit amd_cpuid4(int leaf, union _cpuid4_leaf_eax *eax,
  37.174 +		       union _cpuid4_leaf_ebx *ebx,
  37.175 +		       union _cpuid4_leaf_ecx *ecx)
  37.176 +{
  37.177 +	unsigned dummy;
  37.178 +	unsigned line_size, lines_per_tag, assoc, size_in_kb;
  37.179 +	union l1_cache l1i, l1d;
  37.180 +	union l2_cache l2;
  37.181 +
  37.182 +	eax->full = 0;
  37.183 +	ebx->full = 0;
  37.184 +	ecx->full = 0;
  37.185 +
  37.186 +	cpuid(0x80000005, &dummy, &dummy, &l1d.val, &l1i.val);
  37.187 +	cpuid(0x80000006, &dummy, &dummy, &l2.val, &dummy);
  37.188 +
  37.189 +	if (leaf > 2 || !l1d.val || !l1i.val || !l2.val)
  37.190 +		return;
  37.191 +
  37.192 +	eax->split.is_self_initializing = 1;
  37.193 +	eax->split.type = types[leaf];
  37.194 +	eax->split.level = levels[leaf];
  37.195 +	eax->split.num_threads_sharing = 0;
  37.196 +	eax->split.num_cores_on_die = current_cpu_data.x86_max_cores - 1;
  37.197 +
  37.198 +	if (leaf <= 1) {
  37.199 +		union l1_cache *l1 = leaf == 0 ? &l1d : &l1i;
  37.200 +		assoc = l1->assoc;
  37.201 +		line_size = l1->line_size;
  37.202 +		lines_per_tag = l1->lines_per_tag;
  37.203 +		size_in_kb = l1->size_in_kb;
  37.204 +	} else {
  37.205 +		assoc = l2.assoc;
  37.206 +		line_size = l2.line_size;
  37.207 +		lines_per_tag = l2.lines_per_tag;
  37.208 +		/* cpu_data has errata corrections for K7 applied */
  37.209 +		size_in_kb = current_cpu_data.x86_cache_size;
  37.210 +	}
  37.211 +
  37.212 +	if (assoc == 0xf)
  37.213 +		eax->split.is_fully_associative = 1;
  37.214 +	ebx->split.coherency_line_size = line_size - 1;
  37.215 +	ebx->split.ways_of_associativity = assocs[assoc] - 1;
  37.216 +	ebx->split.physical_line_partition = lines_per_tag - 1;
  37.217 +	ecx->split.number_of_sets = (size_in_kb * 1024) / line_size /
  37.218 +		(ebx->split.ways_of_associativity + 1) - 1;
  37.219 +}
  37.220 +
  37.221 +static int __cpuinit cpuid4_cache_lookup(int index, struct _cpuid4_info *this_leaf)
  37.222 +{
  37.223 +	union _cpuid4_leaf_eax 	eax;
  37.224 +	union _cpuid4_leaf_ebx 	ebx;
  37.225 +	union _cpuid4_leaf_ecx 	ecx;
  37.226 +	unsigned		edx;
  37.227 +
  37.228 +	if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)
  37.229 +		amd_cpuid4(index, &eax, &ebx, &ecx);
  37.230 +	else
  37.231 +		cpuid_count(4, index, &eax.full, &ebx.full, &ecx.full,  &edx);
  37.232 +	if (eax.split.type == CACHE_TYPE_NULL)
  37.233 +		return -EIO; /* better error ? */
  37.234 +
  37.235 +	this_leaf->eax = eax;
  37.236 +	this_leaf->ebx = ebx;
  37.237 +	this_leaf->ecx = ecx;
  37.238 +	this_leaf->size = (ecx.split.number_of_sets + 1) *
  37.239 +		(ebx.split.coherency_line_size + 1) *
  37.240 +		(ebx.split.physical_line_partition + 1) *
  37.241 +		(ebx.split.ways_of_associativity + 1);
  37.242 +	return 0;
  37.243 +}
  37.244 +
  37.245 +/* will only be called once; __init is safe here */
  37.246 +static int __init find_num_cache_leaves(void)
  37.247 +{
  37.248 +	unsigned int		eax, ebx, ecx, edx;
  37.249 +	union _cpuid4_leaf_eax	cache_eax;
  37.250 +	int 			i = -1;
  37.251 +
  37.252 +	do {
  37.253 +		++i;
  37.254 +		/* Do cpuid(4) loop to find out num_cache_leaves */
  37.255 +		cpuid_count(4, i, &eax, &ebx, &ecx, &edx);
  37.256 +		cache_eax.full = eax;
  37.257 +	} while (cache_eax.split.type != CACHE_TYPE_NULL);
  37.258 +	return i;
  37.259 +}
  37.260 +
  37.261 +unsigned int __cpuinit init_intel_cacheinfo(struct cpuinfo_x86 *c)
  37.262 +{
  37.263 +	unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */
  37.264 +	unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */
  37.265 +	unsigned int new_l2 = 0, new_l3 = 0, i; /* Cache sizes from cpuid(4) */
  37.266 +	unsigned int l2_id = 0, l3_id = 0, num_threads_sharing, index_msb;
  37.267 +#ifdef CONFIG_X86_HT
  37.268 +	unsigned int cpu = (c == &boot_cpu_data) ? 0 : (c - cpu_data);
  37.269 +#endif
  37.270 +
  37.271 +	if (c->cpuid_level > 3) {
  37.272 +		static int is_initialized;
  37.273 +
  37.274 +		if (is_initialized == 0) {
  37.275 +			/* Init num_cache_leaves from boot CPU */
  37.276 +			num_cache_leaves = find_num_cache_leaves();
  37.277 +			is_initialized++;
  37.278 +		}
  37.279 +
  37.280 +		/*
  37.281 +		 * Whenever possible use cpuid(4), deterministic cache
  37.282 +		 * parameters cpuid leaf to find the cache details
  37.283 +		 */
  37.284 +		for (i = 0; i < num_cache_leaves; i++) {
  37.285 +			struct _cpuid4_info this_leaf;
  37.286 +
  37.287 +			int retval;
  37.288 +
  37.289 +			retval = cpuid4_cache_lookup(i, &this_leaf);
  37.290 +			if (retval >= 0) {
  37.291 +				switch(this_leaf.eax.split.level) {
  37.292 +				    case 1:
  37.293 +					if (this_leaf.eax.split.type ==
  37.294 +							CACHE_TYPE_DATA)
  37.295 +						new_l1d = this_leaf.size/1024;
  37.296 +					else if (this_leaf.eax.split.type ==
  37.297 +							CACHE_TYPE_INST)
  37.298 +						new_l1i = this_leaf.size/1024;
  37.299 +					break;
  37.300 +				    case 2:
  37.301 +					new_l2 = this_leaf.size/1024;
  37.302 +					num_threads_sharing = 1 + this_leaf.eax.split.num_threads_sharing;
  37.303 +					index_msb = get_count_order(num_threads_sharing);
  37.304 +					l2_id = c->apicid >> index_msb;
  37.305 +					break;
  37.306 +				    case 3:
  37.307 +					new_l3 = this_leaf.size/1024;
  37.308 +					num_threads_sharing = 1 + this_leaf.eax.split.num_threads_sharing;
  37.309 +					index_msb = get_count_order(num_threads_sharing);
  37.310 +					l3_id = c->apicid >> index_msb;
  37.311 +					break;
  37.312 +				    default:
  37.313 +					break;
  37.314 +				}
  37.315 +			}
  37.316 +		}
  37.317 +	}
  37.318 +	/*
  37.319 +	 * Don't use cpuid2 if cpuid4 is supported. For P4, we use cpuid2 for
  37.320 +	 * trace cache
  37.321 +	 */
  37.322 +	if ((num_cache_leaves == 0 || c->x86 == 15) && c->cpuid_level > 1) {
  37.323 +		/* supports eax=2  call */
  37.324 +		int i, j, n;
  37.325 +		int regs[4];
  37.326 +		unsigned char *dp = (unsigned char *)regs;
  37.327 +		int only_trace = 0;
  37.328 +
  37.329 +		if (num_cache_leaves != 0 && c->x86 == 15)
  37.330 +			only_trace = 1;
  37.331 +
  37.332 +		/* Number of times to iterate */
  37.333 +		n = cpuid_eax(2) & 0xFF;
  37.334 +
  37.335 +		for ( i = 0 ; i < n ; i++ ) {
  37.336 +			cpuid(2, &regs[0], &regs[1], &regs[2], &regs[3]);
  37.337 +
  37.338 +			/* If bit 31 is set, this is an unknown format */
  37.339 +			for ( j = 0 ; j < 3 ; j++ ) {
  37.340 +				if ( regs[j] < 0 ) regs[j] = 0;
  37.341 +			}
  37.342 +
  37.343 +			/* Byte 0 is level count, not a descriptor */
  37.344 +			for ( j = 1 ; j < 16 ; j++ ) {
  37.345 +				unsigned char des = dp[j];
  37.346 +				unsigned char k = 0;
  37.347 +
  37.348 +				/* look up this descriptor in the table */
  37.349 +				while (cache_table[k].descriptor != 0)
  37.350 +				{
  37.351 +					if (cache_table[k].descriptor == des) {
  37.352 +						if (only_trace && cache_table[k].cache_type != LVL_TRACE)
  37.353 +							break;
  37.354 +						switch (cache_table[k].cache_type) {
  37.355 +						case LVL_1_INST:
  37.356 +							l1i += cache_table[k].size;
  37.357 +							break;
  37.358 +						case LVL_1_DATA:
  37.359 +							l1d += cache_table[k].size;
  37.360 +							break;
  37.361 +						case LVL_2:
  37.362 +							l2 += cache_table[k].size;
  37.363 +							break;
  37.364 +						case LVL_3:
  37.365 +							l3 += cache_table[k].size;
  37.366 +							break;
  37.367 +						case LVL_TRACE:
  37.368 +							trace += cache_table[k].size;
  37.369 +							break;
  37.370 +						}
  37.371 +
  37.372 +						break;
  37.373 +					}
  37.374 +
  37.375 +					k++;
  37.376 +				}
  37.377 +			}
  37.378 +		}
  37.379 +	}
  37.380 +
  37.381 +	if (new_l1d)
  37.382 +		l1d = new_l1d;
  37.383 +
  37.384 +	if (new_l1i)
  37.385 +		l1i = new_l1i;
  37.386 +
  37.387 +	if (new_l2) {
  37.388 +		l2 = new_l2;
  37.389 +#ifdef CONFIG_X86_HT
  37.390 +		cpu_llc_id[cpu] = l2_id;
  37.391 +#endif
  37.392 +	}
  37.393 +
  37.394 +	if (new_l3) {
  37.395 +		l3 = new_l3;
  37.396 +#ifdef CONFIG_X86_HT
  37.397 +		cpu_llc_id[cpu] = l3_id;
  37.398 +#endif
  37.399 +	}
  37.400 +
  37.401 +	if (trace)
  37.402 +		printk (KERN_INFO "CPU: Trace cache: %dK uops", trace);
  37.403 +	else if ( l1i )
  37.404 +		printk (KERN_INFO "CPU: L1 I cache: %dK", l1i);
  37.405 +
  37.406 +	if (l1d)
  37.407 +		printk(", L1 D cache: %dK\n", l1d);
  37.408 +	else
  37.409 +		printk("\n");
  37.410 +
  37.411 +	if (l2)
  37.412 +		printk(KERN_INFO "CPU: L2 cache: %dK\n", l2);
  37.413 +
  37.414 +	if (l3)
  37.415 +		printk(KERN_INFO "CPU: L3 cache: %dK\n", l3);
  37.416 +
  37.417 +	c->x86_cache_size = l3 ? l3 : (l2 ? l2 : (l1i+l1d));
  37.418 +
  37.419 +	return l2;
  37.420 +}
  37.421 +
  37.422 +/* pointer to _cpuid4_info array (for each cache leaf) */
  37.423 +static struct _cpuid4_info *cpuid4_info[NR_CPUS];
  37.424 +#define CPUID4_INFO_IDX(x,y)    (&((cpuid4_info[x])[y]))
  37.425 +
  37.426 +#ifdef CONFIG_SMP
  37.427 +static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index)
  37.428 +{
  37.429 +	struct _cpuid4_info	*this_leaf, *sibling_leaf;
  37.430 +	unsigned long num_threads_sharing;
  37.431 +	int index_msb, i;
  37.432 +	struct cpuinfo_x86 *c = cpu_data;
  37.433 +
  37.434 +	this_leaf = CPUID4_INFO_IDX(cpu, index);
  37.435 +	num_threads_sharing = 1 + this_leaf->eax.split.num_threads_sharing;
  37.436 +
  37.437 +	if (num_threads_sharing == 1)
  37.438 +		cpu_set(cpu, this_leaf->shared_cpu_map);
  37.439 +	else {
  37.440 +		index_msb = get_count_order(num_threads_sharing);
  37.441 +
  37.442 +		for_each_online_cpu(i) {
  37.443 +			if (c[i].apicid >> index_msb ==
  37.444 +			    c[cpu].apicid >> index_msb) {
  37.445 +				cpu_set(i, this_leaf->shared_cpu_map);
  37.446 +				if (i != cpu && cpuid4_info[i])  {
  37.447 +					sibling_leaf = CPUID4_INFO_IDX(i, index);
  37.448 +					cpu_set(cpu, sibling_leaf->shared_cpu_map);
  37.449 +				}
  37.450 +			}
  37.451 +		}
  37.452 +	}
  37.453 +}
  37.454 +static void __cpuinit cache_remove_shared_cpu_map(unsigned int cpu, int index)
  37.455 +{
  37.456 +	struct _cpuid4_info	*this_leaf, *sibling_leaf;
  37.457 +	int sibling;
  37.458 +
  37.459 +	this_leaf = CPUID4_INFO_IDX(cpu, index);
  37.460 +	for_each_cpu_mask(sibling, this_leaf->shared_cpu_map) {
  37.461 +		sibling_leaf = CPUID4_INFO_IDX(sibling, index);	
  37.462 +		cpu_clear(cpu, sibling_leaf->shared_cpu_map);
  37.463 +	}
  37.464 +}
  37.465 +#else
  37.466 +static void __init cache_shared_cpu_map_setup(unsigned int cpu, int index) {}
  37.467 +static void __init cache_remove_shared_cpu_map(unsigned int cpu, int index) {}
  37.468 +#endif
  37.469 +
  37.470 +static void free_cache_attributes(unsigned int cpu)
  37.471 +{
  37.472 +	kfree(cpuid4_info[cpu]);
  37.473 +	cpuid4_info[cpu] = NULL;
  37.474 +}
  37.475 +
  37.476 +static int __cpuinit detect_cache_attributes(unsigned int cpu)
  37.477 +{
  37.478 +	struct _cpuid4_info	*this_leaf;
  37.479 +	unsigned long 		j;
  37.480 +	int 			retval;
  37.481 +	cpumask_t		oldmask;
  37.482 +
  37.483 +	if (num_cache_leaves == 0)
  37.484 +		return -ENOENT;
  37.485 +
  37.486 +	cpuid4_info[cpu] = kmalloc(
  37.487 +	    sizeof(struct _cpuid4_info) * num_cache_leaves, GFP_KERNEL);
  37.488 +	if (unlikely(cpuid4_info[cpu] == NULL))
  37.489 +		return -ENOMEM;
  37.490 +	memset(cpuid4_info[cpu], 0,
  37.491 +	    sizeof(struct _cpuid4_info) * num_cache_leaves);
  37.492 +
  37.493 +	oldmask = current->cpus_allowed;
  37.494 +	retval = set_cpus_allowed(current, cpumask_of_cpu(cpu));
  37.495 +	if (retval)
  37.496 +		goto out;
  37.497 +
  37.498 +	/* Do cpuid and store the results */
  37.499 +	retval = 0;
  37.500 +	for (j = 0; j < num_cache_leaves; j++) {
  37.501 +		this_leaf = CPUID4_INFO_IDX(cpu, j);
  37.502 +		retval = cpuid4_cache_lookup(j, this_leaf);
  37.503 +		if (unlikely(retval < 0))
  37.504 +			break;
  37.505 +		cache_shared_cpu_map_setup(cpu, j);
  37.506 +	}
  37.507 +	set_cpus_allowed(current, oldmask);
  37.508 +
  37.509 +out:
  37.510 +	if (retval)
  37.511 +		free_cache_attributes(cpu);
  37.512 +	return retval;
  37.513 +}
  37.514 +
  37.515 +#ifdef CONFIG_SYSFS
  37.516 +
  37.517 +#include <linux/kobject.h>
  37.518 +#include <linux/sysfs.h>
  37.519 +
  37.520 +extern struct sysdev_class cpu_sysdev_class; /* from drivers/base/cpu.c */
  37.521 +
  37.522 +/* pointer to kobject for cpuX/cache */
  37.523 +static struct kobject * cache_kobject[NR_CPUS];
  37.524 +
  37.525 +struct _index_kobject {
  37.526 +	struct kobject kobj;
  37.527 +	unsigned int cpu;
  37.528 +	unsigned short index;
  37.529 +};
  37.530 +
  37.531 +/* pointer to array of kobjects for cpuX/cache/indexY */
  37.532 +static struct _index_kobject *index_kobject[NR_CPUS];
  37.533 +#define INDEX_KOBJECT_PTR(x,y)    (&((index_kobject[x])[y]))
  37.534 +
  37.535 +#define show_one_plus(file_name, object, val)				\
  37.536 +static ssize_t show_##file_name						\
  37.537 +			(struct _cpuid4_info *this_leaf, char *buf)	\
  37.538 +{									\
  37.539 +	return sprintf (buf, "%lu\n", (unsigned long)this_leaf->object + val); \
  37.540 +}
  37.541 +
  37.542 +show_one_plus(level, eax.split.level, 0);
  37.543 +show_one_plus(coherency_line_size, ebx.split.coherency_line_size, 1);
  37.544 +show_one_plus(physical_line_partition, ebx.split.physical_line_partition, 1);
  37.545 +show_one_plus(ways_of_associativity, ebx.split.ways_of_associativity, 1);
  37.546 +show_one_plus(number_of_sets, ecx.split.number_of_sets, 1);
  37.547 +
  37.548 +static ssize_t show_size(struct _cpuid4_info *this_leaf, char *buf)
  37.549 +{
  37.550 +	return sprintf (buf, "%luK\n", this_leaf->size / 1024);
  37.551 +}
  37.552 +
  37.553 +static ssize_t show_shared_cpu_map(struct _cpuid4_info *this_leaf, char *buf)
  37.554 +{
  37.555 +	char mask_str[NR_CPUS];
  37.556 +	cpumask_scnprintf(mask_str, NR_CPUS, this_leaf->shared_cpu_map);
  37.557 +	return sprintf(buf, "%s\n", mask_str);
  37.558 +}
  37.559 +
  37.560 +static ssize_t show_type(struct _cpuid4_info *this_leaf, char *buf) {
  37.561 +	switch(this_leaf->eax.split.type) {
  37.562 +	    case CACHE_TYPE_DATA:
  37.563 +		return sprintf(buf, "Data\n");
  37.564 +		break;
  37.565 +	    case CACHE_TYPE_INST:
  37.566 +		return sprintf(buf, "Instruction\n");
  37.567 +		break;
  37.568 +	    case CACHE_TYPE_UNIFIED:
  37.569 +		return sprintf(buf, "Unified\n");
  37.570 +		break;
  37.571 +	    default:
  37.572 +		return sprintf(buf, "Unknown\n");
  37.573 +		break;
  37.574 +	}
  37.575 +}
  37.576 +
  37.577 +struct _cache_attr {
  37.578 +	struct attribute attr;
  37.579 +	ssize_t (*show)(struct _cpuid4_info *, char *);
  37.580 +	ssize_t (*store)(struct _cpuid4_info *, const char *, size_t count);
  37.581 +};
  37.582 +
  37.583 +#define define_one_ro(_name) \
  37.584 +static struct _cache_attr _name = \
  37.585 +	__ATTR(_name, 0444, show_##_name, NULL)
  37.586 +
  37.587 +define_one_ro(level);
  37.588 +define_one_ro(type);
  37.589 +define_one_ro(coherency_line_size);
  37.590 +define_one_ro(physical_line_partition);
  37.591 +define_one_ro(ways_of_associativity);
  37.592 +define_one_ro(number_of_sets);
  37.593 +define_one_ro(size);
  37.594 +define_one_ro(shared_cpu_map);
  37.595 +
  37.596 +static struct attribute * default_attrs[] = {
  37.597 +	&type.attr,
  37.598 +	&level.attr,
  37.599 +	&coherency_line_size.attr,
  37.600 +	&physical_line_partition.attr,
  37.601 +	&ways_of_associativity.attr,
  37.602 +	&number_of_sets.attr,
  37.603 +	&size.attr,
  37.604 +	&shared_cpu_map.attr,
  37.605 +	NULL
  37.606 +};
  37.607 +
  37.608 +#define to_object(k) container_of(k, struct _index_kobject, kobj)
  37.609 +#define to_attr(a) container_of(a, struct _cache_attr, attr)
  37.610 +
  37.611 +static ssize_t show(struct kobject * kobj, struct attribute * attr, char * buf)
  37.612 +{
  37.613 +	struct _cache_attr *fattr = to_attr(attr);
  37.614 +	struct _index_kobject *this_leaf = to_object(kobj);
  37.615 +	ssize_t ret;
  37.616 +
  37.617 +	ret = fattr->show ?
  37.618 +		fattr->show(CPUID4_INFO_IDX(this_leaf->cpu, this_leaf->index),
  37.619 +			buf) :
  37.620 +	       	0;
  37.621 +	return ret;
  37.622 +}
  37.623 +
  37.624 +static ssize_t store(struct kobject * kobj, struct attribute * attr,
  37.625 +		     const char * buf, size_t count)
  37.626 +{
  37.627 +	return 0;
  37.628 +}
  37.629 +
  37.630 +static struct sysfs_ops sysfs_ops = {
  37.631 +	.show   = show,
  37.632 +	.store  = store,
  37.633 +};
  37.634 +
  37.635 +static struct kobj_type ktype_cache = {
  37.636 +	.sysfs_ops	= &sysfs_ops,
  37.637 +	.default_attrs	= default_attrs,
  37.638 +};
  37.639 +
  37.640 +static struct kobj_type ktype_percpu_entry = {
  37.641 +	.sysfs_ops	= &sysfs_ops,
  37.642 +};
  37.643 +
  37.644 +static void cpuid4_cache_sysfs_exit(unsigned int cpu)
  37.645 +{
  37.646 +	kfree(cache_kobject[cpu]);
  37.647 +	kfree(index_kobject[cpu]);
  37.648 +	cache_kobject[cpu] = NULL;
  37.649 +	index_kobject[cpu] = NULL;
  37.650 +	free_cache_attributes(cpu);
  37.651 +}
  37.652 +
  37.653 +static int __cpuinit cpuid4_cache_sysfs_init(unsigned int cpu)
  37.654 +{
  37.655 +
  37.656 +	if (num_cache_leaves == 0)
  37.657 +		return -ENOENT;
  37.658 +
  37.659 +	detect_cache_attributes(cpu);
  37.660 +	if (cpuid4_info[cpu] == NULL)
  37.661 +		return -ENOENT;
  37.662 +
  37.663 +	/* Allocate all required memory */
  37.664 +	cache_kobject[cpu] = kmalloc(sizeof(struct kobject), GFP_KERNEL);
  37.665 +	if (unlikely(cache_kobject[cpu] == NULL))
  37.666 +		goto err_out;
  37.667 +	memset(cache_kobject[cpu], 0, sizeof(struct kobject));
  37.668 +
  37.669 +	index_kobject[cpu] = kmalloc(
  37.670 +	    sizeof(struct _index_kobject ) * num_cache_leaves, GFP_KERNEL);
  37.671 +	if (unlikely(index_kobject[cpu] == NULL))
  37.672 +		goto err_out;
  37.673 +	memset(index_kobject[cpu], 0,
  37.674 +	    sizeof(struct _index_kobject) * num_cache_leaves);
  37.675 +
  37.676 +	return 0;
  37.677 +
  37.678 +err_out:
  37.679 +	cpuid4_cache_sysfs_exit(cpu);
  37.680 +	return -ENOMEM;
  37.681 +}
  37.682 +
  37.683 +/* Add/Remove cache interface for CPU device */
  37.684 +static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
  37.685 +{
  37.686 +	unsigned int cpu = sys_dev->id;
  37.687 +	unsigned long i, j;
  37.688 +	struct _index_kobject *this_object;
  37.689 +	int retval = 0;
  37.690 +
  37.691 +	retval = cpuid4_cache_sysfs_init(cpu);
  37.692 +	if (unlikely(retval < 0))
  37.693 +		return retval;
  37.694 +
  37.695 +	cache_kobject[cpu]->parent = &sys_dev->kobj;
  37.696 +	kobject_set_name(cache_kobject[cpu], "%s", "cache");
  37.697 +	cache_kobject[cpu]->ktype = &ktype_percpu_entry;
  37.698 +	retval = kobject_register(cache_kobject[cpu]);
  37.699 +
  37.700 +	for (i = 0; i < num_cache_leaves; i++) {
  37.701 +		this_object = INDEX_KOBJECT_PTR(cpu,i);
  37.702 +		this_object->cpu = cpu;
  37.703 +		this_object->index = i;
  37.704 +		this_object->kobj.parent = cache_kobject[cpu];
  37.705 +		kobject_set_name(&(this_object->kobj), "index%1lu", i);
  37.706 +		this_object->kobj.ktype = &ktype_cache;
  37.707 +		retval = kobject_register(&(this_object->kobj));
  37.708 +		if (unlikely(retval)) {
  37.709 +			for (j = 0; j < i; j++) {
  37.710 +				kobject_unregister(
  37.711 +					&(INDEX_KOBJECT_PTR(cpu,j)->kobj));
  37.712 +			}
  37.713 +			kobject_unregister(cache_kobject[cpu]);
  37.714 +			cpuid4_cache_sysfs_exit(cpu);
  37.715 +			break;
  37.716 +		}
  37.717 +	}
  37.718 +	return retval;
  37.719 +}
  37.720 +
  37.721 +static void __cpuexit cache_remove_dev(struct sys_device * sys_dev)
  37.722 +{
  37.723 +	unsigned int cpu = sys_dev->id;
  37.724 +	unsigned long i;
  37.725 +
  37.726 +	for (i = 0; i < num_cache_leaves; i++) {
  37.727 +		cache_remove_shared_cpu_map(cpu, i);
  37.728 +		kobject_unregister(&(INDEX_KOBJECT_PTR(cpu,i)->kobj));
  37.729 +	}
  37.730 +	kobject_unregister(cache_kobject[cpu]);
  37.731 +	cpuid4_cache_sysfs_exit(cpu);
  37.732 +	return;
  37.733 +}
  37.734 +
  37.735 +static int __cpuinit cacheinfo_cpu_callback(struct notifier_block *nfb,
  37.736 +					unsigned long action, void *hcpu)
  37.737 +{
  37.738 +	unsigned int cpu = (unsigned long)hcpu;
  37.739 +	struct sys_device *sys_dev;
  37.740 +
  37.741 +	sys_dev = get_cpu_sysdev(cpu);
  37.742 +	switch (action) {
  37.743 +	case CPU_ONLINE:
  37.744 +		cache_add_dev(sys_dev);
  37.745 +		break;
  37.746 +	case CPU_DEAD:
  37.747 +		cache_remove_dev(sys_dev);
  37.748 +		break;
  37.749 +	}
  37.750 +	return NOTIFY_OK;
  37.751 +}
  37.752 +
  37.753 +static struct notifier_block __cpuinitdata cacheinfo_cpu_notifier =
  37.754 +{
  37.755 +    .notifier_call = cacheinfo_cpu_callback,
  37.756 +};
  37.757 +
  37.758 +static int __cpuinit cache_sysfs_init(void)
  37.759 +{
  37.760 +	int i;
  37.761 +
  37.762 +	if (num_cache_leaves == 0)
  37.763 +		return 0;
  37.764 +
  37.765 +	register_hotcpu_notifier(&cacheinfo_cpu_notifier);
  37.766 +
  37.767 +	for_each_online_cpu(i) {
  37.768 +		cacheinfo_cpu_callback(&cacheinfo_cpu_notifier, CPU_ONLINE,
  37.769 +			(void *)(long)i);
  37.770 +	}
  37.771 +
  37.772 +	return 0;
  37.773 +}
  37.774 +
  37.775 +device_initcall(cache_sysfs_init);
  37.776 +
  37.777 +#endif
    38.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c	Fri Jan 26 14:19:37 2007 -0700
    38.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c	Sat Jan 27 14:07:19 2007 -0700
    38.3 @@ -4,11 +4,12 @@
    38.4  #include <linux/module.h>
    38.5  #include <linux/seq_file.h>
    38.6  #include <asm/uaccess.h>
    38.7 +#include <linux/mutex.h>
    38.8  
    38.9  #include <asm/mtrr.h>
   38.10  #include "mtrr.h"
   38.11  
   38.12 -static DECLARE_MUTEX(mtrr_sem);
   38.13 +static DEFINE_MUTEX(mtrr_mutex);
   38.14  
   38.15  void generic_get_mtrr(unsigned int reg, unsigned long *base,
   38.16  		      unsigned int *size, mtrr_type * type)
   38.17 @@ -65,7 +66,7 @@ int mtrr_add_page(unsigned long base, un
   38.18  	int error;
   38.19  	dom0_op_t op;
   38.20  
   38.21 -	down(&mtrr_sem);
   38.22 +	mutex_lock(&mtrr_mutex);
   38.23  
   38.24  	op.cmd = DOM0_ADD_MEMTYPE;
   38.25  	op.u.add_memtype.mfn     = base;
   38.26 @@ -73,7 +74,7 @@ int mtrr_add_page(unsigned long base, un
   38.27  	op.u.add_memtype.type    = type;
   38.28  	error = HYPERVISOR_dom0_op(&op);
   38.29  	if (error) {
   38.30 -		up(&mtrr_sem);
   38.31 +		mutex_unlock(&mtrr_mutex);
   38.32  		BUG_ON(error > 0);
   38.33  		return error;
   38.34  	}
   38.35 @@ -81,7 +82,7 @@ int mtrr_add_page(unsigned long base, un
   38.36  	if (increment)
   38.37  		++usage_table[op.u.add_memtype.reg];
   38.38  
   38.39 -	up(&mtrr_sem);
   38.40 +	mutex_unlock(&mtrr_mutex);
   38.41  
   38.42  	return op.u.add_memtype.reg;
   38.43  }
   38.44 @@ -118,7 +119,7 @@ int mtrr_del_page(int reg, unsigned long
   38.45  	int error = -EINVAL;
   38.46  	dom0_op_t op;
   38.47  
   38.48 -	down(&mtrr_sem);
   38.49 +	mutex_lock(&mtrr_mutex);
   38.50  
   38.51  	if (reg < 0) {
   38.52  		/*  Search for existing MTRR  */
   38.53 @@ -151,7 +152,7 @@ int mtrr_del_page(int reg, unsigned long
   38.54  	}
   38.55  	error = reg;
   38.56   out:
   38.57 -	up(&mtrr_sem);
   38.58 +	mutex_unlock(&mtrr_mutex);
   38.59  	return error;
   38.60  }
   38.61  
    39.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/crash.c	Fri Jan 26 14:19:37 2007 -0700
    39.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/crash.c	Sat Jan 27 14:07:19 2007 -0700
    39.3 @@ -69,7 +69,7 @@ static void crash_save_this_cpu(struct p
    39.4  	 * for the data I pass, and I need tags
    39.5  	 * on the data to indicate what information I have
    39.6  	 * squirrelled away.  ELF notes happen to provide
    39.7 -	 * all of that that no need to invent something new.
    39.8 +	 * all of that, so there is no need to invent something new.
    39.9  	 */
   39.10  	buf = (u32*)per_cpu_ptr(crash_notes, cpu);
   39.11  	if (!buf)
   39.12 @@ -91,7 +91,7 @@ static void crash_save_self(struct pt_re
   39.13  }
   39.14  
   39.15  #ifndef CONFIG_XEN
   39.16 -#ifdef CONFIG_SMP
   39.17 +#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC)
   39.18  static atomic_t waiting_for_crash_ipi;
   39.19  
   39.20  static int crash_nmi_callback(struct pt_regs *regs, int cpu)
   39.21 @@ -106,7 +106,7 @@ static int crash_nmi_callback(struct pt_
   39.22  		return 1;
   39.23  	local_irq_disable();
   39.24  
   39.25 -	if (!user_mode(regs)) {
   39.26 +	if (!user_mode_vm(regs)) {
   39.27  		crash_fixup_ss_esp(&fixed_regs, regs);
   39.28  		regs = &fixed_regs;
   39.29  	}
   39.30 @@ -115,19 +115,15 @@ static int crash_nmi_callback(struct pt_
   39.31  	atomic_dec(&waiting_for_crash_ipi);
   39.32  	/* Assume hlt works */
   39.33  	halt();
   39.34 -	for(;;);
   39.35 +	for (;;)
   39.36 +		cpu_relax();
   39.37  
   39.38  	return 1;
   39.39  }
   39.40  
   39.41 -/*
   39.42 - * By using the NMI code instead of a vector we just sneak thru the
   39.43 - * word generator coming out with just what we want.  AND it does
   39.44 - * not matter if clustered_apic_mode is set or not.
   39.45 - */
   39.46  static void smp_send_nmi_allbutself(void)
   39.47  {
   39.48 -	send_IPI_allbutself(APIC_DM_NMI);
   39.49 +	send_IPI_allbutself(NMI_VECTOR);
   39.50  }
   39.51  
   39.52  static void nmi_shootdown_cpus(void)
   39.53 @@ -164,7 +160,7 @@ static void nmi_shootdown_cpus(void)
   39.54  void machine_crash_shutdown(struct pt_regs *regs)
   39.55  {
   39.56  	/* This function is only called after the system
   39.57 -	 * has paniced or is otherwise in a critical state.
   39.58 +	 * has panicked or is otherwise in a critical state.
   39.59  	 * The minimum amount of code to allow a kexec'd kernel
   39.60  	 * to run successfully needs to happen here.
   39.61  	 *
    40.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S	Fri Jan 26 14:19:37 2007 -0700
    40.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S	Sat Jan 27 14:07:19 2007 -0700
    40.3 @@ -40,14 +40,15 @@
    40.4   * "current" is in register %ebx during any slow entries.
    40.5   */
    40.6  
    40.7 -#include <linux/config.h>
    40.8  #include <linux/linkage.h>
    40.9  #include <asm/thread_info.h>
   40.10 +#include <asm/irqflags.h>
   40.11  #include <asm/errno.h>
   40.12  #include <asm/segment.h>
   40.13  #include <asm/smp.h>
   40.14  #include <asm/page.h>
   40.15  #include <asm/desc.h>
   40.16 +#include <asm/dwarf2.h>
   40.17  #include "irq_vectors.h"
   40.18  #include <xen/interface/xen.h>
   40.19  
   40.20 @@ -106,40 +107,91 @@ NMI_MASK	= 0x80000000
   40.21  #endif
   40.22  
   40.23  #ifdef CONFIG_PREEMPT
   40.24 -#define preempt_stop		cli
   40.25 +#define preempt_stop		cli; TRACE_IRQS_OFF
   40.26  #else
   40.27  #define preempt_stop
   40.28  #define resume_kernel		restore_nocheck
   40.29  #endif
   40.30  
   40.31 +.macro TRACE_IRQS_IRET
   40.32 +#ifdef CONFIG_TRACE_IRQFLAGS
   40.33 +	testl $IF_MASK,EFLAGS(%esp)     # interrupts off?
   40.34 +	jz 1f
   40.35 +	TRACE_IRQS_ON
   40.36 +1:
   40.37 +#endif
   40.38 +.endm
   40.39 +
   40.40 +#ifdef CONFIG_VM86
   40.41 +#define resume_userspace_sig	check_userspace
   40.42 +#else
   40.43 +#define resume_userspace_sig	resume_userspace
   40.44 +#endif
   40.45 +
   40.46  #define SAVE_ALL \
   40.47  	cld; \
   40.48  	pushl %es; \
   40.49 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.50 +	/*CFI_REL_OFFSET es, 0;*/\
   40.51  	pushl %ds; \
   40.52 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.53 +	/*CFI_REL_OFFSET ds, 0;*/\
   40.54  	pushl %eax; \
   40.55 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.56 +	CFI_REL_OFFSET eax, 0;\
   40.57  	pushl %ebp; \
   40.58 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.59 +	CFI_REL_OFFSET ebp, 0;\
   40.60  	pushl %edi; \
   40.61 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.62 +	CFI_REL_OFFSET edi, 0;\
   40.63  	pushl %esi; \
   40.64 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.65 +	CFI_REL_OFFSET esi, 0;\
   40.66  	pushl %edx; \
   40.67 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.68 +	CFI_REL_OFFSET edx, 0;\
   40.69  	pushl %ecx; \
   40.70 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.71 +	CFI_REL_OFFSET ecx, 0;\
   40.72  	pushl %ebx; \
   40.73 +	CFI_ADJUST_CFA_OFFSET 4;\
   40.74 +	CFI_REL_OFFSET ebx, 0;\
   40.75  	movl $(__USER_DS), %edx; \
   40.76  	movl %edx, %ds; \
   40.77  	movl %edx, %es;
   40.78  
   40.79  #define RESTORE_INT_REGS \
   40.80  	popl %ebx;	\
   40.81 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.82 +	CFI_RESTORE ebx;\
   40.83  	popl %ecx;	\
   40.84 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.85 +	CFI_RESTORE ecx;\
   40.86  	popl %edx;	\
   40.87 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.88 +	CFI_RESTORE edx;\
   40.89  	popl %esi;	\
   40.90 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.91 +	CFI_RESTORE esi;\
   40.92  	popl %edi;	\
   40.93 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.94 +	CFI_RESTORE edi;\
   40.95  	popl %ebp;	\
   40.96 -	popl %eax
   40.97 +	CFI_ADJUST_CFA_OFFSET -4;\
   40.98 +	CFI_RESTORE ebp;\
   40.99 +	popl %eax;	\
  40.100 +	CFI_ADJUST_CFA_OFFSET -4;\
  40.101 +	CFI_RESTORE eax
  40.102  
  40.103  #define RESTORE_REGS	\
  40.104  	RESTORE_INT_REGS; \
  40.105  1:	popl %ds;	\
  40.106 +	CFI_ADJUST_CFA_OFFSET -4;\
  40.107 +	/*CFI_RESTORE ds;*/\
  40.108  2:	popl %es;	\
  40.109 +	CFI_ADJUST_CFA_OFFSET -4;\
  40.110 +	/*CFI_RESTORE es;*/\
  40.111  .section .fixup,"ax";	\
  40.112  3:	movl $0,(%esp);	\
  40.113  	jmp 1b;		\
  40.114 @@ -152,13 +204,47 @@ 4:	movl $0,(%esp);	\
  40.115  	.long 2b,4b;	\
  40.116  .previous
  40.117  
  40.118 +#define RING0_INT_FRAME \
  40.119 +	CFI_STARTPROC simple;\
  40.120 +	CFI_DEF_CFA esp, 3*4;\
  40.121 +	/*CFI_OFFSET cs, -2*4;*/\
  40.122 +	CFI_OFFSET eip, -3*4
  40.123 +
  40.124 +#define RING0_EC_FRAME \
  40.125 +	CFI_STARTPROC simple;\
  40.126 +	CFI_DEF_CFA esp, 4*4;\
  40.127 +	/*CFI_OFFSET cs, -2*4;*/\
  40.128 +	CFI_OFFSET eip, -3*4
  40.129 +
  40.130 +#define RING0_PTREGS_FRAME \
  40.131 +	CFI_STARTPROC simple;\
  40.132 +	CFI_DEF_CFA esp, OLDESP-EBX;\
  40.133 +	/*CFI_OFFSET cs, CS-OLDESP;*/\
  40.134 +	CFI_OFFSET eip, EIP-OLDESP;\
  40.135 +	/*CFI_OFFSET es, ES-OLDESP;*/\
  40.136 +	/*CFI_OFFSET ds, DS-OLDESP;*/\
  40.137 +	CFI_OFFSET eax, EAX-OLDESP;\
  40.138 +	CFI_OFFSET ebp, EBP-OLDESP;\
  40.139 +	CFI_OFFSET edi, EDI-OLDESP;\
  40.140 +	CFI_OFFSET esi, ESI-OLDESP;\
  40.141 +	CFI_OFFSET edx, EDX-OLDESP;\
  40.142 +	CFI_OFFSET ecx, ECX-OLDESP;\
  40.143 +	CFI_OFFSET ebx, EBX-OLDESP
  40.144  
  40.145  ENTRY(ret_from_fork)
  40.146 +	CFI_STARTPROC
  40.147  	pushl %eax
  40.148 +	CFI_ADJUST_CFA_OFFSET 4
  40.149  	call schedule_tail
  40.150  	GET_THREAD_INFO(%ebp)
  40.151  	popl %eax
  40.152 +	CFI_ADJUST_CFA_OFFSET -4
  40.153 +	pushl $0x0202			# Reset kernel eflags
  40.154 +	CFI_ADJUST_CFA_OFFSET 4
  40.155 +	popfl
  40.156 +	CFI_ADJUST_CFA_OFFSET -4
  40.157  	jmp syscall_exit
  40.158 +	CFI_ENDPROC
  40.159  
  40.160  /*
  40.161   * Return to user mode is not as complex as all this looks,
  40.162 @@ -169,10 +255,12 @@ ENTRY(ret_from_fork)
  40.163  
  40.164  	# userspace resumption stub bypassing syscall exit tracing
  40.165  	ALIGN
  40.166 +	RING0_PTREGS_FRAME
  40.167  ret_from_exception:
  40.168  	preempt_stop
  40.169  ret_from_intr:
  40.170  	GET_THREAD_INFO(%ebp)
  40.171 +check_userspace:
  40.172  	movl EFLAGS(%esp), %eax		# mix EFLAGS and CS
  40.173  	movb CS(%esp), %al
  40.174  	testl $(VM_MASK | 2), %eax
  40.175 @@ -201,20 +289,42 @@ need_resched:
  40.176  	call preempt_schedule_irq
  40.177  	jmp need_resched
  40.178  #endif
  40.179 +	CFI_ENDPROC
  40.180  
  40.181  /* SYSENTER_RETURN points to after the "sysenter" instruction in
  40.182     the vsyscall page.  See vsyscall-sysentry.S, which defines the symbol.  */
  40.183  
  40.184  	# sysenter call handler stub
  40.185  ENTRY(sysenter_entry)
  40.186 +	CFI_STARTPROC simple
  40.187 +	CFI_DEF_CFA esp, 0
  40.188 +	CFI_REGISTER esp, ebp
  40.189  	movl SYSENTER_stack_esp0(%esp),%esp
  40.190  sysenter_past_esp:
  40.191 +	/*
  40.192 +	 * No need to follow this irqs on/off section: the syscall
  40.193 +	 * disabled irqs and here we enable it straight after entry:
  40.194 +	 */
  40.195  	sti
  40.196  	pushl $(__USER_DS)
  40.197 +	CFI_ADJUST_CFA_OFFSET 4
  40.198 +	/*CFI_REL_OFFSET ss, 0*/
  40.199  	pushl %ebp
  40.200 +	CFI_ADJUST_CFA_OFFSET 4
  40.201 +	CFI_REL_OFFSET esp, 0
  40.202  	pushfl
  40.203 +	CFI_ADJUST_CFA_OFFSET 4
  40.204  	pushl $(__USER_CS)
  40.205 -	pushl $SYSENTER_RETURN
  40.206 +	CFI_ADJUST_CFA_OFFSET 4
  40.207 +	/*CFI_REL_OFFSET cs, 0*/
  40.208 +	/*
  40.209 +	 * Push current_thread_info()->sysenter_return to the stack.
  40.210 +	 * A tiny bit of offset fixup is necessary - 4*4 means the 4 words
  40.211 +	 * pushed above; +8 corresponds to copy_thread's esp0 setting.
  40.212 +	 */
  40.213 +	pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp)
  40.214 +	CFI_ADJUST_CFA_OFFSET 4
  40.215 +	CFI_REL_OFFSET eip, 0
  40.216  
  40.217  /*
  40.218   * Load the potential sixth argument from user stack.
  40.219 @@ -229,6 +339,7 @@ 1:	movl (%ebp),%ebp
  40.220  .previous
  40.221  
  40.222  	pushl %eax
  40.223 +	CFI_ADJUST_CFA_OFFSET 4
  40.224  	SAVE_ALL
  40.225  	GET_THREAD_INFO(%ebp)
  40.226  
  40.227 @@ -240,6 +351,7 @@ 1:	movl (%ebp),%ebp
  40.228  	call *sys_call_table(,%eax,4)
  40.229  	movl %eax,EAX(%esp)
  40.230  	DISABLE_INTERRUPTS
  40.231 +	TRACE_IRQS_OFF
  40.232  	movl TI_flags(%ebp), %ecx
  40.233  	testw $_TIF_ALLWORK_MASK, %cx
  40.234  	jne syscall_exit_work
  40.235 @@ -248,6 +360,7 @@ 1:	movl (%ebp),%ebp
  40.236  	movl OLDESP(%esp), %ecx
  40.237  	xorl %ebp,%ebp
  40.238  #ifdef CONFIG_XEN
  40.239 +	TRACE_IRQS_ON
  40.240  	__ENABLE_INTERRUPTS
  40.241  sysexit_scrit:	/**** START OF SYSEXIT CRITICAL REGION ****/
  40.242  	__TEST_PENDING
  40.243 @@ -261,16 +374,24 @@ sysexit_ecrit:	/**** END OF SYSEXIT CRIT
  40.244  	add  $4,%esp
  40.245  	jmp  ret_from_intr
  40.246  #else
  40.247 +	TRACE_IRQS_ON
  40.248  	sti
  40.249  	sysexit
  40.250  #endif /* !CONFIG_XEN */
  40.251 +	CFI_ENDPROC
  40.252  
  40.253  
  40.254  	# system call handler stub
  40.255  ENTRY(system_call)
  40.256 +	RING0_INT_FRAME			# can't unwind into user space anyway
  40.257  	pushl %eax			# save orig_eax
  40.258 +	CFI_ADJUST_CFA_OFFSET 4
  40.259  	SAVE_ALL
  40.260  	GET_THREAD_INFO(%ebp)
  40.261 +	testl $TF_MASK,EFLAGS(%esp)
  40.262 +	jz no_singlestep
  40.263 +	orl $_TIF_SINGLESTEP,TI_flags(%ebp)
  40.264 +no_singlestep:
  40.265  					# system call tracing in operation / emulation
  40.266  	/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
  40.267  	testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
  40.268 @@ -284,6 +405,7 @@ syscall_exit:
  40.269  	DISABLE_INTERRUPTS		# make sure we don't miss an interrupt
  40.270  					# setting need_resched or sigpending
  40.271  					# between sampling and the iret
  40.272 +	TRACE_IRQS_OFF
  40.273  	movl TI_flags(%ebp), %ecx
  40.274  	testw $_TIF_ALLWORK_MASK, %cx	# current->work
  40.275  	jne syscall_exit_work
  40.276 @@ -298,6 +420,7 @@ restore_all:
  40.277  	movb CS(%esp), %al
  40.278  	andl $(VM_MASK | (4 << 8) | 3), %eax
  40.279  	cmpl $((4 << 8) | 3), %eax
  40.280 +	CFI_REMEMBER_STATE
  40.281  	je ldt_ss			# returning to user-space with LDT SS
  40.282  restore_nocheck:
  40.283  #else
  40.284 @@ -311,12 +434,16 @@ restore_nocheck:
  40.285  	andb $1,%al			# EAX[0] == IRET_EFLAGS.IF & event_mask
  40.286  	jnz restore_all_enable_events	#        != 0 => enable event delivery
  40.287  #endif
  40.288 +	TRACE_IRQS_IRET
  40.289 +restore_nocheck_notrace:
  40.290  	RESTORE_REGS
  40.291  	addl $4, %esp
  40.292 +	CFI_ADJUST_CFA_OFFSET -4
  40.293  1:	iret
  40.294  .section .fixup,"ax"
  40.295  iret_exc:
  40.296  #ifndef CONFIG_XEN
  40.297 +	TRACE_IRQS_ON
  40.298  	sti
  40.299  #endif
  40.300  	pushl $0			# no error code
  40.301 @@ -329,6 +456,7 @@ iret_exc:
  40.302  .previous
  40.303  
  40.304  #ifndef CONFIG_XEN
  40.305 +	CFI_RESTORE_STATE
  40.306  ldt_ss:
  40.307  	larl OLDSS(%esp), %eax
  40.308  	jnz restore_nocheck
  40.309 @@ -341,11 +469,15 @@ ldt_ss:
  40.310  	 * CPUs, which we can try to work around to make
  40.311  	 * dosemu and wine happy. */
  40.312  	subl $8, %esp		# reserve space for switch16 pointer
  40.313 +	CFI_ADJUST_CFA_OFFSET 8
  40.314  	cli
  40.315 +	TRACE_IRQS_OFF
  40.316  	movl %esp, %eax
  40.317  	/* Set up the 16bit stack frame with switch32 pointer on top,
  40.318  	 * and a switch16 pointer on top of the current frame. */
  40.319  	call setup_x86_bogus_stack
  40.320 +	CFI_ADJUST_CFA_OFFSET -8	# frame has moved
  40.321 +	TRACE_IRQS_IRET
  40.322  	RESTORE_REGS
  40.323  	lss 20+4(%esp), %esp	# switch to 16bit stack
  40.324  1:	iret
  40.325 @@ -353,6 +485,7 @@ 1:	iret
  40.326  	.align 4
  40.327  	.long 1b,iret_exc
  40.328  .previous
  40.329 +	CFI_ENDPROC
  40.330  #else
  40.331  hypervisor_iret:
  40.332  	andl $~NMI_MASK, EFLAGS(%esp)
  40.333 @@ -363,6 +496,7 @@ hypervisor_iret:
  40.334  
  40.335  	# perform work that needs to be done immediately before resumption
  40.336  	ALIGN
  40.337 +	RING0_PTREGS_FRAME		# can't unwind into user space anyway
  40.338  work_pending:
  40.339  	testb $_TIF_NEED_RESCHED, %cl
  40.340  	jz work_notifysig
  40.341 @@ -371,6 +505,7 @@ work_resched:
  40.342  	DISABLE_INTERRUPTS		# make sure we don't miss an interrupt
  40.343  					# setting need_resched or sigpending
  40.344  					# between sampling and the iret
  40.345 +	TRACE_IRQS_OFF
  40.346  	movl TI_flags(%ebp), %ecx
  40.347  	andl $_TIF_WORK_MASK, %ecx	# is there any work to be done other
  40.348  					# than syscall tracing?
  40.349 @@ -386,18 +521,20 @@ work_notifysig:				# deal with pending s
  40.350  					# vm86-space
  40.351  	xorl %edx, %edx
  40.352  	call do_notify_resume
  40.353 -	jmp resume_userspace
  40.354 +	jmp resume_userspace_sig
  40.355  
  40.356  	ALIGN
  40.357  work_notifysig_v86:
  40.358  #ifdef CONFIG_VM86
  40.359  	pushl %ecx			# save ti_flags for do_notify_resume
  40.360 +	CFI_ADJUST_CFA_OFFSET 4
  40.361  	call save_v86_state		# %eax contains pt_regs pointer
  40.362  	popl %ecx
  40.363 +	CFI_ADJUST_CFA_OFFSET -4
  40.364  	movl %eax, %esp
  40.365  	xorl %edx, %edx
  40.366  	call do_notify_resume
  40.367 -	jmp resume_userspace
  40.368 +	jmp resume_userspace_sig
  40.369  #endif
  40.370  
  40.371  	# perform syscall exit tracing
  40.372 @@ -420,25 +557,28 @@ syscall_trace_entry:
  40.373  syscall_exit_work:
  40.374  	testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl
  40.375  	jz work_pending
  40.376 +	TRACE_IRQS_ON
  40.377  	ENABLE_INTERRUPTS		# could let do_syscall_trace() call
  40.378  					# schedule() instead
  40.379  	movl %esp, %eax
  40.380  	movl $1, %edx
  40.381  	call do_syscall_trace
  40.382  	jmp resume_userspace
  40.383 +	CFI_ENDPROC
  40.384  
  40.385 -	ALIGN
  40.386 +	RING0_INT_FRAME			# can't unwind into user space anyway
  40.387  syscall_fault:
  40.388  	pushl %eax			# save orig_eax
  40.389 +	CFI_ADJUST_CFA_OFFSET 4
  40.390  	SAVE_ALL
  40.391  	GET_THREAD_INFO(%ebp)
  40.392  	movl $-EFAULT,EAX(%esp)
  40.393  	jmp resume_userspace
  40.394  
  40.395 -	ALIGN
  40.396  syscall_badsys:
  40.397  	movl $-ENOSYS,EAX(%esp)
  40.398  	jmp resume_userspace
  40.399 +	CFI_ENDPROC
  40.400  
  40.401  #ifndef CONFIG_XEN
  40.402  #define FIXUP_ESPFIX_STACK \
  40.403 @@ -451,16 +591,21 @@ syscall_badsys:
  40.404  	movl %eax, %esp;
  40.405  #define UNWIND_ESPFIX_STACK \
  40.406  	pushl %eax; \
  40.407 +	CFI_ADJUST_CFA_OFFSET 4; \
  40.408  	movl %ss, %eax; \
  40.409  	/* see if on 16bit stack */ \
  40.410  	cmpw $__ESPFIX_SS, %ax; \
  40.411 -	jne 28f; \
  40.412 -	movl $__KERNEL_DS, %edx; \
  40.413 -	movl %edx, %ds; \
  40.414 -	movl %edx, %es; \
  40.415 +	je 28f; \
  40.416 +27:	popl %eax; \
  40.417 +	CFI_ADJUST_CFA_OFFSET -4; \
  40.418 +.section .fixup,"ax"; \
  40.419 +28:	movl $__KERNEL_DS, %eax; \
  40.420 +	movl %eax, %ds; \
  40.421 +	movl %eax, %es; \
  40.422  	/* switch to 32bit stack */ \
  40.423 -	FIXUP_ESPFIX_STACK \
  40.424 -28:	popl %eax;
  40.425 +	FIXUP_ESPFIX_STACK; \
  40.426 +	jmp 27b; \
  40.427 +.previous
  40.428  
  40.429  /*
  40.430   * Build the entry stubs and pointer table with
  40.431 @@ -472,9 +617,14 @@ ENTRY(interrupt)
  40.432  
  40.433  vector=0
  40.434  ENTRY(irq_entries_start)
  40.435 +	RING0_INT_FRAME
  40.436  .rept NR_IRQS
  40.437  	ALIGN
  40.438 + .if vector
  40.439 +	CFI_ADJUST_CFA_OFFSET -4
  40.440 + .endif
  40.441  1:	pushl $~(vector)
  40.442 +	CFI_ADJUST_CFA_OFFSET 4
  40.443  	jmp common_interrupt
  40.444  .data
  40.445  	.long 1b
  40.446 @@ -482,20 +632,30 @@ 1:	pushl $~(vector)
  40.447  vector=vector+1
  40.448  .endr
  40.449  
  40.450 +/*
  40.451 + * the CPU automatically disables interrupts when executing an IRQ vector,
  40.452 + * so IRQ-flags tracing has to follow that:
  40.453 + */
  40.454  	ALIGN
  40.455  common_interrupt:
  40.456  	SAVE_ALL
  40.457 +	TRACE_IRQS_OFF
  40.458  	movl %esp,%eax
  40.459  	call do_IRQ
  40.460  	jmp ret_from_intr
  40.461 +	CFI_ENDPROC
  40.462  
  40.463  #define BUILD_INTERRUPT(name, nr)	\
  40.464  ENTRY(name)				\
  40.465 +	RING0_INT_FRAME;		\
  40.466  	pushl $~(nr);			\
  40.467 -	SAVE_ALL			\
  40.468 +	CFI_ADJUST_CFA_OFFSET 4;	\
  40.469 +	SAVE_ALL;			\
  40.470 +	TRACE_IRQS_OFF			\
  40.471  	movl %esp,%eax;			\
  40.472  	call smp_/**/name;		\
  40.473 -	jmp ret_from_intr;
  40.474 +	jmp ret_from_intr;		\
  40.475 +	CFI_ENDPROC
  40.476  
  40.477  /* The include is where all of the SMP etc. interrupts come from */
  40.478  #include "entry_arch.h"
  40.479 @@ -504,34 +664,59 @@ ENTRY(name)				\
  40.480  #endif
  40.481  
  40.482  ENTRY(divide_error)
  40.483 +	RING0_INT_FRAME
  40.484  	pushl $0			# no error code
  40.485 +	CFI_ADJUST_CFA_OFFSET 4
  40.486  	pushl $do_divide_error
  40.487 +	CFI_ADJUST_CFA_OFFSET 4
  40.488  	ALIGN
  40.489  error_code:
  40.490  	pushl %ds
  40.491 +	CFI_ADJUST_CFA_OFFSET 4
  40.492 +	/*CFI_REL_OFFSET ds, 0*/
  40.493  	pushl %eax
  40.494 +	CFI_ADJUST_CFA_OFFSET 4
  40.495 +	CFI_REL_OFFSET eax, 0
  40.496  	xorl %eax, %eax
  40.497  	pushl %ebp
  40.498 +	CFI_ADJUST_CFA_OFFSET 4
  40.499 +	CFI_REL_OFFSET ebp, 0
  40.500  	pushl %edi
  40.501 +	CFI_ADJUST_CFA_OFFSET 4
  40.502 +	CFI_REL_OFFSET edi, 0
  40.503  	pushl %esi
  40.504 +	CFI_ADJUST_CFA_OFFSET 4
  40.505 +	CFI_REL_OFFSET esi, 0
  40.506  	pushl %edx
  40.507 +	CFI_ADJUST_CFA_OFFSET 4
  40.508 +	CFI_REL_OFFSET edx, 0
  40.509  	decl %eax			# eax = -1
  40.510  	pushl %ecx
  40.511 +	CFI_ADJUST_CFA_OFFSET 4
  40.512 +	CFI_REL_OFFSET ecx, 0
  40.513  	pushl %ebx
  40.514 +	CFI_ADJUST_CFA_OFFSET 4
  40.515 +	CFI_REL_OFFSET ebx, 0
  40.516  	cld
  40.517  	pushl %es
  40.518 +	CFI_ADJUST_CFA_OFFSET 4
  40.519 +	/*CFI_REL_OFFSET es, 0*/
  40.520  	UNWIND_ESPFIX_STACK
  40.521  	popl %ecx
  40.522 +	CFI_ADJUST_CFA_OFFSET -4
  40.523 +	/*CFI_REGISTER es, ecx*/
  40.524  	movl ES(%esp), %edi		# get the function address
  40.525  	movl ORIG_EAX(%esp), %edx	# get the error code
  40.526  	movl %eax, ORIG_EAX(%esp)
  40.527  	movl %ecx, ES(%esp)
  40.528 +	/*CFI_REL_OFFSET es, ES*/
  40.529  	movl $(__USER_DS), %ecx
  40.530  	movl %ecx, %ds
  40.531  	movl %ecx, %es
  40.532  	movl %esp,%eax			# pt_regs pointer
  40.533  	call *%edi
  40.534  	jmp ret_from_exception
  40.535 +	CFI_ENDPROC
  40.536  
  40.537  #ifdef CONFIG_XEN
  40.538  # A note on the "critical region" in our callback handler.
  40.539 @@ -680,31 +865,44 @@ 9:	xorl %eax,%eax;		\
  40.540  #endif
  40.541  
  40.542  ENTRY(coprocessor_error)
  40.543 +	RING0_INT_FRAME
  40.544  	pushl $0
  40.545 +	CFI_ADJUST_CFA_OFFSET 4
  40.546  	pushl $do_coprocessor_error
  40.547 +	CFI_ADJUST_CFA_OFFSET 4
  40.548  	jmp error_code
  40.549 +	CFI_ENDPROC
  40.550  
  40.551  ENTRY(simd_coprocessor_error)
  40.552 +	RING0_INT_FRAME
  40.553  	pushl $0
  40.554 +	CFI_ADJUST_CFA_OFFSET 4
  40.555  	pushl $do_simd_coprocessor_error
  40.556 +	CFI_ADJUST_CFA_OFFSET 4
  40.557  	jmp error_code
  40.558 +	CFI_ENDPROC
  40.559  
  40.560  ENTRY(device_not_available)
  40.561 +	RING0_INT_FRAME
  40.562  	pushl $-1			# mark this as an int
  40.563 +	CFI_ADJUST_CFA_OFFSET 4
  40.564  	SAVE_ALL
  40.565  #ifndef CONFIG_XEN
  40.566  	movl %cr0, %eax
  40.567  	testl $0x4, %eax		# EM (math emulation bit)
  40.568  	je device_available_emulate
  40.569  	pushl $0			# temporary storage for ORIG_EIP
  40.570 +	CFI_ADJUST_CFA_OFFSET 4
  40.571  	call math_emulate
  40.572  	addl $4, %esp
  40.573 +	CFI_ADJUST_CFA_OFFSET -4
  40.574  	jmp ret_from_exception
  40.575  device_available_emulate:
  40.576  #endif
  40.577  	preempt_stop
  40.578  	call math_state_restore
  40.579  	jmp ret_from_exception
  40.580 +	CFI_ENDPROC
  40.581  
  40.582  #ifndef CONFIG_XEN
  40.583  /*
  40.584 @@ -731,6 +929,7 @@ label:						\
  40.585  #endif /* CONFIG_XEN */
  40.586  
  40.587  KPROBE_ENTRY(debug)
  40.588 +	RING0_INT_FRAME
  40.589  #ifndef CONFIG_XEN
  40.590  	cmpl $sysenter_entry,(%esp)
  40.591  	jne debug_stack_correct
  40.592 @@ -738,13 +937,14 @@ KPROBE_ENTRY(debug)
  40.593  debug_stack_correct:
  40.594  #endif /* !CONFIG_XEN */
  40.595  	pushl $-1			# mark this as an int
  40.596 +	CFI_ADJUST_CFA_OFFSET 4
  40.597  	SAVE_ALL
  40.598  	xorl %edx,%edx			# error code 0
  40.599  	movl %esp,%eax			# pt_regs pointer
  40.600  	call do_debug
  40.601  	jmp ret_from_exception
  40.602 +	CFI_ENDPROC
  40.603  	.previous .text
  40.604 -
  40.605  #ifndef CONFIG_XEN
  40.606  /*
  40.607   * NMI is doubly nasty. It can happen _while_ we're handling
  40.608 @@ -755,14 +955,18 @@ debug_stack_correct:
  40.609   * fault happened on the sysenter path.
  40.610   */
  40.611  ENTRY(nmi)
  40.612 +	RING0_INT_FRAME
  40.613  	pushl %eax
  40.614 +	CFI_ADJUST_CFA_OFFSET 4
  40.615  	movl %ss, %eax
  40.616  	cmpw $__ESPFIX_SS, %ax
  40.617  	popl %eax
  40.618 +	CFI_ADJUST_CFA_OFFSET -4
  40.619  	je nmi_16bit_stack
  40.620  	cmpl $sysenter_entry,(%esp)
  40.621  	je nmi_stack_fixup
  40.622  	pushl %eax
  40.623 +	CFI_ADJUST_CFA_OFFSET 4
  40.624  	movl %esp,%eax
  40.625  	/* Do not access memory above the end of our stack page,
  40.626  	 * it might not exist.
  40.627 @@ -770,16 +974,19 @@ ENTRY(nmi)
  40.628  	andl $(THREAD_SIZE-1),%eax
  40.629  	cmpl $(THREAD_SIZE-20),%eax
  40.630  	popl %eax
  40.631 +	CFI_ADJUST_CFA_OFFSET -4
  40.632  	jae nmi_stack_correct
  40.633  	cmpl $sysenter_entry,12(%esp)
  40.634  	je nmi_debug_stack_check
  40.635  nmi_stack_correct:
  40.636  	pushl %eax
  40.637 +	CFI_ADJUST_CFA_OFFSET 4
  40.638  	SAVE_ALL
  40.639  	xorl %edx,%edx		# zero error code
  40.640  	movl %esp,%eax		# pt_regs pointer
  40.641  	call do_nmi
  40.642 -	jmp restore_all
  40.643 +	jmp restore_nocheck_notrace
  40.644 +	CFI_ENDPROC
  40.645  
  40.646  nmi_stack_fixup:
  40.647  	FIX_STACK(12,nmi_stack_correct, 1)
  40.648 @@ -795,98 +1002,191 @@ nmi_debug_stack_check:
  40.649  	jmp nmi_stack_correct
  40.650  
  40.651  nmi_16bit_stack:
  40.652 +	RING0_INT_FRAME
  40.653  	/* create the pointer to lss back */
  40.654  	pushl %ss
  40.655 +	CFI_ADJUST_CFA_OFFSET 4
  40.656  	pushl %esp
  40.657 +	CFI_ADJUST_CFA_OFFSET 4
  40.658  	movzwl %sp, %esp
  40.659  	addw $4, (%esp)
  40.660  	/* copy the iret frame of 12 bytes */
  40.661  	.rept 3
  40.662  	pushl 16(%esp)
  40.663 +	CFI_ADJUST_CFA_OFFSET 4
  40.664  	.endr
  40.665  	pushl %eax
  40.666 +	CFI_ADJUST_CFA_OFFSET 4
  40.667  	SAVE_ALL
  40.668  	FIXUP_ESPFIX_STACK		# %eax == %esp
  40.669 +	CFI_ADJUST_CFA_OFFSET -20	# the frame has now moved
  40.670  	xorl %edx,%edx			# zero error code
  40.671  	call do_nmi
  40.672  	RESTORE_REGS
  40.673  	lss 12+4(%esp), %esp		# back to 16bit stack
  40.674  1:	iret
  40.675 +	CFI_ENDPROC
  40.676  .section __ex_table,"a"
  40.677  	.align 4
  40.678  	.long 1b,iret_exc
  40.679  .previous
  40.680  #else
  40.681  ENTRY(nmi)
  40.682 +	RING0_INT_FRAME
  40.683  	pushl %eax
  40.684 +	CFI_ADJUST_CFA_OFFSET 4
  40.685  	SAVE_ALL
  40.686  	xorl %edx,%edx		# zero error code
  40.687  	movl %esp,%eax		# pt_regs pointer
  40.688  	call do_nmi
  40.689  	orl  $NMI_MASK, EFLAGS(%esp)
  40.690  	jmp restore_all
  40.691 +	CFI_ENDPROC
  40.692  #endif
  40.693  
  40.694  KPROBE_ENTRY(int3)
  40.695 +	RING0_INT_FRAME
  40.696  	pushl $-1			# mark this as an int
  40.697 +	CFI_ADJUST_CFA_OFFSET 4
  40.698  	SAVE_ALL
  40.699  	xorl %edx,%edx		# zero error code
  40.700  	movl %esp,%eax		# pt_regs pointer
  40.701  	call do_int3
  40.702  	jmp ret_from_exception
  40.703 +	CFI_ENDPROC
  40.704  	.previous .text
  40.705  
  40.706  ENTRY(overflow)
  40.707 +	RING0_INT_FRAME
  40.708  	pushl $0
  40.709 +	CFI_ADJUST_CFA_OFFSET 4
  40.710  	pushl $do_overflow
  40.711 +	CFI_ADJUST_CFA_OFFSET 4
  40.712  	jmp error_code
  40.713 +	CFI_ENDPROC
  40.714  
  40.715  ENTRY(bounds)
  40.716 +	RING0_INT_FRAME
  40.717  	pushl $0
  40.718 +	CFI_ADJUST_CFA_OFFSET 4
  40.719  	pushl $do_bounds
  40.720 +	CFI_ADJUST_CFA_OFFSET 4
  40.721  	jmp error_code
  40.722 +	CFI_ENDPROC
  40.723  
  40.724  ENTRY(invalid_op)
  40.725 +	RING0_INT_FRAME
  40.726  	pushl $0
  40.727 +	CFI_ADJUST_CFA_OFFSET 4
  40.728  	pushl $do_invalid_op
  40.729 +	CFI_ADJUST_CFA_OFFSET 4
  40.730  	jmp error_code
  40.731 +	CFI_ENDPROC
  40.732  
  40.733  ENTRY(coprocessor_segment_overrun)
  40.734 +	RING0_INT_FRAME
  40.735  	pushl $0
  40.736 +	CFI_ADJUST_CFA_OFFSET 4
  40.737  	pushl $do_coprocessor_segment_overrun
  40.738 +	CFI_ADJUST_CFA_OFFSET 4
  40.739  	jmp error_code
  40.740 +	CFI_ENDPROC
  40.741  
  40.742  ENTRY(invalid_TSS)
  40.743 +	RING0_EC_FRAME
  40.744  	pushl $do_invalid_TSS
  40.745 +	CFI_ADJUST_CFA_OFFSET 4
  40.746  	jmp error_code
  40.747 +	CFI_ENDPROC
  40.748  
  40.749  ENTRY(segment_not_present)
  40.750 +	RING0_EC_FRAME
  40.751  	pushl $do_segment_not_present
  40.752 +	CFI_ADJUST_CFA_OFFSET 4
  40.753  	jmp error_code
  40.754 +	CFI_ENDPROC
  40.755  
  40.756  ENTRY(stack_segment)
  40.757 +	RING0_EC_FRAME
  40.758  	pushl $do_stack_segment
  40.759 +	CFI_ADJUST_CFA_OFFSET 4
  40.760  	jmp error_code
  40.761 +	CFI_ENDPROC
  40.762  
  40.763  KPROBE_ENTRY(general_protection)
  40.764 +	RING0_EC_FRAME
  40.765  	pushl $do_general_protection
  40.766 +	CFI_ADJUST_CFA_OFFSET 4
  40.767  	jmp error_code
  40.768 +	CFI_ENDPROC
  40.769  	.previous .text
  40.770  
  40.771  ENTRY(alignment_check)
  40.772 +	RING0_EC_FRAME
  40.773  	pushl $do_alignment_check
  40.774 +	CFI_ADJUST_CFA_OFFSET 4
  40.775  	jmp error_code
  40.776 +	CFI_ENDPROC
  40.777  
  40.778  KPROBE_ENTRY(page_fault)
  40.779 +	RING0_EC_FRAME
  40.780  	pushl $do_page_fault
  40.781 +	CFI_ADJUST_CFA_OFFSET 4
  40.782  	jmp error_code
  40.783 +	CFI_ENDPROC
  40.784  	.previous .text
  40.785  
  40.786  #ifdef CONFIG_X86_MCE
  40.787  ENTRY(machine_check)
  40.788 +	RING0_INT_FRAME
  40.789  	pushl $0
  40.790 +	CFI_ADJUST_CFA_OFFSET 4
  40.791  	pushl machine_check_vector
  40.792 +	CFI_ADJUST_CFA_OFFSET 4
  40.793  	jmp error_code
  40.794 +	CFI_ENDPROC
  40.795 +#endif
  40.796 +
  40.797 +#ifndef CONFIG_XEN
  40.798 +ENTRY(spurious_interrupt_bug)
  40.799 +	RING0_INT_FRAME
  40.800 +	pushl $0
  40.801 +	CFI_ADJUST_CFA_OFFSET 4
  40.802 +	pushl $do_spurious_interrupt_bug
  40.803 +	CFI_ADJUST_CFA_OFFSET 4
  40.804 +	jmp error_code
  40.805 +	CFI_ENDPROC
  40.806 +#endif /* !CONFIG_XEN */
  40.807 +
  40.808 +#ifdef CONFIG_STACK_UNWIND
  40.809 +ENTRY(arch_unwind_init_running)
  40.810 +	CFI_STARTPROC
  40.811 +	movl	4(%esp), %edx
  40.812 +	movl	(%esp), %ecx
  40.813 +	leal	4(%esp), %eax
  40.814 +	movl	%ebx, EBX(%edx)
  40.815 +	xorl	%ebx, %ebx
  40.816 +	movl	%ebx, ECX(%edx)
  40.817 +	movl	%ebx, EDX(%edx)
  40.818 +	movl	%esi, ESI(%edx)
  40.819 +	movl	%edi, EDI(%edx)
  40.820 +	movl	%ebp, EBP(%edx)
  40.821 +	movl	%ebx, EAX(%edx)
  40.822 +	movl	$__USER_DS, DS(%edx)
  40.823 +	movl	$__USER_DS, ES(%edx)
  40.824 +	movl	%ebx, ORIG_EAX(%edx)
  40.825 +	movl	%ecx, EIP(%edx)
  40.826 +	movl	12(%esp), %ecx
  40.827 +	movl	$__KERNEL_CS, CS(%edx)
  40.828 +	movl	%ebx, EFLAGS(%edx)
  40.829 +	movl	%eax, OLDESP(%edx)
  40.830 +	movl	8(%esp), %eax
  40.831 +	movl	%ecx, 8(%esp)
  40.832 +	movl	EBX(%edx), %ebx
  40.833 +	movl	$__KERNEL_DS, OLDSS(%edx)
  40.834 +	jmpl	*%eax
  40.835 +	CFI_ENDPROC
  40.836 +ENDPROC(arch_unwind_init_running)
  40.837  #endif
  40.838  
  40.839  ENTRY(fixup_4gb_segment)
    41.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S	Fri Jan 26 14:19:37 2007 -0700
    41.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S	Sat Jan 27 14:07:19 2007 -0700
    41.3 @@ -1,12 +1,12 @@
    41.4  
    41.5  
    41.6  .text
    41.7 -#include <linux/config.h>
    41.8  #include <linux/elfnote.h>
    41.9  #include <linux/threads.h>
   41.10  #include <linux/linkage.h>
   41.11  #include <asm/segment.h>
   41.12  #include <asm/page.h>
   41.13 +#include <asm/cache.h>
   41.14  #include <asm/thread_info.h>
   41.15  #include <asm/asm-offsets.h>
   41.16  #include <xen/interface/xen.h>
   41.17 @@ -61,7 +61,8 @@ ENTRY(startup_32)
   41.18  	movl %eax,%gs
   41.19  	cld			# gcc2 wants the direction flag cleared at all times
   41.20  
   41.21 -	call start_kernel
   41.22 +	pushl %eax		# fake return address
   41.23 +	jmp start_kernel
   41.24  L6:
   41.25  	jmp L6			# main should never return here, but
   41.26  				# just in case, we know what happens.
   41.27 @@ -92,6 +93,7 @@ ENTRY(empty_zero_page)
   41.28  /*
   41.29   * The Global Descriptor Table contains 28 quadwords, per-CPU.
   41.30   */
   41.31 +	.align L1_CACHE_BYTES
   41.32  ENTRY(cpu_gdt_table)
   41.33  	.quad 0x0000000000000000	/* NULL descriptor */
   41.34  	.quad 0x0000000000000000	/* 0x0b reserved */
    42.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c	Fri Jan 26 14:19:37 2007 -0700
    42.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c	Sat Jan 27 14:07:19 2007 -0700
    42.3 @@ -25,7 +25,6 @@
    42.4  #include <linux/init.h>
    42.5  #include <linux/delay.h>
    42.6  #include <linux/sched.h>
    42.7 -#include <linux/config.h>
    42.8  #include <linux/smp_lock.h>
    42.9  #include <linux/mc146818rtc.h>
   42.10  #include <linux/compiler.h>
   42.11 @@ -38,6 +37,7 @@
   42.12  #include <asm/desc.h>
   42.13  #include <asm/timer.h>
   42.14  #include <asm/i8259.h>
   42.15 +#include <asm/nmi.h>
   42.16  
   42.17  #include <mach_apic.h>
   42.18  
   42.19 @@ -90,6 +90,7 @@ atomic_t irq_mis_count;
   42.20  static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
   42.21  
   42.22  static DEFINE_SPINLOCK(ioapic_lock);
   42.23 +static DEFINE_SPINLOCK(vector_lock);
   42.24  
   42.25  int timer_over_8254 __initdata = 1;
   42.26  
   42.27 @@ -310,7 +311,7 @@ static void set_ioapic_affinity_irq(unsi
   42.28  # include <linux/slab.h>		/* kmalloc() */
   42.29  # include <linux/timer.h>	/* time_after() */
   42.30   
   42.31 -# ifdef CONFIG_BALANCED_IRQ_DEBUG
   42.32 +#ifdef CONFIG_BALANCED_IRQ_DEBUG
   42.33  #  define TDprintk(x...) do { printk("<%ld:%s:%d>: ", jiffies, __FILE__, __LINE__); printk(x); } while (0)
   42.34  #  define Dprintk(x...) do { TDprintk(x); } while (0)
   42.35  # else
   42.36 @@ -318,10 +319,15 @@ static void set_ioapic_affinity_irq(unsi
   42.37  #  define Dprintk(x...) 
   42.38  # endif
   42.39  
   42.40 -
   42.41  #define IRQBALANCE_CHECK_ARCH -999
   42.42 -static int irqbalance_disabled = IRQBALANCE_CHECK_ARCH;
   42.43 -static int physical_balance = 0;
   42.44 +#define MAX_BALANCED_IRQ_INTERVAL	(5*HZ)
   42.45 +#define MIN_BALANCED_IRQ_INTERVAL	(HZ/2)
   42.46 +#define BALANCED_IRQ_MORE_DELTA		(HZ/10)
   42.47 +#define BALANCED_IRQ_LESS_DELTA		(HZ)
   42.48 +
   42.49 +static int irqbalance_disabled __read_mostly = IRQBALANCE_CHECK_ARCH;
   42.50 +static int physical_balance __read_mostly;
   42.51 +static long balanced_irq_interval __read_mostly = MAX_BALANCED_IRQ_INTERVAL;
   42.52  
   42.53  static struct irq_cpu_info {
   42.54  	unsigned long * last_irq;
   42.55 @@ -340,12 +346,14 @@ static struct irq_cpu_info {
   42.56  
   42.57  #define CPU_TO_PACKAGEINDEX(i) (first_cpu(cpu_sibling_map[i]))
   42.58  
   42.59 -#define MAX_BALANCED_IRQ_INTERVAL	(5*HZ)
   42.60 -#define MIN_BALANCED_IRQ_INTERVAL	(HZ/2)
   42.61 -#define BALANCED_IRQ_MORE_DELTA		(HZ/10)
   42.62 -#define BALANCED_IRQ_LESS_DELTA		(HZ)
   42.63 -
   42.64 -static long balanced_irq_interval = MAX_BALANCED_IRQ_INTERVAL;
   42.65 +static cpumask_t balance_irq_affinity[NR_IRQS] = {
   42.66 +	[0 ... NR_IRQS-1] = CPU_MASK_ALL
   42.67 +};
   42.68 +
   42.69 +void set_balance_irq_affinity(unsigned int irq, cpumask_t mask)
   42.70 +{
   42.71 +	balance_irq_affinity[irq] = mask;
   42.72 +}
   42.73  
   42.74  static unsigned long move(int curr_cpu, cpumask_t allowed_mask,
   42.75  			unsigned long now, int direction)
   42.76 @@ -383,7 +391,7 @@ static inline void balance_irq(int cpu, 
   42.77  	if (irqbalance_disabled)
   42.78  		return; 
   42.79  
   42.80 -	cpus_and(allowed_mask, cpu_online_map, irq_affinity[irq]);
   42.81 +	cpus_and(allowed_mask, cpu_online_map, balance_irq_affinity[irq]);
   42.82  	new_cpu = move(cpu, allowed_mask, now, 1);
   42.83  	if (cpu != new_cpu) {
   42.84  		set_pending_irq(irq, cpumask_of_cpu(new_cpu));
   42.85 @@ -394,8 +402,8 @@ static inline void rotate_irqs_among_cpu
   42.86  {
   42.87  	int i, j;
   42.88  	Dprintk("Rotating IRQs among CPUs.\n");
   42.89 -	for (i = 0; i < NR_CPUS; i++) {
   42.90 -		for (j = 0; cpu_online(i) && (j < NR_IRQS); j++) {
   42.91 +	for_each_online_cpu(i) {
   42.92 +		for (j = 0; j < NR_IRQS; j++) {
   42.93  			if (!irq_desc[j].action)
   42.94  				continue;
   42.95  			/* Is it a significant load ?  */
   42.96 @@ -424,7 +432,7 @@ static void do_irq_balance(void)
   42.97  	unsigned long imbalance = 0;
   42.98  	cpumask_t allowed_mask, target_cpu_mask, tmp;
   42.99  
  42.100 -	for (i = 0; i < NR_CPUS; i++) {
  42.101 +	for_each_possible_cpu(i) {
  42.102  		int package_index;
  42.103  		CPU_IRQ(i) = 0;
  42.104  		if (!cpu_online(i))
  42.105 @@ -465,9 +473,7 @@ static void do_irq_balance(void)
  42.106  		}
  42.107  	}
  42.108  	/* Find the least loaded processor package */
  42.109 -	for (i = 0; i < NR_CPUS; i++) {
  42.110 -		if (!cpu_online(i))
  42.111 -			continue;
  42.112 +	for_each_online_cpu(i) {
  42.113  		if (i != CPU_TO_PACKAGEINDEX(i))
  42.114  			continue;
  42.115  		if (min_cpu_irq > CPU_IRQ(i)) {
  42.116 @@ -484,9 +490,7 @@ tryanothercpu:
  42.117  	 */
  42.118  	tmp_cpu_irq = 0;
  42.119  	tmp_loaded = -1;
  42.120 -	for (i = 0; i < NR_CPUS; i++) {
  42.121 -		if (!cpu_online(i))
  42.122 -			continue;
  42.123 +	for_each_online_cpu(i) {
  42.124  		if (i != CPU_TO_PACKAGEINDEX(i))
  42.125  			continue;
  42.126  		if (max_cpu_irq <= CPU_IRQ(i)) 
  42.127 @@ -576,7 +580,9 @@ tryanotherirq:
  42.128  		}
  42.129  	}
  42.130  
  42.131 -	cpus_and(allowed_mask, cpu_online_map, irq_affinity[selected_irq]);
  42.132 +	cpus_and(allowed_mask,
  42.133 +		cpu_online_map,
  42.134 +		balance_irq_affinity[selected_irq]);
  42.135  	target_cpu_mask = cpumask_of_cpu(min_loaded);
  42.136  	cpus_and(tmp, target_cpu_mask, allowed_mask);
  42.137  
  42.138 @@ -617,7 +623,7 @@ static int balanced_irq(void *unused)
  42.139  	
  42.140  	/* push everything to CPU 0 to give us a starting point.  */
  42.141  	for (i = 0 ; i < NR_IRQS ; i++) {
  42.142 -		pending_irq_cpumask[i] = cpumask_of_cpu(0);
  42.143 +		irq_desc[i].pending_mask = cpumask_of_cpu(0);
  42.144  		set_pending_irq(i, cpumask_of_cpu(0));
  42.145  	}
  42.146  
  42.147 @@ -662,9 +668,7 @@ static int __init balanced_irq_init(void
  42.148  	if (smp_num_siblings > 1 && !cpus_empty(tmp))
  42.149  		physical_balance = 1;
  42.150  
  42.151 -	for (i = 0; i < NR_CPUS; i++) {
  42.152 -		if (!cpu_online(i))
  42.153 -			continue;
  42.154 +	for_each_online_cpu(i) {
  42.155  		irq_cpu_data[i].irq_delta = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);
  42.156  		irq_cpu_data[i].last_irq = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);
  42.157  		if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) {
  42.158 @@ -681,9 +685,11 @@ static int __init balanced_irq_init(void
  42.159  	else 
  42.160  		printk(KERN_ERR "balanced_irq_init: failed to spawn balanced_irq");
  42.161  failed:
  42.162 -	for (i = 0; i < NR_CPUS; i++) {
  42.163 +	for_each_possible_cpu(i) {
  42.164  		kfree(irq_cpu_data[i].irq_delta);
  42.165 +		irq_cpu_data[i].irq_delta = NULL;
  42.166  		kfree(irq_cpu_data[i].last_irq);
  42.167 +		irq_cpu_data[i].last_irq = NULL;
  42.168  	}
  42.169  	return 0;
  42.170  }
  42.171 @@ -691,7 +697,7 @@ failed:
  42.172  int __init irqbalance_disable(char *str)
  42.173  {
  42.174  	irqbalance_disabled = 1;
  42.175 -	return 0;
  42.176 +	return 1;
  42.177  }
  42.178  
  42.179  __setup("noirqbalance", irqbalance_disable);
  42.180 @@ -1203,21 +1209,33 @@ u8 irq_vector[NR_IRQ_VECTORS] __read_mos
  42.181  
  42.182  int assign_irq_vector(int irq)
  42.183  {
  42.184 +	unsigned long flags;
  42.185 +	int vector;
  42.186  	struct physdev_irq irq_op;
  42.187  
  42.188 -	BUG_ON(irq >= NR_IRQ_VECTORS);
  42.189 -	if (irq != AUTO_ASSIGN && IO_APIC_VECTOR(irq) > 0)
  42.190 +	BUG_ON(irq != AUTO_ASSIGN && (unsigned)irq >= NR_IRQ_VECTORS);
  42.191 +
  42.192 +	spin_lock_irqsave(&vector_lock, flags);
  42.193 +
  42.194 +	if (irq != AUTO_ASSIGN && IO_APIC_VECTOR(irq) > 0) {
  42.195 +		spin_unlock_irqrestore(&vector_lock, flags);
  42.196  		return IO_APIC_VECTOR(irq);
  42.197 +	}
  42.198  
  42.199  	irq_op.irq = irq;
  42.200 -	if (HYPERVISOR_physdev_op(PHYSDEVOP_alloc_irq_vector, &irq_op))
  42.201 +	if (HYPERVISOR_physdev_op(PHYSDEVOP_alloc_irq_vector, &irq_op)) {
  42.202 +		spin_unlock_irqrestore(&vector_lock, flags);
  42.203  		return -ENOSPC;
  42.204 -
  42.205 -	vector_irq[irq_op.vector] = irq;
  42.206 +	}
  42.207 +
  42.208 +	vector = irq_op.vector;
  42.209 +	vector_irq[vector] = irq;
  42.210  	if (irq != AUTO_ASSIGN)
  42.211 -		IO_APIC_VECTOR(irq) = irq_op.vector;
  42.212 -
  42.213 -	return irq_op.vector;
  42.214 +		IO_APIC_VECTOR(irq) = vector;
  42.215 +
  42.216 +	spin_unlock_irqrestore(&vector_lock, flags);
  42.217 +
  42.218 +	return vector;
  42.219  }
  42.220  
  42.221  #ifndef CONFIG_XEN
  42.222 @@ -1228,23 +1246,18 @@ static struct hw_interrupt_type ioapic_e
  42.223  #define IOAPIC_EDGE	0
  42.224  #define IOAPIC_LEVEL	1
  42.225  
  42.226 -static inline void ioapic_register_intr(int irq, int vector, unsigned long trigger)
  42.227 +static void ioapic_register_intr(int irq, int vector, unsigned long trigger)
  42.228  {
  42.229 -	if (use_pci_vector() && !platform_legacy_irq(irq)) {
  42.230 -		if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) ||
  42.231 -				trigger == IOAPIC_LEVEL)
  42.232 -			irq_desc[vector].handler = &ioapic_level_type;
  42.233 -		else
  42.234 -			irq_desc[vector].handler = &ioapic_edge_type;
  42.235 -		set_intr_gate(vector, interrupt[vector]);
  42.236 -	} else	{
  42.237 -		if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) ||
  42.238 -				trigger == IOAPIC_LEVEL)
  42.239 -			irq_desc[irq].handler = &ioapic_level_type;
  42.240 -		else
  42.241 -			irq_desc[irq].handler = &ioapic_edge_type;
  42.242 -		set_intr_gate(vector, interrupt[irq]);
  42.243 -	}
  42.244 +	unsigned idx;
  42.245 +
  42.246 +	idx = use_pci_vector() && !platform_legacy_irq(irq) ? vector : irq;
  42.247 +
  42.248 +	if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) ||
  42.249 +			trigger == IOAPIC_LEVEL)
  42.250 +		irq_desc[idx].chip = &ioapic_level_type;
  42.251 +	else
  42.252 +		irq_desc[idx].chip = &ioapic_edge_type;
  42.253 +	set_intr_gate(vector, interrupt[idx]);
  42.254  }
  42.255  #else
  42.256  #define ioapic_register_intr(_irq,_vector,_trigger) ((void)0)
  42.257 @@ -1359,7 +1372,7 @@ static void __init setup_ExtINT_IRQ0_pin
  42.258  	 * The timer IRQ doesn't have to know that behind the
  42.259  	 * scene we have a 8259A-master in AEOI mode ...
  42.260  	 */
  42.261 -	irq_desc[0].handler = &ioapic_edge_type;
  42.262 +	irq_desc[0].chip = &ioapic_edge_type;
  42.263  
  42.264  	/*
  42.265  	 * Add it to the IO-APIC irq-routing table:
  42.266 @@ -1813,7 +1826,8 @@ static void __init setup_ioapic_ids_from
  42.267  	 * Don't check I/O APIC IDs for xAPIC systems.  They have
  42.268  	 * no meaning without the serial APIC bus.
  42.269  	 */
  42.270 -	if (!(boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && boot_cpu_data.x86 < 15))
  42.271 +	if (!(boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
  42.272 +		|| APIC_XAPIC(apic_version[boot_cpu_physical_apicid]))
  42.273  		return;
  42.274  	/*
  42.275  	 * This is broken; anything with a real cpu count has to
  42.276 @@ -2109,6 +2123,13 @@ static void set_ioapic_affinity_vector (
  42.277  #endif
  42.278  #endif
  42.279  
  42.280 +static int ioapic_retrigger(unsigned int irq)
  42.281 +{
  42.282 +	send_IPI_self(IO_APIC_VECTOR(irq));
  42.283 +
  42.284 +	return 1;
  42.285 +}
  42.286 +
  42.287  /*
  42.288   * Level and edge triggered IO-APIC interrupts need different handling,
  42.289   * so we use two separate IRQ descriptors. Edge triggered IRQs can be
  42.290 @@ -2128,6 +2149,7 @@ static struct hw_interrupt_type ioapic_e
  42.291  #ifdef CONFIG_SMP
  42.292  	.set_affinity 	= set_ioapic_affinity,
  42.293  #endif
  42.294 +	.retrigger	= ioapic_retrigger,
  42.295  };
  42.296  
  42.297  static struct hw_interrupt_type ioapic_level_type __read_mostly = {
  42.298 @@ -2141,6 +2163,7 @@ static struct hw_interrupt_type ioapic_l
  42.299  #ifdef CONFIG_SMP
  42.300  	.set_affinity 	= set_ioapic_affinity,
  42.301  #endif
  42.302 +	.retrigger	= ioapic_retrigger,
  42.303  };
  42.304  #endif /* !CONFIG_XEN */
  42.305  
  42.306 @@ -2177,7 +2200,7 @@ static inline void init_IO_APIC_traps(vo
  42.307  #ifndef CONFIG_XEN
  42.308  			else
  42.309  				/* Strange. Oh, well.. */
  42.310 -				irq_desc[irq].handler = &no_irq_type;
  42.311 +				irq_desc[irq].chip = &no_irq_type;
  42.312  #endif
  42.313  		}
  42.314  	}
  42.315 @@ -2298,6 +2321,8 @@ static inline void unlock_ExtINT_logic(v
  42.316  	spin_unlock_irqrestore(&ioapic_lock, flags);
  42.317  }
  42.318  
  42.319 +int timer_uses_ioapic_pin_0;
  42.320 +
  42.321  /*
  42.322   * This code may look a bit paranoid, but it's supposed to cooperate with
  42.323   * a wide range of boards and BIOS bugs.  Fortunately only the timer IRQ
  42.324 @@ -2334,6 +2359,9 @@ static inline void check_timer(void)
  42.325  	pin2  = ioapic_i8259.pin;
  42.326  	apic2 = ioapic_i8259.apic;
  42.327  
  42.328 +	if (pin1 == 0)
  42.329 +		timer_uses_ioapic_pin_0 = 1;
  42.330 +
  42.331  	printk(KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n",
  42.332  		vector, apic1, pin1, apic2, pin2);
  42.333  
  42.334 @@ -2390,7 +2418,7 @@ static inline void check_timer(void)
  42.335  	printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
  42.336  
  42.337  	disable_8259A_irq(0);
  42.338 -	irq_desc[0].handler = &lapic_irq_type;
  42.339 +	irq_desc[0].chip = &lapic_irq_type;
  42.340  	apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector);	/* Fixed mode */
  42.341  	enable_8259A_irq(0);
  42.342  
  42.343 @@ -2419,6 +2447,7 @@ static inline void check_timer(void)
  42.344  		"report.  Then try booting with the 'noapic' option");
  42.345  }
  42.346  #else
  42.347 +int timer_uses_ioapic_pin_0 = 0;
  42.348  #define check_timer() ((void)0)
  42.349  #endif
  42.350  
    43.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c	Fri Jan 26 14:19:37 2007 -0700
    43.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c	Sat Jan 27 14:07:19 2007 -0700
    43.3 @@ -79,6 +79,7 @@ asmlinkage long sys_ioperm(unsigned long
    43.4  
    43.5  		memset(bitmap, 0xff, IO_BITMAP_BYTES);
    43.6  		t->io_bitmap_ptr = bitmap;
    43.7 +		set_thread_flag(TIF_IO_BITMAP);
    43.8  
    43.9  		set_iobitmap.bitmap   = (char *)bitmap;
   43.10  		set_iobitmap.nr_ports = IO_BITMAP_BITS;
    44.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c	Fri Jan 26 14:19:37 2007 -0700
    44.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c	Sat Jan 27 14:07:19 2007 -0700
    44.3 @@ -42,8 +42,8 @@ union irq_ctx {
    44.4  	u32                     stack[THREAD_SIZE/sizeof(u32)];
    44.5  };
    44.6  
    44.7 -static union irq_ctx *hardirq_ctx[NR_CPUS];
    44.8 -static union irq_ctx *softirq_ctx[NR_CPUS];
    44.9 +static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly;
   44.10 +static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
   44.11  #endif
   44.12  
   44.13  /*
   44.14 @@ -60,6 +60,12 @@ fastcall unsigned int do_IRQ(struct pt_r
   44.15  	u32 *isp;
   44.16  #endif
   44.17  
   44.18 +	if (unlikely((unsigned)irq >= NR_IRQS)) {
   44.19 +		printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
   44.20 +					__FUNCTION__, irq);
   44.21 +		BUG();
   44.22 +	}
   44.23 +
   44.24  	irq_enter();
   44.25  #ifdef CONFIG_DEBUG_STACKOVERFLOW
   44.26  	/* Debugging check for stack overflow: is there less than 1KB free? */
   44.27 @@ -95,6 +101,14 @@ fastcall unsigned int do_IRQ(struct pt_r
   44.28  		irqctx->tinfo.task = curctx->tinfo.task;
   44.29  		irqctx->tinfo.previous_esp = current_stack_pointer;
   44.30  
   44.31 +		/*
   44.32 +		 * Copy the softirq bits in preempt_count so that the
   44.33 +		 * softirq checks work in the hardirq context.
   44.34 +		 */
   44.35 +		irqctx->tinfo.preempt_count =
   44.36 +			(irqctx->tinfo.preempt_count & ~SOFTIRQ_MASK) |
   44.37 +			(curctx->tinfo.preempt_count & SOFTIRQ_MASK);
   44.38 +
   44.39  		asm volatile(
   44.40  			"       xchgl   %%ebx,%%esp      \n"
   44.41  			"       call    __do_IRQ         \n"
   44.42 @@ -147,7 +161,7 @@ void irq_ctx_init(int cpu)
   44.43  	irqctx->tinfo.task              = NULL;
   44.44  	irqctx->tinfo.exec_domain       = NULL;
   44.45  	irqctx->tinfo.cpu               = cpu;
   44.46 -	irqctx->tinfo.preempt_count     = SOFTIRQ_OFFSET;
   44.47 +	irqctx->tinfo.preempt_count     = 0;
   44.48  	irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
   44.49  
   44.50  	softirq_ctx[cpu] = irqctx;
   44.51 @@ -192,6 +206,10 @@ asmlinkage void do_softirq(void)
   44.52  			: "0"(isp)
   44.53  			: "memory", "cc", "edx", "ecx", "eax"
   44.54  		);
   44.55 +		/*
   44.56 +		 * Shouldnt happen, we returned above if in_interrupt():
   44.57 +	 	 */
   44.58 +		WARN_ON_ONCE(softirq_count());
   44.59  	}
   44.60  
   44.61  	local_irq_restore(flags);
   44.62 @@ -219,7 +237,7 @@ int show_interrupts(struct seq_file *p, 
   44.63  	if (i == 0) {
   44.64  		seq_printf(p, "           ");
   44.65  		for_each_online_cpu(j)
   44.66 -			seq_printf(p, "CPU%d       ",j);
   44.67 +			seq_printf(p, "CPU%-8d",j);
   44.68  		seq_putc(p, '\n');
   44.69  	}
   44.70  
   44.71 @@ -235,7 +253,7 @@ int show_interrupts(struct seq_file *p, 
   44.72  		for_each_online_cpu(j)
   44.73  			seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
   44.74  #endif
   44.75 -		seq_printf(p, " %14s", irq_desc[i].handler->typename);
   44.76 +		seq_printf(p, " %14s", irq_desc[i].chip->typename);
   44.77  		seq_printf(p, "  %s", action->name);
   44.78  
   44.79  		for (action=action->next; action; action = action->next)
   44.80 @@ -276,13 +294,13 @@ void fixup_irqs(cpumask_t map)
   44.81  		if (irq == 2)
   44.82  			continue;
   44.83  
   44.84 -		cpus_and(mask, irq_affinity[irq], map);
   44.85 +		cpus_and(mask, irq_desc[irq].affinity, map);
   44.86  		if (any_online_cpu(mask) == NR_CPUS) {
   44.87  			/*printk("Breaking affinity for irq %i\n", irq);*/
   44.88  			mask = map;
   44.89  		}
   44.90 -		if (irq_desc[irq].handler->set_affinity)
   44.91 -			irq_desc[irq].handler->set_affinity(irq, mask);
   44.92 +		if (irq_desc[irq].chip->set_affinity)
   44.93 +			irq_desc[irq].chip->set_affinity(irq, mask);
   44.94  		else if (irq_desc[irq].action && !(warned++))
   44.95  			printk("Cannot set affinity for irq %i\n", irq);
   44.96  	}
    45.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c	Fri Jan 26 14:19:37 2007 -0700
    45.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c	Sat Jan 27 14:07:19 2007 -0700
    45.3 @@ -32,6 +32,7 @@
    45.4  #include <linux/miscdevice.h>
    45.5  #include <linux/spinlock.h>
    45.6  #include <linux/mm.h>
    45.7 +#include <linux/mutex.h>
    45.8  #include <linux/syscalls.h>
    45.9  
   45.10  #include <asm/msr.h>
   45.11 @@ -42,14 +43,17 @@ MODULE_DESCRIPTION("Intel CPU (IA-32) Mi
   45.12  MODULE_AUTHOR("Tigran Aivazian <tigran@veritas.com>");
   45.13  MODULE_LICENSE("GPL");
   45.14  
   45.15 -#define MICROCODE_VERSION 	"1.14-xen"
   45.16 +static int verbose;
   45.17 +module_param(verbose, int, 0644);
   45.18 +
   45.19 +#define MICROCODE_VERSION 	"1.14a-xen"
   45.20  
   45.21  #define DEFAULT_UCODE_DATASIZE 	(2000) 	  /* 2000 bytes */
   45.22  #define MC_HEADER_SIZE		(sizeof (microcode_header_t))  	  /* 48 bytes */
   45.23  #define DEFAULT_UCODE_TOTALSIZE (DEFAULT_UCODE_DATASIZE + MC_HEADER_SIZE) /* 2048 bytes */
   45.24  
   45.25  /* no concurrent ->write()s are allowed on /dev/cpu/microcode */
   45.26 -static DECLARE_MUTEX(microcode_sem);
   45.27 +static DEFINE_MUTEX(microcode_mutex);
   45.28  				
   45.29  static int microcode_open (struct inode *unused1, struct file *unused2)
   45.30  {
   45.31 @@ -90,44 +94,26 @@ static ssize_t microcode_write (struct f
   45.32  		return -EINVAL;
   45.33  	}
   45.34  
   45.35 -	down(&microcode_sem);
   45.36 +	mutex_lock(&microcode_mutex);
   45.37  
   45.38  	ret = do_microcode_update(buf, len);
   45.39  	if (!ret)
   45.40  		ret = (ssize_t)len;
   45.41  
   45.42 -	up(&microcode_sem);
   45.43 +	mutex_unlock(&microcode_mutex);
   45.44  
   45.45  	return ret;
   45.46  }
   45.47  
   45.48 -static int microcode_ioctl (struct inode *inode, struct file *file, 
   45.49 -		unsigned int cmd, unsigned long arg)
   45.50 -{
   45.51 -	switch (cmd) {
   45.52 -		/* 
   45.53 -		 *  XXX: will be removed after microcode_ctl 
   45.54 -		 *  is updated to ignore failure of this ioctl()
   45.55 -		 */
   45.56 -		case MICROCODE_IOCFREE:
   45.57 -			return 0;
   45.58 -		default:
   45.59 -			return -EINVAL;
   45.60 -	}
   45.61 -	return -EINVAL;
   45.62 -}
   45.63 -
   45.64  static struct file_operations microcode_fops = {
   45.65  	.owner		= THIS_MODULE,
   45.66  	.write		= microcode_write,
   45.67 -	.ioctl		= microcode_ioctl,
   45.68  	.open		= microcode_open,
   45.69  };
   45.70  
   45.71  static struct miscdevice microcode_dev = {
   45.72  	.minor		= MICROCODE_MINOR,
   45.73  	.name		= "microcode",
   45.74 -	.devfs_name	= "cpu/microcode",
   45.75  	.fops		= &microcode_fops,
   45.76  };
   45.77  
   45.78 @@ -151,7 +137,6 @@ static int __init microcode_init (void)
   45.79  static void __exit microcode_exit (void)
   45.80  {
   45.81  	misc_deregister(&microcode_dev);
   45.82 -	printk(KERN_INFO "IA-32 Microcode Update Driver v" MICROCODE_VERSION " unregistered\n");
   45.83  }
   45.84  
   45.85  module_init(microcode_init)
    46.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c	Fri Jan 26 14:19:37 2007 -0700
    46.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c	Sat Jan 27 14:07:19 2007 -0700
    46.3 @@ -17,7 +17,6 @@
    46.4  #include <linux/init.h>
    46.5  #include <linux/acpi.h>
    46.6  #include <linux/delay.h>
    46.7 -#include <linux/config.h>
    46.8  #include <linux/bootmem.h>
    46.9  #include <linux/smp_lock.h>
   46.10  #include <linux/kernel_stat.h>
   46.11 @@ -38,12 +37,6 @@
   46.12  int smp_found_config;
   46.13  unsigned int __initdata maxcpus = NR_CPUS;
   46.14  
   46.15 -#ifdef CONFIG_HOTPLUG_CPU
   46.16 -#define CPU_HOTPLUG_ENABLED	(1)
   46.17 -#else
   46.18 -#define CPU_HOTPLUG_ENABLED	(0)
   46.19 -#endif
   46.20 -
   46.21  /*
   46.22   * Various Linux-internal data structures created from the
   46.23   * MP-table.
   46.24 @@ -110,21 +103,6 @@ static int __init mpf_checksum(unsigned 
   46.25  static int mpc_record; 
   46.26  static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __initdata;
   46.27  
   46.28 -#ifdef CONFIG_X86_NUMAQ
   46.29 -static int MP_valid_apicid(int apicid, int version)
   46.30 -{
   46.31 -	return hweight_long(apicid & 0xf) == 1 && (apicid >> 4) != 0xf;
   46.32 -}
   46.33 -#elif !defined(CONFIG_XEN)
   46.34 -static int MP_valid_apicid(int apicid, int version)
   46.35 -{
   46.36 -	if (version >= 0x14)
   46.37 -		return apicid < 0xff;
   46.38 -	else
   46.39 -		return apicid < 0xf;
   46.40 -}
   46.41 -#endif
   46.42 -
   46.43  #ifndef CONFIG_XEN
   46.44  static void __devinit MP_processor_info (struct mpc_config_processor *m)
   46.45  {
   46.46 @@ -191,12 +169,6 @@ static void __devinit MP_processor_info 
   46.47  
   46.48  	ver = m->mpc_apicver;
   46.49  
   46.50 -	if (!MP_valid_apicid(apicid, ver)) {
   46.51 -		printk(KERN_WARNING "Processor #%d INVALID. (Max ID: %d).\n",
   46.52 -			m->mpc_apicid, MAX_APICS);
   46.53 -		return;
   46.54 -	}
   46.55 -
   46.56  	/*
   46.57  	 * Validate version
   46.58  	 */
   46.59 @@ -226,7 +198,14 @@ static void __devinit MP_processor_info 
   46.60  	cpu_set(num_processors, cpu_possible_map);
   46.61  	num_processors++;
   46.62  
   46.63 -	if (CPU_HOTPLUG_ENABLED || (num_processors > 8)) {
   46.64 +	/*
   46.65 +	 * Would be preferable to switch to bigsmp when CONFIG_HOTPLUG_CPU=y
   46.66 +	 * but we need to work other dependencies like SMP_SUSPEND etc
   46.67 +	 * before this can be done without some confusion.
   46.68 +	 * if (CPU_HOTPLUG_ENABLED || num_processors > 8)
   46.69 +	 *       - Ashok Raj <ashok.raj@intel.com>
   46.70 +	 */
   46.71 +	if (num_processors > 8) {
   46.72  		switch (boot_cpu_data.x86_vendor) {
   46.73  		case X86_VENDOR_INTEL:
   46.74  			if (!APIC_XAPIC(ver)) {
   46.75 @@ -256,6 +235,13 @@ static void __init MP_bus_info (struct m
   46.76  
   46.77  	mpc_oem_bus_info(m, str, translation_table[mpc_record]);
   46.78  
   46.79 +	if (m->mpc_busid >= MAX_MP_BUSSES) {
   46.80 +		printk(KERN_WARNING "MP table busid value (%d) for bustype %s "
   46.81 +			" is too large, max. supported is %d\n",
   46.82 +			m->mpc_busid, str, MAX_MP_BUSSES - 1);
   46.83 +		return;
   46.84 +	}
   46.85 +
   46.86  	if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA)-1) == 0) {
   46.87  		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA;
   46.88  	} else if (strncmp(str, BUSTYPE_EISA, sizeof(BUSTYPE_EISA)-1) == 0) {
   46.89 @@ -844,6 +830,8 @@ void __init find_smp_config (void)
   46.90  #endif
   46.91  }
   46.92  
   46.93 +int es7000_plat;
   46.94 +
   46.95  /* --------------------------------------------------------------------------
   46.96                              ACPI-based MP Configuration
   46.97     -------------------------------------------------------------------------- */
   46.98 @@ -957,7 +945,8 @@ void __init mp_register_ioapic (
   46.99  #ifndef CONFIG_XEN
  46.100  	set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
  46.101  #endif
  46.102 -	if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 < 15))
  46.103 +	if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
  46.104 +		&& !APIC_XAPIC(apic_version[boot_cpu_physical_apicid]))
  46.105  		tmpid = io_apic_get_unique_id(idx, id);
  46.106  	else
  46.107  		tmpid = id;
  46.108 @@ -1033,8 +1022,6 @@ void __init mp_override_legacy_irq (
  46.109  	return;
  46.110  }
  46.111  
  46.112 -int es7000_plat;
  46.113 -
  46.114  void __init mp_config_acpi_legacy_irqs (void)
  46.115  {
  46.116  	struct mpc_config_intsrc intsrc;
  46.117 @@ -1164,7 +1151,17 @@ int mp_register_gsi (u32 gsi, int trigge
  46.118  		 */
  46.119  		int irq = gsi;
  46.120  		if (gsi < MAX_GSI_NUM) {
  46.121 -			if (gsi > 15)
  46.122 +			/*
  46.123 +			 * Retain the VIA chipset work-around (gsi > 15), but
  46.124 +			 * avoid a problem where the 8254 timer (IRQ0) is setup
  46.125 +			 * via an override (so it's not on pin 0 of the ioapic),
  46.126 +			 * and at the same time, the pin 0 interrupt is a PCI
  46.127 +			 * type.  The gsi > 15 test could cause these two pins
  46.128 +			 * to be shared as IRQ0, and they are not shareable.
  46.129 +			 * So test for this condition, and if necessary, avoid
  46.130 +			 * the pin collision.
  46.131 +			 */
  46.132 +			if (gsi > 15 || (gsi == 0 && !timer_uses_ioapic_pin_0))
  46.133  				gsi = pci_irq++;
  46.134  			/*
  46.135  			 * Don't assign IRQ used by ACPI SCI
    47.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c	Fri Jan 26 14:19:37 2007 -0700
    47.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c	Sat Jan 27 14:07:19 2007 -0700
    47.3 @@ -21,6 +21,8 @@
    47.4  #include <asm/bug.h>
    47.5  
    47.6  #ifdef __x86_64__
    47.7 +#include <asm/proto.h>
    47.8 +
    47.9  int iommu_merge __read_mostly = 0;
   47.10  EXPORT_SYMBOL(iommu_merge);
   47.11  
   47.12 @@ -32,10 +34,28 @@ EXPORT_SYMBOL(bad_dma_address);
   47.13  int iommu_bio_merge __read_mostly = 0;
   47.14  EXPORT_SYMBOL(iommu_bio_merge);
   47.15  
   47.16 +int force_iommu __read_mostly= 0;
   47.17 +
   47.18  __init int iommu_setup(char *p)
   47.19  {
   47.20      return 1;
   47.21  }
   47.22 +
   47.23 +void __init pci_iommu_alloc(void)
   47.24 +{
   47.25 +#ifdef CONFIG_SWIOTLB
   47.26 +	pci_swiotlb_init();
   47.27 +#endif
   47.28 +}
   47.29 +
   47.30 +static int __init pci_iommu_init(void)
   47.31 +{
   47.32 +	no_iommu_init();
   47.33 +	return 0;
   47.34 +}
   47.35 +
   47.36 +/* Must execute after PCI subsystem */
   47.37 +fs_initcall(pci_iommu_init);
   47.38  #endif
   47.39  
   47.40  struct dma_coherent_mem {
    48.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c	Fri Jan 26 14:19:37 2007 -0700
    48.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c	Sat Jan 27 14:07:19 2007 -0700
    48.3 @@ -28,7 +28,6 @@
    48.4  #include <linux/user.h>
    48.5  #include <linux/a.out.h>
    48.6  #include <linux/interrupt.h>
    48.7 -#include <linux/config.h>
    48.8  #include <linux/utsname.h>
    48.9  #include <linux/delay.h>
   48.10  #include <linux/reboot.h>
   48.11 @@ -38,7 +37,6 @@
   48.12  #include <linux/kallsyms.h>
   48.13  #include <linux/ptrace.h>
   48.14  #include <linux/random.h>
   48.15 -#include <linux/kprobes.h>
   48.16  
   48.17  #include <asm/uaccess.h>
   48.18  #include <asm/pgtable.h>
   48.19 @@ -125,10 +123,10 @@ static void xen_idle(void)
   48.20  	if (need_resched())
   48.21  		local_irq_enable();
   48.22  	else {
   48.23 -		clear_thread_flag(TIF_POLLING_NRFLAG);
   48.24 +		current_thread_info()->status &= ~TS_POLLING;
   48.25  		smp_mb__after_clear_bit();
   48.26  		safe_halt();
   48.27 -		set_thread_flag(TIF_POLLING_NRFLAG);
   48.28 +		current_thread_info()->status |= TS_POLLING;
   48.29  	}
   48.30  }
   48.31  #ifdef CONFIG_APM_MODULE
   48.32 @@ -163,7 +161,7 @@ void cpu_idle(void)
   48.33  {
   48.34  	int cpu = smp_processor_id();
   48.35  
   48.36 -	set_thread_flag(TIF_POLLING_NRFLAG);
   48.37 +	current_thread_info()->status |= TS_POLLING;
   48.38  
   48.39  	/* endless idle loop with no priority at all */
   48.40  	while (1) {
   48.41 @@ -245,7 +243,7 @@ void show_regs(struct pt_regs * regs)
   48.42  	printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id());
   48.43  	print_symbol("EIP is at %s\n", regs->eip);
   48.44  
   48.45 -	if (user_mode(regs))
   48.46 +	if (user_mode_vm(regs))
   48.47  		printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp);
   48.48  	printk(" EFLAGS: %08lx    %s  (%s %.*s)\n",
   48.49  	       regs->eflags, print_tainted(), system_utsname.release,
   48.50 @@ -263,7 +261,7 @@ void show_regs(struct pt_regs * regs)
   48.51  	cr3 = read_cr3();
   48.52  	cr4 = read_cr4_safe();
   48.53  	printk("CR0: %08lx CR2: %08lx CR3: %08lx CR4: %08lx\n", cr0, cr2, cr3, cr4);
   48.54 -	show_trace(NULL, &regs->esp);
   48.55 +	show_trace(NULL, regs, &regs->esp);
   48.56  }
   48.57  
   48.58  /*
   48.59 @@ -311,22 +309,15 @@ EXPORT_SYMBOL(kernel_thread);
   48.60   */
   48.61  void exit_thread(void)
   48.62  {
   48.63 -	struct task_struct *tsk = current;
   48.64 -	struct thread_struct *t = &tsk->thread;
   48.65 -
   48.66 -	/*
   48.67 -	 * Remove function-return probe instances associated with this task
   48.68 -	 * and put them back on the free list. Do not insert an exit probe for
   48.69 -	 * this function, it will be disabled by kprobe_flush_task if you do.
   48.70 -	 */
   48.71 -	kprobe_flush_task(tsk);
   48.72 -
   48.73  	/* The process may have allocated an io port bitmap... nuke it. */
   48.74 -	if (unlikely(NULL != t->io_bitmap_ptr)) {
   48.75 +	if (unlikely(test_thread_flag(TIF_IO_BITMAP))) {
   48.76 +		struct task_struct *tsk = current;
   48.77 +		struct thread_struct *t = &tsk->thread;
   48.78  		struct physdev_set_iobitmap set_iobitmap = { 0 };
   48.79  		HYPERVISOR_physdev_op(PHYSDEVOP_set_iobitmap, &set_iobitmap);
   48.80  		kfree(t->io_bitmap_ptr);
   48.81  		t->io_bitmap_ptr = NULL;
   48.82 +		clear_thread_flag(TIF_IO_BITMAP);
   48.83  	}
   48.84  }
   48.85  
   48.86 @@ -336,6 +327,7 @@ void flush_thread(void)
   48.87  
   48.88  	memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
   48.89  	memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));	
   48.90 +	clear_tsk_thread_flag(tsk, TIF_DEBUG);
   48.91  	/*
   48.92  	 * Forget coprocessor state..
   48.93  	 */
   48.94 @@ -380,7 +372,7 @@ int copy_thread(int nr, unsigned long cl
   48.95  	savesegment(gs,p->thread.gs);
   48.96  
   48.97  	tsk = current;
   48.98 -	if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) {
   48.99 +	if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) {
  48.100  		p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
  48.101  		if (!p->thread.io_bitmap_ptr) {
  48.102  			p->thread.io_bitmap_max = 0;
  48.103 @@ -388,6 +380,7 @@ int copy_thread(int nr, unsigned long cl
  48.104  		}
  48.105  		memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr,
  48.106  			IO_BITMAP_BYTES);
  48.107 +		set_tsk_thread_flag(p, TIF_IO_BITMAP);
  48.108  	}
  48.109  
  48.110  	/*
  48.111 @@ -484,6 +477,23 @@ int dump_task_regs(struct task_struct *t
  48.112  	return 1;
  48.113  }
  48.114  
  48.115 +static noinline void __switch_to_xtra(struct task_struct *next_p)
  48.116 +{
  48.117 +	struct thread_struct *next;
  48.118 +
  48.119 +	next = &next_p->thread;
  48.120 +
  48.121 +	if (test_tsk_thread_flag(next_p, TIF_DEBUG)) {
  48.122 +		set_debugreg(next->debugreg[0], 0);
  48.123 +		set_debugreg(next->debugreg[1], 1);
  48.124 +		set_debugreg(next->debugreg[2], 2);
  48.125 +		set_debugreg(next->debugreg[3], 3);
  48.126 +		/* no 4 and 5 */
  48.127 +		set_debugreg(next->debugreg[6], 6);
  48.128 +		set_debugreg(next->debugreg[7], 7);
  48.129 +	}
  48.130 +}
  48.131 +
  48.132  /*
  48.133   * This function selects if the context switch from prev to next
  48.134   * has to tweak the TSC disable bit in the cr4.
  48.135 @@ -625,17 +635,10 @@ struct task_struct fastcall * __switch_t
  48.136  		loadsegment(gs, next->gs);
  48.137  
  48.138  	/*
  48.139 -	 * Now maybe reload the debug registers
  48.140 +	 * Now maybe handle debug registers
  48.141  	 */
  48.142 -	if (unlikely(next->debugreg[7])) {
  48.143 -		set_debugreg(next->debugreg[0], 0);
  48.144 -		set_debugreg(next->debugreg[1], 1);
  48.145 -		set_debugreg(next->debugreg[2], 2);
  48.146 -		set_debugreg(next->debugreg[3], 3);
  48.147 -		/* no 4 and 5 */
  48.148 -		set_debugreg(next->debugreg[6], 6);
  48.149 -		set_debugreg(next->debugreg[7], 7);
  48.150 -	}
  48.151 +	if (unlikely(task_thread_info(next_p)->flags & _TIF_WORK_CTXSW))
  48.152 +		__switch_to_xtra(next_p);
  48.153  
  48.154  	disable_tsc(prev_p, next_p);
  48.155  
  48.156 @@ -731,7 +734,6 @@ unsigned long get_wchan(struct task_stru
  48.157  	} while (count++ < 16);
  48.158  	return 0;
  48.159  }
  48.160 -EXPORT_SYMBOL(get_wchan);
  48.161  
  48.162  /*
  48.163   * sys_alloc_thread_area: get a yet unused TLS descriptor index.
    49.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c	Fri Jan 26 14:19:37 2007 -0700
    49.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c	Sat Jan 27 14:07:19 2007 -0700
    49.3 @@ -1,7 +1,6 @@
    49.4  /*
    49.5   * This file contains work-arounds for x86 and x86_64 platform bugs.
    49.6   */
    49.7 -#include <linux/config.h>
    49.8  #include <linux/pci.h>
    49.9  #include <linux/irq.h>
   49.10  
    50.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c	Fri Jan 26 14:19:37 2007 -0700
    50.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c	Sat Jan 27 14:07:19 2007 -0700
    50.3 @@ -23,17 +23,17 @@
    50.4   * This file handles the architecture-dependent parts of initialization
    50.5   */
    50.6  
    50.7 -#include <linux/config.h>
    50.8  #include <linux/sched.h>
    50.9  #include <linux/mm.h>
   50.10  #include <linux/mmzone.h>
   50.11 -#include <linux/tty.h>
   50.12 +#include <linux/screen_info.h>
   50.13  #include <linux/ioport.h>
   50.14  #include <linux/acpi.h>
   50.15  #include <linux/apm_bios.h>
   50.16  #include <linux/initrd.h>
   50.17  #include <linux/bootmem.h>
   50.18  #include <linux/seq_file.h>
   50.19 +#include <linux/platform_device.h>
   50.20  #include <linux/console.h>
   50.21  #include <linux/mca.h>
   50.22  #include <linux/root_dev.h>
   50.23 @@ -49,6 +49,7 @@
   50.24  #include <linux/kexec.h>
   50.25  #include <linux/crash_dump.h>
   50.26  #include <linux/dmi.h>
   50.27 +#include <linux/pfn.h>
   50.28  
   50.29  #include <video/edid.h>
   50.30  
   50.31 @@ -66,7 +67,7 @@
   50.32  #include <xen/interface/memory.h>
   50.33  #include <xen/features.h>
   50.34  #include <xen/xencons.h>
   50.35 -#include "setup_arch_pre.h"
   50.36 +#include <setup_arch.h>
   50.37  #include <bios_ebda.h>
   50.38  
   50.39  #ifdef CONFIG_XEN
   50.40 @@ -402,8 +403,8 @@ EXPORT_SYMBOL(phys_to_machine_mapping);
   50.41  start_info_t *xen_start_info;
   50.42  EXPORT_SYMBOL(xen_start_info);
   50.43  
   50.44 -static void __init add_memory_region(unsigned long long start,
   50.45 -                                  unsigned long long size, int type)
   50.46 +void __init add_memory_region(unsigned long long start,
   50.47 +			      unsigned long long size, int type)
   50.48  {
   50.49  	int x;
   50.50  
   50.51 @@ -524,7 +525,7 @@ static struct change_member *change_poin
   50.52  static struct e820entry *overlap_list[E820MAX] __initdata;
   50.53  static struct e820entry new_bios[E820MAX] __initdata;
   50.54  
   50.55 -static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
   50.56 +int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
   50.57  {
   50.58  	struct change_member *change_tmp;
   50.59  	unsigned long current_type, last_type;
   50.60 @@ -693,7 +694,7 @@ static int __init sanitize_e820_map(stru
   50.61   * thinkpad 560x, for example, does not cooperate with the memory
   50.62   * detection code.)
   50.63   */
   50.64 -static int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
   50.65 +int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
   50.66  {
   50.67  #ifndef CONFIG_XEN
   50.68  	/* Only one memory region (or negative)? Ignore it */
   50.69 @@ -757,12 +758,6 @@ static inline void copy_edd(void)
   50.70  }
   50.71  #endif
   50.72  
   50.73 -/*
   50.74 - * Do NOT EVER look at the BIOS memory size location.
   50.75 - * It does not work on many machines.
   50.76 - */
   50.77 -#define LOWMEMSIZE()	(0x9f000)
   50.78 -
   50.79  static void __init parse_cmdline_early (char ** cmdline_p)
   50.80  {
   50.81  	char c = ' ', *to = command_line, *from = saved_command_line;
   50.82 @@ -1027,6 +1022,38 @@ efi_memory_present_wrapper(unsigned long
   50.83  	return 0;
   50.84  }
   50.85  
   50.86 + /*
   50.87 +  * This function checks if the entire range <start,end> is mapped with type.
   50.88 +  *
   50.89 +  * Note: this function only works correct if the e820 table is sorted and
   50.90 +  * not-overlapping, which is the case
   50.91 +  */
   50.92 +int __init
   50.93 +e820_all_mapped(unsigned long s, unsigned long e, unsigned type)
   50.94 +{
   50.95 +	u64 start = s;
   50.96 +	u64 end = e;
   50.97 +	int i;
   50.98 +	for (i = 0; i < e820.nr_map; i++) {
   50.99 +		struct e820entry *ei = &e820.map[i];
  50.100 +		if (type && ei->type != type)
  50.101 +			continue;
  50.102 +		/* is the region (part) in overlap with the current region ?*/
  50.103 +		if (ei->addr >= end || ei->addr + ei->size <= start)
  50.104 +			continue;
  50.105 +		/* if the region is at the beginning of <start,end> we move
  50.106 +		 * start to the end of the region since it's ok until there
  50.107 +		 */
  50.108 +		if (ei->addr <= start)
  50.109 +			start = ei->addr + ei->size;
  50.110 +		/* if start is now at or beyond end, we're done, full
  50.111 +		 * coverage */
  50.112 +		if (start >= end)
  50.113 +			return 1; /* we're done */
  50.114 +	}
  50.115 +	return 0;
  50.116 +}
  50.117 +
  50.118  /*
  50.119   * Find the highest page frame number we have available
  50.120   */
  50.121 @@ -1124,10 +1151,10 @@ static int __init
  50.122  free_available_memory(unsigned long start, unsigned long end, void *arg)
  50.123  {
  50.124  	/* check max_low_pfn */
  50.125 -	if (start >= ((max_low_pfn + 1) << PAGE_SHIFT))
  50.126 +	if (start >= (max_low_pfn << PAGE_SHIFT))
  50.127  		return 0;
  50.128 -	if (end >= ((max_low_pfn + 1) << PAGE_SHIFT))
  50.129 -		end = (max_low_pfn + 1) << PAGE_SHIFT;
  50.130 +	if (end >= (max_low_pfn << PAGE_SHIFT))
  50.131 +		end = max_low_pfn << PAGE_SHIFT;
  50.132  	if (start < end)
  50.133  		free_bootmem(start, end - start);
  50.134  
  50.135 @@ -1378,9 +1405,11 @@ legacy_init_iomem_resources(struct e820e
  50.136  
  50.137  	for (i = 0; i < nr_map; i++) {
  50.138  		struct resource *res;
  50.139 +#ifndef CONFIG_RESOURCES_64BIT
  50.140  		if (e820[i].addr + e820[i].size > 0x100000000ULL)
  50.141  			continue;
  50.142 -		res = alloc_bootmem_low(sizeof(struct resource));
  50.143 +#endif
  50.144 +		res = kzalloc(sizeof(struct resource), GFP_ATOMIC);
  50.145  		switch (e820[i].type) {
  50.146  		case E820_RAM:	res->name = "System RAM"; break;
  50.147  		case E820_ACPI:	res->name = "ACPI Tables"; break;
  50.148 @@ -1390,7 +1419,10 @@ legacy_init_iomem_resources(struct e820e
  50.149  		res->start = e820[i].addr;
  50.150  		res->end = res->start + e820[i].size - 1;
  50.151  		res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
  50.152 -		request_resource(&iomem_resource, res);
  50.153 +		if (request_resource(&iomem_resource, res)) {
  50.154 +			kfree(res);
  50.155 +			continue;
  50.156 +		}
  50.157  		if (e820[i].type == E820_RAM) {
  50.158  			/*
  50.159  			 *  We don't know which RAM region contains kernel data,
  50.160 @@ -1467,8 +1499,11 @@ e820_setup_gap(struct e820entry *e820, i
  50.161  
  50.162  /*
  50.163   * Request address space for all standard resources
  50.164 + *
  50.165 + * This is called just before pcibios_init(), which is also a
  50.166 + * subsys_initcall, but is linked in later (in arch/i386/pci/common.c).
  50.167   */
  50.168 -static void __init register_memory(void)
  50.169 +static int __init request_standard_resources(void)
  50.170  {
  50.171  #ifdef CONFIG_XEN
  50.172  	struct xen_memory_map memmap;
  50.173 @@ -1477,8 +1512,9 @@ static void __init register_memory(void)
  50.174  
  50.175  	/* Nothing to do if not running in dom0. */
  50.176  	if (!is_initial_xendomain())
  50.177 -		return;
  50.178 +		return 0;
  50.179  
  50.180 +	printk("Setting up standard PCI resources\n");
  50.181  #ifdef CONFIG_XEN
  50.182  	memmap.nr_entries = E820MAX;
  50.183  	set_xen_guest_handle(memmap.buffer, machine_e820.map);
  50.184 @@ -1503,6 +1539,13 @@ static void __init register_memory(void)
  50.185  	/* request I/O space for devices used on all i[345]86 PCs */
  50.186  	for (i = 0; i < STANDARD_IO_RESOURCES; i++)
  50.187  		request_resource(&ioport_resource, &standard_io_resources[i]);
  50.188 +	return 0;
  50.189 +}
  50.190 +
  50.191 +subsys_initcall(request_standard_resources);
  50.192 +
  50.193 +static void __init register_memory(void)
  50.194 +{
  50.195  
  50.196  #ifdef CONFIG_XEN
  50.197  	e820_setup_gap(machine_e820.map, machine_e820.nr_map);
  50.198 @@ -1511,103 +1554,6 @@ static void __init register_memory(void)
  50.199  #endif
  50.200  }
  50.201  
  50.202 -/* Use inline assembly to define this because the nops are defined 
  50.203 -   as inline assembly strings in the include files and we cannot 
  50.204 -   get them easily into strings. */
  50.205 -asm("\t.data\nintelnops: " 
  50.206 -    GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6
  50.207 -    GENERIC_NOP7 GENERIC_NOP8); 
  50.208 -asm("\t.data\nk8nops: " 
  50.209 -    K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6
  50.210 -    K8_NOP7 K8_NOP8); 
  50.211 -asm("\t.data\nk7nops: " 
  50.212 -    K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6
  50.213 -    K7_NOP7 K7_NOP8); 
  50.214 -    
  50.215 -extern unsigned char intelnops[], k8nops[], k7nops[];
  50.216 -static unsigned char *intel_nops[ASM_NOP_MAX+1] = { 
  50.217 -     NULL,
  50.218 -     intelnops,
  50.219 -     intelnops + 1,
  50.220 -     intelnops + 1 + 2,
  50.221 -     intelnops + 1 + 2 + 3,
  50.222 -     intelnops + 1 + 2 + 3 + 4,
  50.223 -     intelnops + 1 + 2 + 3 + 4 + 5,
  50.224 -     intelnops + 1 + 2 + 3 + 4 + 5 + 6,
  50.225 -     intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
  50.226 -}; 
  50.227 -static unsigned char *k8_nops[ASM_NOP_MAX+1] = { 
  50.228 -     NULL,
  50.229 -     k8nops,
  50.230 -     k8nops + 1,
  50.231 -     k8nops + 1 + 2,
  50.232 -     k8nops + 1 + 2 + 3,
  50.233 -     k8nops + 1 + 2 + 3 + 4,
  50.234 -     k8nops + 1 + 2 + 3 + 4 + 5,
  50.235 -     k8nops + 1 + 2 + 3 + 4 + 5 + 6,
  50.236 -     k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
  50.237 -}; 
  50.238 -static unsigned char *k7_nops[ASM_NOP_MAX+1] = { 
  50.239 -     NULL,
  50.240 -     k7nops,
  50.241 -     k7nops + 1,
  50.242 -     k7nops + 1 + 2,
  50.243 -     k7nops + 1 + 2 + 3,
  50.244 -     k7nops + 1 + 2 + 3 + 4,
  50.245 -     k7nops + 1 + 2 + 3 + 4 + 5,
  50.246 -     k7nops + 1 + 2 + 3 + 4 + 5 + 6,
  50.247 -     k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
  50.248 -}; 
  50.249 -static struct nop { 
  50.250 -     int cpuid; 
  50.251 -     unsigned char **noptable; 
  50.252 -} noptypes[] = { 
  50.253 -     { X86_FEATURE_K8, k8_nops }, 
  50.254 -     { X86_FEATURE_K7, k7_nops }, 
  50.255 -     { -1, NULL }
  50.256 -}; 
  50.257 -
  50.258 -/* Replace instructions with better alternatives for this CPU type.
  50.259 -
  50.260 -   This runs before SMP is initialized to avoid SMP problems with
  50.261 -   self modifying code. This implies that assymetric systems where
  50.262 -   APs have less capabilities than the boot processor are not handled. 
  50.263 -   Tough. Make sure you disable such features by hand. */ 
  50.264 -void apply_alternatives(void *start, void *end) 
  50.265 -{ 
  50.266 -	struct alt_instr *a; 
  50.267 -	int diff, i, k;
  50.268 -        unsigned char **noptable = intel_nops; 
  50.269 -	for (i = 0; noptypes[i].cpuid >= 0; i++) { 
  50.270 -		if (boot_cpu_has(noptypes[i].cpuid)) { 
  50.271 -			noptable = noptypes[i].noptable;
  50.272 -			break;
  50.273 -		}
  50.274 -	} 
  50.275 -	for (a = start; (void *)a < end; a++) { 
  50.276 -		if (!boot_cpu_has(a->cpuid))
  50.277 -			continue;
  50.278 -		BUG_ON(a->replacementlen > a->instrlen); 
  50.279 -		memcpy(a->instr, a->replacement, a->replacementlen); 
  50.280 -		diff = a->instrlen - a->replacementlen; 
  50.281 -		/* Pad the rest with nops */
  50.282 -		for (i = a->replacementlen; diff > 0; diff -= k, i += k) {
  50.283 -			k = diff;
  50.284 -			if (k > ASM_NOP_MAX)
  50.285 -				k = ASM_NOP_MAX;
  50.286 -			memcpy(a->instr + i, noptable[k], k); 
  50.287 -		} 
  50.288 -	}
  50.289 -} 
  50.290 -
  50.291 -void __init alternative_instructions(void)
  50.292 -{
  50.293 -	extern struct alt_instr __alt_instructions[], __alt_instructions_end[];
  50.294 -	apply_alternatives(__alt_instructions, __alt_instructions_end);
  50.295 -}
  50.296 -
  50.297 -static char * __init machine_specific_memory_setup(void);
  50.298 -
  50.299  #ifdef CONFIG_MCA
  50.300  static void set_mca_bus(int x)
  50.301  {
  50.302 @@ -1636,7 +1582,7 @@ void __init setup_arch(char **cmdline_p)
  50.303  		panic_timeout = 1;
  50.304  
  50.305  	/* Register a call for panic conditions. */
  50.306 -	notifier_chain_register(&panic_notifier_list, &xen_panic_block);
  50.307 +	atomic_notifier_chain_register(&panic_notifier_list, &xen_panic_block);
  50.308  
  50.309  	HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
  50.310  	HYPERVISOR_vm_assist(VMASST_CMD_enable,
  50.311 @@ -1644,6 +1590,9 @@ void __init setup_arch(char **cmdline_p)
  50.312  
  50.313  	memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));
  50.314  	early_cpu_init();
  50.315 +#ifdef CONFIG_SMP
  50.316 +	prefill_possible_map();
  50.317 +#endif
  50.318  
  50.319  	/*
  50.320  	 * FIXME: This isn't an official loader_type right
  50.321 @@ -1731,6 +1680,16 @@ void __init setup_arch(char **cmdline_p)
  50.322  
  50.323  	parse_cmdline_early(cmdline_p);
  50.324  
  50.325 +#ifdef CONFIG_EARLY_PRINTK
  50.326 +	{
  50.327 +		char *s = strstr(*cmdline_p, "earlyprintk=");
  50.328 +		if (s) {
  50.329 +			setup_early_printk(strchr(s, '=') + 1);
  50.330 +			printk("early console enabled\n");
  50.331 +		}
  50.332 +	}
  50.333 +#endif
  50.334 +
  50.335  	max_low_pfn = setup_memory();
  50.336  
  50.337  	/*
  50.338 @@ -1777,8 +1736,6 @@ void __init setup_arch(char **cmdline_p)
  50.339  		 * frames that make up the p2m table. Used by save/restore
  50.340  		 */
  50.341  		pfn_to_mfn_frame_list_list = alloc_bootmem_low_pages(PAGE_SIZE);
  50.342 -		HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list =
  50.343 -		     virt_to_mfn(pfn_to_mfn_frame_list_list);
  50.344  
  50.345  		fpp = PAGE_SIZE/sizeof(unsigned long);
  50.346  		for (i=0, j=0, k=-1; i< max_pfn; i+=fpp, j++) {
  50.347 @@ -1795,24 +1752,14 @@ void __init setup_arch(char **cmdline_p)
  50.348  				virt_to_mfn(&phys_to_machine_mapping[i]);
  50.349  		}
  50.350  		HYPERVISOR_shared_info->arch.max_pfn = max_pfn;
  50.351 +		HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list =
  50.352 +		     virt_to_mfn(pfn_to_mfn_frame_list_list);
  50.353  	}
  50.354  
  50.355  	/*
  50.356  	 * NOTE: at this point the bootmem allocator is fully available.
  50.357  	 */
  50.358  
  50.359 -#ifdef CONFIG_EARLY_PRINTK
  50.360 -	{
  50.361 -		char *s = strstr(*cmdline_p, "earlyprintk=");
  50.362 -		if (s) {
  50.363 -			extern void setup_early_printk(char *);
  50.364 -
  50.365 -			setup_early_printk(strchr(s, '=') + 1);
  50.366 -			printk("early console enabled\n");
  50.367 -		}
  50.368 -	}
  50.369 -#endif
  50.370 -
  50.371  	if (is_initial_xendomain())
  50.372  		dmi_scan_machine();
  50.373  
  50.374 @@ -1825,10 +1772,6 @@ void __init setup_arch(char **cmdline_p)
  50.375  	set_iopl.iopl = 1;
  50.376  	HYPERVISOR_physdev_op(PHYSDEVOP_set_iopl, &set_iopl);
  50.377  
  50.378 -#ifdef CONFIG_X86_IO_APIC
  50.379 -	check_acpi_pci();	/* Checks more than just ACPI actually */
  50.380 -#endif
  50.381 -
  50.382  #ifdef CONFIG_ACPI
  50.383  	if (!is_initial_xendomain()) {
  50.384  		printk(KERN_INFO "ACPI in unprivileged domain disabled\n");
  50.385 @@ -1840,6 +1783,13 @@ void __init setup_arch(char **cmdline_p)
  50.386  	 * Parse the ACPI tables for possible boot-time SMP configuration.
  50.387  	 */
  50.388  	acpi_boot_table_init();
  50.389 +#endif
  50.390 +
  50.391 +#ifdef CONFIG_X86_IO_APIC
  50.392 +	check_acpi_pci();	/* Checks more than just ACPI actually */
  50.393 +#endif
  50.394 +
  50.395 +#ifdef CONFIG_ACPI
  50.396  	acpi_boot_init();
  50.397  
  50.398  #if defined(CONFIG_SMP) && defined(CONFIG_X86_PC)
  50.399 @@ -1871,6 +1821,8 @@ void __init setup_arch(char **cmdline_p)
  50.400  		conswitchp = &dummy_con;
  50.401  #endif
  50.402  	}
  50.403 +	tsc_init();
  50.404 +
  50.405  	xencons_early_setup();
  50.406  }
  50.407  
  50.408 @@ -1882,7 +1834,23 @@ xen_panic_event(struct notifier_block *t
  50.409  	return NOTIFY_DONE;
  50.410  }
  50.411  
  50.412 -#include "setup_arch_post.h"
  50.413 +static __init int add_pcspkr(void)
  50.414 +{
  50.415 +	struct platform_device *pd;
  50.416 +	int ret;
  50.417 +
  50.418 +	pd = platform_device_alloc("pcspkr", -1);
  50.419 +	if (!pd)
  50.420 +		return -ENOMEM;
  50.421 +
  50.422 +	ret = platform_device_add(pd);
  50.423 +	if (ret)
  50.424 +		platform_device_put(pd);
  50.425 +
  50.426 +	return ret;
  50.427 +}
  50.428 +device_initcall(add_pcspkr);
  50.429 +
  50.430  /*
  50.431   * Local Variables:
  50.432   * mode:c
    51.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c	Fri Jan 26 14:19:37 2007 -0700
    51.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c	Sat Jan 27 14:07:19 2007 -0700
    51.3 @@ -117,7 +117,17 @@ DEFINE_PER_CPU(struct tlb_state, cpu_tlb
    51.4  
    51.5  static inline int __prepare_ICR (unsigned int shortcut, int vector)
    51.6  {
    51.7 -	return APIC_DM_FIXED | shortcut | vector | APIC_DEST_LOGICAL;
    51.8 +	unsigned int icr = shortcut | APIC_DEST_LOGICAL;
    51.9 +
   51.10 +	switch (vector) {
   51.11 +	default:
   51.12 +		icr |= APIC_DM_FIXED | vector;
   51.13 +		break;
   51.14 +	case NMI_VECTOR:
   51.15 +		icr |= APIC_DM_NMI;
   51.16 +		break;
   51.17 +	}
   51.18 +	return icr;
   51.19  }
   51.20  
   51.21  static inline int __prepare_ICR2 (unsigned int mask)
   51.22 @@ -483,27 +493,23 @@ void unlock_ipi_call_lock(void)
   51.23  	spin_unlock_irq(&call_lock);
   51.24  }
   51.25  
   51.26 -static struct call_data_struct * call_data;
   51.27 -
   51.28 -/*
   51.29 - * this function sends a 'generic call function' IPI to all other CPUs
   51.30 - * in the system.
   51.31 - */
   51.32 +static struct call_data_struct *call_data;
   51.33  
   51.34 -int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
   51.35 -			int wait)
   51.36 -/*
   51.37 - * [SUMMARY] Run a function on all other CPUs.
   51.38 - * <func> The function to run. This must be fast and non-blocking.
   51.39 - * <info> An arbitrary pointer to pass to the function.
   51.40 - * <nonatomic> currently unused.
   51.41 - * <wait> If true, wait (atomically) until function has completed on other CPUs.
   51.42 - * [RETURNS] 0 on success, else a negative status code. Does not return until
   51.43 +/**
   51.44 + * smp_call_function(): Run a function on all other CPUs.
   51.45 + * @func: The function to run. This must be fast and non-blocking.
   51.46 + * @info: An arbitrary pointer to pass to the function.
   51.47 + * @nonatomic: currently unused.
   51.48 + * @wait: If true, wait (atomically) until function has completed on other CPUs.
   51.49 + *
   51.50 + * Returns 0 on success, else a negative status code. Does not return until
   51.51   * remote CPUs are nearly ready to execute <<func>> or are or have executed.
   51.52   *
   51.53   * You must not call this function with disabled interrupts or from a
   51.54   * hardware interrupt handler or from a bottom half handler.
   51.55   */
   51.56 +int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
   51.57 +			int wait)
   51.58  {
   51.59  	struct call_data_struct data;
   51.60  	int cpus;
    52.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c	Fri Jan 26 14:19:37 2007 -0700
    52.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.3 @@ -1,85 +0,0 @@
    52.4 -#include <linux/kernel.h>
    52.5 -#include <asm/system.h>
    52.6 -#include <asm/smp_alt.h>
    52.7 -#include <asm/processor.h>
    52.8 -#include <asm/string.h>
    52.9 -
   52.10 -struct smp_replacement_record {
   52.11 -	unsigned char targ_size;
   52.12 -	unsigned char smp1_size;
   52.13 -	unsigned char smp2_size;
   52.14 -	unsigned char up_size;
   52.15 -	unsigned char feature;
   52.16 -	unsigned char data[0];
   52.17 -};
   52.18 -
   52.19 -struct smp_alternative_record {
   52.20 -	void *targ_start;
   52.21 -	struct smp_replacement_record *repl;
   52.22 -};
   52.23 -
   52.24 -extern struct smp_alternative_record __start_smp_alternatives_table,
   52.25 -  __stop_smp_alternatives_table;
   52.26 -extern unsigned long __init_begin, __init_end;
   52.27 -
   52.28 -void prepare_for_smp(void)
   52.29 -{
   52.30 -	struct smp_alternative_record *r;
   52.31 -	printk(KERN_INFO "Enabling SMP...\n");
   52.32 -	for (r = &__start_smp_alternatives_table;
   52.33 -	     r != &__stop_smp_alternatives_table;
   52.34 -	     r++) {
   52.35 -		BUG_ON(r->repl->targ_size < r->repl->smp1_size);
   52.36 -		BUG_ON(r->repl->targ_size < r->repl->smp2_size);
   52.37 -		BUG_ON(r->repl->targ_size < r->repl->up_size);
   52.38 -               if (system_state == SYSTEM_RUNNING &&
   52.39 -                   r->targ_start >= (void *)&__init_begin &&
   52.40 -                   r->targ_start < (void *)&__init_end)
   52.41 -                       continue;
   52.42 -		if (r->repl->feature != (unsigned char)-1 &&
   52.43 -		    boot_cpu_has(r->repl->feature)) {
   52.44 -			memcpy(r->targ_start,
   52.45 -			       r->repl->data + r->repl->smp1_size,
   52.46 -			       r->repl->smp2_size);
   52.47 -			memset(r->targ_start + r->repl->smp2_size,
   52.48 -			       0x90,
   52.49 -			       r->repl->targ_size - r->repl->smp2_size);
   52.50 -		} else {
   52.51 -			memcpy(r->targ_start,
   52.52 -			       r->repl->data,
   52.53 -			       r->repl->smp1_size);
   52.54 -			memset(r->targ_start + r->repl->smp1_size,
   52.55 -			       0x90,
   52.56 -			       r->repl->targ_size - r->repl->smp1_size);
   52.57 -		}
   52.58 -	}
   52.59 -	/* Paranoia */
   52.60 -	asm volatile ("jmp 1f\n1:");
   52.61 -	mb();
   52.62 -}
   52.63 -
   52.64 -void unprepare_for_smp(void)
   52.65 -{
   52.66 -	struct smp_alternative_record *r;
   52.67 -	printk(KERN_INFO "Disabling SMP...\n");
   52.68 -	for (r = &__start_smp_alternatives_table;
   52.69 -	     r != &__stop_smp_alternatives_table;
   52.70 -	     r++) {
   52.71 -		BUG_ON(r->repl->targ_size < r->repl->smp1_size);
   52.72 -		BUG_ON(r->repl->targ_size < r->repl->smp2_size);
   52.73 -		BUG_ON(r->repl->targ_size < r->repl->up_size);
   52.74 -               if (system_state == SYSTEM_RUNNING &&
   52.75 -                   r->targ_start >= (void *)&__init_begin &&
   52.76 -                   r->targ_start < (void *)&__init_end)
   52.77 -                       continue;
   52.78 -		memcpy(r->targ_start,
   52.79 -		       r->repl->data + r->repl->smp1_size + r->repl->smp2_size,
   52.80 -		       r->repl->up_size);
   52.81 -		memset(r->targ_start + r->repl->up_size,
   52.82 -		       0x90,
   52.83 -		       r->repl->targ_size - r->repl->up_size);
   52.84 -	}
   52.85 -	/* Paranoia */
   52.86 -	asm volatile ("jmp 1f\n1:");
   52.87 -	mb();
   52.88 -}
    53.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c	Fri Jan 26 14:19:37 2007 -0700
    53.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.3 @@ -1,1451 +0,0 @@
    53.4 -/*
    53.5 - *	x86 SMP booting functions
    53.6 - *
    53.7 - *	(c) 1995 Alan Cox, Building #3 <alan@redhat.com>
    53.8 - *	(c) 1998, 1999, 2000 Ingo Molnar <mingo@redhat.com>
    53.9 - *
   53.10 - *	Much of the core SMP work is based on previous work by Thomas Radke, to
   53.11 - *	whom a great many thanks are extended.
   53.12 - *
   53.13 - *	Thanks to Intel for making available several different Pentium,
   53.14 - *	Pentium Pro and Pentium-II/Xeon MP machines.
   53.15 - *	Original development of Linux SMP code supported by Caldera.
   53.16 - *
   53.17 - *	This code is released under the GNU General Public License version 2 or
   53.18 - *	later.
   53.19 - *
   53.20 - *	Fixes
   53.21 - *		Felix Koop	:	NR_CPUS used properly
   53.22 - *		Jose Renau	:	Handle single CPU case.
   53.23 - *		Alan Cox	:	By repeated request 8) - Total BogoMIPS report.
   53.24 - *		Greg Wright	:	Fix for kernel stacks panic.
   53.25 - *		Erich Boleyn	:	MP v1.4 and additional changes.
   53.26 - *	Matthias Sattler	:	Changes for 2.1 kernel map.
   53.27 - *	Michel Lespinasse	:	Changes for 2.1 kernel map.
   53.28 - *	Michael Chastain	:	Change trampoline.S to gnu as.
   53.29 - *		Alan Cox	:	Dumb bug: 'B' step PPro's are fine
   53.30 - *		Ingo Molnar	:	Added APIC timers, based on code
   53.31 - *					from Jose Renau
   53.32 - *		Ingo Molnar	:	various cleanups and rewrites
   53.33 - *		Tigran Aivazian	:	fixed "0.00 in /proc/uptime on SMP" bug.
   53.34 - *	Maciej W. Rozycki	:	Bits for genuine 82489DX APICs
   53.35 - *		Martin J. Bligh	: 	Added support for multi-quad systems
   53.36 - *		Dave Jones	:	Report invalid combinations of Athlon CPUs.
   53.37 -*		Rusty Russell	:	Hacked into shape for new "hotplug" boot process. */
   53.38 -
   53.39 -#include <linux/module.h>
   53.40 -#include <linux/config.h>
   53.41 -#include <linux/init.h>
   53.42 -#include <linux/kernel.h>
   53.43 -
   53.44 -#include <linux/mm.h>
   53.45 -#include <linux/sched.h>
   53.46 -#include <linux/kernel_stat.h>
   53.47 -#include <linux/smp_lock.h>
   53.48 -#include <linux/bootmem.h>
   53.49 -#include <linux/notifier.h>
   53.50 -#include <linux/cpu.h>
   53.51 -#include <linux/percpu.h>
   53.52 -
   53.53 -#include <linux/delay.h>
   53.54 -#include <linux/mc146818rtc.h>
   53.55 -#include <asm/tlbflush.h>
   53.56 -#include <asm/desc.h>
   53.57 -#include <asm/arch_hooks.h>
   53.58 -
   53.59 -#include <mach_apic.h>
   53.60 -#include <mach_wakecpu.h>
   53.61 -#include <smpboot_hooks.h>
   53.62 -
   53.63 -/* Set if we find a B stepping CPU */
   53.64 -static int __devinitdata smp_b_stepping;
   53.65 -
   53.66 -/* Number of siblings per CPU package */
   53.67 -int smp_num_siblings = 1;
   53.68 -#ifdef CONFIG_X86_HT
   53.69 -EXPORT_SYMBOL(smp_num_siblings);
   53.70 -#endif
   53.71 -
   53.72 -/* Package ID of each logical CPU */
   53.73 -int phys_proc_id[NR_CPUS] __read_mostly = {[0 ... NR_CPUS-1] = BAD_APICID};
   53.74 -
   53.75 -/* Core ID of each logical CPU */
   53.76 -int cpu_core_id[NR_CPUS] __read_mostly = {[0 ... NR_CPUS-1] = BAD_APICID};
   53.77 -
   53.78 -/* representing HT siblings of each logical CPU */
   53.79 -cpumask_t cpu_sibling_map[NR_CPUS] __read_mostly;
   53.80 -EXPORT_SYMBOL(cpu_sibling_map);
   53.81 -
   53.82 -/* representing HT and core siblings of each logical CPU */
   53.83 -cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
   53.84 -EXPORT_SYMBOL(cpu_core_map);
   53.85 -
   53.86 -/* bitmap of online cpus */
   53.87 -cpumask_t cpu_online_map __read_mostly;
   53.88 -EXPORT_SYMBOL(cpu_online_map);
   53.89 -
   53.90 -cpumask_t cpu_callin_map;
   53.91 -cpumask_t cpu_callout_map;
   53.92 -EXPORT_SYMBOL(cpu_callout_map);
   53.93 -cpumask_t cpu_possible_map;
   53.94 -EXPORT_SYMBOL(cpu_possible_map);
   53.95 -static cpumask_t smp_commenced_mask;
   53.96 -
   53.97 -/* TSC's upper 32 bits can't be written in eariler CPU (before prescott), there
   53.98 - * is no way to resync one AP against BP. TBD: for prescott and above, we
   53.99 - * should use IA64's algorithm
  53.100 - */
  53.101 -static int __devinitdata tsc_sync_disabled;
  53.102 -
  53.103 -/* Per CPU bogomips and other parameters */
  53.104 -struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
  53.105 -EXPORT_SYMBOL(cpu_data);
  53.106 -
  53.107 -u8 x86_cpu_to_apicid[NR_CPUS] __read_mostly =
  53.108 -			{ [0 ... NR_CPUS-1] = 0xff };
  53.109 -EXPORT_SYMBOL(x86_cpu_to_apicid);
  53.110 -
  53.111 -/*
  53.112 - * Trampoline 80x86 program as an array.
  53.113 - */
  53.114 -
  53.115 -extern unsigned char trampoline_data [];
  53.116 -extern unsigned char trampoline_end  [];
  53.117 -static unsigned char *trampoline_base;
  53.118 -static int trampoline_exec;
  53.119 -
  53.120 -static void map_cpu_to_logical_apicid(void);
  53.121 -
  53.122 -/* State of each CPU. */
  53.123 -DEFINE_PER_CPU(int, cpu_state) = { 0 };
  53.124 -
  53.125 -/*
  53.126 - * Currently trivial. Write the real->protected mode
  53.127 - * bootstrap into the page concerned. The caller
  53.128 - * has made sure it's suitably aligned.
  53.129 - */
  53.130 -
  53.131 -static unsigned long __devinit setup_trampoline(void)
  53.132 -{
  53.133 -	memcpy(trampoline_base, trampoline_data, trampoline_end - trampoline_data);
  53.134 -	return virt_to_phys(trampoline_base);
  53.135 -}
  53.136 -
  53.137 -/*
  53.138 - * We are called very early to get the low memory for the
  53.139 - * SMP bootup trampoline page.
  53.140 - */
  53.141 -void __init smp_alloc_memory(void)
  53.142 -{
  53.143 -	trampoline_base = (void *) alloc_bootmem_low_pages(PAGE_SIZE);
  53.144 -	/*
  53.145 -	 * Has to be in very low memory so we can execute
  53.146 -	 * real-mode AP code.
  53.147 -	 */
  53.148 -	if (__pa(trampoline_base) >= 0x9F000)
  53.149 -		BUG();
  53.150 -	/*
  53.151 -	 * Make the SMP trampoline executable:
  53.152 -	 */
  53.153 -	trampoline_exec = set_kernel_exec((unsigned long)trampoline_base, 1);
  53.154 -}
  53.155 -
  53.156 -/*
  53.157 - * The bootstrap kernel entry code has set these up. Save them for
  53.158 - * a given CPU
  53.159 - */
  53.160 -
  53.161 -static void __devinit smp_store_cpu_info(int id)
  53.162 -{
  53.163 -	struct cpuinfo_x86 *c = cpu_data + id;
  53.164 -
  53.165 -	*c = boot_cpu_data;
  53.166 -	if (id!=0)
  53.167 -		identify_cpu(c);
  53.168 -	/*
  53.169 -	 * Mask B, Pentium, but not Pentium MMX
  53.170 -	 */
  53.171 -	if (c->x86_vendor == X86_VENDOR_INTEL &&
  53.172 -	    c->x86 == 5 &&
  53.173 -	    c->x86_mask >= 1 && c->x86_mask <= 4 &&
  53.174 -	    c->x86_model <= 3)
  53.175 -		/*
  53.176 -		 * Remember we have B step Pentia with bugs
  53.177 -		 */
  53.178 -		smp_b_stepping = 1;
  53.179 -
  53.180 -	/*
  53.181 -	 * Certain Athlons might work (for various values of 'work') in SMP
  53.182 -	 * but they are not certified as MP capable.
  53.183 -	 */
  53.184 -	if ((c->x86_vendor == X86_VENDOR_AMD) && (c->x86 == 6)) {
  53.185 -
  53.186 -		/* Athlon 660/661 is valid. */	
  53.187 -		if ((c->x86_model==6) && ((c->x86_mask==0) || (c->x86_mask==1)))
  53.188 -			goto valid_k7;
  53.189 -
  53.190 -		/* Duron 670 is valid */
  53.191 -		if ((c->x86_model==7) && (c->x86_mask==0))
  53.192 -			goto valid_k7;
  53.193 -
  53.194 -		/*
  53.195 -		 * Athlon 662, Duron 671, and Athlon >model 7 have capability bit.
  53.196 -		 * It's worth noting that the A5 stepping (662) of some Athlon XP's
  53.197 -		 * have the MP bit set.
  53.198 -		 * See http://www.heise.de/newsticker/data/jow-18.10.01-000 for more.
  53.199 -		 */
  53.200 -		if (((c->x86_model==6) && (c->x86_mask>=2)) ||
  53.201 -		    ((c->x86_model==7) && (c->x86_mask>=1)) ||
  53.202 -		     (c->x86_model> 7))
  53.203 -			if (cpu_has_mp)
  53.204 -				goto valid_k7;
  53.205 -
  53.206 -		/* If we get here, it's not a certified SMP capable AMD system. */
  53.207 -		add_taint(TAINT_UNSAFE_SMP);
  53.208 -	}
  53.209 -
  53.210 -valid_k7:
  53.211 -	;
  53.212 -}
  53.213 -
  53.214 -/*
  53.215 - * TSC synchronization.
  53.216 - *
  53.217 - * We first check whether all CPUs have their TSC's synchronized,
  53.218 - * then we print a warning if not, and always resync.
  53.219 - */
  53.220 -
  53.221 -static atomic_t tsc_start_flag = ATOMIC_INIT(0);
  53.222 -static atomic_t tsc_count_start = ATOMIC_INIT(0);
  53.223 -static atomic_t tsc_count_stop = ATOMIC_INIT(0);
  53.224 -static unsigned long long tsc_values[NR_CPUS];
  53.225 -
  53.226 -#define NR_LOOPS 5
  53.227 -
  53.228 -static void __init synchronize_tsc_bp (void)
  53.229 -{
  53.230 -	int i;
  53.231 -	unsigned long long t0;
  53.232 -	unsigned long long sum, avg;
  53.233 -	long long delta;
  53.234 -	unsigned int one_usec;
  53.235 -	int buggy = 0;
  53.236 -
  53.237 -	printk(KERN_INFO "checking TSC synchronization across %u CPUs: ", num_booting_cpus());
  53.238 -
  53.239 -	/* convert from kcyc/sec to cyc/usec */
  53.240 -	one_usec = cpu_khz / 1000;
  53.241 -
  53.242 -	atomic_set(&tsc_start_flag, 1);
  53.243 -	wmb();
  53.244 -
  53.245 -	/*
  53.246 -	 * We loop a few times to get a primed instruction cache,
  53.247 -	 * then the last pass is more or less synchronized and
  53.248 -	 * the BP and APs set their cycle counters to zero all at
  53.249 -	 * once. This reduces the chance of having random offsets
  53.250 -	 * between the processors, and guarantees that the maximum
  53.251 -	 * delay between the cycle counters is never bigger than
  53.252 -	 * the latency of information-passing (cachelines) between
  53.253 -	 * two CPUs.
  53.254 -	 */
  53.255 -	for (i = 0; i < NR_LOOPS; i++) {
  53.256 -		/*
  53.257 -		 * all APs synchronize but they loop on '== num_cpus'
  53.258 -		 */
  53.259 -		while (atomic_read(&tsc_count_start) != num_booting_cpus()-1)
  53.260 -			mb();
  53.261 -		atomic_set(&tsc_count_stop, 0);
  53.262 -		wmb();
  53.263 -		/*
  53.264 -		 * this lets the APs save their current TSC:
  53.265 -		 */
  53.266 -		atomic_inc(&tsc_count_start);
  53.267 -
  53.268 -		rdtscll(tsc_values[smp_processor_id()]);
  53.269 -		/*
  53.270 -		 * We clear the TSC in the last loop:
  53.271 -		 */
  53.272 -		if (i == NR_LOOPS-1)
  53.273 -			write_tsc(0, 0);
  53.274 -
  53.275 -		/*
  53.276 -		 * Wait for all APs to leave the synchronization point:
  53.277 -		 */
  53.278 -		while (atomic_read(&tsc_count_stop) != num_booting_cpus()-1)
  53.279 -			mb();
  53.280 -		atomic_set(&tsc_count_start, 0);
  53.281 -		wmb();
  53.282 -		atomic_inc(&tsc_count_stop);
  53.283 -	}
  53.284 -
  53.285 -	sum = 0;
  53.286 -	for (i = 0; i < NR_CPUS; i++) {
  53.287 -		if (cpu_isset(i, cpu_callout_map)) {
  53.288 -			t0 = tsc_values[i];
  53.289 -			sum += t0;
  53.290 -		}
  53.291 -	}
  53.292 -	avg = sum;
  53.293 -	do_div(avg, num_booting_cpus());
  53.294 -
  53.295 -	sum = 0;
  53.296 -	for (i = 0; i < NR_CPUS; i++) {
  53.297 -		if (!cpu_isset(i, cpu_callout_map))
  53.298 -			continue;
  53.299 -		delta = tsc_values[i] - avg;
  53.300 -		if (delta < 0)
  53.301 -			delta = -delta;
  53.302 -		/*
  53.303 -		 * We report bigger than 2 microseconds clock differences.
  53.304 -		 */
  53.305 -		if (delta > 2*one_usec) {
  53.306 -			long realdelta;
  53.307 -			if (!buggy) {
  53.308 -				buggy = 1;
  53.309 -				printk("\n");
  53.310 -			}
  53.311 -			realdelta = delta;
  53.312 -			do_div(realdelta, one_usec);
  53.313 -			if (tsc_values[i] < avg)
  53.314 -				realdelta = -realdelta;
  53.315 -
  53.316 -			printk(KERN_INFO "CPU#%d had %ld usecs TSC skew, fixed it up.\n", i, realdelta);
  53.317 -		}
  53.318 -
  53.319 -		sum += delta;
  53.320 -	}
  53.321 -	if (!buggy)
  53.322 -		printk("passed.\n");
  53.323 -}
  53.324 -
  53.325 -static void __init synchronize_tsc_ap (void)
  53.326 -{
  53.327 -	int i;
  53.328 -
  53.329 -	/*
  53.330 -	 * Not every cpu is online at the time
  53.331 -	 * this gets called, so we first wait for the BP to
  53.332 -	 * finish SMP initialization:
  53.333 -	 */
  53.334 -	while (!atomic_read(&tsc_start_flag)) mb();
  53.335 -
  53.336 -	for (i = 0; i < NR_LOOPS; i++) {
  53.337 -		atomic_inc(&tsc_count_start);
  53.338 -		while (atomic_read(&tsc_count_start) != num_booting_cpus())
  53.339 -			mb();
  53.340 -
  53.341 -		rdtscll(tsc_values[smp_processor_id()]);
  53.342 -		if (i == NR_LOOPS-1)
  53.343 -			write_tsc(0, 0);
  53.344 -
  53.345 -		atomic_inc(&tsc_count_stop);
  53.346 -		while (atomic_read(&tsc_count_stop) != num_booting_cpus()) mb();
  53.347 -	}
  53.348 -}
  53.349 -#undef NR_LOOPS
  53.350 -
  53.351 -extern void calibrate_delay(void);
  53.352 -
  53.353 -static atomic_t init_deasserted;
  53.354 -
  53.355 -static void __devinit smp_callin(void)
  53.356 -{
  53.357 -	int cpuid, phys_id;
  53.358 -	unsigned long timeout;
  53.359 -
  53.360 -	/*
  53.361 -	 * If waken up by an INIT in an 82489DX configuration
  53.362 -	 * we may get here before an INIT-deassert IPI reaches
  53.363 -	 * our local APIC.  We have to wait for the IPI or we'll
  53.364 -	 * lock up on an APIC access.
  53.365 -	 */
  53.366 -	wait_for_init_deassert(&init_deasserted);
  53.367 -
  53.368 -	/*
  53.369 -	 * (This works even if the APIC is not enabled.)
  53.370 -	 */
  53.371 -	phys_id = GET_APIC_ID(apic_read(APIC_ID));
  53.372 -	cpuid = smp_processor_id();
  53.373 -	if (cpu_isset(cpuid, cpu_callin_map)) {
  53.374 -		printk("huh, phys CPU#%d, CPU#%d already present??\n",
  53.375 -					phys_id, cpuid);
  53.376 -		BUG();
  53.377 -	}
  53.378 -	Dprintk("CPU#%d (phys ID: %d) waiting for CALLOUT\n", cpuid, phys_id);
  53.379 -
  53.380 -	/*
  53.381 -	 * STARTUP IPIs are fragile beasts as they might sometimes
  53.382 -	 * trigger some glue motherboard logic. Complete APIC bus
  53.383 -	 * silence for 1 second, this overestimates the time the
  53.384 -	 * boot CPU is spending to send the up to 2 STARTUP IPIs
  53.385 -	 * by a factor of two. This should be enough.
  53.386 -	 */
  53.387 -
  53.388 -	/*
  53.389 -	 * Waiting 2s total for startup (udelay is not yet working)
  53.390 -	 */
  53.391 -	timeout = jiffies + 2*HZ;
  53.392 -	while (time_before(jiffies, timeout)) {
  53.393 -		/*
  53.394 -		 * Has the boot CPU finished it's STARTUP sequence?
  53.395 -		 */
  53.396 -		if (cpu_isset(cpuid, cpu_callout_map))
  53.397 -			break;
  53.398 -		rep_nop();
  53.399 -	}
  53.400 -
  53.401 -	if (!time_before(jiffies, timeout)) {
  53.402 -		printk("BUG: CPU%d started up but did not get a callout!\n",
  53.403 -			cpuid);
  53.404 -		BUG();
  53.405 -	}
  53.406 -
  53.407 -	/*
  53.408 -	 * the boot CPU has finished the init stage and is spinning
  53.409 -	 * on callin_map until we finish. We are free to set up this
  53.410 -	 * CPU, first the APIC. (this is probably redundant on most
  53.411 -	 * boards)
  53.412 -	 */
  53.413 -
  53.414 -	Dprintk("CALLIN, before setup_local_APIC().\n");
  53.415 -	smp_callin_clear_local_apic();
  53.416 -	setup_local_APIC();
  53.417 -	map_cpu_to_logical_apicid();
  53.418 -
  53.419 -	/*
  53.420 -	 * Get our bogomips.
  53.421 -	 */
  53.422 -	calibrate_delay();
  53.423 -	Dprintk("Stack at about %p\n",&cpuid);
  53.424 -
  53.425 -	/*
  53.426 -	 * Save our processor parameters
  53.427 -	 */
  53.428 - 	smp_store_cpu_info(cpuid);
  53.429 -
  53.430 -	disable_APIC_timer();
  53.431 -
  53.432 -	/*
  53.433 -	 * Allow the master to continue.
  53.434 -	 */
  53.435 -	cpu_set(cpuid, cpu_callin_map);
  53.436 -
  53.437 -	/*
  53.438 -	 *      Synchronize the TSC with the BP
  53.439 -	 */
  53.440 -	if (cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
  53.441 -		synchronize_tsc_ap();
  53.442 -}
  53.443 -
  53.444 -static int cpucount;
  53.445 -
  53.446 -/* representing cpus for which sibling maps can be computed */
  53.447 -static cpumask_t cpu_sibling_setup_map;
  53.448 -
  53.449 -static inline void
  53.450 -set_cpu_sibling_map(int cpu)
  53.451 -{
  53.452 -	int i;
  53.453 -	struct cpuinfo_x86 *c = cpu_data;
  53.454 -
  53.455 -	cpu_set(cpu, cpu_sibling_setup_map);
  53.456 -
  53.457 -	if (smp_num_siblings > 1) {
  53.458 -		for_each_cpu_mask(i, cpu_sibling_setup_map) {
  53.459 -			if (phys_proc_id[cpu] == phys_proc_id[i] &&
  53.460 -			    cpu_core_id[cpu] == cpu_core_id[i]) {
  53.461 -				cpu_set(i, cpu_sibling_map[cpu]);
  53.462 -				cpu_set(cpu, cpu_sibling_map[i]);
  53.463 -				cpu_set(i, cpu_core_map[cpu]);
  53.464 -				cpu_set(cpu, cpu_core_map[i]);
  53.465 -			}
  53.466 -		}
  53.467 -	} else {
  53.468 -		cpu_set(cpu, cpu_sibling_map[cpu]);
  53.469 -	}
  53.470 -
  53.471 -	if (current_cpu_data.x86_max_cores == 1) {
  53.472 -		cpu_core_map[cpu] = cpu_sibling_map[cpu];
  53.473 -		c[cpu].booted_cores = 1;
  53.474 -		return;
  53.475 -	}
  53.476 -
  53.477 -	for_each_cpu_mask(i, cpu_sibling_setup_map) {
  53.478 -		if (phys_proc_id[cpu] == phys_proc_id[i]) {
  53.479 -			cpu_set(i, cpu_core_map[cpu]);
  53.480 -			cpu_set(cpu, cpu_core_map[i]);
  53.481 -			/*
  53.482 -			 *  Does this new cpu bringup a new core?
  53.483 -			 */
  53.484 -			if (cpus_weight(cpu_sibling_map[cpu]) == 1) {
  53.485 -				/*
  53.486 -				 * for each core in package, increment
  53.487 -				 * the booted_cores for this new cpu
  53.488 -				 */
  53.489 -				if (first_cpu(cpu_sibling_map[i]) == i)
  53.490 -					c[cpu].booted_cores++;
  53.491 -				/*
  53.492 -				 * increment the core count for all
  53.493 -				 * the other cpus in this package
  53.494 -				 */
  53.495 -				if (i != cpu)
  53.496 -					c[i].booted_cores++;
  53.497 -			} else if (i != cpu && !c[cpu].booted_cores)
  53.498 -				c[cpu].booted_cores = c[i].booted_cores;
  53.499 -		}
  53.500 -	}
  53.501 -}
  53.502 -
  53.503 -/*
  53.504 - * Activate a secondary processor.
  53.505 - */
  53.506 -static void __devinit start_secondary(void *unused)
  53.507 -{
  53.508 -	/*
  53.509 -	 * Dont put anything before smp_callin(), SMP
  53.510 -	 * booting is too fragile that we want to limit the
  53.511 -	 * things done here to the most necessary things.
  53.512 -	 */
  53.513 -	cpu_init();
  53.514 -	preempt_disable();
  53.515 -	smp_callin();
  53.516 -	while (!cpu_isset(smp_processor_id(), smp_commenced_mask))
  53.517 -		rep_nop();
  53.518 -	setup_secondary_APIC_clock();
  53.519 -	if (nmi_watchdog == NMI_IO_APIC) {
  53.520 -		disable_8259A_irq(0);
  53.521 -		enable_NMI_through_LVT0(NULL);
  53.522 -		enable_8259A_irq(0);
  53.523 -	}
  53.524 -	enable_APIC_timer();
  53.525 -	/*
  53.526 -	 * low-memory mappings have been cleared, flush them from
  53.527 -	 * the local TLBs too.
  53.528 -	 */
  53.529 -	local_flush_tlb();
  53.530 -
  53.531 -	/* This must be done before setting cpu_online_map */
  53.532 -	set_cpu_sibling_map(raw_smp_processor_id());
  53.533 -	wmb();
  53.534 -
  53.535 -	/*
  53.536 -	 * We need to hold call_lock, so there is no inconsistency
  53.537 -	 * between the time smp_call_function() determines number of
  53.538 -	 * IPI receipients, and the time when the determination is made
  53.539 -	 * for which cpus receive the IPI. Holding this
  53.540 -	 * lock helps us to not include this cpu in a currently in progress
  53.541 -	 * smp_call_function().
  53.542 -	 */
  53.543 -	lock_ipi_call_lock();
  53.544 -	cpu_set(smp_processor_id(), cpu_online_map);
  53.545 -	unlock_ipi_call_lock();
  53.546 -	per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
  53.547 -
  53.548 -	/* We can take interrupts now: we're officially "up". */
  53.549 -	local_irq_enable();
  53.550 -
  53.551 -	wmb();
  53.552 -	cpu_idle();
  53.553 -}
  53.554 -
  53.555 -/*
  53.556 - * Everything has been set up for the secondary
  53.557 - * CPUs - they just need to reload everything
  53.558 - * from the task structure
  53.559 - * This function must not return.
  53.560 - */
  53.561 -void __devinit initialize_secondary(void)
  53.562 -{
  53.563 -	/*
  53.564 -	 * We don't actually need to load the full TSS,
  53.565 -	 * basically just the stack pointer and the eip.
  53.566 -	 */
  53.567 -
  53.568 -	asm volatile(
  53.569 -		"movl %0,%%esp\n\t"
  53.570 -		"jmp *%1"
  53.571 -		:
  53.572 -		:"r" (current->thread.esp),"r" (current->thread.eip));
  53.573 -}
  53.574 -
  53.575 -extern struct {
  53.576 -	void * esp;
  53.577 -	unsigned short ss;
  53.578 -} stack_start;
  53.579 -
  53.580 -#ifdef CONFIG_NUMA
  53.581 -
  53.582 -/* which logical CPUs are on which nodes */
  53.583 -cpumask_t node_2_cpu_mask[MAX_NUMNODES] __read_mostly =
  53.584 -				{ [0 ... MAX_NUMNODES-1] = CPU_MASK_NONE };
  53.585 -/* which node each logical CPU is on */
  53.586 -int cpu_2_node[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = 0 };
  53.587 -EXPORT_SYMBOL(cpu_2_node);
  53.588 -
  53.589 -/* set up a mapping between cpu and node. */
  53.590 -static inline void map_cpu_to_node(int cpu, int node)
  53.591 -{
  53.592 -	printk("Mapping cpu %d to node %d\n", cpu, node);
  53.593 -	cpu_set(cpu, node_2_cpu_mask[node]);
  53.594 -	cpu_2_node[cpu] = node;
  53.595 -}
  53.596 -
  53.597 -/* undo a mapping between cpu and node. */
  53.598 -static inline void unmap_cpu_to_node(int cpu)
  53.599 -{
  53.600 -	int node;
  53.601 -
  53.602 -	printk("Unmapping cpu %d from all nodes\n", cpu);
  53.603 -	for (node = 0; node < MAX_NUMNODES; node ++)
  53.604 -		cpu_clear(cpu, node_2_cpu_mask[node]);
  53.605 -	cpu_2_node[cpu] = 0;
  53.606 -}
  53.607 -#else /* !CONFIG_NUMA */
  53.608 -
  53.609 -#define map_cpu_to_node(cpu, node)	({})
  53.610 -#define unmap_cpu_to_node(cpu)	({})
  53.611 -
  53.612 -#endif /* CONFIG_NUMA */
  53.613 -
  53.614 -u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = BAD_APICID };
  53.615 -
  53.616 -static void map_cpu_to_logical_apicid(void)
  53.617 -{
  53.618 -	int cpu = smp_processor_id();
  53.619 -	int apicid = logical_smp_processor_id();
  53.620 -
  53.621 -	cpu_2_logical_apicid[cpu] = apicid;
  53.622 -	map_cpu_to_node(cpu, apicid_to_node(apicid));
  53.623 -}
  53.624 -
  53.625 -static void unmap_cpu_to_logical_apicid(int cpu)
  53.626 -{
  53.627 -	cpu_2_logical_apicid[cpu] = BAD_APICID;
  53.628 -	unmap_cpu_to_node(cpu);
  53.629 -}
  53.630 -
  53.631 -#if APIC_DEBUG
  53.632 -static inline void __inquire_remote_apic(int apicid)
  53.633 -{
  53.634 -	int i, regs[] = { APIC_ID >> 4, APIC_LVR >> 4, APIC_SPIV >> 4 };
  53.635 -	char *names[] = { "ID", "VERSION", "SPIV" };
  53.636 -	int timeout, status;
  53.637 -
  53.638 -	printk("Inquiring remote APIC #%d...\n", apicid);
  53.639 -
  53.640 -	for (i = 0; i < ARRAY_SIZE(regs); i++) {
  53.641 -		printk("... APIC #%d %s: ", apicid, names[i]);
  53.642 -
  53.643 -		/*
  53.644 -		 * Wait for idle.
  53.645 -		 */
  53.646 -		apic_wait_icr_idle();
  53.647 -
  53.648 -		apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(apicid));
  53.649 -		apic_write_around(APIC_ICR, APIC_DM_REMRD | regs[i]);
  53.650 -
  53.651 -		timeout = 0;
  53.652 -		do {
  53.653 -			udelay(100);
  53.654 -			status = apic_read(APIC_ICR) & APIC_ICR_RR_MASK;
  53.655 -		} while (status == APIC_ICR_RR_INPROG && timeout++ < 1000);
  53.656 -
  53.657 -		switch (status) {
  53.658 -		case APIC_ICR_RR_VALID:
  53.659 -			status = apic_read(APIC_RRR);
  53.660 -			printk("%08x\n", status);
  53.661 -			break;
  53.662 -		default:
  53.663 -			printk("failed\n");
  53.664 -		}
  53.665 -	}
  53.666 -}
  53.667 -#endif
  53.668 -
  53.669 -#ifdef WAKE_SECONDARY_VIA_NMI
  53.670 -/* 
  53.671 - * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal
  53.672 - * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this
  53.673 - * won't ... remember to clear down the APIC, etc later.
  53.674 - */
  53.675 -static int __devinit
  53.676 -wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip)
  53.677 -{
  53.678 -	unsigned long send_status = 0, accept_status = 0;
  53.679 -	int timeout, maxlvt;
  53.680 -
  53.681 -	/* Target chip */
  53.682 -	apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(logical_apicid));
  53.683 -
  53.684 -	/* Boot on the stack */
  53.685 -	/* Kick the second */
  53.686 -	apic_write_around(APIC_ICR, APIC_DM_NMI | APIC_DEST_LOGICAL);
  53.687 -
  53.688 -	Dprintk("Waiting for send to finish...\n");
  53.689 -	timeout = 0;
  53.690 -	do {
  53.691 -		Dprintk("+");
  53.692 -		udelay(100);
  53.693 -		send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
  53.694 -	} while (send_status && (timeout++ < 1000));
  53.695 -
  53.696 -	/*
  53.697 -	 * Give the other CPU some time to accept the IPI.
  53.698 -	 */
  53.699 -	udelay(200);
  53.700 -	/*
  53.701 -	 * Due to the Pentium erratum 3AP.
  53.702 -	 */
  53.703 -	maxlvt = get_maxlvt();
  53.704 -	if (maxlvt > 3) {
  53.705 -		apic_read_around(APIC_SPIV);
  53.706 -		apic_write(APIC_ESR, 0);
  53.707 -	}
  53.708 -	accept_status = (apic_read(APIC_ESR) & 0xEF);
  53.709 -	Dprintk("NMI sent.\n");
  53.710 -
  53.711 -	if (send_status)
  53.712 -		printk("APIC never delivered???\n");
  53.713 -	if (accept_status)
  53.714 -		printk("APIC delivery error (%lx).\n", accept_status);
  53.715 -
  53.716 -	return (send_status | accept_status);
  53.717 -}
  53.718 -#endif	/* WAKE_SECONDARY_VIA_NMI */
  53.719 -
  53.720 -#ifdef WAKE_SECONDARY_VIA_INIT
  53.721 -static int __devinit
  53.722 -wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
  53.723 -{
  53.724 -	unsigned long send_status = 0, accept_status = 0;
  53.725 -	int maxlvt, timeout, num_starts, j;
  53.726 -
  53.727 -	/*
  53.728 -	 * Be paranoid about clearing APIC errors.
  53.729 -	 */
  53.730 -	if (APIC_INTEGRATED(apic_version[phys_apicid])) {
  53.731 -		apic_read_around(APIC_SPIV);
  53.732 -		apic_write(APIC_ESR, 0);
  53.733 -		apic_read(APIC_ESR);
  53.734 -	}
  53.735 -
  53.736 -	Dprintk("Asserting INIT.\n");
  53.737 -
  53.738 -	/*
  53.739 -	 * Turn INIT on target chip
  53.740 -	 */
  53.741 -	apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
  53.742 -
  53.743 -	/*
  53.744 -	 * Send IPI
  53.745 -	 */
  53.746 -	apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_INT_ASSERT
  53.747 -				| APIC_DM_INIT);
  53.748 -
  53.749 -	Dprintk("Waiting for send to finish...\n");
  53.750 -	timeout = 0;
  53.751 -	do {
  53.752 -		Dprintk("+");
  53.753 -		udelay(100);
  53.754 -		send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
  53.755 -	} while (send_status && (timeout++ < 1000));
  53.756 -
  53.757 -	mdelay(10);
  53.758 -
  53.759 -	Dprintk("Deasserting INIT.\n");
  53.760 -
  53.761 -	/* Target chip */
  53.762 -	apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
  53.763 -
  53.764 -	/* Send IPI */
  53.765 -	apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_DM_INIT);
  53.766 -
  53.767 -	Dprintk("Waiting for send to finish...\n");
  53.768 -	timeout = 0;
  53.769 -	do {
  53.770 -		Dprintk("+");
  53.771 -		udelay(100);
  53.772 -		send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
  53.773 -	} while (send_status && (timeout++ < 1000));
  53.774 -
  53.775 -	atomic_set(&init_deasserted, 1);
  53.776 -
  53.777 -	/*
  53.778 -	 * Should we send STARTUP IPIs ?
  53.779 -	 *
  53.780 -	 * Determine this based on the APIC version.
  53.781 -	 * If we don't have an integrated APIC, don't send the STARTUP IPIs.
  53.782 -	 */
  53.783 -	if (APIC_INTEGRATED(apic_version[phys_apicid]))
  53.784 -		num_starts = 2;
  53.785 -	else
  53.786 -		num_starts = 0;
  53.787 -
  53.788 -	/*
  53.789 -	 * Run STARTUP IPI loop.
  53.790 -	 */
  53.791 -	Dprintk("#startup loops: %d.\n", num_starts);
  53.792 -
  53.793 -	maxlvt = get_maxlvt();
  53.794 -
  53.795 -	for (j = 1; j <= num_starts; j++) {
  53.796 -		Dprintk("Sending STARTUP #%d.\n",j);
  53.797 -		apic_read_around(APIC_SPIV);
  53.798 -		apic_write(APIC_ESR, 0);
  53.799 -		apic_read(APIC_ESR);
  53.800 -		Dprintk("After apic_write.\n");
  53.801 -
  53.802 -		/*
  53.803 -		 * STARTUP IPI
  53.804 -		 */
  53.805 -
  53.806 -		/* Target chip */
  53.807 -		apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
  53.808 -
  53.809 -		/* Boot on the stack */
  53.810 -		/* Kick the second */
  53.811 -		apic_write_around(APIC_ICR, APIC_DM_STARTUP
  53.812 -					| (start_eip >> 12));
  53.813 -
  53.814 -		/*
  53.815 -		 * Give the other CPU some time to accept the IPI.
  53.816 -		 */
  53.817 -		udelay(300);
  53.818 -
  53.819 -		Dprintk("Startup point 1.\n");
  53.820 -
  53.821 -		Dprintk("Waiting for send to finish...\n");
  53.822 -		timeout = 0;
  53.823 -		do {
  53.824 -			Dprintk("+");
  53.825 -			udelay(100);
  53.826 -			send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
  53.827 -		} while (send_status && (timeout++ < 1000));
  53.828 -
  53.829 -		/*
  53.830 -		 * Give the other CPU some time to accept the IPI.
  53.831 -		 */
  53.832 -		udelay(200);
  53.833 -		/*
  53.834 -		 * Due to the Pentium erratum 3AP.
  53.835 -		 */
  53.836 -		if (maxlvt > 3) {
  53.837 -			apic_read_around(APIC_SPIV);
  53.838 -			apic_write(APIC_ESR, 0);
  53.839 -		}
  53.840 -		accept_status = (apic_read(APIC_ESR) & 0xEF);
  53.841 -		if (send_status || accept_status)
  53.842 -			break;
  53.843 -	}
  53.844 -	Dprintk("After Startup.\n");
  53.845 -
  53.846 -	if (send_status)
  53.847 -		printk("APIC never delivered???\n");
  53.848 -	if (accept_status)
  53.849 -		printk("APIC delivery error (%lx).\n", accept_status);
  53.850 -
  53.851 -	return (send_status | accept_status);
  53.852 -}
  53.853 -#endif	/* WAKE_SECONDARY_VIA_INIT */
  53.854 -
  53.855 -extern cpumask_t cpu_initialized;
  53.856 -static inline int alloc_cpu_id(void)
  53.857 -{
  53.858 -	cpumask_t	tmp_map;
  53.859 -	int cpu;
  53.860 -	cpus_complement(tmp_map, cpu_present_map);
  53.861 -	cpu = first_cpu(tmp_map);
  53.862 -	if (cpu >= NR_CPUS)
  53.863 -		return -ENODEV;
  53.864 -	return cpu;
  53.865 -}
  53.866 -
  53.867 -#ifdef CONFIG_HOTPLUG_CPU
  53.868 -static struct task_struct * __devinitdata cpu_idle_tasks[NR_CPUS];
  53.869 -static inline struct task_struct * alloc_idle_task(int cpu)
  53.870 -{
  53.871 -	struct task_struct *idle;
  53.872 -
  53.873 -	if ((idle = cpu_idle_tasks[cpu]) != NULL) {
  53.874 -		/* initialize thread_struct.  we really want to avoid destroy
  53.875 -		 * idle tread
  53.876 -		 */
  53.877 -		idle->thread.esp = (unsigned long)task_pt_regs(idle);
  53.878 -		init_idle(idle, cpu);
  53.879 -		return idle;
  53.880 -	}
  53.881 -	idle = fork_idle(cpu);
  53.882 -
  53.883 -	if (!IS_ERR(idle))
  53.884 -		cpu_idle_tasks[cpu] = idle;
  53.885 -	return idle;
  53.886 -}
  53.887 -#else
  53.888 -#define alloc_idle_task(cpu) fork_idle(cpu)
  53.889 -#endif
  53.890 -
  53.891 -static int __devinit do_boot_cpu(int apicid, int cpu)
  53.892 -/*
  53.893 - * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad
  53.894 - * (ie clustered apic addressing mode), this is a LOGICAL apic ID.
  53.895 - * Returns zero if CPU booted OK, else error code from wakeup_secondary_cpu.
  53.896 - */
  53.897 -{
  53.898 -	struct task_struct *idle;
  53.899 -	unsigned long boot_error;
  53.900 -	int timeout;
  53.901 -	unsigned long start_eip;
  53.902 -	unsigned short nmi_high = 0, nmi_low = 0;
  53.903 -
  53.904 -	++cpucount;
  53.905 -
  53.906 -	/*
  53.907 -	 * We can't use kernel_thread since we must avoid to
  53.908 -	 * reschedule the child.
  53.909 -	 */
  53.910 -	idle = alloc_idle_task(cpu);
  53.911 -	if (IS_ERR(idle))
  53.912 -		panic("failed fork for CPU %d", cpu);
  53.913 -	idle->thread.eip = (unsigned long) start_secondary;
  53.914 -	/* start_eip had better be page-aligned! */
  53.915 -	start_eip = setup_trampoline();
  53.916 -
  53.917 -	/* So we see what's up   */
  53.918 -	printk("Booting processor %d/%d eip %lx\n", cpu, apicid, start_eip);
  53.919 -	/* Stack for startup_32 can be just as for start_secondary onwards */
  53.920 -	stack_start.esp = (void *) idle->thread.esp;
  53.921 -
  53.922 -	irq_ctx_init(cpu);
  53.923 -
  53.924 -	/*
  53.925 -	 * This grunge runs the startup process for
  53.926 -	 * the targeted processor.
  53.927 -	 */
  53.928 -
  53.929 -	atomic_set(&init_deasserted, 0);
  53.930 -
  53.931 -	Dprintk("Setting warm reset code and vector.\n");
  53.932 -
  53.933 -	store_NMI_vector(&nmi_high, &nmi_low);
  53.934 -
  53.935 -	smpboot_setup_warm_reset_vector(start_eip);
  53.936 -
  53.937 -	/*
  53.938 -	 * Starting actual IPI sequence...
  53.939 -	 */
  53.940 -	boot_error = wakeup_secondary_cpu(apicid, start_eip);
  53.941 -
  53.942 -	if (!boot_error) {
  53.943 -		/*
  53.944 -		 * allow APs to start initializing.
  53.945 -		 */
  53.946 -		Dprintk("Before Callout %d.\n", cpu);
  53.947 -		cpu_set(cpu, cpu_callout_map);
  53.948 -		Dprintk("After Callout %d.\n", cpu);
  53.949 -
  53.950 -		/*
  53.951 -		 * Wait 5s total for a response
  53.952 -		 */
  53.953 -		for (timeout = 0; timeout < 50000; timeout++) {
  53.954 -			if (cpu_isset(cpu, cpu_callin_map))
  53.955 -				break;	/* It has booted */
  53.956 -			udelay(100);
  53.957 -		}
  53.958 -
  53.959 -		if (cpu_isset(cpu, cpu_callin_map)) {
  53.960 -			/* number CPUs logically, starting from 1 (BSP is 0) */
  53.961 -			Dprintk("OK.\n");
  53.962 -			printk("CPU%d: ", cpu);
  53.963 -			print_cpu_info(&cpu_data[cpu]);
  53.964 -			Dprintk("CPU has booted.\n");
  53.965 -		} else {
  53.966 -			boot_error= 1;
  53.967 -			if (*((volatile unsigned char *)trampoline_base)
  53.968 -					== 0xA5)
  53.969 -				/* trampoline started but...? */
  53.970 -				printk("Stuck ??\n");
  53.971 -			else
  53.972 -				/* trampoline code not run */
  53.973 -				printk("Not responding.\n");
  53.974 -			inquire_remote_apic(apicid);
  53.975 -		}
  53.976 -	}
  53.977 -
  53.978 -	if (boot_error) {
  53.979 -		/* Try to put things back the way they were before ... */
  53.980 -		unmap_cpu_to_logical_apicid(cpu);
  53.981 -		cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */
  53.982 -		cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */
  53.983 -		cpucount--;
  53.984 -	} else {
  53.985 -		x86_cpu_to_apicid[cpu] = apicid;
  53.986 -		cpu_set(cpu, cpu_present_map);
  53.987 -	}
  53.988 -
  53.989 -	/* mark "stuck" area as not stuck */
  53.990 -	*((volatile unsigned long *)trampoline_base) = 0;
  53.991 -
  53.992 -	return boot_error;
  53.993 -}
  53.994 -
  53.995 -#ifdef CONFIG_HOTPLUG_CPU
  53.996 -void cpu_exit_clear(void)
  53.997 -{
  53.998 -	int cpu = raw_smp_processor_id();
  53.999 -
 53.1000 -	idle_task_exit();
 53.1001 -
 53.1002 -	cpucount --;
 53.1003 -	cpu_uninit();
 53.1004 -	irq_ctx_exit(cpu);
 53.1005 -
 53.1006 -	cpu_clear(cpu, cpu_callout_map);
 53.1007 -	cpu_clear(cpu, cpu_callin_map);
 53.1008 -	cpu_clear(cpu, cpu_present_map);
 53.1009 -
 53.1010 -	cpu_clear(cpu, smp_commenced_mask);
 53.1011 -	unmap_cpu_to_logical_apicid(cpu);
 53.1012 -}
 53.1013 -
 53.1014 -struct warm_boot_cpu_info {
 53.1015 -	struct completion *complete;
 53.1016 -	int apicid;
 53.1017 -	int cpu;
 53.1018 -};
 53.1019 -
 53.1020 -static void __devinit do_warm_boot_cpu(void *p)
 53.1021 -{
 53.1022 -	struct warm_boot_cpu_info *info = p;
 53.1023 -	do_boot_cpu(info->apicid, info->cpu);
 53.1024 -	complete(info->complete);
 53.1025 -}
 53.1026 -
 53.1027 -int __devinit smp_prepare_cpu(int cpu)
 53.1028 -{
 53.1029 -	DECLARE_COMPLETION(done);
 53.1030 -	struct warm_boot_cpu_info info;
 53.1031 -	struct work_struct task;
 53.1032 -	int	apicid, ret;
 53.1033 -
 53.1034 -	lock_cpu_hotplug();
 53.1035 -
 53.1036 -	/*
 53.1037 -	 * On x86, CPU0 is never offlined.  Trying to bring up an
 53.1038 -	 * already-booted CPU will hang.  So check for that case.
 53.1039 -	 */
 53.1040 -	if (cpu_online(cpu)) {
 53.1041 -		ret = -EINVAL;
 53.1042 -		goto exit;
 53.1043 -	}
 53.1044 -
 53.1045 -	apicid = x86_cpu_to_apicid[cpu];
 53.1046 -	if (apicid == BAD_APICID) {
 53.1047 -		ret = -ENODEV;
 53.1048 -		goto exit;
 53.1049 -	}
 53.1050 -
 53.1051 -	info.complete = &done;
 53.1052 -	info.apicid = apicid;
 53.1053 -	info.cpu = cpu;
 53.1054 -	INIT_WORK(&task, do_warm_boot_cpu, &info);
 53.1055 -
 53.1056 -	tsc_sync_disabled = 1;
 53.1057 -
 53.1058 -	/* init low mem mapping */
 53.1059 -	clone_pgd_range(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS,
 53.1060 -			KERNEL_PGD_PTRS);
 53.1061 -	flush_tlb_all();
 53.1062 -	schedule_work(&task);
 53.1063 -	wait_for_completion(&done);
 53.1064 -
 53.1065 -	tsc_sync_disabled = 0;
 53.1066 -	zap_low_mappings();
 53.1067 -	ret = 0;
 53.1068 -exit:
 53.1069 -	unlock_cpu_hotplug();
 53.1070 -	return ret;
 53.1071 -}
 53.1072 -#endif
 53.1073 -
 53.1074 -static void smp_tune_scheduling (void)
 53.1075 -{
 53.1076 -	unsigned long cachesize;       /* kB   */
 53.1077 -	unsigned long bandwidth = 350; /* MB/s */
 53.1078 -	/*
 53.1079 -	 * Rough estimation for SMP scheduling, this is the number of
 53.1080 -	 * cycles it takes for a fully memory-limited process to flush
 53.1081 -	 * the SMP-local cache.
 53.1082 -	 *
 53.1083 -	 * (For a P5 this pretty much means we will choose another idle
 53.1084 -	 *  CPU almost always at wakeup time (this is due to the small
 53.1085 -	 *  L1 cache), on PIIs it's around 50-100 usecs, depending on
 53.1086 -	 *  the cache size)
 53.1087 -	 */
 53.1088 -
 53.1089 -	if (!cpu_khz) {
 53.1090 -		/*
 53.1091 -		 * this basically disables processor-affinity
 53.1092 -		 * scheduling on SMP without a TSC.
 53.1093 -		 */
 53.1094 -		return;
 53.1095 -	} else {
 53.1096 -		cachesize = boot_cpu_data.x86_cache_size;
 53.1097 -		if (cachesize == -1) {
 53.1098 -			cachesize = 16; /* Pentiums, 2x8kB cache */
 53.1099 -			bandwidth = 100;
 53.1100 -		}
 53.1101 -		max_cache_size = cachesize * 1024;
 53.1102 -	}
 53.1103 -}
 53.1104 -
 53.1105 -/*
 53.1106 - * Cycle through the processors sending APIC IPIs to boot each.
 53.1107 - */
 53.1108 -
 53.1109 -static int boot_cpu_logical_apicid;
 53.1110 -/* Where the IO area was mapped on multiquad, always 0 otherwise */
 53.1111 -void *xquad_portio;
 53.1112 -#ifdef CONFIG_X86_NUMAQ
 53.1113 -EXPORT_SYMBOL(xquad_portio);
 53.1114 -#endif
 53.1115 -
 53.1116 -static void __init smp_boot_cpus(unsigned int max_cpus)
 53.1117 -{
 53.1118 -	int apicid, cpu, bit, kicked;
 53.1119 -	unsigned long bogosum = 0;
 53.1120 -
 53.1121 -	/*
 53.1122 -	 * Setup boot CPU information
 53.1123 -	 */
 53.1124 -	smp_store_cpu_info(0); /* Final full version of the data */
 53.1125 -	printk("CPU%d: ", 0);
 53.1126 -	print_cpu_info(&cpu_data[0]);
 53.1127 -
 53.1128 -	boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
 53.1129 -	boot_cpu_logical_apicid = logical_smp_processor_id();
 53.1130 -	x86_cpu_to_apicid[0] = boot_cpu_physical_apicid;
 53.1131 -
 53.1132 -	current_thread_info()->cpu = 0;
 53.1133 -	smp_tune_scheduling();
 53.1134 -
 53.1135 -	set_cpu_sibling_map(0);
 53.1136 -
 53.1137 -	/*
 53.1138 -	 * If we couldn't find an SMP configuration at boot time,
 53.1139 -	 * get out of here now!
 53.1140 -	 */
 53.1141 -	if (!smp_found_config && !acpi_lapic) {
 53.1142 -		printk(KERN_NOTICE "SMP motherboard not detected.\n");
 53.1143 -		smpboot_clear_io_apic_irqs();
 53.1144 -		phys_cpu_present_map = physid_mask_of_physid(0);
 53.1145 -		if (APIC_init_uniprocessor())
 53.1146 -			printk(KERN_NOTICE "Local APIC not detected."
 53.1147 -					   " Using dummy APIC emulation.\n");
 53.1148 -		map_cpu_to_logical_apicid();
 53.1149 -		cpu_set(0, cpu_sibling_map[0]);
 53.1150 -		cpu_set(0, cpu_core_map[0]);
 53.1151 -		return;
 53.1152 -	}
 53.1153 -
 53.1154 -	/*
 53.1155 -	 * Should not be necessary because the MP table should list the boot
 53.1156 -	 * CPU too, but we do it for the sake of robustness anyway.
 53.1157 -	 * Makes no sense to do this check in clustered apic mode, so skip it
 53.1158 -	 */
 53.1159 -	if (!check_phys_apicid_present(boot_cpu_physical_apicid)) {
 53.1160 -		printk("weird, boot CPU (#%d) not listed by the BIOS.\n",
 53.1161 -				boot_cpu_physical_apicid);
 53.1162 -		physid_set(hard_smp_processor_id(), phys_cpu_present_map);
 53.1163 -	}
 53.1164 -
 53.1165 -	/*
 53.1166 -	 * If we couldn't find a local APIC, then get out of here now!
 53.1167 -	 */
 53.1168 -	if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid]) && !cpu_has_apic) {
 53.1169 -		printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n",
 53.1170 -			boot_cpu_physical_apicid);
 53.1171 -		printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n");
 53.1172 -		smpboot_clear_io_apic_irqs();
 53.1173 -		phys_cpu_present_map = physid_mask_of_physid(0);
 53.1174 -		cpu_set(0, cpu_sibling_map[0]);
 53.1175 -		cpu_set(0, cpu_core_map[0]);
 53.1176 -		return;
 53.1177 -	}
 53.1178 -
 53.1179 -	verify_local_APIC();
 53.1180 -
 53.1181 -	/*
 53.1182 -	 * If SMP should be disabled, then really disable it!
 53.1183 -	 */
 53.1184 -	if (!max_cpus) {
 53.1185 -		smp_found_config = 0;
 53.1186 -		printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n");
 53.1187 -		smpboot_clear_io_apic_irqs();
 53.1188 -		phys_cpu_present_map = physid_mask_of_physid(0);
 53.1189 -		cpu_set(0, cpu_sibling_map[0]);
 53.1190 -		cpu_set(0, cpu_core_map[0]);
 53.1191 -		return;
 53.1192 -	}
 53.1193 -
 53.1194 -	connect_bsp_APIC();
 53.1195 -	setup_local_APIC();
 53.1196 -	map_cpu_to_logical_apicid();
 53.1197 -
 53.1198 -
 53.1199 -	setup_portio_remap();
 53.1200 -
 53.1201 -	/*
 53.1202 -	 * Scan the CPU present map and fire up the other CPUs via do_boot_cpu
 53.1203 -	 *
 53.1204 -	 * In clustered apic mode, phys_cpu_present_map is a constructed thus:
 53.1205 -	 * bits 0-3 are quad0, 4-7 are quad1, etc. A perverse twist on the 
 53.1206 -	 * clustered apic ID.
 53.1207 -	 */
 53.1208 -	Dprintk("CPU present map: %lx\n", physids_coerce(phys_cpu_present_map));
 53.1209 -
 53.1210 -	kicked = 1;
 53.1211 -	for (bit = 0; kicked < NR_CPUS && bit < MAX_APICS; bit++) {
 53.1212 -		apicid = cpu_present_to_apicid(bit);
 53.1213 -		/*
 53.1214 -		 * Don't even attempt to start the boot CPU!
 53.1215 -		 */
 53.1216 -		if ((apicid == boot_cpu_apicid) || (apicid == BAD_APICID))
 53.1217 -			continue;
 53.1218 -
 53.1219 -		if (!check_apicid_present(bit))
 53.1220 -			continue;
 53.1221 -		if (max_cpus <= cpucount+1)
 53.1222 -			continue;
 53.1223 -
 53.1224 -#ifdef CONFIG_SMP_ALTERNATIVES
 53.1225 -		if (kicked == 1)
 53.1226 -			prepare_for_smp();
 53.1227 -#endif
 53.1228 -
 53.1229 -		if (((cpu = alloc_cpu_id()) <= 0) || do_boot_cpu(apicid, cpu))
 53.1230 -			printk("CPU #%d not responding - cannot use it.\n",
 53.1231 -								apicid);
 53.1232 -		else
 53.1233 -			++kicked;
 53.1234 -	}
 53.1235 -
 53.1236 -	/*
 53.1237 -	 * Cleanup possible dangling ends...
 53.1238 -	 */
 53.1239 -	smpboot_restore_warm_reset_vector();
 53.1240 -
 53.1241 -	/*
 53.1242 -	 * Allow the user to impress friends.
 53.1243 -	 */
 53.1244 -	Dprintk("Before bogomips.\n");
 53.1245 -	for (cpu = 0; cpu < NR_CPUS; cpu++)
 53.1246 -		if (cpu_isset(cpu, cpu_callout_map))
 53.1247 -			bogosum += cpu_data[cpu].loops_per_jiffy;
 53.1248 -	printk(KERN_INFO
 53.1249 -		"Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
 53.1250 -		cpucount+1,
 53.1251 -		bogosum/(500000/HZ),
 53.1252 -		(bogosum/(5000/HZ))%100);
 53.1253 -	
 53.1254 -	Dprintk("Before bogocount - setting activated=1.\n");
 53.1255 -
 53.1256 -	if (smp_b_stepping)
 53.1257 -		printk(KERN_WARNING "WARNING: SMP operation may be unreliable with B stepping processors.\n");
 53.1258 -
 53.1259 -	/*
 53.1260 -	 * Don't taint if we are running SMP kernel on a single non-MP
 53.1261 -	 * approved Athlon
 53.1262 -	 */
 53.1263 -	if (tainted & TAINT_UNSAFE_SMP) {
 53.1264 -		if (cpucount)
 53.1265 -			printk (KERN_INFO "WARNING: This combination of AMD processors is not suitable for SMP.\n");
 53.1266 -		else
 53.1267 -			tainted &= ~TAINT_UNSAFE_SMP;
 53.1268 -	}
 53.1269 -
 53.1270 -	Dprintk("Boot done.\n");
 53.1271 -
 53.1272 -	/*
 53.1273 -	 * construct cpu_sibling_map[], so that we can tell sibling CPUs
 53.1274 -	 * efficiently.
 53.1275 -	 */
 53.1276 -	for (cpu = 0; cpu < NR_CPUS; cpu++) {
 53.1277 -		cpus_clear(cpu_sibling_map[cpu]);
 53.1278 -		cpus_clear(cpu_core_map[cpu]);
 53.1279 -	}
 53.1280 -
 53.1281 -	cpu_set(0, cpu_sibling_map[0]);
 53.1282 -	cpu_set(0, cpu_core_map[0]);
 53.1283 -
 53.1284 -	smpboot_setup_io_apic();
 53.1285 -
 53.1286 -	setup_boot_APIC_clock();
 53.1287 -
 53.1288 -	/*
 53.1289 -	 * Synchronize the TSC with the AP
 53.1290 -	 */
 53.1291 -	if (cpu_has_tsc && cpucount && cpu_khz)
 53.1292 -		synchronize_tsc_bp();
 53.1293 -}
 53.1294 -
 53.1295 -/* These are wrappers to interface to the new boot process.  Someone
 53.1296 -   who understands all this stuff should rewrite it properly. --RR 15/Jul/02 */
 53.1297 -void __init smp_prepare_cpus(unsigned int max_cpus)
 53.1298 -{
 53.1299 -	smp_commenced_mask = cpumask_of_cpu(0);
 53.1300 -	cpu_callin_map = cpumask_of_cpu(0);
 53.1301 -	mb();
 53.1302 -	smp_boot_cpus(max_cpus);
 53.1303 -}
 53.1304 -
 53.1305 -void __devinit smp_prepare_boot_cpu(void)
 53.1306 -{
 53.1307 -	cpu_set(smp_processor_id(), cpu_online_map);
 53.1308 -	cpu_set(smp_processor_id(), cpu_callout_map);
 53.1309 -	cpu_set(smp_processor_id(), cpu_present_map);
 53.1310 -	cpu_set(smp_processor_id(), cpu_possible_map);
 53.1311 -	per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
 53.1312 -}
 53.1313 -
 53.1314 -#ifdef CONFIG_HOTPLUG_CPU
 53.1315 -static void
 53.1316 -remove_siblinginfo(int cpu)
 53.1317 -{
 53.1318 -	int sibling;
 53.1319 -	struct cpuinfo_x86 *c = cpu_data;
 53.1320 -
 53.1321 -	for_each_cpu_mask(sibling, cpu_core_map[cpu]) {
 53.1322 -		cpu_clear(cpu, cpu_core_map[sibling]);
 53.1323 -		/*
 53.1324 -		 * last thread sibling in this cpu core going down
 53.1325 -		 */
 53.1326 -		if (cpus_weight(cpu_sibling_map[cpu]) == 1)
 53.1327 -			c[sibling].booted_cores--;
 53.1328 -	}
 53.1329 -			
 53.1330 -	for_each_cpu_mask(sibling, cpu_sibling_map[cpu])
 53.1331 -		cpu_clear(cpu, cpu_sibling_map[sibling]);
 53.1332 -	cpus_clear(cpu_sibling_map[cpu]);
 53.1333 -	cpus_clear(cpu_core_map[cpu]);
 53.1334 -	phys_proc_id[cpu] = BAD_APICID;
 53.1335 -	cpu_core_id[cpu] = BAD_APICID;
 53.1336 -	cpu_clear(cpu, cpu_sibling_setup_map);
 53.1337 -}
 53.1338 -
 53.1339 -int __cpu_disable(void)
 53.1340 -{
 53.1341 -	cpumask_t map = cpu_online_map;
 53.1342 -	int cpu = smp_processor_id();
 53.1343 -
 53.1344 -	/*
 53.1345 -	 * Perhaps use cpufreq to drop frequency, but that could go
 53.1346 -	 * into generic code.
 53.1347 - 	 *
 53.1348 -	 * We won't take down the boot processor on i386 due to some
 53.1349 -	 * interrupts only being able to be serviced by the BSP.
 53.1350 -	 * Especially so if we're not using an IOAPIC	-zwane
 53.1351 -	 */
 53.1352 -	if (cpu == 0)
 53.1353 -		return -EBUSY;
 53.1354 -
 53.1355 -	clear_local_APIC();
 53.1356 -	/* Allow any queued timer interrupts to get serviced */
 53.1357 -	local_irq_enable();
 53.1358 -	mdelay(1);
 53.1359 -	local_irq_disable();
 53.1360 -
 53.1361 -	remove_siblinginfo(cpu);
 53.1362 -
 53.1363 -	cpu_clear(cpu, map);
 53.1364 -	fixup_irqs(map);
 53.1365 -	/* It's now safe to remove this processor from the online map */
 53.1366 -	cpu_clear(cpu, cpu_online_map);
 53.1367 -	return 0;
 53.1368 -}
 53.1369 -
 53.1370 -void __cpu_die(unsigned int cpu)
 53.1371 -{
 53.1372 -	/* We don't do anything here: idle task is faking death itself. */
 53.1373 -	unsigned int i;
 53.1374 -
 53.1375 -	for (i = 0; i < 10; i++) {
 53.1376 -		/* They ack this in play_dead by setting CPU_DEAD */
 53.1377 -		if (per_cpu(cpu_state, cpu) == CPU_DEAD) {
 53.1378 -			printk ("CPU %d is now offline\n", cpu);
 53.1379 -			return;
 53.1380 -		}
 53.1381 -		msleep(100);
 53.1382 -	}
 53.1383 - 	printk(KERN_ERR "CPU %u didn't die...\n", cpu);
 53.1384 -}
 53.1385 -#else /* ... !CONFIG_HOTPLUG_CPU */
 53.1386 -int __cpu_disable(void)
 53.1387 -{
 53.1388 -	return -ENOSYS;
 53.1389 -}
 53.1390 -
 53.1391 -void __cpu_die(unsigned int cpu)
 53.1392 -{
 53.1393 -	/* We said "no" in __cpu_disable */
 53.1394 -	BUG();
 53.1395 -}
 53.1396 -#endif /* CONFIG_HOTPLUG_CPU */
 53.1397 -
 53.1398 -int __devinit __cpu_up(unsigned int cpu)
 53.1399 -{
 53.1400 -	/* In case one didn't come up */
 53.1401 -	if (!cpu_isset(cpu, cpu_callin_map)) {
 53.1402 -		printk(KERN_DEBUG "skipping cpu%d, didn't come online\n", cpu);
 53.1403 -		local_irq_enable();
 53.1404 -		return -EIO;
 53.1405 -	}
 53.1406 -
 53.1407 -#ifdef CONFIG_SMP_ALTERNATIVES
 53.1408 -	if (num_online_cpus() == 1)
 53.1409 -		prepare_for_smp();
 53.1410 -#endif
 53.1411 -
 53.1412 -	local_irq_enable();
 53.1413 -	per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
 53.1414 -	/* Unleash the CPU! */
 53.1415 -	cpu_set(cpu, smp_commenced_mask);
 53.1416 -	while (!cpu_isset(cpu, cpu_online_map))
 53.1417 -		mb();
 53.1418 -	return 0;
 53.1419 -}
 53.1420 -
 53.1421 -void __init smp_cpus_done(unsigned int max_cpus)
 53.1422 -{
 53.1423 -#ifdef CONFIG_X86_IO_APIC
 53.1424 -	setup_ioapic_dest();
 53.1425 -#endif
 53.1426 -	zap_low_mappings();
 53.1427 -#ifndef CONFIG_HOTPLUG_CPU
 53.1428 -	/*
 53.1429 -	 * Disable executability of the SMP trampoline:
 53.1430 -	 */
 53.1431 -	set_kernel_exec((unsigned long)trampoline_base, trampoline_exec);
 53.1432 -#endif
 53.1433 -}
 53.1434 -
 53.1435 -void __init smp_intr_init(void)
 53.1436 -{
 53.1437 -	/*
 53.1438 -	 * IRQ0 must be given a fixed assignment and initialized,
 53.1439 -	 * because it's used before the IO-APIC is set up.
 53.1440 -	 */
 53.1441 -	set_intr_gate(FIRST_DEVICE_VECTOR, interrupt[0]);
 53.1442 -
 53.1443 -	/*
 53.1444 -	 * The reschedule interrupt is a CPU-to-CPU reschedule-helper
 53.1445 -	 * IPI, driven by wakeup.
 53.1446 -	 */
 53.1447 -	set_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt);
 53.1448 -
 53.1449 -	/* IPI for invalidation */
 53.1450 -	set_intr_gate(INVALIDATE_TLB_VECTOR, invalidate_interrupt);
 53.1451 -
 53.1452 -	/* IPI for generic function call */
 53.1453 -	set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
 53.1454 -}
    54.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c	Fri Jan 26 14:19:37 2007 -0700
    54.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c	Sat Jan 27 14:07:19 2007 -0700
    54.3 @@ -47,7 +47,8 @@ EXPORT_SYMBOL(swiotlb);
    54.4   */
    54.5  #define IO_TLB_SHIFT 11
    54.6  
    54.7 -static int swiotlb_force;
    54.8 +int swiotlb_force;
    54.9 +
   54.10  static char *iotlb_virt_start;
   54.11  static unsigned long iotlb_nslabs;
   54.12  
    55.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/sysenter.c	Fri Jan 26 14:19:37 2007 -0700
    55.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/sysenter.c	Sat Jan 27 14:07:19 2007 -0700
    55.3 @@ -2,6 +2,8 @@
    55.4   * linux/arch/i386/kernel/sysenter.c
    55.5   *
    55.6   * (C) Copyright 2002 Linus Torvalds
    55.7 + * Portions based on the vdso-randomization code from exec-shield:
    55.8 + * Copyright(C) 2005-2006, Red Hat, Inc., Ingo Molnar
    55.9   *
   55.10   * This file contains the needed initializations to support sysenter.
   55.11   */
   55.12 @@ -14,6 +16,7 @@
   55.13  #include <linux/string.h>
   55.14  #include <linux/elf.h>
   55.15  #include <linux/mm.h>
   55.16 +#include <linux/module.h>
   55.17  
   55.18  #include <asm/cpufeature.h>
   55.19  #include <asm/msr.h>
   55.20 @@ -24,6 +27,23 @@
   55.21  #include <xen/interface/callback.h>
   55.22  #endif
   55.23  
   55.24 +/*
   55.25 + * Should the kernel map a VDSO page into processes and pass its
   55.26 + * address down to glibc upon exec()?
   55.27 + */
   55.28 +unsigned int __read_mostly vdso_enabled = 1;
   55.29 +
   55.30 +EXPORT_SYMBOL_GPL(vdso_enabled);
   55.31 +
   55.32 +static int __init vdso_setup(char *s)
   55.33 +{
   55.34