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, ®s[0], ®s[1], ®s[2], ®s[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(µcode_sem); 45.36 + mutex_lock(µcode_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(µcode_sem); 45.43 + mutex_unlock(µcode_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 = µcode_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(µcode_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, ®s->esp); 48.55 + show_trace(NULL, regs, ®s->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