ia64/xen-unstable

changeset 4117:f234096eb41e

bitkeeper revision 1.1236.1.78 (4233629euVV54epiY7gfHlMvdavYag)

Merge ssh://freefall.cl.cam.ac.uk//auto/groups/xeno/BK/xeno.bk
into equilibrium.research:/export/scratch/xeno-usbfixes.bk
author mwilli2@equilibrium.research
date Sat Mar 12 21:43:58 2005 +0000 (2005-03-12)
parents 8b210df9a21a c0c50017de07
children 8ba8ae4eba9b
files .rootkeys BitKeeper/etc/logging_ok Makefile docs/Makefile docs/check_pkgs linux-2.4.29-xen-sparse/arch/xen/kernel/process.c linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h linux-2.6.10-xen-sparse/arch/xen/Kconfig linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.10-xen-sparse/arch/xen/Makefile linux-2.6.10-xen-sparse/arch/xen/boot/Makefile linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig linux-2.6.10-xen-sparse/arch/xen/i386/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/irq.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/microcode.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/smp.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/smpboot.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.10-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.10-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.10-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.10-xen-sparse/arch/xen/kernel/Makefile linux-2.6.10-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.10-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.10-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.10-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.10-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.10-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.10-xen-sparse/arch/xen/kernel/smp.c linux-2.6.10-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.10-xen-sparse/drivers/Makefile linux-2.6.10-xen-sparse/drivers/char/mem.c linux-2.6.10-xen-sparse/drivers/char/tty_io.c linux-2.6.10-xen-sparse/drivers/xen/Makefile linux-2.6.10-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.10-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.10-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.10-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.10-xen-sparse/drivers/xen/blkback/common.h linux-2.6.10-xen-sparse/drivers/xen/blkback/control.c linux-2.6.10-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.10-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.10-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.10-xen-sparse/drivers/xen/blktap/Makefile linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap.c linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap.h linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_controlmsg.c linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_datapath.c linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_userdev.c linux-2.6.10-xen-sparse/drivers/xen/console/Makefile linux-2.6.10-xen-sparse/drivers/xen/console/console.c linux-2.6.10-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.10-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.10-xen-sparse/drivers/xen/netback/Makefile linux-2.6.10-xen-sparse/drivers/xen/netback/common.h linux-2.6.10-xen-sparse/drivers/xen/netback/control.c linux-2.6.10-xen-sparse/drivers/xen/netback/interface.c linux-2.6.10-xen-sparse/drivers/xen/netback/netback.c linux-2.6.10-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.10-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.10-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.10-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.10-xen-sparse/drivers/xen/usbback/common.h linux-2.6.10-xen-sparse/drivers/xen/usbback/control.c linux-2.6.10-xen-sparse/drivers/xen/usbback/interface.c linux-2.6.10-xen-sparse/drivers/xen/usbback/usbback.c linux-2.6.10-xen-sparse/drivers/xen/usbfront/usbfront.c linux-2.6.10-xen-sparse/drivers/xen/usbfront/xhci.h linux-2.6.10-xen-sparse/include/asm-generic/pgtable.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/smpboot_hooks.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/spinlock.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.10-xen-sparse/include/asm-xen/balloon.h linux-2.6.10-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.10-xen-sparse/include/asm-xen/evtchn.h linux-2.6.10-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.10-xen-sparse/include/asm-xen/gnttab.h linux-2.6.10-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.10-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.10-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.10-xen-sparse/include/asm-xen/multicall.h linux-2.6.10-xen-sparse/include/asm-xen/queues.h linux-2.6.10-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.10-xen-sparse/include/linux/gfp.h linux-2.6.10-xen-sparse/include/linux/highmem.h linux-2.6.10-xen-sparse/include/linux/irq.h linux-2.6.10-xen-sparse/include/linux/skbuff.h linux-2.6.10-xen-sparse/kernel/irq/manage.c linux-2.6.10-xen-sparse/mkbuildtree linux-2.6.10-xen-sparse/mm/highmem.c linux-2.6.10-xen-sparse/mm/memory.c linux-2.6.10-xen-sparse/mm/page_alloc.c linux-2.6.10-xen-sparse/net/core/skbuff.c linux-2.6.11-xen-sparse/arch/xen/Kconfig linux-2.6.11-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.11-xen-sparse/arch/xen/Makefile linux-2.6.11-xen-sparse/arch/xen/boot/Makefile linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig linux-2.6.11-xen-sparse/arch/xen/i386/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/irq.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/microcode.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smp.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.11-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.11-xen-sparse/arch/xen/kernel/Makefile linux-2.6.11-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.11-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.11-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.11-xen-sparse/arch/xen/kernel/smp.c linux-2.6.11-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.11-xen-sparse/drivers/Makefile linux-2.6.11-xen-sparse/drivers/char/mem.c linux-2.6.11-xen-sparse/drivers/char/tty_io.c linux-2.6.11-xen-sparse/drivers/xen/Makefile linux-2.6.11-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.11-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.11-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.11-xen-sparse/drivers/xen/blkback/common.h linux-2.6.11-xen-sparse/drivers/xen/blkback/control.c linux-2.6.11-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.11-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.11-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.11-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.11-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.11-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.11-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.11-xen-sparse/drivers/xen/blktap/Makefile linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap.c linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap.h linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_controlmsg.c linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_datapath.c linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_userdev.c linux-2.6.11-xen-sparse/drivers/xen/console/Makefile linux-2.6.11-xen-sparse/drivers/xen/console/console.c linux-2.6.11-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.11-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.11-xen-sparse/drivers/xen/netback/Makefile linux-2.6.11-xen-sparse/drivers/xen/netback/common.h linux-2.6.11-xen-sparse/drivers/xen/netback/control.c linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c linux-2.6.11-xen-sparse/drivers/xen/netback/netback.c linux-2.6.11-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.11-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.11-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.11-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.11-xen-sparse/drivers/xen/usbback/common.h linux-2.6.11-xen-sparse/drivers/xen/usbback/control.c linux-2.6.11-xen-sparse/drivers/xen/usbback/interface.c linux-2.6.11-xen-sparse/drivers/xen/usbback/usbback.c linux-2.6.11-xen-sparse/drivers/xen/usbfront/usbfront.c linux-2.6.11-xen-sparse/drivers/xen/usbfront/xhci.h linux-2.6.11-xen-sparse/include/asm-generic/pgtable.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/smpboot_hooks.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/spinlock.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.11-xen-sparse/include/asm-xen/balloon.h linux-2.6.11-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.11-xen-sparse/include/asm-xen/evtchn.h linux-2.6.11-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.11-xen-sparse/include/asm-xen/gnttab.h linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.11-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.11-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.11-xen-sparse/include/asm-xen/multicall.h linux-2.6.11-xen-sparse/include/asm-xen/queues.h linux-2.6.11-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.11-xen-sparse/include/linux/gfp.h linux-2.6.11-xen-sparse/include/linux/highmem.h linux-2.6.11-xen-sparse/include/linux/irq.h linux-2.6.11-xen-sparse/kernel/irq/manage.c linux-2.6.11-xen-sparse/mkbuildtree linux-2.6.11-xen-sparse/mm/highmem.c linux-2.6.11-xen-sparse/mm/memory.c linux-2.6.11-xen-sparse/mm/page_alloc.c patches/linux-2.6.10/agpgart.patch patches/linux-2.6.11/agpgart.patch tools/Makefile tools/examples/Makefile tools/examples/init.d/xend tools/examples/init.d/xendomains tools/libxc/Makefile tools/libxutil/Makefile tools/misc/Makefile tools/python/Makefile tools/xentrace/Makefile tools/xfrd/Makefile xen/Makefile xen/arch/x86/dom0_ops.c xen/arch/x86/domain.c xen/arch/x86/mm.c xen/arch/x86/traps.c xen/arch/x86/x86_32/entry.S xen/arch/x86/x86_64/entry.S xen/arch/x86/x86_emulate.c xen/common/grant_table.c xen/include/asm-x86/domain.h xen/include/asm-x86/mm.h xen/include/xen/grant_table.h
line diff
     1.1 --- a/.rootkeys	Thu Mar 10 22:09:19 2005 +0000
     1.2 +++ b/.rootkeys	Sat Mar 12 21:43:58 2005 +0000
     1.3 @@ -134,151 +134,149 @@ 409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4
     1.4  3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.29-xen-sparse/mm/swapfile.c
     1.5  41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.29-xen-sparse/mm/vmalloc.c
     1.6  41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.29-xen-sparse/net/core/skbuff.c
     1.7 -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-xen-sparse/arch/xen/Kconfig
     1.8 -40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers
     1.9 -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-xen-sparse/arch/xen/Makefile
    1.10 -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.10-xen-sparse/arch/xen/boot/Makefile
    1.11 -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig
    1.12 -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig
    1.13 -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig
    1.14 -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.10-xen-sparse/arch/xen/i386/Makefile
    1.15 -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile
    1.16 -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/Makefile
    1.17 -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c
    1.18 -41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile
    1.19 -41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c
    1.20 -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/entry.S
    1.21 -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S
    1.22 -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c
    1.23 -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ioport.c
    1.24 -41d00d82zN8IfLBRxc7G_i7lbwT3cQ linux-2.6.10-xen-sparse/arch/xen/i386/kernel/irq.c
    1.25 -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c
    1.26 -41d54a76YMCA67S8J-TBT3J62Wx6yA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/microcode.c
    1.27 -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c
    1.28 -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c
    1.29 -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c
    1.30 -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c
    1.31 -41811cac4lkCB-fHir6CcxuEJ2pGsQ linux-2.6.10-xen-sparse/arch/xen/i386/kernel/smp.c
    1.32 -41811ca9mbGpqBrZVrUGEiv8CTV3ng linux-2.6.10-xen-sparse/arch/xen/i386/kernel/smpboot.c
    1.33 -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/time.c
    1.34 -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/Makefile
    1.35 -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c
    1.36 -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/traps.c
    1.37 -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.S
    1.38 -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.lds
    1.39 -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.10-xen-sparse/arch/xen/i386/mm/Makefile
    1.40 -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c
    1.41 -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.10-xen-sparse/arch/xen/i386/mm/highmem.c
    1.42 -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c
    1.43 -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c
    1.44 -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.10-xen-sparse/arch/xen/i386/mm/ioremap.c
    1.45 -413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.10-xen-sparse/arch/xen/i386/mm/pageattr.c
    1.46 -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c
    1.47 -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.10-xen-sparse/arch/xen/i386/pci/Makefile
    1.48 -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.10-xen-sparse/arch/xen/i386/pci/direct.c
    1.49 -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.10-xen-sparse/arch/xen/i386/pci/irq.c
    1.50 -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.10-xen-sparse/arch/xen/kernel/Makefile
    1.51 -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.10-xen-sparse/arch/xen/kernel/ctrl_if.c
    1.52 -41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.10-xen-sparse/arch/xen/kernel/devmem.c
    1.53 -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.10-xen-sparse/arch/xen/kernel/evtchn.c
    1.54 -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c
    1.55 -412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.10-xen-sparse/arch/xen/kernel/gnttab.c
    1.56 -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.10-xen-sparse/arch/xen/kernel/reboot.c
    1.57 -414c113396tK1HTVeUalm3u-1DF16g linux-2.6.10-xen-sparse/arch/xen/kernel/skbuff.c
    1.58 -418f90e4lGdeJK9rmbOB1kN-IKSjsQ linux-2.6.10-xen-sparse/arch/xen/kernel/smp.c
    1.59 -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.10-xen-sparse/arch/xen/kernel/xen_proc.c
    1.60 -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.10-xen-sparse/drivers/Makefile
    1.61 -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.10-xen-sparse/drivers/char/mem.c
    1.62 -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.10-xen-sparse/drivers/char/tty_io.c
    1.63 -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.10-xen-sparse/drivers/xen/Makefile
    1.64 -41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.10-xen-sparse/drivers/xen/balloon/Makefile
    1.65 -3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.10-xen-sparse/drivers/xen/balloon/balloon.c
    1.66 -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.10-xen-sparse/drivers/xen/blkback/Makefile
    1.67 -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.10-xen-sparse/drivers/xen/blkback/blkback.c
    1.68 -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.10-xen-sparse/drivers/xen/blkback/common.h
    1.69 -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.10-xen-sparse/drivers/xen/blkback/control.c
    1.70 -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.10-xen-sparse/drivers/xen/blkback/interface.c
    1.71 -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.10-xen-sparse/drivers/xen/blkback/vbd.c
    1.72 -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.10-xen-sparse/drivers/xen/blkfront/Kconfig
    1.73 -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.10-xen-sparse/drivers/xen/blkfront/Makefile
    1.74 -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c
    1.75 -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h
    1.76 -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c
    1.77 -41a226e0vjAcDXHOnXE5ummcdUD2mg linux-2.6.10-xen-sparse/drivers/xen/blktap/Makefile
    1.78 -41a226e0VeZA1N8tbU6nvJ3OxUcJmw linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap.c
    1.79 -41a226e1k4J5VMLnrYXDWRqElS49YQ linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap.h
    1.80 -41a226e1-A_Hy7utS8vJKaXnH_tzfA linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_controlmsg.c
    1.81 -41a226e19NoUUTOvs7jumDMRYDIO4Q linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_datapath.c
    1.82 -41a226e1MNSyWWK5dEVgvSQ5OW0fDA linux-2.6.10-xen-sparse/drivers/xen/blktap/blktap_userdev.c
    1.83 -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.10-xen-sparse/drivers/xen/console/Makefile
    1.84 -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.10-xen-sparse/drivers/xen/console/console.c
    1.85 -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.10-xen-sparse/drivers/xen/evtchn/Makefile
    1.86 -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.10-xen-sparse/drivers/xen/evtchn/evtchn.c
    1.87 -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.10-xen-sparse/drivers/xen/netback/Makefile
    1.88 -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.10-xen-sparse/drivers/xen/netback/common.h
    1.89 -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.10-xen-sparse/drivers/xen/netback/control.c
    1.90 -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.10-xen-sparse/drivers/xen/netback/interface.c
    1.91 -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.10-xen-sparse/drivers/xen/netback/netback.c
    1.92 -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.10-xen-sparse/drivers/xen/netfront/Kconfig
    1.93 -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.10-xen-sparse/drivers/xen/netfront/Makefile
    1.94 -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c
    1.95 -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.10-xen-sparse/drivers/xen/privcmd/Makefile
    1.96 -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.10-xen-sparse/drivers/xen/privcmd/privcmd.c
    1.97 -41ee5e8bYDQkjRVKnFn5uFyy0KreCw linux-2.6.10-xen-sparse/drivers/xen/usbback/common.h
    1.98 -41ee5e8bt7xeBUJqG5XJS-ofukdsgA linux-2.6.10-xen-sparse/drivers/xen/usbback/control.c
    1.99 -41ee5e8bSs3BGC7yegM_ek2Tn0Ahvw linux-2.6.10-xen-sparse/drivers/xen/usbback/interface.c
   1.100 -41ee5e8bglvqKvZSY5uJ5JGQejEwyQ linux-2.6.10-xen-sparse/drivers/xen/usbback/usbback.c
   1.101 -41ee5e8ckZ9xVNvu9NHIZDK7JqApmQ linux-2.6.10-xen-sparse/drivers/xen/usbfront/usbfront.c
   1.102 -41ee5e8ck9scpGirfqEZRARbGDyTXA linux-2.6.10-xen-sparse/drivers/xen/usbfront/xhci.h
   1.103 -412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.10-xen-sparse/include/asm-generic/pgtable.h
   1.104 -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/desc.h
   1.105 -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h
   1.106 -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/fixmap.h
   1.107 -41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/floppy.h
   1.108 -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/highmem.h
   1.109 -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/io.h
   1.110 -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h
   1.111 -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h
   1.112 -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h
   1.113 -41811f07Iri9hrvs97t-baxmhOwWDQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/smpboot_hooks.h
   1.114 -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mmu_context.h
   1.115 -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/page.h
   1.116 -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/param.h
   1.117 -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pci.h
   1.118 -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgalloc.h
   1.119 -412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h
   1.120 -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h
   1.121 -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable.h
   1.122 -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/processor.h
   1.123 -412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/ptrace.h
   1.124 -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/segment.h
   1.125 -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/setup.h
   1.126 -4198c32a8NzmcKVOzKaEJfaQxxiA0A linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/spinlock.h
   1.127 -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h
   1.128 -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/system.h
   1.129 -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/tlbflush.h
   1.130 -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/vga.h
   1.131 -41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.10-xen-sparse/include/asm-xen/balloon.h
   1.132 -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.10-xen-sparse/include/asm-xen/ctrl_if.h
   1.133 -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.10-xen-sparse/include/asm-xen/evtchn.h
   1.134 -419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.10-xen-sparse/include/asm-xen/foreign_page.h
   1.135 -412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.10-xen-sparse/include/asm-xen/gnttab.h
   1.136 -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.10-xen-sparse/include/asm-xen/hypervisor.h
   1.137 -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.10-xen-sparse/include/asm-xen/linux-public/privcmd.h
   1.138 -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.10-xen-sparse/include/asm-xen/linux-public/suspend.h
   1.139 -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.10-xen-sparse/include/asm-xen/multicall.h
   1.140 -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.10-xen-sparse/include/asm-xen/queues.h
   1.141 -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.10-xen-sparse/include/asm-xen/xen_proc.h
   1.142 -419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.10-xen-sparse/include/linux/gfp.h
   1.143 -42305f545Vc5SLCUewZ2-n-P9JJhEQ linux-2.6.10-xen-sparse/include/linux/highmem.h
   1.144 -419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.10-xen-sparse/include/linux/irq.h
   1.145 -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.10-xen-sparse/include/linux/skbuff.h
   1.146 -419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.10-xen-sparse/kernel/irq/manage.c
   1.147 -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.10-xen-sparse/mkbuildtree
   1.148 -42305f54Q6xJ1bXcQJlCQq1m-e2C8g linux-2.6.10-xen-sparse/mm/highmem.c
   1.149 -412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.10-xen-sparse/mm/memory.c
   1.150 -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-xen-sparse/mm/page_alloc.c
   1.151 -41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-xen-sparse/net/core/skbuff.c
   1.152 +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.11-xen-sparse/arch/xen/Kconfig
   1.153 +40f56237utH41NPukqHksuNf29IC9A linux-2.6.11-xen-sparse/arch/xen/Kconfig.drivers
   1.154 +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.11-xen-sparse/arch/xen/Makefile
   1.155 +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.11-xen-sparse/arch/xen/boot/Makefile
   1.156 +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig
   1.157 +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig
   1.158 +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig
   1.159 +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.11-xen-sparse/arch/xen/i386/Makefile
   1.160 +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.11-xen-sparse/arch/xen/i386/kernel/Makefile
   1.161 +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/Makefile
   1.162 +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/common.c
   1.163 +41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile
   1.164 +41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c
   1.165 +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/entry.S
   1.166 +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S
   1.167 +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c
   1.168 +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ioport.c
   1.169 +41d00d82zN8IfLBRxc7G_i7lbwT3cQ linux-2.6.11-xen-sparse/arch/xen/i386/kernel/irq.c
   1.170 +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c
   1.171 +41d54a76YMCA67S8J-TBT3J62Wx6yA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/microcode.c
   1.172 +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/pci-dma.c
   1.173 +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c
   1.174 +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c
   1.175 +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/signal.c
   1.176 +41811cac4lkCB-fHir6CcxuEJ2pGsQ linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smp.c
   1.177 +41811ca9mbGpqBrZVrUGEiv8CTV3ng linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c
   1.178 +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c
   1.179 +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/Makefile
   1.180 +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c
   1.181 +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c
   1.182 +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.S
   1.183 +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.lds
   1.184 +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.11-xen-sparse/arch/xen/i386/mm/Makefile
   1.185 +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c
   1.186 +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.11-xen-sparse/arch/xen/i386/mm/highmem.c
   1.187 +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.11-xen-sparse/arch/xen/i386/mm/hypervisor.c
   1.188 +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c
   1.189 +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.11-xen-sparse/arch/xen/i386/mm/ioremap.c
   1.190 +413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.11-xen-sparse/arch/xen/i386/mm/pageattr.c
   1.191 +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c
   1.192 +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile
   1.193 +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.11-xen-sparse/arch/xen/i386/pci/direct.c
   1.194 +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c
   1.195 +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.11-xen-sparse/arch/xen/kernel/Makefile
   1.196 +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.11-xen-sparse/arch/xen/kernel/ctrl_if.c
   1.197 +41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.11-xen-sparse/arch/xen/kernel/devmem.c
   1.198 +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c
   1.199 +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c
   1.200 +412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c
   1.201 +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c
   1.202 +414c113396tK1HTVeUalm3u-1DF16g linux-2.6.11-xen-sparse/arch/xen/kernel/skbuff.c
   1.203 +418f90e4lGdeJK9rmbOB1kN-IKSjsQ linux-2.6.11-xen-sparse/arch/xen/kernel/smp.c
   1.204 +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.11-xen-sparse/arch/xen/kernel/xen_proc.c
   1.205 +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.11-xen-sparse/drivers/Makefile
   1.206 +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.11-xen-sparse/drivers/char/mem.c
   1.207 +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.11-xen-sparse/drivers/char/tty_io.c
   1.208 +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.11-xen-sparse/drivers/xen/Makefile
   1.209 +41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.11-xen-sparse/drivers/xen/balloon/Makefile
   1.210 +3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.11-xen-sparse/drivers/xen/balloon/balloon.c
   1.211 +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.11-xen-sparse/drivers/xen/blkback/Makefile
   1.212 +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c
   1.213 +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.11-xen-sparse/drivers/xen/blkback/common.h
   1.214 +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.11-xen-sparse/drivers/xen/blkback/control.c
   1.215 +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.11-xen-sparse/drivers/xen/blkback/interface.c
   1.216 +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.11-xen-sparse/drivers/xen/blkback/vbd.c
   1.217 +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.11-xen-sparse/drivers/xen/blkfront/Kconfig
   1.218 +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.11-xen-sparse/drivers/xen/blkfront/Makefile
   1.219 +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.11-xen-sparse/drivers/xen/blkfront/blkfront.c
   1.220 +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.11-xen-sparse/drivers/xen/blkfront/block.h
   1.221 +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.11-xen-sparse/drivers/xen/blkfront/vbd.c
   1.222 +41a226e0vjAcDXHOnXE5ummcdUD2mg linux-2.6.11-xen-sparse/drivers/xen/blktap/Makefile
   1.223 +41a226e0VeZA1N8tbU6nvJ3OxUcJmw linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap.c
   1.224 +41a226e1k4J5VMLnrYXDWRqElS49YQ linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap.h
   1.225 +41a226e1-A_Hy7utS8vJKaXnH_tzfA linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_controlmsg.c
   1.226 +41a226e19NoUUTOvs7jumDMRYDIO4Q linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_datapath.c
   1.227 +41a226e1MNSyWWK5dEVgvSQ5OW0fDA linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_userdev.c
   1.228 +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.11-xen-sparse/drivers/xen/console/Makefile
   1.229 +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.11-xen-sparse/drivers/xen/console/console.c
   1.230 +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.11-xen-sparse/drivers/xen/evtchn/Makefile
   1.231 +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.11-xen-sparse/drivers/xen/evtchn/evtchn.c
   1.232 +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.11-xen-sparse/drivers/xen/netback/Makefile
   1.233 +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.11-xen-sparse/drivers/xen/netback/common.h
   1.234 +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.11-xen-sparse/drivers/xen/netback/control.c
   1.235 +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c
   1.236 +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.11-xen-sparse/drivers/xen/netback/netback.c
   1.237 +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.11-xen-sparse/drivers/xen/netfront/Kconfig
   1.238 +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.11-xen-sparse/drivers/xen/netfront/Makefile
   1.239 +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.11-xen-sparse/drivers/xen/netfront/netfront.c
   1.240 +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.11-xen-sparse/drivers/xen/privcmd/Makefile
   1.241 +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c
   1.242 +41ee5e8bYDQkjRVKnFn5uFyy0KreCw linux-2.6.11-xen-sparse/drivers/xen/usbback/common.h
   1.243 +41ee5e8bt7xeBUJqG5XJS-ofukdsgA linux-2.6.11-xen-sparse/drivers/xen/usbback/control.c
   1.244 +41ee5e8bSs3BGC7yegM_ek2Tn0Ahvw linux-2.6.11-xen-sparse/drivers/xen/usbback/interface.c
   1.245 +41ee5e8bglvqKvZSY5uJ5JGQejEwyQ linux-2.6.11-xen-sparse/drivers/xen/usbback/usbback.c
   1.246 +41ee5e8ckZ9xVNvu9NHIZDK7JqApmQ linux-2.6.11-xen-sparse/drivers/xen/usbfront/usbfront.c
   1.247 +41ee5e8ck9scpGirfqEZRARbGDyTXA linux-2.6.11-xen-sparse/drivers/xen/usbfront/xhci.h
   1.248 +412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.11-xen-sparse/include/asm-generic/pgtable.h
   1.249 +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/desc.h
   1.250 +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h
   1.251 +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h
   1.252 +41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/floppy.h
   1.253 +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/highmem.h
   1.254 +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io.h
   1.255 +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h
   1.256 +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h
   1.257 +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h
   1.258 +41811f07Iri9hrvs97t-baxmhOwWDQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/smpboot_hooks.h
   1.259 +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mmu_context.h
   1.260 +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/page.h
   1.261 +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/param.h
   1.262 +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pci.h
   1.263 +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h
   1.264 +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h
   1.265 +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h
   1.266 +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h
   1.267 +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/processor.h
   1.268 +412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/ptrace.h
   1.269 +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/segment.h
   1.270 +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/setup.h
   1.271 +4198c32a8NzmcKVOzKaEJfaQxxiA0A linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/spinlock.h
   1.272 +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h
   1.273 +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/system.h
   1.274 +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/tlbflush.h
   1.275 +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/vga.h
   1.276 +41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.11-xen-sparse/include/asm-xen/balloon.h
   1.277 +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.11-xen-sparse/include/asm-xen/ctrl_if.h
   1.278 +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.11-xen-sparse/include/asm-xen/evtchn.h
   1.279 +419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.11-xen-sparse/include/asm-xen/foreign_page.h
   1.280 +412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.11-xen-sparse/include/asm-xen/gnttab.h
   1.281 +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h
   1.282 +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.11-xen-sparse/include/asm-xen/linux-public/privcmd.h
   1.283 +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.11-xen-sparse/include/asm-xen/linux-public/suspend.h
   1.284 +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.11-xen-sparse/include/asm-xen/multicall.h
   1.285 +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.11-xen-sparse/include/asm-xen/queues.h
   1.286 +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.11-xen-sparse/include/asm-xen/xen_proc.h
   1.287 +419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.11-xen-sparse/include/linux/gfp.h
   1.288 +42305f545Vc5SLCUewZ2-n-P9JJhEQ linux-2.6.11-xen-sparse/include/linux/highmem.h
   1.289 +419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.11-xen-sparse/include/linux/irq.h
   1.290 +419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.11-xen-sparse/kernel/irq/manage.c
   1.291 +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.11-xen-sparse/mkbuildtree
   1.292 +42305f54Q6xJ1bXcQJlCQq1m-e2C8g linux-2.6.11-xen-sparse/mm/highmem.c
   1.293 +412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.11-xen-sparse/mm/memory.c
   1.294 +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.11-xen-sparse/mm/page_alloc.c
   1.295  413cb1e4zst25MDYjg63Y-NGC5_pLg netbsd-2.0-xen-sparse/Makefile
   1.296  413cb1e5c_Mkxf_X0zimEhTKI_l4DA netbsd-2.0-xen-sparse/mkbuildtree
   1.297  413cb1e5kY_Zil7-b0kI6hvCIxBEYg netbsd-2.0-xen-sparse/nbconfig-xen
   1.298 @@ -317,7 +315,7 @@ 413cb3b5F56TvQWAmO5TsuzhtzLFPQ netbsd-2.
   1.299  422e4430vKaHLOOGS7X-SUUe3EBCgw netbsd-2.0-xen-sparse/sys/miscfs/kernfs/kernfs.h
   1.300  422e4430-gOD358H8nGGnNWes08Nng netbsd-2.0-xen-sparse/sys/miscfs/kernfs/kernfs_vnops.c
   1.301  413cb3b53nyOv1OIeDSsCXhBFDXvJA netbsd-2.0-xen-sparse/sys/nfs/files.nfs
   1.302 -413aa1d0oNP8HXLvfPuMe6cSroUfSA patches/linux-2.6.10/agpgart.patch
   1.303 +413aa1d0oNP8HXLvfPuMe6cSroUfSA patches/linux-2.6.11/agpgart.patch
   1.304  3f776bd1Hy9rn69ntXBhPReUFw9IEA tools/Makefile
   1.305  40e1b09db5mN69Ijj0X_Eol-S7dXiw tools/Rules.mk
   1.306  4209033eUwhDBJ_bxejiv5c6gjXS4A tools/blktap/Makefile
     2.1 --- a/BitKeeper/etc/logging_ok	Thu Mar 10 22:09:19 2005 +0000
     2.2 +++ b/BitKeeper/etc/logging_ok	Sat Mar 12 21:43:58 2005 +0000
     2.3 @@ -21,6 +21,7 @@ cl349@labyrinth.cl.cam.ac.uk
     2.4  cwc22@centipede.cl.cam.ac.uk
     2.5  cwc22@donkeykong.cl.cam.ac.uk
     2.6  djm@kirby.fc.hp.com
     2.7 +doogie@brainfood.com
     2.8  gm281@boulderdash.cl.cam.ac.uk
     2.9  gm281@tetrapod.cl.cam.ac.uk
    2.10  harry@dory.(none)
     3.1 --- a/Makefile	Thu Mar 10 22:09:19 2005 +0000
     3.2 +++ b/Makefile	Sat Mar 12 21:43:58 2005 +0000
     3.3 @@ -37,6 +37,11 @@ all: dist
     3.4  # build and install everything into the standard system directories
     3.5  install: install-xen install-tools install-kernels install-docs
     3.6  
     3.7 +build: kernels
     3.8 +	$(MAKE) -C xen build
     3.9 +	$(MAKE) -C tools build
    3.10 +	$(MAKE) -C docs build
    3.11 +
    3.12  # build and install everything into local dist directory
    3.13  dist: xen tools kernels docs
    3.14  	$(INSTALL_DIR) $(DISTDIR)/check
     4.1 --- a/docs/Makefile	Thu Mar 10 22:09:19 2005 +0000
     4.2 +++ b/docs/Makefile	Sat Mar 12 21:43:58 2005 +0000
     4.3 @@ -18,14 +18,17 @@ DOC_HTML	:= $(patsubst src/%.tex,html/%/
     4.4  
     4.5  GFX = $(patsubst %.fig, %.eps, $(wildcard figs/*.fig))
     4.6  
     4.7 -all: ps pdf html
     4.8 +all: build
     4.9 +build: ps pdf html
    4.10  	rm -f *.aux *.dvi *.bbl *.blg *.glo *.idx *.ilg *.log *.ind *.toc
    4.11  
    4.12  ps: $(DOC_PS)
    4.13  
    4.14  pdf: $(DOC_PDF)
    4.15  
    4.16 -html: $(DOC_HTML)
    4.17 +html:
    4.18 +	@if which $(LATEX2HTML) 1>/dev/null 2>/dev/null; then \
    4.19 +	$(MAKE) $(DOC_HTML); fi
    4.20  
    4.21  clean:
    4.22  	rm -rf .word_count *.aux *.dvi *.bbl *.blg *.glo *.idx *~ 
    4.23 @@ -37,7 +40,7 @@ install: all
    4.24  	$(INSTALL_DIR) $(DESTDIR)$(pkgdocdir)
    4.25  	cp -dR ps $(DESTDIR)$(pkgdocdir)
    4.26  	cp -dR pdf $(DESTDIR)$(pkgdocdir)
    4.27 -	cp -dR html $(DESTDIR)$(pkgdocdir)
    4.28 +	[ ! -d html ] || cp -dR html $(DESTDIR)$(pkgdocdir)
    4.29  
    4.30  pdf/%.pdf: ps/%.ps
    4.31  	$(INSTALL_DIR) $(@D)
     5.1 --- a/docs/check_pkgs	Thu Mar 10 22:09:19 2005 +0000
     5.2 +++ b/docs/check_pkgs	Sat Mar 12 21:43:58 2005 +0000
     5.3 @@ -13,7 +13,6 @@ silent_which ()
     5.4  }
     5.5  
     5.6  silent_which latex      || exit 1
     5.7 -silent_which latex2html || exit 1
     5.8  silent_which dvips      || exit 1
     5.9  silent_which ps2pdf     || exit 1
    5.10  silent_which fig2dev    || exit 1
     6.1 --- a/linux-2.4.29-xen-sparse/arch/xen/kernel/process.c	Thu Mar 10 22:09:19 2005 +0000
     6.2 +++ b/linux-2.4.29-xen-sparse/arch/xen/kernel/process.c	Sat Mar 12 21:43:58 2005 +0000
     6.3 @@ -214,7 +214,6 @@ int copy_thread(int nr, unsigned long cl
     6.4                  struct task_struct * p, struct pt_regs * regs)
     6.5  {
     6.6      struct pt_regs * childregs;
     6.7 -    unsigned long eflags;
     6.8  
     6.9      childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1;
    6.10      struct_cpy(childregs, regs);
    6.11 @@ -232,9 +231,7 @@ int copy_thread(int nr, unsigned long cl
    6.12      unlazy_fpu(current);
    6.13      struct_cpy(&p->thread.i387, &current->thread.i387);
    6.14  
    6.15 -
    6.16 -    __asm__ __volatile__ ( "pushfl; popl %0" : "=r" (eflags) : );
    6.17 -    p->thread.io_pl = (eflags >> 12) & 3;
    6.18 +    p->thread.io_pl = current->thread.io_pl;
    6.19  
    6.20      return 0;
    6.21  }
     7.1 --- a/linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h	Thu Mar 10 22:09:19 2005 +0000
     7.2 +++ b/linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h	Sat Mar 12 21:43:58 2005 +0000
     7.3 @@ -36,7 +36,7 @@ static inline int pgd_present(pgd_t pgd)
     7.4  
     7.5  #define set_pte(pteptr, pteval) queue_l1_entry_update(pteptr, (pteval).pte_low)
     7.6  #define set_pte_atomic(pteptr, pteval) queue_l1_entry_update(pteptr, (pteval).pte_low)
     7.7 -#define set_pmd(pmdptr, pmdval) queue_l2_entry_update((pmdptr), (pmdval).pmd)
     7.8 +#define set_pmd(pmdptr, pmdval) queue_l2_entry_update((pmdptr), (pmdval))
     7.9  #define set_pgd(pgdptr, pgdval) ((void)0)
    7.10  
    7.11  #define pgd_page(pgd) \
     8.1 --- a/linux-2.6.10-xen-sparse/arch/xen/Kconfig	Thu Mar 10 22:09:19 2005 +0000
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,174 +0,0 @@
     8.4 -#
     8.5 -# For a description of the syntax of this configuration file,
     8.6 -# see Documentation/kbuild/kconfig-language.txt.
     8.7 -#
     8.8 -
     8.9 -mainmenu "Linux Kernel Configuration"
    8.10 -
    8.11 -config XEN
    8.12 -	bool
    8.13 -	default y
    8.14 -	help
    8.15 -	  This is the Linux Xen port.
    8.16 -
    8.17 -config ARCH_XEN
    8.18 -	bool
    8.19 -	default y
    8.20 -
    8.21 -
    8.22 -config NO_IDLE_HZ
    8.23 -	bool
    8.24 -	default y
    8.25 -
    8.26 -
    8.27 -menu "XEN"
    8.28 -
    8.29 -config XEN_PRIVILEGED_GUEST
    8.30 -	bool "Privileged Guest (domain 0)"
    8.31 -	default n
    8.32 -	select XEN_PHYSDEV_ACCESS
    8.33 -	help
    8.34 -	  Support for privileged operation (domain 0)
    8.35 -
    8.36 -config XEN_PHYSDEV_ACCESS
    8.37 -	bool "Physical device access"
    8.38 -	default XEN_PRIVILEGED_GUEST
    8.39 -	help
    8.40 -	  Assume access is available to physical hardware devices
    8.41 -	  (e.g., hard drives, network cards). This allows you to configure
    8.42 -	  such devices and also includes some low-level support that is
    8.43 -	  otherwise not compiled into the kernel.
    8.44 -
    8.45 -config XEN_BLKDEV_BACKEND
    8.46 -	bool "Block-device backend driver"
    8.47 -	depends on XEN_PHYSDEV_ACCESS
    8.48 -	default y
    8.49 -	help
    8.50 -	  The block-device backend driver allows the kernel to export its
    8.51 -	  block devices to other guests via a high-performance shared-memory
    8.52 -	  interface.
    8.53 -
    8.54 -config XEN_BLKDEV_TAP_BE
    8.55 -        bool "Block Tap support for backend driver (DANGEROUS)"
    8.56 -        depends on XEN_BLKDEV_BACKEND
    8.57 -        default n
    8.58 -        help
    8.59 -          If you intend to use the block tap driver, the backend domain will
    8.60 -          not know the domain id of the real frontend, and so will not be able
    8.61 -          to map its data pages.  This modifies the backend to attempt to map
    8.62 -          from both the tap domain and the real frontend.  This presents a
    8.63 -          security risk, and so should ONLY be used for development
    8.64 -          with the blktap.  This option will be removed as the block drivers are
    8.65 -          modified to use grant tables.
    8.66 -
    8.67 -config XEN_NETDEV_BACKEND
    8.68 -	bool "Network-device backend driver"
    8.69 -	depends on XEN_PHYSDEV_ACCESS
    8.70 -	default y
    8.71 -	help
    8.72 -	  The network-device backend driver allows the kernel to export its
    8.73 -	  network devices to other guests via a high-performance shared-memory
    8.74 -	  interface.
    8.75 -
    8.76 -config XEN_BLKDEV_FRONTEND
    8.77 -	bool "Block-device frontend driver"
    8.78 -	default y
    8.79 -	help
    8.80 -	  The block-device frontend driver allows the kernel to access block
    8.81 -	  devices mounted within another guest OS. Unless you are building a
    8.82 -	  dedicated device-driver domain, or your master control domain
    8.83 -	  (domain 0), then you almost certainly want to say Y here.
    8.84 -
    8.85 -config XEN_NETDEV_FRONTEND
    8.86 -	bool "Network-device frontend driver"
    8.87 -	default y
    8.88 -	help
    8.89 -	  The network-device frontend driver allows the kernel to access
    8.90 -	  network interfaces within another guest OS. Unless you are building a
    8.91 -	  dedicated device-driver domain, or your master control domain
    8.92 -	  (domain 0), then you almost certainly want to say Y here.
    8.93 -
    8.94 -config XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER
    8.95 -	bool "Pipelined transmitter (DANGEROUS)"
    8.96 -	depends on XEN_NETDEV_FRONTEND
    8.97 -	default n
    8.98 -	help
    8.99 -	  The driver will assume that the backend is pipelining packets for
   8.100 -	  transmission: whenever packets are pending in the remote backend,
   8.101 -	  the driver will not send asynchronous notifications when it queues
   8.102 -	  additional packets for transmission.
   8.103 -	  If the backend is a dumb domain, such as a transparent Ethernet
   8.104 -	  bridge with no local IP interface, it is safe to say Y here to get
   8.105 -	  slightly lower network overhead.
   8.106 -	  If the backend has a local IP interface; or may be doing smart things
   8.107 -	  like reassembling packets to perform firewall filtering; or if you
   8.108 -	  are unsure; or if you experience network hangs when this option is
   8.109 -	  enabled; then you must say N here.
   8.110 -
   8.111 -config XEN_BLKDEV_TAP
   8.112 -	bool "Block device tap driver"
   8.113 -	default n
   8.114 -	help
   8.115 -	  This driver allows a VM to interact on block device channels
   8.116 -	  to other VMs.  Block messages may be passed through or redirected
   8.117 -	  to a character device, allowing device prototyping in application
   8.118 -	  space.  Odds are that you want to say N here.
   8.119 -
   8.120 -config XEN_WRITABLE_PAGETABLES
   8.121 -	bool
   8.122 -	default y
   8.123 -
   8.124 -config XEN_SCRUB_PAGES
   8.125 -	bool "Scrub memory before freeing it to Xen"
   8.126 -	default y
   8.127 -	help
   8.128 -	  Erase memory contents before freeing it back to Xen's global
   8.129 -	  pool. This ensures that any secrets contained within that
   8.130 -	  memory (e.g., private keys) cannot be found by other guests that
   8.131 -	  may be running on the machine. Most people will want to say Y here.
   8.132 -	  If security is not a concern then you may increase performance by
   8.133 -	  saying N.
   8.134 -
   8.135 -choice
   8.136 -	prompt "Processor Type"
   8.137 -	default X86
   8.138 -
   8.139 -config X86
   8.140 -	bool "X86"
   8.141 -	help
   8.142 -	  Choose this option if your computer is a X86 architecture.
   8.143 -
   8.144 -config X86_64
   8.145 -	bool "X86_64"
   8.146 -	help
   8.147 -	  Choose this option if your computer is a X86 architecture.
   8.148 -
   8.149 -endchoice
   8.150 -
   8.151 -endmenu
   8.152 -
   8.153 -config HAVE_ARCH_DEV_ALLOC_SKB
   8.154 -	bool
   8.155 -	default y
   8.156 -
   8.157 -source "init/Kconfig"
   8.158 -
   8.159 -if X86
   8.160 -source "arch/xen/i386/Kconfig"
   8.161 -endif
   8.162 -
   8.163 -menu "Executable file formats"
   8.164 -
   8.165 -source "fs/Kconfig.binfmt"
   8.166 -
   8.167 -endmenu
   8.168 -
   8.169 -source "arch/xen/Kconfig.drivers"
   8.170 -
   8.171 -source "fs/Kconfig"
   8.172 -
   8.173 -source "security/Kconfig"
   8.174 -
   8.175 -source "crypto/Kconfig"
   8.176 -
   8.177 -source "lib/Kconfig"
     9.1 --- a/linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers	Thu Mar 10 22:09:19 2005 +0000
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,55 +0,0 @@
     9.4 -# arch/xen/Kconfig.drivers
     9.5 -
     9.6 -menu "Device Drivers"
     9.7 -
     9.8 -source "drivers/base/Kconfig"
     9.9 -
    9.10 -if XEN_PHYSDEV_ACCESS
    9.11 -source "drivers/mtd/Kconfig"
    9.12 -source "drivers/parport/Kconfig"
    9.13 -source "drivers/pnp/Kconfig"
    9.14 -endif
    9.15 -
    9.16 -source "drivers/block/Kconfig"
    9.17 -
    9.18 -if XEN_PHYSDEV_ACCESS
    9.19 -source "drivers/ide/Kconfig"
    9.20 -endif
    9.21 -
    9.22 -source "drivers/scsi/Kconfig"
    9.23 -
    9.24 -if XEN_PHYSDEV_ACCESS
    9.25 -source "drivers/cdrom/Kconfig"
    9.26 -endif
    9.27 -
    9.28 -source "drivers/md/Kconfig"
    9.29 -
    9.30 -if XEN_PHYSDEV_ACCESS
    9.31 -source "drivers/message/fusion/Kconfig"
    9.32 -source "drivers/ieee1394/Kconfig"
    9.33 -source "drivers/message/i2o/Kconfig"
    9.34 -endif
    9.35 -
    9.36 -source "net/Kconfig"
    9.37 -
    9.38 -if XEN_PHYSDEV_ACCESS
    9.39 -source "drivers/isdn/Kconfig"
    9.40 -source "drivers/telephony/Kconfig"
    9.41 -source "drivers/input/Kconfig"
    9.42 -source "drivers/char/Kconfig"
    9.43 -source "drivers/i2c/Kconfig"
    9.44 -source "drivers/w1/Kconfig"
    9.45 -source "drivers/misc/Kconfig"
    9.46 -source "drivers/media/Kconfig"
    9.47 -source "drivers/video/Kconfig"
    9.48 -source "sound/Kconfig"
    9.49 -source "drivers/usb/Kconfig"
    9.50 -endif
    9.51 -
    9.52 -if !XEN_PHYSDEV_ACCESS
    9.53 -config UNIX98_PTYS
    9.54 -	bool
    9.55 -	default y
    9.56 -endif
    9.57 -
    9.58 -endmenu
    10.1 --- a/linux-2.6.10-xen-sparse/arch/xen/Makefile	Thu Mar 10 22:09:19 2005 +0000
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,70 +0,0 @@
    10.4 -#
    10.5 -# xen/Makefile
    10.6 -#
    10.7 -# This file is included by the global makefile so that you can add your own
    10.8 -# architecture-specific flags and dependencies. Remember to do have actions
    10.9 -# for "archclean" cleaning up for this architecture.
   10.10 -#
   10.11 -# This file is subject to the terms and conditions of the GNU General Public
   10.12 -# License.  See the file "COPYING" in the main directory of this archive
   10.13 -# for more details.
   10.14 -#
   10.15 -# Copyright (C) 2004 by Christian Limpach
   10.16 -#
   10.17 -
   10.18 -XENARCH	:= $(subst ",,$(CONFIG_XENARCH))
   10.19 -
   10.20 -# pick up headers from include/asm-xen/asm in preference over include/asm
   10.21 -NOSTDINC_FLAGS  = -nostdinc -iwithprefix include/asm-xen -Iinclude/asm-xen -iwithprefix include
   10.22 -
   10.23 -# make uname return the processor arch
   10.24 -UTS_MACHINE := $(XENARCH)
   10.25 -
   10.26 -core-y	+= arch/xen/kernel/
   10.27 -
   10.28 -include/.asm-ignore: include/asm
   10.29 -	@rm -f include/.asm-ignore
   10.30 -	@mv include/asm include/.asm-ignore
   10.31 -	@echo '  SYMLINK include/asm -> include/asm-$(XENARCH)'
   10.32 -	$(Q)if [ ! -d include ]; then mkdir -p include; fi;
   10.33 -	@ln -fsn asm-$(XENARCH) include/asm
   10.34 -
   10.35 -include/asm-xen/asm:
   10.36 -	@echo '  SYMLINK $@ -> include/asm-xen/asm-$(XENARCH)'
   10.37 -	@ln -fsn asm-$(XENARCH) $@
   10.38 -
   10.39 -arch/xen/arch:
   10.40 -	@rm -f $@
   10.41 -	@ln -fsn $(XENARCH) $@
   10.42 -
   10.43 -prepare: include/.asm-ignore include/asm-xen/asm \
   10.44 -	arch/xen/arch ;
   10.45 -
   10.46 -all: vmlinuz
   10.47 -
   10.48 -vmlinuz: vmlinux
   10.49 -	$(Q)$(MAKE) $(build)=arch/xen/boot vmlinuz
   10.50 -
   10.51 -XINSTALL_NAME ?= $(KERNELRELEASE)
   10.52 -install: vmlinuz
   10.53 -	mkdir -p $(INSTALL_PATH)/boot
   10.54 -	install -m0644 vmlinuz $(INSTALL_PATH)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
   10.55 -	install -m0644 vmlinux $(INSTALL_PATH)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
   10.56 -	install -m0664 .config $(INSTALL_PATH)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
   10.57 -	install -m0664 System.map $(INSTALL_PATH)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
   10.58 -	mkdir -p $(INSTALL_PATH)/usr/include/xen/linux
   10.59 -	install -m0644 include/asm-xen/linux-public/*.h $(INSTALL_PATH)/usr/include/xen/linux
   10.60 -
   10.61 -archclean:
   10.62 -	@if [ -e arch/xen/arch ]; then $(MAKE) $(clean)=arch/xen/arch; fi;
   10.63 -	@rm -f arch/xen/arch include/.asm-ignore include/asm-xen/asm
   10.64 -	@rm -f vmlinux-stripped vmlinuz
   10.65 -
   10.66 -define archhelp
   10.67 -  echo  '* vmlinuz	- Compressed kernel image'
   10.68 -  echo  '  install	- Install kernel image and config file'
   10.69 -endef
   10.70 -
   10.71 -ifneq ($(XENARCH),)
   10.72 -include	$(srctree)/arch/xen/$(XENARCH)/Makefile
   10.73 -endif
    11.1 --- a/linux-2.6.10-xen-sparse/arch/xen/boot/Makefile	Thu Mar 10 22:09:19 2005 +0000
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,8 +0,0 @@
    11.4 -
    11.5 -OBJCOPYFLAGS := -g --strip-unneeded
    11.6 -
    11.7 -vmlinuz: vmlinux-stripped FORCE
    11.8 -	$(call if_changed,gzip)
    11.9 -
   11.10 -vmlinux-stripped: vmlinux FORCE
   11.11 -	$(call if_changed,objcopy)
    12.1 --- a/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig	Thu Mar 10 22:09:19 2005 +0000
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,1078 +0,0 @@
    12.4 -#
    12.5 -# Automatically generated make config: don't edit
    12.6 -# Linux kernel version: 2.6.10-xen0
    12.7 -# Mon Feb 21 13:46:38 2005
    12.8 -#
    12.9 -CONFIG_XEN=y
   12.10 -CONFIG_ARCH_XEN=y
   12.11 -CONFIG_NO_IDLE_HZ=y
   12.12 -
   12.13 -#
   12.14 -# XEN
   12.15 -#
   12.16 -CONFIG_XEN_PRIVILEGED_GUEST=y
   12.17 -CONFIG_XEN_PHYSDEV_ACCESS=y
   12.18 -CONFIG_XEN_BLKDEV_BACKEND=y
   12.19 -# CONFIG_XEN_BLKDEV_TAP_BE is not set
   12.20 -CONFIG_XEN_NETDEV_BACKEND=y
   12.21 -CONFIG_XEN_BLKDEV_FRONTEND=y
   12.22 -CONFIG_XEN_NETDEV_FRONTEND=y
   12.23 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
   12.24 -# CONFIG_XEN_BLKDEV_TAP is not set
   12.25 -CONFIG_XEN_WRITABLE_PAGETABLES=y
   12.26 -CONFIG_XEN_SCRUB_PAGES=y
   12.27 -CONFIG_X86=y
   12.28 -# CONFIG_X86_64 is not set
   12.29 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   12.30 -
   12.31 -#
   12.32 -# Code maturity level options
   12.33 -#
   12.34 -CONFIG_EXPERIMENTAL=y
   12.35 -# CONFIG_CLEAN_COMPILE is not set
   12.36 -CONFIG_BROKEN=y
   12.37 -CONFIG_BROKEN_ON_SMP=y
   12.38 -CONFIG_LOCK_KERNEL=y
   12.39 -
   12.40 -#
   12.41 -# General setup
   12.42 -#
   12.43 -CONFIG_LOCALVERSION=""
   12.44 -CONFIG_SWAP=y
   12.45 -CONFIG_SYSVIPC=y
   12.46 -# CONFIG_POSIX_MQUEUE is not set
   12.47 -# CONFIG_BSD_PROCESS_ACCT is not set
   12.48 -CONFIG_SYSCTL=y
   12.49 -# CONFIG_AUDIT is not set
   12.50 -CONFIG_LOG_BUF_SHIFT=14
   12.51 -CONFIG_HOTPLUG=y
   12.52 -CONFIG_KOBJECT_UEVENT=y
   12.53 -# CONFIG_IKCONFIG is not set
   12.54 -# CONFIG_EMBEDDED is not set
   12.55 -CONFIG_KALLSYMS=y
   12.56 -# CONFIG_KALLSYMS_EXTRA_PASS is not set
   12.57 -CONFIG_FUTEX=y
   12.58 -CONFIG_EPOLL=y
   12.59 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
   12.60 -CONFIG_SHMEM=y
   12.61 -CONFIG_CC_ALIGN_FUNCTIONS=0
   12.62 -CONFIG_CC_ALIGN_LABELS=0
   12.63 -CONFIG_CC_ALIGN_LOOPS=0
   12.64 -CONFIG_CC_ALIGN_JUMPS=0
   12.65 -# CONFIG_TINY_SHMEM is not set
   12.66 -
   12.67 -#
   12.68 -# Loadable module support
   12.69 -#
   12.70 -CONFIG_MODULES=y
   12.71 -CONFIG_MODULE_UNLOAD=y
   12.72 -# CONFIG_MODULE_FORCE_UNLOAD is not set
   12.73 -CONFIG_OBSOLETE_MODPARM=y
   12.74 -# CONFIG_MODVERSIONS is not set
   12.75 -# CONFIG_MODULE_SRCVERSION_ALL is not set
   12.76 -CONFIG_KMOD=y
   12.77 -
   12.78 -#
   12.79 -# X86 Processor Configuration
   12.80 -#
   12.81 -CONFIG_XENARCH="i386"
   12.82 -CONFIG_MMU=y
   12.83 -CONFIG_UID16=y
   12.84 -CONFIG_GENERIC_ISA_DMA=y
   12.85 -CONFIG_GENERIC_IOMAP=y
   12.86 -# CONFIG_M386 is not set
   12.87 -# CONFIG_M486 is not set
   12.88 -# CONFIG_M586 is not set
   12.89 -# CONFIG_M586TSC is not set
   12.90 -# CONFIG_M586MMX is not set
   12.91 -# CONFIG_M686 is not set
   12.92 -# CONFIG_MPENTIUMII is not set
   12.93 -# CONFIG_MPENTIUMIII is not set
   12.94 -# CONFIG_MPENTIUMM is not set
   12.95 -CONFIG_MPENTIUM4=y
   12.96 -# CONFIG_MK6 is not set
   12.97 -# CONFIG_MK7 is not set
   12.98 -# CONFIG_MK8 is not set
   12.99 -# CONFIG_MCRUSOE is not set
  12.100 -# CONFIG_MEFFICEON is not set
  12.101 -# CONFIG_MWINCHIPC6 is not set
  12.102 -# CONFIG_MWINCHIP2 is not set
  12.103 -# CONFIG_MWINCHIP3D is not set
  12.104 -# CONFIG_MCYRIXIII is not set
  12.105 -# CONFIG_MVIAC3_2 is not set
  12.106 -# CONFIG_X86_GENERIC is not set
  12.107 -CONFIG_X86_CMPXCHG=y
  12.108 -CONFIG_X86_XADD=y
  12.109 -CONFIG_X86_L1_CACHE_SHIFT=7
  12.110 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  12.111 -CONFIG_X86_WP_WORKS_OK=y
  12.112 -CONFIG_X86_INVLPG=y
  12.113 -CONFIG_X86_BSWAP=y
  12.114 -CONFIG_X86_POPAD_OK=y
  12.115 -CONFIG_X86_GOOD_APIC=y
  12.116 -CONFIG_X86_INTEL_USERCOPY=y
  12.117 -CONFIG_X86_USE_PPRO_CHECKSUM=y
  12.118 -# CONFIG_HPET_TIMER is not set
  12.119 -# CONFIG_HPET_EMULATE_RTC is not set
  12.120 -# CONFIG_SMP is not set
  12.121 -CONFIG_PREEMPT=y
  12.122 -CONFIG_MICROCODE=y
  12.123 -CONFIG_X86_CPUID=y
  12.124 -
  12.125 -#
  12.126 -# Firmware Drivers
  12.127 -#
  12.128 -# CONFIG_EDD is not set
  12.129 -CONFIG_NOHIGHMEM=y
  12.130 -# CONFIG_HIGHMEM4G is not set
  12.131 -CONFIG_MTRR=y
  12.132 -CONFIG_HAVE_DEC_LOCK=y
  12.133 -# CONFIG_REGPARM is not set
  12.134 -
  12.135 -#
  12.136 -# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  12.137 -#
  12.138 -CONFIG_PCI=y
  12.139 -CONFIG_PCI_DIRECT=y
  12.140 -CONFIG_PCI_LEGACY_PROC=y
  12.141 -# CONFIG_PCI_NAMES is not set
  12.142 -CONFIG_ISA=y
  12.143 -# CONFIG_EISA is not set
  12.144 -# CONFIG_MCA is not set
  12.145 -# CONFIG_SCx200 is not set
  12.146 -
  12.147 -#
  12.148 -# PCCARD (PCMCIA/CardBus) support
  12.149 -#
  12.150 -# CONFIG_PCCARD is not set
  12.151 -
  12.152 -#
  12.153 -# PC-card bridges
  12.154 -#
  12.155 -CONFIG_PCMCIA_PROBE=y
  12.156 -
  12.157 -#
  12.158 -# PCI Hotplug Support
  12.159 -#
  12.160 -# CONFIG_HOTPLUG_PCI is not set
  12.161 -
  12.162 -#
  12.163 -# Kernel hacking
  12.164 -#
  12.165 -# CONFIG_DEBUG_KERNEL is not set
  12.166 -CONFIG_EARLY_PRINTK=y
  12.167 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
  12.168 -# CONFIG_FRAME_POINTER is not set
  12.169 -# CONFIG_4KSTACKS is not set
  12.170 -CONFIG_GENERIC_HARDIRQS=y
  12.171 -CONFIG_GENERIC_IRQ_PROBE=y
  12.172 -CONFIG_X86_BIOS_REBOOT=y
  12.173 -CONFIG_PC=y
  12.174 -
  12.175 -#
  12.176 -# Executable file formats
  12.177 -#
  12.178 -CONFIG_BINFMT_ELF=y
  12.179 -# CONFIG_BINFMT_AOUT is not set
  12.180 -# CONFIG_BINFMT_MISC is not set
  12.181 -
  12.182 -#
  12.183 -# Device Drivers
  12.184 -#
  12.185 -
  12.186 -#
  12.187 -# Generic Driver Options
  12.188 -#
  12.189 -# CONFIG_STANDALONE is not set
  12.190 -CONFIG_PREVENT_FIRMWARE_BUILD=y
  12.191 -# CONFIG_FW_LOADER is not set
  12.192 -
  12.193 -#
  12.194 -# Memory Technology Devices (MTD)
  12.195 -#
  12.196 -# CONFIG_MTD is not set
  12.197 -
  12.198 -#
  12.199 -# Parallel port support
  12.200 -#
  12.201 -# CONFIG_PARPORT is not set
  12.202 -
  12.203 -#
  12.204 -# Plug and Play support
  12.205 -#
  12.206 -# CONFIG_PNP is not set
  12.207 -
  12.208 -#
  12.209 -# Block devices
  12.210 -#
  12.211 -CONFIG_BLK_DEV_FD=y
  12.212 -# CONFIG_BLK_DEV_XD is not set
  12.213 -# CONFIG_BLK_CPQ_DA is not set
  12.214 -CONFIG_BLK_CPQ_CISS_DA=y
  12.215 -# CONFIG_CISS_SCSI_TAPE is not set
  12.216 -# CONFIG_BLK_DEV_DAC960 is not set
  12.217 -# CONFIG_BLK_DEV_UMEM is not set
  12.218 -CONFIG_BLK_DEV_LOOP=y
  12.219 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set
  12.220 -# CONFIG_BLK_DEV_NBD is not set
  12.221 -# CONFIG_BLK_DEV_SX8 is not set
  12.222 -CONFIG_BLK_DEV_RAM=y
  12.223 -CONFIG_BLK_DEV_RAM_COUNT=16
  12.224 -CONFIG_BLK_DEV_RAM_SIZE=4096
  12.225 -CONFIG_BLK_DEV_INITRD=y
  12.226 -CONFIG_INITRAMFS_SOURCE=""
  12.227 -# CONFIG_LBD is not set
  12.228 -# CONFIG_CDROM_PKTCDVD is not set
  12.229 -
  12.230 -#
  12.231 -# IO Schedulers
  12.232 -#
  12.233 -CONFIG_IOSCHED_NOOP=y
  12.234 -CONFIG_IOSCHED_AS=y
  12.235 -CONFIG_IOSCHED_DEADLINE=y
  12.236 -CONFIG_IOSCHED_CFQ=y
  12.237 -
  12.238 -#
  12.239 -# ATA/ATAPI/MFM/RLL support
  12.240 -#
  12.241 -CONFIG_IDE=y
  12.242 -CONFIG_BLK_DEV_IDE=y
  12.243 -
  12.244 -#
  12.245 -# Please see Documentation/ide.txt for help/info on IDE drives
  12.246 -#
  12.247 -# CONFIG_BLK_DEV_IDE_SATA is not set
  12.248 -# CONFIG_BLK_DEV_HD_IDE is not set
  12.249 -CONFIG_BLK_DEV_IDEDISK=y
  12.250 -# CONFIG_IDEDISK_MULTI_MODE is not set
  12.251 -CONFIG_BLK_DEV_IDECD=y
  12.252 -# CONFIG_BLK_DEV_IDETAPE is not set
  12.253 -# CONFIG_BLK_DEV_IDEFLOPPY is not set
  12.254 -# CONFIG_BLK_DEV_IDESCSI is not set
  12.255 -# CONFIG_IDE_TASK_IOCTL is not set
  12.256 -
  12.257 -#
  12.258 -# IDE chipset support/bugfixes
  12.259 -#
  12.260 -CONFIG_IDE_GENERIC=y
  12.261 -# CONFIG_BLK_DEV_CMD640 is not set
  12.262 -CONFIG_BLK_DEV_IDEPCI=y
  12.263 -# CONFIG_IDEPCI_SHARE_IRQ is not set
  12.264 -# CONFIG_BLK_DEV_OFFBOARD is not set
  12.265 -CONFIG_BLK_DEV_GENERIC=y
  12.266 -# CONFIG_BLK_DEV_OPTI621 is not set
  12.267 -# CONFIG_BLK_DEV_RZ1000 is not set
  12.268 -CONFIG_BLK_DEV_IDEDMA_PCI=y
  12.269 -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  12.270 -CONFIG_IDEDMA_PCI_AUTO=y
  12.271 -# CONFIG_IDEDMA_ONLYDISK is not set
  12.272 -# CONFIG_BLK_DEV_AEC62XX is not set
  12.273 -# CONFIG_BLK_DEV_ALI15X3 is not set
  12.274 -# CONFIG_BLK_DEV_AMD74XX is not set
  12.275 -# CONFIG_BLK_DEV_ATIIXP is not set
  12.276 -# CONFIG_BLK_DEV_CMD64X is not set
  12.277 -# CONFIG_BLK_DEV_TRIFLEX is not set
  12.278 -# CONFIG_BLK_DEV_CY82C693 is not set
  12.279 -# CONFIG_BLK_DEV_CS5520 is not set
  12.280 -# CONFIG_BLK_DEV_CS5530 is not set
  12.281 -# CONFIG_BLK_DEV_HPT34X is not set
  12.282 -# CONFIG_BLK_DEV_HPT366 is not set
  12.283 -# CONFIG_BLK_DEV_SC1200 is not set
  12.284 -CONFIG_BLK_DEV_PIIX=y
  12.285 -# CONFIG_BLK_DEV_NS87415 is not set
  12.286 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set
  12.287 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set
  12.288 -CONFIG_BLK_DEV_SVWKS=y
  12.289 -# CONFIG_BLK_DEV_SIIMAGE is not set
  12.290 -# CONFIG_BLK_DEV_SIS5513 is not set
  12.291 -# CONFIG_BLK_DEV_SLC90E66 is not set
  12.292 -# CONFIG_BLK_DEV_TRM290 is not set
  12.293 -# CONFIG_BLK_DEV_VIA82CXXX is not set
  12.294 -# CONFIG_IDE_ARM is not set
  12.295 -# CONFIG_IDE_CHIPSETS is not set
  12.296 -CONFIG_BLK_DEV_IDEDMA=y
  12.297 -# CONFIG_IDEDMA_IVB is not set
  12.298 -CONFIG_IDEDMA_AUTO=y
  12.299 -# CONFIG_BLK_DEV_HD is not set
  12.300 -
  12.301 -#
  12.302 -# SCSI device support
  12.303 -#
  12.304 -CONFIG_SCSI=y
  12.305 -CONFIG_SCSI_PROC_FS=y
  12.306 -
  12.307 -#
  12.308 -# SCSI support type (disk, tape, CD-ROM)
  12.309 -#
  12.310 -CONFIG_BLK_DEV_SD=y
  12.311 -# CONFIG_CHR_DEV_ST is not set
  12.312 -# CONFIG_CHR_DEV_OSST is not set
  12.313 -# CONFIG_BLK_DEV_SR is not set
  12.314 -# CONFIG_CHR_DEV_SG is not set
  12.315 -
  12.316 -#
  12.317 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
  12.318 -#
  12.319 -# CONFIG_SCSI_MULTI_LUN is not set
  12.320 -# CONFIG_SCSI_CONSTANTS is not set
  12.321 -# CONFIG_SCSI_LOGGING is not set
  12.322 -
  12.323 -#
  12.324 -# SCSI Transport Attributes
  12.325 -#
  12.326 -# CONFIG_SCSI_SPI_ATTRS is not set
  12.327 -# CONFIG_SCSI_FC_ATTRS is not set
  12.328 -
  12.329 -#
  12.330 -# SCSI low-level drivers
  12.331 -#
  12.332 -CONFIG_BLK_DEV_3W_XXXX_RAID=y
  12.333 -# CONFIG_SCSI_3W_9XXX is not set
  12.334 -# CONFIG_SCSI_7000FASST is not set
  12.335 -# CONFIG_SCSI_ACARD is not set
  12.336 -# CONFIG_SCSI_AHA152X is not set
  12.337 -# CONFIG_SCSI_AHA1542 is not set
  12.338 -CONFIG_SCSI_AACRAID=y
  12.339 -CONFIG_SCSI_AIC7XXX=y
  12.340 -CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
  12.341 -CONFIG_AIC7XXX_RESET_DELAY_MS=15000
  12.342 -CONFIG_AIC7XXX_DEBUG_ENABLE=y
  12.343 -CONFIG_AIC7XXX_DEBUG_MASK=0
  12.344 -CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
  12.345 -# CONFIG_SCSI_AIC7XXX_OLD is not set
  12.346 -CONFIG_SCSI_AIC79XX=y
  12.347 -CONFIG_AIC79XX_CMDS_PER_DEVICE=32
  12.348 -CONFIG_AIC79XX_RESET_DELAY_MS=15000
  12.349 -# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
  12.350 -CONFIG_AIC79XX_DEBUG_ENABLE=y
  12.351 -CONFIG_AIC79XX_DEBUG_MASK=0
  12.352 -CONFIG_AIC79XX_REG_PRETTY_PRINT=y
  12.353 -# CONFIG_SCSI_DPT_I2O is not set
  12.354 -# CONFIG_SCSI_ADVANSYS is not set
  12.355 -# CONFIG_SCSI_IN2000 is not set
  12.356 -# CONFIG_MEGARAID_NEWGEN is not set
  12.357 -# CONFIG_MEGARAID_LEGACY is not set
  12.358 -CONFIG_SCSI_SATA=y
  12.359 -# CONFIG_SCSI_SATA_AHCI is not set
  12.360 -# CONFIG_SCSI_SATA_SVW is not set
  12.361 -CONFIG_SCSI_ATA_PIIX=y
  12.362 -# CONFIG_SCSI_SATA_NV is not set
  12.363 -CONFIG_SCSI_SATA_PROMISE=y
  12.364 -CONFIG_SCSI_SATA_SX4=y
  12.365 -CONFIG_SCSI_SATA_SIL=y
  12.366 -# CONFIG_SCSI_SATA_SIS is not set
  12.367 -# CONFIG_SCSI_SATA_ULI is not set
  12.368 -# CONFIG_SCSI_SATA_VIA is not set
  12.369 -# CONFIG_SCSI_SATA_VITESSE is not set
  12.370 -CONFIG_SCSI_BUSLOGIC=y
  12.371 -# CONFIG_SCSI_OMIT_FLASHPOINT is not set
  12.372 -# CONFIG_SCSI_CPQFCTS is not set
  12.373 -# CONFIG_SCSI_DMX3191D is not set
  12.374 -# CONFIG_SCSI_DTC3280 is not set
  12.375 -# CONFIG_SCSI_EATA is not set
  12.376 -# CONFIG_SCSI_EATA_PIO is not set
  12.377 -# CONFIG_SCSI_FUTURE_DOMAIN is not set
  12.378 -# CONFIG_SCSI_GDTH is not set
  12.379 -# CONFIG_SCSI_GENERIC_NCR5380 is not set
  12.380 -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
  12.381 -# CONFIG_SCSI_IPS is not set
  12.382 -# CONFIG_SCSI_INITIO is not set
  12.383 -# CONFIG_SCSI_INIA100 is not set
  12.384 -# CONFIG_SCSI_NCR53C406A is not set
  12.385 -# CONFIG_SCSI_SYM53C8XX_2 is not set
  12.386 -# CONFIG_SCSI_IPR is not set
  12.387 -# CONFIG_SCSI_PAS16 is not set
  12.388 -# CONFIG_SCSI_PCI2000 is not set
  12.389 -# CONFIG_SCSI_PCI2220I is not set
  12.390 -# CONFIG_SCSI_PSI240I is not set
  12.391 -# CONFIG_SCSI_QLOGIC_FAS is not set
  12.392 -# CONFIG_SCSI_QLOGIC_ISP is not set
  12.393 -# CONFIG_SCSI_QLOGIC_FC is not set
  12.394 -# CONFIG_SCSI_QLOGIC_1280 is not set
  12.395 -CONFIG_SCSI_QLA2XXX=y
  12.396 -# CONFIG_SCSI_QLA21XX is not set
  12.397 -# CONFIG_SCSI_QLA22XX is not set
  12.398 -# CONFIG_SCSI_QLA2300 is not set
  12.399 -# CONFIG_SCSI_QLA2322 is not set
  12.400 -# CONFIG_SCSI_QLA6312 is not set
  12.401 -# CONFIG_SCSI_QLA6322 is not set
  12.402 -# CONFIG_SCSI_SEAGATE is not set
  12.403 -# CONFIG_SCSI_SYM53C416 is not set
  12.404 -# CONFIG_SCSI_DC395x is not set
  12.405 -# CONFIG_SCSI_DC390T is not set
  12.406 -# CONFIG_SCSI_T128 is not set
  12.407 -# CONFIG_SCSI_U14_34F is not set
  12.408 -# CONFIG_SCSI_ULTRASTOR is not set
  12.409 -# CONFIG_SCSI_NSP32 is not set
  12.410 -# CONFIG_SCSI_DEBUG is not set
  12.411 -
  12.412 -#
  12.413 -# Old CD-ROM drivers (not SCSI, not IDE)
  12.414 -#
  12.415 -# CONFIG_CD_NO_IDESCSI is not set
  12.416 -
  12.417 -#
  12.418 -# Multi-device support (RAID and LVM)
  12.419 -#
  12.420 -CONFIG_MD=y
  12.421 -CONFIG_BLK_DEV_MD=y
  12.422 -# CONFIG_MD_LINEAR is not set
  12.423 -CONFIG_MD_RAID0=y
  12.424 -CONFIG_MD_RAID1=y
  12.425 -# CONFIG_MD_RAID10 is not set
  12.426 -CONFIG_MD_RAID5=y
  12.427 -# CONFIG_MD_RAID6 is not set
  12.428 -# CONFIG_MD_MULTIPATH is not set
  12.429 -# CONFIG_MD_FAULTY is not set
  12.430 -CONFIG_BLK_DEV_DM=y
  12.431 -# CONFIG_DM_CRYPT is not set
  12.432 -CONFIG_DM_SNAPSHOT=y
  12.433 -CONFIG_DM_MIRROR=y
  12.434 -# CONFIG_DM_ZERO is not set
  12.435 -
  12.436 -#
  12.437 -# Fusion MPT device support
  12.438 -#
  12.439 -# CONFIG_FUSION is not set
  12.440 -
  12.441 -#
  12.442 -# IEEE 1394 (FireWire) support
  12.443 -#
  12.444 -# CONFIG_IEEE1394 is not set
  12.445 -
  12.446 -#
  12.447 -# I2O device support
  12.448 -#
  12.449 -# CONFIG_I2O is not set
  12.450 -
  12.451 -#
  12.452 -# Networking support
  12.453 -#
  12.454 -CONFIG_NET=y
  12.455 -
  12.456 -#
  12.457 -# Networking options
  12.458 -#
  12.459 -CONFIG_PACKET=y
  12.460 -# CONFIG_PACKET_MMAP is not set
  12.461 -# CONFIG_NETLINK_DEV is not set
  12.462 -CONFIG_UNIX=y
  12.463 -# CONFIG_NET_KEY is not set
  12.464 -CONFIG_INET=y
  12.465 -# CONFIG_IP_MULTICAST is not set
  12.466 -# CONFIG_IP_ADVANCED_ROUTER is not set
  12.467 -CONFIG_IP_PNP=y
  12.468 -CONFIG_IP_PNP_DHCP=y
  12.469 -# CONFIG_IP_PNP_BOOTP is not set
  12.470 -# CONFIG_IP_PNP_RARP is not set
  12.471 -# CONFIG_NET_IPIP is not set
  12.472 -# CONFIG_NET_IPGRE is not set
  12.473 -# CONFIG_ARPD is not set
  12.474 -# CONFIG_SYN_COOKIES is not set
  12.475 -# CONFIG_INET_AH is not set
  12.476 -# CONFIG_INET_ESP is not set
  12.477 -# CONFIG_INET_IPCOMP is not set
  12.478 -# CONFIG_INET_TUNNEL is not set
  12.479 -CONFIG_IP_TCPDIAG=y
  12.480 -# CONFIG_IP_TCPDIAG_IPV6 is not set
  12.481 -
  12.482 -#
  12.483 -# IP: Virtual Server Configuration
  12.484 -#
  12.485 -# CONFIG_IP_VS is not set
  12.486 -# CONFIG_IPV6 is not set
  12.487 -CONFIG_NETFILTER=y
  12.488 -# CONFIG_NETFILTER_DEBUG is not set
  12.489 -CONFIG_BRIDGE_NETFILTER=y
  12.490 -
  12.491 -#
  12.492 -# IP: Netfilter Configuration
  12.493 -#
  12.494 -CONFIG_IP_NF_CONNTRACK=m
  12.495 -CONFIG_IP_NF_CT_ACCT=y
  12.496 -# CONFIG_IP_NF_CONNTRACK_MARK is not set
  12.497 -# CONFIG_IP_NF_CT_PROTO_SCTP is not set
  12.498 -CONFIG_IP_NF_FTP=m
  12.499 -# CONFIG_IP_NF_IRC is not set
  12.500 -# CONFIG_IP_NF_TFTP is not set
  12.501 -# CONFIG_IP_NF_AMANDA is not set
  12.502 -# CONFIG_IP_NF_QUEUE is not set
  12.503 -CONFIG_IP_NF_IPTABLES=m
  12.504 -# CONFIG_IP_NF_MATCH_LIMIT is not set
  12.505 -CONFIG_IP_NF_MATCH_IPRANGE=m
  12.506 -# CONFIG_IP_NF_MATCH_MAC is not set
  12.507 -# CONFIG_IP_NF_MATCH_PKTTYPE is not set
  12.508 -# CONFIG_IP_NF_MATCH_MARK is not set
  12.509 -# CONFIG_IP_NF_MATCH_MULTIPORT is not set
  12.510 -# CONFIG_IP_NF_MATCH_TOS is not set
  12.511 -# CONFIG_IP_NF_MATCH_RECENT is not set
  12.512 -# CONFIG_IP_NF_MATCH_ECN is not set
  12.513 -# CONFIG_IP_NF_MATCH_DSCP is not set
  12.514 -# CONFIG_IP_NF_MATCH_AH_ESP is not set
  12.515 -# CONFIG_IP_NF_MATCH_LENGTH is not set
  12.516 -# CONFIG_IP_NF_MATCH_TTL is not set
  12.517 -# CONFIG_IP_NF_MATCH_TCPMSS is not set
  12.518 -# CONFIG_IP_NF_MATCH_HELPER is not set
  12.519 -# CONFIG_IP_NF_MATCH_STATE is not set
  12.520 -# CONFIG_IP_NF_MATCH_CONNTRACK is not set
  12.521 -# CONFIG_IP_NF_MATCH_OWNER is not set
  12.522 -# CONFIG_IP_NF_MATCH_PHYSDEV is not set
  12.523 -# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
  12.524 -# CONFIG_IP_NF_MATCH_REALM is not set
  12.525 -# CONFIG_IP_NF_MATCH_SCTP is not set
  12.526 -# CONFIG_IP_NF_MATCH_COMMENT is not set
  12.527 -# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
  12.528 -CONFIG_IP_NF_FILTER=m
  12.529 -CONFIG_IP_NF_TARGET_REJECT=m
  12.530 -# CONFIG_IP_NF_TARGET_LOG is not set
  12.531 -# CONFIG_IP_NF_TARGET_ULOG is not set
  12.532 -# CONFIG_IP_NF_TARGET_TCPMSS is not set
  12.533 -CONFIG_IP_NF_NAT=m
  12.534 -CONFIG_IP_NF_NAT_NEEDED=y
  12.535 -CONFIG_IP_NF_TARGET_MASQUERADE=m
  12.536 -# CONFIG_IP_NF_TARGET_REDIRECT is not set
  12.537 -# CONFIG_IP_NF_TARGET_NETMAP is not set
  12.538 -# CONFIG_IP_NF_TARGET_SAME is not set
  12.539 -# CONFIG_IP_NF_NAT_LOCAL is not set
  12.540 -# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
  12.541 -CONFIG_IP_NF_NAT_FTP=m
  12.542 -# CONFIG_IP_NF_MANGLE is not set
  12.543 -# CONFIG_IP_NF_RAW is not set
  12.544 -# CONFIG_IP_NF_ARPTABLES is not set
  12.545 -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
  12.546 -# CONFIG_IP_NF_COMPAT_IPFWADM is not set
  12.547 -
  12.548 -#
  12.549 -# Bridge: Netfilter Configuration
  12.550 -#
  12.551 -# CONFIG_BRIDGE_NF_EBTABLES is not set
  12.552 -
  12.553 -#
  12.554 -# SCTP Configuration (EXPERIMENTAL)
  12.555 -#
  12.556 -# CONFIG_IP_SCTP is not set
  12.557 -# CONFIG_ATM is not set
  12.558 -CONFIG_BRIDGE=y
  12.559 -# CONFIG_VLAN_8021Q is not set
  12.560 -# CONFIG_DECNET is not set
  12.561 -# CONFIG_LLC2 is not set
  12.562 -# CONFIG_IPX is not set
  12.563 -# CONFIG_ATALK is not set
  12.564 -# CONFIG_X25 is not set
  12.565 -# CONFIG_LAPB is not set
  12.566 -# CONFIG_NET_DIVERT is not set
  12.567 -# CONFIG_ECONET is not set
  12.568 -# CONFIG_WAN_ROUTER is not set
  12.569 -
  12.570 -#
  12.571 -# QoS and/or fair queueing
  12.572 -#
  12.573 -# CONFIG_NET_SCHED is not set
  12.574 -# CONFIG_NET_CLS_ROUTE is not set
  12.575 -
  12.576 -#
  12.577 -# Network testing
  12.578 -#
  12.579 -# CONFIG_NET_PKTGEN is not set
  12.580 -# CONFIG_NETPOLL is not set
  12.581 -# CONFIG_NET_POLL_CONTROLLER is not set
  12.582 -# CONFIG_HAMRADIO is not set
  12.583 -# CONFIG_IRDA is not set
  12.584 -# CONFIG_BT is not set
  12.585 -CONFIG_NETDEVICES=y
  12.586 -# CONFIG_DUMMY is not set
  12.587 -# CONFIG_BONDING is not set
  12.588 -# CONFIG_EQUALIZER is not set
  12.589 -# CONFIG_TUN is not set
  12.590 -
  12.591 -#
  12.592 -# ARCnet devices
  12.593 -#
  12.594 -# CONFIG_ARCNET is not set
  12.595 -
  12.596 -#
  12.597 -# Ethernet (10 or 100Mbit)
  12.598 -#
  12.599 -CONFIG_NET_ETHERNET=y
  12.600 -CONFIG_MII=y
  12.601 -# CONFIG_HAPPYMEAL is not set
  12.602 -# CONFIG_SUNGEM is not set
  12.603 -CONFIG_NET_VENDOR_3COM=y
  12.604 -# CONFIG_EL1 is not set
  12.605 -# CONFIG_EL2 is not set
  12.606 -# CONFIG_ELPLUS is not set
  12.607 -# CONFIG_EL16 is not set
  12.608 -# CONFIG_EL3 is not set
  12.609 -# CONFIG_3C515 is not set
  12.610 -CONFIG_VORTEX=y
  12.611 -# CONFIG_TYPHOON is not set
  12.612 -# CONFIG_LANCE is not set
  12.613 -# CONFIG_NET_VENDOR_SMC is not set
  12.614 -# CONFIG_NET_VENDOR_RACAL is not set
  12.615 -
  12.616 -#
  12.617 -# Tulip family network device support
  12.618 -#
  12.619 -CONFIG_NET_TULIP=y
  12.620 -# CONFIG_DE2104X is not set
  12.621 -CONFIG_TULIP=y
  12.622 -# CONFIG_TULIP_MWI is not set
  12.623 -# CONFIG_TULIP_MMIO is not set
  12.624 -# CONFIG_TULIP_NAPI is not set
  12.625 -# CONFIG_DE4X5 is not set
  12.626 -# CONFIG_WINBOND_840 is not set
  12.627 -# CONFIG_DM9102 is not set
  12.628 -# CONFIG_AT1700 is not set
  12.629 -# CONFIG_DEPCA is not set
  12.630 -# CONFIG_HP100 is not set
  12.631 -# CONFIG_NET_ISA is not set
  12.632 -CONFIG_NET_PCI=y
  12.633 -CONFIG_PCNET32=y
  12.634 -# CONFIG_AMD8111_ETH is not set
  12.635 -# CONFIG_ADAPTEC_STARFIRE is not set
  12.636 -# CONFIG_AC3200 is not set
  12.637 -# CONFIG_APRICOT is not set
  12.638 -# CONFIG_B44 is not set
  12.639 -# CONFIG_FORCEDETH is not set
  12.640 -# CONFIG_CS89x0 is not set
  12.641 -# CONFIG_DGRS is not set
  12.642 -# CONFIG_EEPRO100 is not set
  12.643 -CONFIG_E100=y
  12.644 -# CONFIG_E100_NAPI is not set
  12.645 -# CONFIG_FEALNX is not set
  12.646 -# CONFIG_NATSEMI is not set
  12.647 -CONFIG_NE2K_PCI=y
  12.648 -# CONFIG_8139CP is not set
  12.649 -CONFIG_8139TOO=y
  12.650 -CONFIG_8139TOO_PIO=y
  12.651 -# CONFIG_8139TOO_TUNE_TWISTER is not set
  12.652 -# CONFIG_8139TOO_8129 is not set
  12.653 -# CONFIG_8139_OLD_RX_RESET is not set
  12.654 -# CONFIG_SIS900 is not set
  12.655 -# CONFIG_EPIC100 is not set
  12.656 -# CONFIG_SUNDANCE is not set
  12.657 -# CONFIG_TLAN is not set
  12.658 -CONFIG_VIA_RHINE=y
  12.659 -# CONFIG_VIA_RHINE_MMIO is not set
  12.660 -# CONFIG_NET_POCKET is not set
  12.661 -
  12.662 -#
  12.663 -# Ethernet (1000 Mbit)
  12.664 -#
  12.665 -CONFIG_ACENIC=y
  12.666 -# CONFIG_ACENIC_OMIT_TIGON_I is not set
  12.667 -# CONFIG_DL2K is not set
  12.668 -CONFIG_E1000=y
  12.669 -# CONFIG_E1000_NAPI is not set
  12.670 -# CONFIG_NS83820 is not set
  12.671 -# CONFIG_HAMACHI is not set
  12.672 -# CONFIG_YELLOWFIN is not set
  12.673 -# CONFIG_R8169 is not set
  12.674 -# CONFIG_SK98LIN is not set
  12.675 -# CONFIG_VIA_VELOCITY is not set
  12.676 -CONFIG_TIGON3=y
  12.677 -
  12.678 -#
  12.679 -# Ethernet (10000 Mbit)
  12.680 -#
  12.681 -# CONFIG_IXGB is not set
  12.682 -# CONFIG_S2IO is not set
  12.683 -
  12.684 -#
  12.685 -# Token Ring devices
  12.686 -#
  12.687 -# CONFIG_TR is not set
  12.688 -
  12.689 -#
  12.690 -# Wireless LAN (non-hamradio)
  12.691 -#
  12.692 -# CONFIG_NET_RADIO is not set
  12.693 -
  12.694 -#
  12.695 -# Wan interfaces
  12.696 -#
  12.697 -# CONFIG_WAN is not set
  12.698 -# CONFIG_FDDI is not set
  12.699 -# CONFIG_HIPPI is not set
  12.700 -# CONFIG_PPP is not set
  12.701 -# CONFIG_SLIP is not set
  12.702 -# CONFIG_NET_FC is not set
  12.703 -# CONFIG_SHAPER is not set
  12.704 -# CONFIG_NETCONSOLE is not set
  12.705 -
  12.706 -#
  12.707 -# ISDN subsystem
  12.708 -#
  12.709 -# CONFIG_ISDN is not set
  12.710 -
  12.711 -#
  12.712 -# Telephony Support
  12.713 -#
  12.714 -# CONFIG_PHONE is not set
  12.715 -
  12.716 -#
  12.717 -# Input device support
  12.718 -#
  12.719 -CONFIG_INPUT=y
  12.720 -
  12.721 -#
  12.722 -# Userland interfaces
  12.723 -#
  12.724 -CONFIG_INPUT_MOUSEDEV=y
  12.725 -CONFIG_INPUT_MOUSEDEV_PSAUX=y
  12.726 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
  12.727 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
  12.728 -# CONFIG_INPUT_JOYDEV is not set
  12.729 -# CONFIG_INPUT_TSDEV is not set
  12.730 -# CONFIG_INPUT_EVDEV is not set
  12.731 -# CONFIG_INPUT_EVBUG is not set
  12.732 -
  12.733 -#
  12.734 -# Input I/O drivers
  12.735 -#
  12.736 -# CONFIG_GAMEPORT is not set
  12.737 -CONFIG_SOUND_GAMEPORT=y
  12.738 -CONFIG_SERIO=y
  12.739 -CONFIG_SERIO_I8042=y
  12.740 -CONFIG_SERIO_SERPORT=y
  12.741 -# CONFIG_SERIO_CT82C710 is not set
  12.742 -# CONFIG_SERIO_PCIPS2 is not set
  12.743 -# CONFIG_SERIO_RAW is not set
  12.744 -
  12.745 -#
  12.746 -# Input Device Drivers
  12.747 -#
  12.748 -CONFIG_INPUT_KEYBOARD=y
  12.749 -CONFIG_KEYBOARD_ATKBD=y
  12.750 -# CONFIG_KEYBOARD_SUNKBD is not set
  12.751 -# CONFIG_KEYBOARD_LKKBD is not set
  12.752 -# CONFIG_KEYBOARD_XTKBD is not set
  12.753 -# CONFIG_KEYBOARD_NEWTON is not set
  12.754 -CONFIG_INPUT_MOUSE=y
  12.755 -CONFIG_MOUSE_PS2=y
  12.756 -# CONFIG_MOUSE_SERIAL is not set
  12.757 -# CONFIG_MOUSE_INPORT is not set
  12.758 -# CONFIG_MOUSE_LOGIBM is not set
  12.759 -# CONFIG_MOUSE_PC110PAD is not set
  12.760 -# CONFIG_MOUSE_VSXXXAA is not set
  12.761 -# CONFIG_INPUT_JOYSTICK is not set
  12.762 -# CONFIG_INPUT_TOUCHSCREEN is not set
  12.763 -# CONFIG_INPUT_MISC is not set
  12.764 -
  12.765 -#
  12.766 -# Character devices
  12.767 -#
  12.768 -CONFIG_VT=y
  12.769 -CONFIG_VT_CONSOLE=y
  12.770 -CONFIG_HW_CONSOLE=y
  12.771 -# CONFIG_SERIAL_NONSTANDARD is not set
  12.772 -
  12.773 -#
  12.774 -# Serial drivers
  12.775 -#
  12.776 -# CONFIG_SERIAL_8250 is not set
  12.777 -
  12.778 -#
  12.779 -# Non-8250 serial port support
  12.780 -#
  12.781 -CONFIG_UNIX98_PTYS=y
  12.782 -CONFIG_LEGACY_PTYS=y
  12.783 -CONFIG_LEGACY_PTY_COUNT=256
  12.784 -
  12.785 -#
  12.786 -# IPMI
  12.787 -#
  12.788 -# CONFIG_IPMI_HANDLER is not set
  12.789 -
  12.790 -#
  12.791 -# Watchdog Cards
  12.792 -#
  12.793 -# CONFIG_WATCHDOG is not set
  12.794 -# CONFIG_HW_RANDOM is not set
  12.795 -# CONFIG_NVRAM is not set
  12.796 -# CONFIG_RTC is not set
  12.797 -# CONFIG_GEN_RTC is not set
  12.798 -# CONFIG_DTLK is not set
  12.799 -# CONFIG_R3964 is not set
  12.800 -# CONFIG_APPLICOM is not set
  12.801 -# CONFIG_SONYPI is not set
  12.802 -
  12.803 -#
  12.804 -# Ftape, the floppy tape device driver
  12.805 -#
  12.806 -# CONFIG_FTAPE is not set
  12.807 -CONFIG_AGP=m
  12.808 -CONFIG_AGP_ALI=m
  12.809 -CONFIG_AGP_ATI=m
  12.810 -CONFIG_AGP_AMD=m
  12.811 -CONFIG_AGP_AMD64=m
  12.812 -CONFIG_AGP_INTEL=m
  12.813 -CONFIG_AGP_INTEL_MCH=m
  12.814 -CONFIG_AGP_NVIDIA=m
  12.815 -CONFIG_AGP_SIS=m
  12.816 -CONFIG_AGP_SWORKS=m
  12.817 -CONFIG_AGP_VIA=m
  12.818 -# CONFIG_AGP_EFFICEON is not set
  12.819 -CONFIG_DRM=y
  12.820 -CONFIG_DRM_TDFX=m
  12.821 -# CONFIG_DRM_GAMMA is not set
  12.822 -CONFIG_DRM_R128=m
  12.823 -CONFIG_DRM_RADEON=m
  12.824 -CONFIG_DRM_I810=m
  12.825 -CONFIG_DRM_I830=m
  12.826 -CONFIG_DRM_I915=m
  12.827 -CONFIG_DRM_MGA=m
  12.828 -CONFIG_DRM_SIS=m
  12.829 -# CONFIG_MWAVE is not set
  12.830 -# CONFIG_RAW_DRIVER is not set
  12.831 -# CONFIG_HANGCHECK_TIMER is not set
  12.832 -
  12.833 -#
  12.834 -# I2C support
  12.835 -#
  12.836 -# CONFIG_I2C is not set
  12.837 -
  12.838 -#
  12.839 -# Dallas's 1-wire bus
  12.840 -#
  12.841 -# CONFIG_W1 is not set
  12.842 -
  12.843 -#
  12.844 -# Misc devices
  12.845 -#
  12.846 -# CONFIG_IBM_ASM is not set
  12.847 -
  12.848 -#
  12.849 -# Multimedia devices
  12.850 -#
  12.851 -# CONFIG_VIDEO_DEV is not set
  12.852 -
  12.853 -#
  12.854 -# Digital Video Broadcasting Devices
  12.855 -#
  12.856 -# CONFIG_DVB is not set
  12.857 -
  12.858 -#
  12.859 -# Graphics support
  12.860 -#
  12.861 -# CONFIG_FB is not set
  12.862 -# CONFIG_VIDEO_SELECT is not set
  12.863 -
  12.864 -#
  12.865 -# Console display driver support
  12.866 -#
  12.867 -CONFIG_VGA_CONSOLE=y
  12.868 -# CONFIG_MDA_CONSOLE is not set
  12.869 -CONFIG_DUMMY_CONSOLE=y
  12.870 -
  12.871 -#
  12.872 -# Sound
  12.873 -#
  12.874 -# CONFIG_SOUND is not set
  12.875 -
  12.876 -#
  12.877 -# USB support
  12.878 -#
  12.879 -# CONFIG_USB is not set
  12.880 -CONFIG_USB_ARCH_HAS_HCD=y
  12.881 -CONFIG_USB_ARCH_HAS_OHCI=y
  12.882 -
  12.883 -#
  12.884 -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
  12.885 -#
  12.886 -
  12.887 -#
  12.888 -# USB Gadget Support
  12.889 -#
  12.890 -# CONFIG_USB_GADGET is not set
  12.891 -
  12.892 -#
  12.893 -# File systems
  12.894 -#
  12.895 -CONFIG_EXT2_FS=y
  12.896 -# CONFIG_EXT2_FS_XATTR is not set
  12.897 -CONFIG_EXT3_FS=y
  12.898 -CONFIG_EXT3_FS_XATTR=y
  12.899 -# CONFIG_EXT3_FS_POSIX_ACL is not set
  12.900 -# CONFIG_EXT3_FS_SECURITY is not set
  12.901 -CONFIG_JBD=y
  12.902 -# CONFIG_JBD_DEBUG is not set
  12.903 -CONFIG_FS_MBCACHE=y
  12.904 -CONFIG_REISERFS_FS=y
  12.905 -# CONFIG_REISERFS_CHECK is not set
  12.906 -# CONFIG_REISERFS_PROC_INFO is not set
  12.907 -# CONFIG_REISERFS_FS_XATTR is not set
  12.908 -# CONFIG_JFS_FS is not set
  12.909 -# CONFIG_XFS_FS is not set
  12.910 -# CONFIG_MINIX_FS is not set
  12.911 -# CONFIG_ROMFS_FS is not set
  12.912 -# CONFIG_QUOTA is not set
  12.913 -CONFIG_DNOTIFY=y
  12.914 -# CONFIG_AUTOFS_FS is not set
  12.915 -# CONFIG_AUTOFS4_FS is not set
  12.916 -
  12.917 -#
  12.918 -# CD-ROM/DVD Filesystems
  12.919 -#
  12.920 -CONFIG_ISO9660_FS=y
  12.921 -CONFIG_JOLIET=y
  12.922 -CONFIG_ZISOFS=y
  12.923 -CONFIG_ZISOFS_FS=y
  12.924 -# CONFIG_UDF_FS is not set
  12.925 -
  12.926 -#
  12.927 -# DOS/FAT/NT Filesystems
  12.928 -#
  12.929 -CONFIG_FAT_FS=m
  12.930 -CONFIG_MSDOS_FS=m
  12.931 -CONFIG_VFAT_FS=m
  12.932 -CONFIG_FAT_DEFAULT_CODEPAGE=437
  12.933 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
  12.934 -# CONFIG_NTFS_FS is not set
  12.935 -
  12.936 -#
  12.937 -# Pseudo filesystems
  12.938 -#
  12.939 -CONFIG_PROC_FS=y
  12.940 -CONFIG_PROC_KCORE=y
  12.941 -CONFIG_SYSFS=y
  12.942 -# CONFIG_DEVFS_FS is not set
  12.943 -# CONFIG_DEVPTS_FS_XATTR is not set
  12.944 -CONFIG_TMPFS=y
  12.945 -# CONFIG_TMPFS_XATTR is not set
  12.946 -# CONFIG_HUGETLBFS is not set
  12.947 -# CONFIG_HUGETLB_PAGE is not set
  12.948 -CONFIG_RAMFS=y
  12.949 -
  12.950 -#
  12.951 -# Miscellaneous filesystems
  12.952 -#
  12.953 -# CONFIG_ADFS_FS is not set
  12.954 -# CONFIG_AFFS_FS is not set
  12.955 -# CONFIG_HFS_FS is not set
  12.956 -# CONFIG_HFSPLUS_FS is not set
  12.957 -# CONFIG_BEFS_FS is not set
  12.958 -# CONFIG_BFS_FS is not set
  12.959 -# CONFIG_EFS_FS is not set
  12.960 -# CONFIG_CRAMFS is not set
  12.961 -# CONFIG_VXFS_FS is not set
  12.962 -# CONFIG_HPFS_FS is not set
  12.963 -# CONFIG_QNX4FS_FS is not set
  12.964 -# CONFIG_SYSV_FS is not set
  12.965 -# CONFIG_UFS_FS is not set
  12.966 -
  12.967 -#
  12.968 -# Network File Systems
  12.969 -#
  12.970 -CONFIG_NFS_FS=y
  12.971 -CONFIG_NFS_V3=y
  12.972 -# CONFIG_NFS_V4 is not set
  12.973 -# CONFIG_NFS_DIRECTIO is not set
  12.974 -CONFIG_NFSD=m
  12.975 -CONFIG_NFSD_V3=y
  12.976 -# CONFIG_NFSD_V4 is not set
  12.977 -CONFIG_NFSD_TCP=y
  12.978 -CONFIG_ROOT_NFS=y
  12.979 -CONFIG_LOCKD=y
  12.980 -CONFIG_LOCKD_V4=y
  12.981 -CONFIG_EXPORTFS=m
  12.982 -CONFIG_SUNRPC=y
  12.983 -# CONFIG_RPCSEC_GSS_KRB5 is not set
  12.984 -# CONFIG_RPCSEC_GSS_SPKM3 is not set
  12.985 -# CONFIG_SMB_FS is not set
  12.986 -# CONFIG_CIFS is not set
  12.987 -# CONFIG_NCP_FS is not set
  12.988 -# CONFIG_CODA_FS is not set
  12.989 -# CONFIG_AFS_FS is not set
  12.990 -
  12.991 -#
  12.992 -# Partition Types
  12.993 -#
  12.994 -# CONFIG_PARTITION_ADVANCED is not set
  12.995 -CONFIG_MSDOS_PARTITION=y
  12.996 -
  12.997 -#
  12.998 -# Native Language Support
  12.999 -#
 12.1000 -CONFIG_NLS=y
 12.1001 -CONFIG_NLS_DEFAULT="iso8859-1"
 12.1002 -CONFIG_NLS_CODEPAGE_437=y
 12.1003 -# CONFIG_NLS_CODEPAGE_737 is not set
 12.1004 -# CONFIG_NLS_CODEPAGE_775 is not set
 12.1005 -# CONFIG_NLS_CODEPAGE_850 is not set
 12.1006 -# CONFIG_NLS_CODEPAGE_852 is not set
 12.1007 -# CONFIG_NLS_CODEPAGE_855 is not set
 12.1008 -# CONFIG_NLS_CODEPAGE_857 is not set
 12.1009 -# CONFIG_NLS_CODEPAGE_860 is not set
 12.1010 -# CONFIG_NLS_CODEPAGE_861 is not set
 12.1011 -# CONFIG_NLS_CODEPAGE_862 is not set
 12.1012 -# CONFIG_NLS_CODEPAGE_863 is not set
 12.1013 -# CONFIG_NLS_CODEPAGE_864 is not set
 12.1014 -# CONFIG_NLS_CODEPAGE_865 is not set
 12.1015 -# CONFIG_NLS_CODEPAGE_866 is not set
 12.1016 -# CONFIG_NLS_CODEPAGE_869 is not set
 12.1017 -# CONFIG_NLS_CODEPAGE_936 is not set
 12.1018 -# CONFIG_NLS_CODEPAGE_950 is not set
 12.1019 -# CONFIG_NLS_CODEPAGE_932 is not set
 12.1020 -# CONFIG_NLS_CODEPAGE_949 is not set
 12.1021 -# CONFIG_NLS_CODEPAGE_874 is not set
 12.1022 -# CONFIG_NLS_ISO8859_8 is not set
 12.1023 -# CONFIG_NLS_CODEPAGE_1250 is not set
 12.1024 -# CONFIG_NLS_CODEPAGE_1251 is not set
 12.1025 -# CONFIG_NLS_ASCII is not set
 12.1026 -CONFIG_NLS_ISO8859_1=y
 12.1027 -# CONFIG_NLS_ISO8859_2 is not set
 12.1028 -# CONFIG_NLS_ISO8859_3 is not set
 12.1029 -# CONFIG_NLS_ISO8859_4 is not set
 12.1030 -# CONFIG_NLS_ISO8859_5 is not set
 12.1031 -# CONFIG_NLS_ISO8859_6 is not set
 12.1032 -# CONFIG_NLS_ISO8859_7 is not set
 12.1033 -# CONFIG_NLS_ISO8859_9 is not set
 12.1034 -# CONFIG_NLS_ISO8859_13 is not set
 12.1035 -# CONFIG_NLS_ISO8859_14 is not set
 12.1036 -# CONFIG_NLS_ISO8859_15 is not set
 12.1037 -# CONFIG_NLS_KOI8_R is not set
 12.1038 -# CONFIG_NLS_KOI8_U is not set
 12.1039 -# CONFIG_NLS_UTF8 is not set
 12.1040 -
 12.1041 -#
 12.1042 -# Security options
 12.1043 -#
 12.1044 -# CONFIG_KEYS is not set
 12.1045 -# CONFIG_SECURITY is not set
 12.1046 -
 12.1047 -#
 12.1048 -# Cryptographic options
 12.1049 -#
 12.1050 -CONFIG_CRYPTO=y
 12.1051 -CONFIG_CRYPTO_HMAC=y
 12.1052 -# CONFIG_CRYPTO_NULL is not set
 12.1053 -# CONFIG_CRYPTO_MD4 is not set
 12.1054 -CONFIG_CRYPTO_MD5=m
 12.1055 -CONFIG_CRYPTO_SHA1=m
 12.1056 -# CONFIG_CRYPTO_SHA256 is not set
 12.1057 -# CONFIG_CRYPTO_SHA512 is not set
 12.1058 -# CONFIG_CRYPTO_WP512 is not set
 12.1059 -CONFIG_CRYPTO_DES=m
 12.1060 -# CONFIG_CRYPTO_BLOWFISH is not set
 12.1061 -# CONFIG_CRYPTO_TWOFISH is not set
 12.1062 -# CONFIG_CRYPTO_SERPENT is not set
 12.1063 -# CONFIG_CRYPTO_AES_586 is not set
 12.1064 -# CONFIG_CRYPTO_CAST5 is not set
 12.1065 -# CONFIG_CRYPTO_CAST6 is not set
 12.1066 -# CONFIG_CRYPTO_TEA is not set
 12.1067 -# CONFIG_CRYPTO_ARC4 is not set
 12.1068 -# CONFIG_CRYPTO_KHAZAD is not set
 12.1069 -# CONFIG_CRYPTO_ANUBIS is not set
 12.1070 -# CONFIG_CRYPTO_DEFLATE is not set
 12.1071 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
 12.1072 -CONFIG_CRYPTO_CRC32C=m
 12.1073 -# CONFIG_CRYPTO_TEST is not set
 12.1074 -
 12.1075 -#
 12.1076 -# Library routines
 12.1077 -#
 12.1078 -# CONFIG_CRC_CCITT is not set
 12.1079 -CONFIG_CRC32=y
 12.1080 -CONFIG_LIBCRC32C=y
 12.1081 -CONFIG_ZLIB_INFLATE=y
    13.1 --- a/linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig	Thu Mar 10 22:09:19 2005 +0000
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,513 +0,0 @@
    13.4 -#
    13.5 -# Automatically generated make config: don't edit
    13.6 -# Linux kernel version: 2.6.10-xenU
    13.7 -# Mon Dec 27 10:15:03 2004
    13.8 -#
    13.9 -CONFIG_XEN=y
   13.10 -CONFIG_ARCH_XEN=y
   13.11 -CONFIG_NO_IDLE_HZ=y
   13.12 -
   13.13 -#
   13.14 -# XEN
   13.15 -#
   13.16 -# CONFIG_XEN_PRIVILEGED_GUEST is not set
   13.17 -# CONFIG_XEN_PHYSDEV_ACCESS is not set
   13.18 -# CONFIG_XEN_BLKDEV_BACKEND is not set
   13.19 -# CONFIG_XEN_NETDEV_BACKEND is not set
   13.20 -CONFIG_XEN_BLKDEV_FRONTEND=y
   13.21 -CONFIG_XEN_NETDEV_FRONTEND=y
   13.22 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
   13.23 -# CONFIG_XEN_BLKDEV_TAP is not set
   13.24 -CONFIG_XEN_WRITABLE_PAGETABLES=y
   13.25 -CONFIG_XEN_SCRUB_PAGES=y
   13.26 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
   13.27 -CONFIG_X86=y
   13.28 -# CONFIG_X86_64 is not set
   13.29 -
   13.30 -#
   13.31 -# Code maturity level options
   13.32 -#
   13.33 -CONFIG_EXPERIMENTAL=y
   13.34 -CONFIG_CLEAN_COMPILE=y
   13.35 -CONFIG_BROKEN_ON_SMP=y
   13.36 -CONFIG_LOCK_KERNEL=y
   13.37 -
   13.38 -#
   13.39 -# General setup
   13.40 -#
   13.41 -CONFIG_LOCALVERSION=""
   13.42 -CONFIG_SWAP=y
   13.43 -CONFIG_SYSVIPC=y
   13.44 -# CONFIG_POSIX_MQUEUE is not set
   13.45 -# CONFIG_BSD_PROCESS_ACCT is not set
   13.46 -CONFIG_SYSCTL=y
   13.47 -# CONFIG_AUDIT is not set
   13.48 -CONFIG_LOG_BUF_SHIFT=14
   13.49 -CONFIG_HOTPLUG=y
   13.50 -CONFIG_KOBJECT_UEVENT=y
   13.51 -# CONFIG_IKCONFIG is not set
   13.52 -# CONFIG_EMBEDDED is not set
   13.53 -CONFIG_KALLSYMS=y
   13.54 -# CONFIG_KALLSYMS_ALL is not set
   13.55 -# CONFIG_KALLSYMS_EXTRA_PASS is not set
   13.56 -CONFIG_FUTEX=y
   13.57 -CONFIG_EPOLL=y
   13.58 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
   13.59 -CONFIG_SHMEM=y
   13.60 -CONFIG_CC_ALIGN_FUNCTIONS=0
   13.61 -CONFIG_CC_ALIGN_LABELS=0
   13.62 -CONFIG_CC_ALIGN_LOOPS=0
   13.63 -CONFIG_CC_ALIGN_JUMPS=0
   13.64 -# CONFIG_TINY_SHMEM is not set
   13.65 -
   13.66 -#
   13.67 -# Loadable module support
   13.68 -#
   13.69 -CONFIG_MODULES=y
   13.70 -CONFIG_MODULE_UNLOAD=y
   13.71 -# CONFIG_MODULE_FORCE_UNLOAD is not set
   13.72 -CONFIG_OBSOLETE_MODPARM=y
   13.73 -# CONFIG_MODVERSIONS is not set
   13.74 -# CONFIG_MODULE_SRCVERSION_ALL is not set
   13.75 -CONFIG_KMOD=y
   13.76 -
   13.77 -#
   13.78 -# X86 Processor Configuration
   13.79 -#
   13.80 -CONFIG_XENARCH="i386"
   13.81 -CONFIG_MMU=y
   13.82 -CONFIG_UID16=y
   13.83 -CONFIG_GENERIC_ISA_DMA=y
   13.84 -CONFIG_GENERIC_IOMAP=y
   13.85 -# CONFIG_M386 is not set
   13.86 -# CONFIG_M486 is not set
   13.87 -# CONFIG_M586 is not set
   13.88 -# CONFIG_M586TSC is not set
   13.89 -# CONFIG_M586MMX is not set
   13.90 -# CONFIG_M686 is not set
   13.91 -# CONFIG_MPENTIUMII is not set
   13.92 -# CONFIG_MPENTIUMIII is not set
   13.93 -# CONFIG_MPENTIUMM is not set
   13.94 -CONFIG_MPENTIUM4=y
   13.95 -# CONFIG_MK6 is not set
   13.96 -# CONFIG_MK7 is not set
   13.97 -# CONFIG_MK8 is not set
   13.98 -# CONFIG_MCRUSOE is not set
   13.99 -# CONFIG_MEFFICEON is not set
  13.100 -# CONFIG_MWINCHIPC6 is not set
  13.101 -# CONFIG_MWINCHIP2 is not set
  13.102 -# CONFIG_MWINCHIP3D is not set
  13.103 -# CONFIG_MCYRIXIII is not set
  13.104 -# CONFIG_MVIAC3_2 is not set
  13.105 -# CONFIG_X86_GENERIC is not set
  13.106 -CONFIG_X86_CMPXCHG=y
  13.107 -CONFIG_X86_XADD=y
  13.108 -CONFIG_X86_L1_CACHE_SHIFT=7
  13.109 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  13.110 -CONFIG_X86_WP_WORKS_OK=y
  13.111 -CONFIG_X86_INVLPG=y
  13.112 -CONFIG_X86_BSWAP=y
  13.113 -CONFIG_X86_POPAD_OK=y
  13.114 -CONFIG_X86_GOOD_APIC=y
  13.115 -CONFIG_X86_INTEL_USERCOPY=y
  13.116 -CONFIG_X86_USE_PPRO_CHECKSUM=y
  13.117 -# CONFIG_HPET_TIMER is not set
  13.118 -# CONFIG_HPET_EMULATE_RTC is not set
  13.119 -# CONFIG_SMP is not set
  13.120 -CONFIG_PREEMPT=y
  13.121 -CONFIG_X86_CPUID=y
  13.122 -
  13.123 -#
  13.124 -# Firmware Drivers
  13.125 -#
  13.126 -# CONFIG_EDD is not set
  13.127 -CONFIG_NOHIGHMEM=y
  13.128 -# CONFIG_HIGHMEM4G is not set
  13.129 -CONFIG_HAVE_DEC_LOCK=y
  13.130 -# CONFIG_REGPARM is not set
  13.131 -
  13.132 -#
  13.133 -# Kernel hacking
  13.134 -#
  13.135 -# CONFIG_DEBUG_KERNEL is not set
  13.136 -CONFIG_EARLY_PRINTK=y
  13.137 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
  13.138 -# CONFIG_FRAME_POINTER is not set
  13.139 -# CONFIG_4KSTACKS is not set
  13.140 -CONFIG_GENERIC_HARDIRQS=y
  13.141 -CONFIG_GENERIC_IRQ_PROBE=y
  13.142 -CONFIG_X86_BIOS_REBOOT=y
  13.143 -CONFIG_PC=y
  13.144 -
  13.145 -#
  13.146 -# Executable file formats
  13.147 -#
  13.148 -CONFIG_BINFMT_ELF=y
  13.149 -# CONFIG_BINFMT_AOUT is not set
  13.150 -# CONFIG_BINFMT_MISC is not set
  13.151 -
  13.152 -#
  13.153 -# Device Drivers
  13.154 -#
  13.155 -
  13.156 -#
  13.157 -# Generic Driver Options
  13.158 -#
  13.159 -CONFIG_STANDALONE=y
  13.160 -CONFIG_PREVENT_FIRMWARE_BUILD=y
  13.161 -# CONFIG_FW_LOADER is not set
  13.162 -# CONFIG_DEBUG_DRIVER is not set
  13.163 -
  13.164 -#
  13.165 -# Block devices
  13.166 -#
  13.167 -# CONFIG_BLK_DEV_FD is not set
  13.168 -CONFIG_BLK_DEV_LOOP=m
  13.169 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set
  13.170 -CONFIG_BLK_DEV_NBD=m
  13.171 -CONFIG_BLK_DEV_RAM=y
  13.172 -CONFIG_BLK_DEV_RAM_COUNT=16
  13.173 -CONFIG_BLK_DEV_RAM_SIZE=4096
  13.174 -CONFIG_BLK_DEV_INITRD=y
  13.175 -CONFIG_INITRAMFS_SOURCE=""
  13.176 -# CONFIG_LBD is not set
  13.177 -# CONFIG_CDROM_PKTCDVD is not set
  13.178 -
  13.179 -#
  13.180 -# IO Schedulers
  13.181 -#
  13.182 -CONFIG_IOSCHED_NOOP=y
  13.183 -CONFIG_IOSCHED_AS=y
  13.184 -CONFIG_IOSCHED_DEADLINE=y
  13.185 -CONFIG_IOSCHED_CFQ=y
  13.186 -
  13.187 -#
  13.188 -# SCSI device support
  13.189 -#
  13.190 -CONFIG_SCSI=m
  13.191 -CONFIG_SCSI_PROC_FS=y
  13.192 -
  13.193 -#
  13.194 -# SCSI support type (disk, tape, CD-ROM)
  13.195 -#
  13.196 -CONFIG_BLK_DEV_SD=m
  13.197 -# CONFIG_CHR_DEV_ST is not set
  13.198 -# CONFIG_CHR_DEV_OSST is not set
  13.199 -# CONFIG_BLK_DEV_SR is not set
  13.200 -# CONFIG_CHR_DEV_SG is not set
  13.201 -
  13.202 -#
  13.203 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
  13.204 -#
  13.205 -# CONFIG_SCSI_MULTI_LUN is not set
  13.206 -# CONFIG_SCSI_CONSTANTS is not set
  13.207 -# CONFIG_SCSI_LOGGING is not set
  13.208 -
  13.209 -#
  13.210 -# SCSI Transport Attributes
  13.211 -#
  13.212 -# CONFIG_SCSI_SPI_ATTRS is not set
  13.213 -# CONFIG_SCSI_FC_ATTRS is not set
  13.214 -
  13.215 -#
  13.216 -# SCSI low-level drivers
  13.217 -#
  13.218 -# CONFIG_SCSI_SATA is not set
  13.219 -# CONFIG_SCSI_DEBUG is not set
  13.220 -
  13.221 -#
  13.222 -# Multi-device support (RAID and LVM)
  13.223 -#
  13.224 -# CONFIG_MD is not set
  13.225 -
  13.226 -#
  13.227 -# Networking support
  13.228 -#
  13.229 -CONFIG_NET=y
  13.230 -
  13.231 -#
  13.232 -# Networking options
  13.233 -#
  13.234 -CONFIG_PACKET=y
  13.235 -# CONFIG_PACKET_MMAP is not set
  13.236 -# CONFIG_NETLINK_DEV is not set
  13.237 -CONFIG_UNIX=y
  13.238 -# CONFIG_NET_KEY is not set
  13.239 -CONFIG_INET=y
  13.240 -# CONFIG_IP_MULTICAST is not set
  13.241 -# CONFIG_IP_ADVANCED_ROUTER is not set
  13.242 -CONFIG_IP_PNP=y
  13.243 -# CONFIG_IP_PNP_DHCP is not set
  13.244 -# CONFIG_IP_PNP_BOOTP is not set
  13.245 -# CONFIG_IP_PNP_RARP is not set
  13.246 -# CONFIG_NET_IPIP is not set
  13.247 -# CONFIG_NET_IPGRE is not set
  13.248 -# CONFIG_ARPD is not set
  13.249 -# CONFIG_SYN_COOKIES is not set
  13.250 -# CONFIG_INET_AH is not set
  13.251 -# CONFIG_INET_ESP is not set
  13.252 -# CONFIG_INET_IPCOMP is not set
  13.253 -# CONFIG_INET_TUNNEL is not set
  13.254 -CONFIG_IP_TCPDIAG=y
  13.255 -# CONFIG_IP_TCPDIAG_IPV6 is not set
  13.256 -# CONFIG_IPV6 is not set
  13.257 -# CONFIG_NETFILTER is not set
  13.258 -
  13.259 -#
  13.260 -# SCTP Configuration (EXPERIMENTAL)
  13.261 -#
  13.262 -# CONFIG_IP_SCTP is not set
  13.263 -# CONFIG_ATM is not set
  13.264 -# CONFIG_BRIDGE is not set
  13.265 -# CONFIG_VLAN_8021Q is not set
  13.266 -# CONFIG_DECNET is not set
  13.267 -# CONFIG_LLC2 is not set
  13.268 -# CONFIG_IPX is not set
  13.269 -# CONFIG_ATALK is not set
  13.270 -# CONFIG_X25 is not set
  13.271 -# CONFIG_LAPB is not set
  13.272 -# CONFIG_NET_DIVERT is not set
  13.273 -# CONFIG_ECONET is not set
  13.274 -# CONFIG_WAN_ROUTER is not set
  13.275 -
  13.276 -#
  13.277 -# QoS and/or fair queueing
  13.278 -#
  13.279 -# CONFIG_NET_SCHED is not set
  13.280 -# CONFIG_NET_CLS_ROUTE is not set
  13.281 -
  13.282 -#
  13.283 -# Network testing
  13.284 -#
  13.285 -# CONFIG_NET_PKTGEN is not set
  13.286 -# CONFIG_NETPOLL is not set
  13.287 -# CONFIG_NET_POLL_CONTROLLER is not set
  13.288 -# CONFIG_HAMRADIO is not set
  13.289 -# CONFIG_IRDA is not set
  13.290 -# CONFIG_BT is not set
  13.291 -CONFIG_NETDEVICES=y
  13.292 -# CONFIG_DUMMY is not set
  13.293 -# CONFIG_BONDING is not set
  13.294 -# CONFIG_EQUALIZER is not set
  13.295 -# CONFIG_TUN is not set
  13.296 -
  13.297 -#
  13.298 -# Ethernet (10 or 100Mbit)
  13.299 -#
  13.300 -# CONFIG_NET_ETHERNET is not set
  13.301 -
  13.302 -#
  13.303 -# Ethernet (1000 Mbit)
  13.304 -#
  13.305 -
  13.306 -#
  13.307 -# Ethernet (10000 Mbit)
  13.308 -#
  13.309 -
  13.310 -#
  13.311 -# Token Ring devices
  13.312 -#
  13.313 -
  13.314 -#
  13.315 -# Wireless LAN (non-hamradio)
  13.316 -#
  13.317 -# CONFIG_NET_RADIO is not set
  13.318 -
  13.319 -#
  13.320 -# Wan interfaces
  13.321 -#
  13.322 -# CONFIG_WAN is not set
  13.323 -# CONFIG_PPP is not set
  13.324 -# CONFIG_SLIP is not set
  13.325 -# CONFIG_SHAPER is not set
  13.326 -# CONFIG_NETCONSOLE is not set
  13.327 -CONFIG_UNIX98_PTYS=y
  13.328 -
  13.329 -#
  13.330 -# File systems
  13.331 -#
  13.332 -CONFIG_EXT2_FS=y
  13.333 -# CONFIG_EXT2_FS_XATTR is not set
  13.334 -CONFIG_EXT3_FS=y
  13.335 -CONFIG_EXT3_FS_XATTR=y
  13.336 -# CONFIG_EXT3_FS_POSIX_ACL is not set
  13.337 -# CONFIG_EXT3_FS_SECURITY is not set
  13.338 -CONFIG_JBD=y
  13.339 -# CONFIG_JBD_DEBUG is not set
  13.340 -CONFIG_FS_MBCACHE=y
  13.341 -CONFIG_REISERFS_FS=y
  13.342 -# CONFIG_REISERFS_CHECK is not set
  13.343 -# CONFIG_REISERFS_PROC_INFO is not set
  13.344 -# CONFIG_REISERFS_FS_XATTR is not set
  13.345 -# CONFIG_JFS_FS is not set
  13.346 -# CONFIG_XFS_FS is not set
  13.347 -# CONFIG_MINIX_FS is not set
  13.348 -# CONFIG_ROMFS_FS is not set
  13.349 -# CONFIG_QUOTA is not set
  13.350 -CONFIG_DNOTIFY=y
  13.351 -CONFIG_AUTOFS_FS=y
  13.352 -CONFIG_AUTOFS4_FS=y
  13.353 -
  13.354 -#
  13.355 -# CD-ROM/DVD Filesystems
  13.356 -#
  13.357 -CONFIG_ISO9660_FS=y
  13.358 -CONFIG_JOLIET=y
  13.359 -CONFIG_ZISOFS=y
  13.360 -CONFIG_ZISOFS_FS=y
  13.361 -# CONFIG_UDF_FS is not set
  13.362 -
  13.363 -#
  13.364 -# DOS/FAT/NT Filesystems
  13.365 -#
  13.366 -CONFIG_FAT_FS=m
  13.367 -CONFIG_MSDOS_FS=m
  13.368 -CONFIG_VFAT_FS=m
  13.369 -CONFIG_FAT_DEFAULT_CODEPAGE=437
  13.370 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
  13.371 -# CONFIG_NTFS_FS is not set
  13.372 -
  13.373 -#
  13.374 -# Pseudo filesystems
  13.375 -#
  13.376 -CONFIG_PROC_FS=y
  13.377 -CONFIG_PROC_KCORE=y
  13.378 -CONFIG_SYSFS=y
  13.379 -# CONFIG_DEVFS_FS is not set
  13.380 -CONFIG_DEVPTS_FS_XATTR=y
  13.381 -# CONFIG_DEVPTS_FS_SECURITY is not set
  13.382 -CONFIG_TMPFS=y
  13.383 -# CONFIG_TMPFS_XATTR is not set
  13.384 -# CONFIG_HUGETLBFS is not set
  13.385 -# CONFIG_HUGETLB_PAGE is not set
  13.386 -CONFIG_RAMFS=y
  13.387 -
  13.388 -#
  13.389 -# Miscellaneous filesystems
  13.390 -#
  13.391 -# CONFIG_ADFS_FS is not set
  13.392 -# CONFIG_AFFS_FS is not set
  13.393 -# CONFIG_HFS_FS is not set
  13.394 -# CONFIG_HFSPLUS_FS is not set
  13.395 -# CONFIG_BEFS_FS is not set
  13.396 -# CONFIG_BFS_FS is not set
  13.397 -# CONFIG_EFS_FS is not set
  13.398 -# CONFIG_CRAMFS is not set
  13.399 -# CONFIG_VXFS_FS is not set
  13.400 -# CONFIG_HPFS_FS is not set
  13.401 -# CONFIG_QNX4FS_FS is not set
  13.402 -# CONFIG_SYSV_FS is not set
  13.403 -# CONFIG_UFS_FS is not set
  13.404 -
  13.405 -#
  13.406 -# Network File Systems
  13.407 -#
  13.408 -CONFIG_NFS_FS=y
  13.409 -CONFIG_NFS_V3=y
  13.410 -# CONFIG_NFS_V4 is not set
  13.411 -# CONFIG_NFS_DIRECTIO is not set
  13.412 -# CONFIG_NFSD is not set
  13.413 -CONFIG_ROOT_NFS=y
  13.414 -CONFIG_LOCKD=y
  13.415 -CONFIG_LOCKD_V4=y
  13.416 -# CONFIG_EXPORTFS is not set
  13.417 -CONFIG_SUNRPC=y
  13.418 -# CONFIG_RPCSEC_GSS_KRB5 is not set
  13.419 -# CONFIG_RPCSEC_GSS_SPKM3 is not set
  13.420 -# CONFIG_SMB_FS is not set
  13.421 -# CONFIG_CIFS is not set
  13.422 -# CONFIG_NCP_FS is not set
  13.423 -# CONFIG_CODA_FS is not set
  13.424 -# CONFIG_AFS_FS is not set
  13.425 -
  13.426 -#
  13.427 -# Partition Types
  13.428 -#
  13.429 -# CONFIG_PARTITION_ADVANCED is not set
  13.430 -CONFIG_MSDOS_PARTITION=y
  13.431 -
  13.432 -#
  13.433 -# Native Language Support
  13.434 -#
  13.435 -CONFIG_NLS=y
  13.436 -CONFIG_NLS_DEFAULT="iso8859-1"
  13.437 -CONFIG_NLS_CODEPAGE_437=y
  13.438 -# CONFIG_NLS_CODEPAGE_737 is not set
  13.439 -# CONFIG_NLS_CODEPAGE_775 is not set
  13.440 -# CONFIG_NLS_CODEPAGE_850 is not set
  13.441 -# CONFIG_NLS_CODEPAGE_852 is not set
  13.442 -# CONFIG_NLS_CODEPAGE_855 is not set
  13.443 -# CONFIG_NLS_CODEPAGE_857 is not set
  13.444 -# CONFIG_NLS_CODEPAGE_860 is not set
  13.445 -# CONFIG_NLS_CODEPAGE_861 is not set
  13.446 -# CONFIG_NLS_CODEPAGE_862 is not set
  13.447 -# CONFIG_NLS_CODEPAGE_863 is not set
  13.448 -# CONFIG_NLS_CODEPAGE_864 is not set
  13.449 -# CONFIG_NLS_CODEPAGE_865 is not set
  13.450 -# CONFIG_NLS_CODEPAGE_866 is not set
  13.451 -# CONFIG_NLS_CODEPAGE_869 is not set
  13.452 -# CONFIG_NLS_CODEPAGE_936 is not set
  13.453 -# CONFIG_NLS_CODEPAGE_950 is not set
  13.454 -# CONFIG_NLS_CODEPAGE_932 is not set
  13.455 -# CONFIG_NLS_CODEPAGE_949 is not set
  13.456 -# CONFIG_NLS_CODEPAGE_874 is not set
  13.457 -# CONFIG_NLS_ISO8859_8 is not set
  13.458 -# CONFIG_NLS_CODEPAGE_1250 is not set
  13.459 -# CONFIG_NLS_CODEPAGE_1251 is not set
  13.460 -# CONFIG_NLS_ASCII is not set
  13.461 -CONFIG_NLS_ISO8859_1=y
  13.462 -# CONFIG_NLS_ISO8859_2 is not set
  13.463 -# CONFIG_NLS_ISO8859_3 is not set
  13.464 -# CONFIG_NLS_ISO8859_4 is not set
  13.465 -# CONFIG_NLS_ISO8859_5 is not set
  13.466 -# CONFIG_NLS_ISO8859_6 is not set
  13.467 -# CONFIG_NLS_ISO8859_7 is not set
  13.468 -# CONFIG_NLS_ISO8859_9 is not set
  13.469 -# CONFIG_NLS_ISO8859_13 is not set
  13.470 -# CONFIG_NLS_ISO8859_14 is not set
  13.471 -# CONFIG_NLS_ISO8859_15 is not set
  13.472 -# CONFIG_NLS_KOI8_R is not set
  13.473 -# CONFIG_NLS_KOI8_U is not set
  13.474 -# CONFIG_NLS_UTF8 is not set
  13.475 -
  13.476 -#
  13.477 -# Security options
  13.478 -#
  13.479 -# CONFIG_KEYS is not set
  13.480 -# CONFIG_SECURITY is not set
  13.481 -
  13.482 -#
  13.483 -# Cryptographic options
  13.484 -#
  13.485 -CONFIG_CRYPTO=y
  13.486 -# CONFIG_CRYPTO_HMAC is not set
  13.487 -# CONFIG_CRYPTO_NULL is not set
  13.488 -# CONFIG_CRYPTO_MD4 is not set
  13.489 -CONFIG_CRYPTO_MD5=m
  13.490 -# CONFIG_CRYPTO_SHA1 is not set
  13.491 -# CONFIG_CRYPTO_SHA256 is not set
  13.492 -# CONFIG_CRYPTO_SHA512 is not set
  13.493 -# CONFIG_CRYPTO_WP512 is not set
  13.494 -# CONFIG_CRYPTO_DES is not set
  13.495 -# CONFIG_CRYPTO_BLOWFISH is not set
  13.496 -# CONFIG_CRYPTO_TWOFISH is not set
  13.497 -# CONFIG_CRYPTO_SERPENT is not set
  13.498 -# CONFIG_CRYPTO_AES_586 is not set
  13.499 -# CONFIG_CRYPTO_CAST5 is not set
  13.500 -# CONFIG_CRYPTO_CAST6 is not set
  13.501 -# CONFIG_CRYPTO_TEA is not set
  13.502 -# CONFIG_CRYPTO_ARC4 is not set
  13.503 -# CONFIG_CRYPTO_KHAZAD is not set
  13.504 -# CONFIG_CRYPTO_ANUBIS is not set
  13.505 -# CONFIG_CRYPTO_DEFLATE is not set
  13.506 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
  13.507 -CONFIG_CRYPTO_CRC32C=m
  13.508 -# CONFIG_CRYPTO_TEST is not set
  13.509 -
  13.510 -#
  13.511 -# Library routines
  13.512 -#
  13.513 -# CONFIG_CRC_CCITT is not set
  13.514 -# CONFIG_CRC32 is not set
  13.515 -CONFIG_LIBCRC32C=m
  13.516 -CONFIG_ZLIB_INFLATE=y
    14.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig	Thu Mar 10 22:09:19 2005 +0000
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,954 +0,0 @@
    14.4 -#
    14.5 -# For a description of the syntax of this configuration file,
    14.6 -# see Documentation/kbuild/kconfig-language.txt.
    14.7 -#
    14.8 -
    14.9 -menu "X86 Processor Configuration"
   14.10 -
   14.11 -config XENARCH
   14.12 -	string
   14.13 -	default i386
   14.14 -
   14.15 -config MMU
   14.16 -	bool
   14.17 -	default y
   14.18 -
   14.19 -config SBUS
   14.20 -	bool
   14.21 -
   14.22 -config UID16
   14.23 -	bool
   14.24 -	default y
   14.25 -
   14.26 -config GENERIC_ISA_DMA
   14.27 -	bool
   14.28 -	default y
   14.29 -
   14.30 -config GENERIC_IOMAP
   14.31 -	bool
   14.32 -	default y
   14.33 -
   14.34 -choice
   14.35 -	prompt "Processor family"
   14.36 -	default M686
   14.37 -
   14.38 -config M386
   14.39 -	bool "386"
   14.40 -	---help---
   14.41 -	  This is the processor type of your CPU. This information is used for
   14.42 -	  optimizing purposes. In order to compile a kernel that can run on
   14.43 -	  all x86 CPU types (albeit not optimally fast), you can specify
   14.44 -	  "386" here.
   14.45 -
   14.46 -	  The kernel will not necessarily run on earlier architectures than
   14.47 -	  the one you have chosen, e.g. a Pentium optimized kernel will run on
   14.48 -	  a PPro, but not necessarily on a i486.
   14.49 -
   14.50 -	  Here are the settings recommended for greatest speed:
   14.51 -	  - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
   14.52 -	  486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
   14.53 -	  will run on a 386 class machine.
   14.54 -	  - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
   14.55 -	  SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
   14.56 -	  - "586" for generic Pentium CPUs lacking the TSC
   14.57 -	  (time stamp counter) register.
   14.58 -	  - "Pentium-Classic" for the Intel Pentium.
   14.59 -	  - "Pentium-MMX" for the Intel Pentium MMX.
   14.60 -	  - "Pentium-Pro" for the Intel Pentium Pro.
   14.61 -	  - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
   14.62 -	  - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
   14.63 -	  - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
   14.64 -	  - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
   14.65 -	  - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
   14.66 -	  - "Crusoe" for the Transmeta Crusoe series.
   14.67 -	  - "Efficeon" for the Transmeta Efficeon series.
   14.68 -	  - "Winchip-C6" for original IDT Winchip.
   14.69 -	  - "Winchip-2" for IDT Winchip 2.
   14.70 -	  - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
   14.71 -	  - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
   14.72 -	  - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
   14.73 -
   14.74 -	  If you don't know what to do, choose "386".
   14.75 -
   14.76 -config M486
   14.77 -	bool "486"
   14.78 -	help
   14.79 -	  Select this for a 486 series processor, either Intel or one of the
   14.80 -	  compatible processors from AMD, Cyrix, IBM, or Intel.  Includes DX,
   14.81 -	  DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
   14.82 -	  U5S.
   14.83 -
   14.84 -config M586
   14.85 -	bool "586/K5/5x86/6x86/6x86MX"
   14.86 -	help
   14.87 -	  Select this for an 586 or 686 series processor such as the AMD K5,
   14.88 -	  the Cyrix 5x86, 6x86 and 6x86MX.  This choice does not
   14.89 -	  assume the RDTSC (Read Time Stamp Counter) instruction.
   14.90 -
   14.91 -config M586TSC
   14.92 -	bool "Pentium-Classic"
   14.93 -	help
   14.94 -	  Select this for a Pentium Classic processor with the RDTSC (Read
   14.95 -	  Time Stamp Counter) instruction for benchmarking.
   14.96 -
   14.97 -config M586MMX
   14.98 -	bool "Pentium-MMX"
   14.99 -	help
  14.100 -	  Select this for a Pentium with the MMX graphics/multimedia
  14.101 -	  extended instructions.
  14.102 -
  14.103 -config M686
  14.104 -	bool "Pentium-Pro"
  14.105 -	help
  14.106 -	  Select this for Intel Pentium Pro chips.  This enables the use of
  14.107 -	  Pentium Pro extended instructions, and disables the init-time guard
  14.108 -	  against the f00f bug found in earlier Pentiums.
  14.109 -
  14.110 -config MPENTIUMII
  14.111 -	bool "Pentium-II/Celeron(pre-Coppermine)"
  14.112 -	help
  14.113 -	  Select this for Intel chips based on the Pentium-II and
  14.114 -	  pre-Coppermine Celeron core.  This option enables an unaligned
  14.115 -	  copy optimization, compiles the kernel with optimization flags
  14.116 -	  tailored for the chip, and applies any applicable Pentium Pro
  14.117 -	  optimizations.
  14.118 -
  14.119 -config MPENTIUMIII
  14.120 -	bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
  14.121 -	help
  14.122 -	  Select this for Intel chips based on the Pentium-III and
  14.123 -	  Celeron-Coppermine core.  This option enables use of some
  14.124 -	  extended prefetch instructions in addition to the Pentium II
  14.125 -	  extensions.
  14.126 -
  14.127 -config MPENTIUMM
  14.128 -	bool "Pentium M"
  14.129 -	help
  14.130 -	  Select this for Intel Pentium M (not Pentium-4 M)
  14.131 -	  notebook chips.
  14.132 -
  14.133 -config MPENTIUM4
  14.134 -	bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon"
  14.135 -	help
  14.136 -	  Select this for Intel Pentium 4 chips.  This includes the
  14.137 -	  Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M
  14.138 -	  (not Pentium M) chips.  This option enables compile flags
  14.139 -	  optimized for the chip, uses the correct cache shift, and
  14.140 -	  applies any applicable Pentium III optimizations.
  14.141 -
  14.142 -config MK6
  14.143 -	bool "K6/K6-II/K6-III"
  14.144 -	help
  14.145 -	  Select this for an AMD K6-family processor.  Enables use of
  14.146 -	  some extended instructions, and passes appropriate optimization
  14.147 -	  flags to GCC.
  14.148 -
  14.149 -config MK7
  14.150 -	bool "Athlon/Duron/K7"
  14.151 -	help
  14.152 -	  Select this for an AMD Athlon K7-family processor.  Enables use of
  14.153 -	  some extended instructions, and passes appropriate optimization
  14.154 -	  flags to GCC.
  14.155 -
  14.156 -config MK8
  14.157 -	bool "Opteron/Athlon64/Hammer/K8"
  14.158 -	help
  14.159 -	  Select this for an AMD Opteron or Athlon64 Hammer-family processor.  Enables
  14.160 -	  use of some extended instructions, and passes appropriate optimization
  14.161 -	  flags to GCC.
  14.162 -
  14.163 -config MCRUSOE
  14.164 -	bool "Crusoe"
  14.165 -	help
  14.166 -	  Select this for a Transmeta Crusoe processor.  Treats the processor
  14.167 -	  like a 586 with TSC, and sets some GCC optimization flags (like a
  14.168 -	  Pentium Pro with no alignment requirements).
  14.169 -
  14.170 -config MEFFICEON
  14.171 -	bool "Efficeon"
  14.172 -	help
  14.173 -	  Select this for a Transmeta Efficeon processor.
  14.174 -
  14.175 -config MWINCHIPC6
  14.176 -	bool "Winchip-C6"
  14.177 -	help
  14.178 -	  Select this for an IDT Winchip C6 chip.  Linux and GCC
  14.179 -	  treat this chip as a 586TSC with some extended instructions
  14.180 -	  and alignment requirements.
  14.181 -
  14.182 -config MWINCHIP2
  14.183 -	bool "Winchip-2"
  14.184 -	help
  14.185 -	  Select this for an IDT Winchip-2.  Linux and GCC
  14.186 -	  treat this chip as a 586TSC with some extended instructions
  14.187 -	  and alignment requirements.
  14.188 -
  14.189 -config MWINCHIP3D
  14.190 -	bool "Winchip-2A/Winchip-3"
  14.191 -	help
  14.192 -	  Select this for an IDT Winchip-2A or 3.  Linux and GCC
  14.193 -	  treat this chip as a 586TSC with some extended instructions
  14.194 -	  and alignment reqirements.  Also enable out of order memory
  14.195 -	  stores for this CPU, which can increase performance of some
  14.196 -	  operations.
  14.197 -
  14.198 -config MCYRIXIII
  14.199 -	bool "CyrixIII/VIA-C3"
  14.200 -	help
  14.201 -	  Select this for a Cyrix III or C3 chip.  Presently Linux and GCC
  14.202 -	  treat this chip as a generic 586. Whilst the CPU is 686 class,
  14.203 -	  it lacks the cmov extension which gcc assumes is present when
  14.204 -	  generating 686 code.
  14.205 -	  Note that Nehemiah (Model 9) and above will not boot with this
  14.206 -	  kernel due to them lacking the 3DNow! instructions used in earlier
  14.207 -	  incarnations of the CPU.
  14.208 -
  14.209 -config MVIAC3_2
  14.210 -	bool "VIA C3-2 (Nehemiah)"
  14.211 -	help
  14.212 -	  Select this for a VIA C3 "Nehemiah". Selecting this enables usage
  14.213 -	  of SSE and tells gcc to treat the CPU as a 686.
  14.214 -	  Note, this kernel will not boot on older (pre model 9) C3s.
  14.215 -
  14.216 -endchoice
  14.217 -
  14.218 -config X86_GENERIC
  14.219 -       bool "Generic x86 support"
  14.220 -       help
  14.221 -	  Instead of just including optimizations for the selected
  14.222 -	  x86 variant (e.g. PII, Crusoe or Athlon), include some more
  14.223 -	  generic optimizations as well. This will make the kernel
  14.224 -	  perform better on x86 CPUs other than that selected.
  14.225 -
  14.226 -	  This is really intended for distributors who need more
  14.227 -	  generic optimizations.
  14.228 -
  14.229 -#
  14.230 -# Define implied options from the CPU selection here
  14.231 -#
  14.232 -config X86_CMPXCHG
  14.233 -	bool
  14.234 -	depends on !M386
  14.235 -	default y
  14.236 -
  14.237 -config X86_XADD
  14.238 -	bool
  14.239 -	depends on !M386
  14.240 -	default y
  14.241 -
  14.242 -config X86_L1_CACHE_SHIFT
  14.243 -	int
  14.244 -	default "7" if MPENTIUM4 || X86_GENERIC
  14.245 -	default "4" if X86_ELAN || M486 || M386
  14.246 -	default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2
  14.247 -	default "6" if MK7 || MK8 || MPENTIUMM
  14.248 -
  14.249 -config RWSEM_GENERIC_SPINLOCK
  14.250 -	bool
  14.251 -	depends on M386
  14.252 -	default y
  14.253 -
  14.254 -config RWSEM_XCHGADD_ALGORITHM
  14.255 -	bool
  14.256 -	depends on !M386
  14.257 -	default y
  14.258 -
  14.259 -config X86_PPRO_FENCE
  14.260 -	bool
  14.261 -	depends on M686 || M586MMX || M586TSC || M586 || M486 || M386
  14.262 -	default y
  14.263 -
  14.264 -config X86_F00F_BUG
  14.265 -	bool
  14.266 -	depends on M586MMX || M586TSC || M586 || M486 || M386
  14.267 -	default y
  14.268 -
  14.269 -config X86_WP_WORKS_OK
  14.270 -	bool
  14.271 -	depends on !M386
  14.272 -	default y
  14.273 -
  14.274 -config X86_INVLPG
  14.275 -	bool
  14.276 -	depends on !M386
  14.277 -	default y
  14.278 -
  14.279 -config X86_BSWAP
  14.280 -	bool
  14.281 -	depends on !M386
  14.282 -	default y
  14.283 -
  14.284 -config X86_POPAD_OK
  14.285 -	bool
  14.286 -	depends on !M386
  14.287 -	default y
  14.288 -
  14.289 -config X86_ALIGNMENT_16
  14.290 -	bool
  14.291 -	depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2
  14.292 -	default y
  14.293 -
  14.294 -config X86_GOOD_APIC
  14.295 -	bool
  14.296 -	depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON
  14.297 -	default y
  14.298 -
  14.299 -config X86_INTEL_USERCOPY
  14.300 -	bool
  14.301 -	depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON
  14.302 -	default y
  14.303 -
  14.304 -config X86_USE_PPRO_CHECKSUM
  14.305 -	bool
  14.306 -	depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON
  14.307 -	default y
  14.308 -
  14.309 -config X86_USE_3DNOW
  14.310 -	bool
  14.311 -	depends on MCYRIXIII || MK7
  14.312 -	default y
  14.313 -
  14.314 -config X86_OOSTORE
  14.315 -	bool
  14.316 -	depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
  14.317 -	default y
  14.318 -
  14.319 -config HPET_TIMER
  14.320 -	bool
  14.321 -	default n
  14.322 -#config HPET_TIMER
  14.323 -#	bool "HPET Timer Support"
  14.324 -#	help
  14.325 -#	  This enables the use of the HPET for the kernel's internal timer.
  14.326 -#	  HPET is the next generation timer replacing legacy 8254s.
  14.327 -#	  You can safely choose Y here.  However, HPET will only be
  14.328 -#	  activated if the platform and the BIOS support this feature.
  14.329 -#	  Otherwise the 8254 will be used for timing services.
  14.330 -#
  14.331 -#	  Choose N to continue using the legacy 8254 timer.
  14.332 -
  14.333 -config HPET_EMULATE_RTC
  14.334 -	def_bool HPET_TIMER && RTC=y
  14.335 -
  14.336 -config SMP
  14.337 -	bool "Symmetric multi-processing support"
  14.338 -	---help---
  14.339 -	  This enables support for systems with more than one CPU. If you have
  14.340 -	  a system with only one CPU, like most personal computers, say N. If
  14.341 -	  you have a system with more than one CPU, say Y.
  14.342 -
  14.343 -	  If you say N here, the kernel will run on single and multiprocessor
  14.344 -	  machines, but will use only one CPU of a multiprocessor machine. If
  14.345 -	  you say Y here, the kernel will run on many, but not all,
  14.346 -	  singleprocessor machines. On a singleprocessor machine, the kernel
  14.347 -	  will run faster if you say N here.
  14.348 -
  14.349 -	  Note that if you say Y here and choose architecture "586" or
  14.350 -	  "Pentium" under "Processor family", the kernel will not work on 486
  14.351 -	  architectures. Similarly, multiprocessor kernels for the "PPro"
  14.352 -	  architecture may not work on all Pentium based boards.
  14.353 -
  14.354 -	  People using multiprocessor machines who say Y here should also say
  14.355 -	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
  14.356 -	  Management" code will be disabled if you say Y here.
  14.357 -
  14.358 -	  See also the <file:Documentation/smp.txt>,
  14.359 -	  <file:Documentation/i386/IO-APIC.txt>,
  14.360 -	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
  14.361 -	  <http://www.tldp.org/docs.html#howto>.
  14.362 -
  14.363 -	  If you don't know what to do here, say N.
  14.364 -
  14.365 -config NR_CPUS
  14.366 -	int "Maximum number of CPUs (2-255)"
  14.367 -	range 2 255
  14.368 -	depends on SMP
  14.369 -	default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
  14.370 -	default "8"
  14.371 -	help
  14.372 -	  This allows you to specify the maximum number of CPUs which this
  14.373 -	  kernel will support.  The maximum supported value is 255 and the
  14.374 -	  minimum value which makes sense is 2.
  14.375 -
  14.376 -	  This is purely to save memory - each supported CPU adds
  14.377 -	  approximately eight kilobytes to the kernel image.
  14.378 -
  14.379 -config SCHED_SMT
  14.380 -	bool "SMT (Hyperthreading) scheduler support"
  14.381 -	depends on SMP
  14.382 -	default off
  14.383 -	help
  14.384 -	  SMT scheduler support improves the CPU scheduler's decision making
  14.385 -	  when dealing with Intel Pentium 4 chips with HyperThreading at a
  14.386 -	  cost of slightly increased overhead in some places. If unsure say
  14.387 -	  N here.
  14.388 -
  14.389 -config PREEMPT
  14.390 -	bool "Preemptible Kernel"
  14.391 -	help
  14.392 -	  This option reduces the latency of the kernel when reacting to
  14.393 -	  real-time or interactive events by allowing a low priority process to
  14.394 -	  be preempted even if it is in kernel mode executing a system call.
  14.395 -	  This allows applications to run more reliably even when the system is
  14.396 -	  under load.
  14.397 -
  14.398 -	  Say Y here if you are building a kernel for a desktop, embedded
  14.399 -	  or real-time system.  Say N if you are unsure.
  14.400 -
  14.401 -#config X86_TSC
  14.402 -#	 bool
  14.403 -#	depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ
  14.404 -#	 default y
  14.405 -
  14.406 -#config X86_MCE
  14.407 -#	 bool "Machine Check Exception"
  14.408 -#	depends on !X86_VOYAGER
  14.409 -#	 ---help---
  14.410 -#	   Machine Check Exception support allows the processor to notify the
  14.411 -#	   kernel if it detects a problem (e.g. overheating, component failure).
  14.412 -#	   The action the kernel takes depends on the severity of the problem,
  14.413 -#	   ranging from a warning message on the console, to halting the machine.
  14.414 -#	   Your processor must be a Pentium or newer to support this - check the
  14.415 -#	   flags in /proc/cpuinfo for mce.  Note that some older Pentium systems
  14.416 -#	   have a design flaw which leads to false MCE events - hence MCE is
  14.417 -#	   disabled on all P5 processors, unless explicitly enabled with "mce"
  14.418 -#	   as a boot argument.  Similarly, if MCE is built in and creates a
  14.419 -#	   problem on some new non-standard machine, you can boot with "nomce"
  14.420 -#	   to disable it.  MCE support simply ignores non-MCE processors like
  14.421 -#	   the 386 and 486, so nearly everyone can say Y here.
  14.422 -
  14.423 -#config X86_MCE_NONFATAL
  14.424 -#	tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
  14.425 -#	 depends on X86_MCE
  14.426 -#	 help
  14.427 -#	   Enabling this feature starts a timer that triggers every 5 seconds which
  14.428 -#	   will look at the machine check registers to see if anything happened.
  14.429 -#	   Non-fatal problems automatically get corrected (but still logged).
  14.430 -#	   Disable this if you don't want to see these messages.
  14.431 -#	   Seeing the messages this option prints out may be indicative of dying hardware,
  14.432 -#	   or out-of-spec (ie, overclocked) hardware.
  14.433 -#	   This option only does something on certain CPUs.
  14.434 -#	   (AMD Athlon/Duron and Intel Pentium 4)
  14.435 -
  14.436 -#config X86_MCE_P4THERMAL
  14.437 -#	 bool "check for P4 thermal throttling interrupt."
  14.438 -#	 depends on X86_MCE && (X86_UP_APIC || SMP)
  14.439 -#	 help
  14.440 -#	   Enabling this feature will cause a message to be printed when the P4
  14.441 -#	   enters thermal throttling.
  14.442 -
  14.443 -config MICROCODE
  14.444 -	 tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
  14.445 -	 depends on XEN_PRIVILEGED_GUEST
  14.446 -	 ---help---
  14.447 -	   If you say Y here and also to "/dev file system support" in the
  14.448 -	   'File systems' section, you will be able to update the microcode on
  14.449 -	   Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II,
  14.450 -	   Pentium III, Pentium 4, Xeon etc.  You will obviously need the
  14.451 -	   actual microcode binary data itself which is not shipped with the
  14.452 -	   Linux kernel.
  14.453 -
  14.454 -	   For latest news and information on obtaining all the required
  14.455 -	   ingredients for this driver, check:
  14.456 -	   <http://www.urbanmyth.org/microcode/>.
  14.457 -
  14.458 -	   To compile this driver as a module, choose M here: the
  14.459 -	   module will be called microcode.
  14.460 -
  14.461 -#config X86_MSR
  14.462 -#	 tristate "/dev/cpu/*/msr - Model-specific register support"
  14.463 -#	 help
  14.464 -#	   This device gives privileged processes access to the x86
  14.465 -#	   Model-Specific Registers (MSRs).  It is a character device with
  14.466 -#	   major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
  14.467 -#	   MSR accesses are directed to a specific CPU on multi-processor
  14.468 -#	   systems.
  14.469 -
  14.470 -config X86_CPUID
  14.471 -	tristate "/dev/cpu/*/cpuid - CPU information support"
  14.472 -	help
  14.473 -	  This device gives processes access to the x86 CPUID instruction to
  14.474 -	  be executed on a specific processor.  It is a character device
  14.475 -	  with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
  14.476 -	  /dev/cpu/31/cpuid.
  14.477 -
  14.478 -source "drivers/firmware/Kconfig"
  14.479 -
  14.480 -choice
  14.481 -	prompt "High Memory Support"
  14.482 -	default NOHIGHMEM
  14.483 -
  14.484 -config NOHIGHMEM
  14.485 -	bool "off"
  14.486 -	---help---
  14.487 -	  Linux can use up to 64 Gigabytes of physical memory on x86 systems.
  14.488 -	  However, the address space of 32-bit x86 processors is only 4
  14.489 -	  Gigabytes large. That means that, if you have a large amount of
  14.490 -	  physical memory, not all of it can be "permanently mapped" by the
  14.491 -	  kernel. The physical memory that's not permanently mapped is called
  14.492 -	  "high memory".
  14.493 -
  14.494 -	  If you are compiling a kernel which will never run on a machine with
  14.495 -	  more than 1 Gigabyte total physical RAM, answer "off" here (default
  14.496 -	  choice and suitable for most users). This will result in a "3GB/1GB"
  14.497 -	  split: 3GB are mapped so that each process sees a 3GB virtual memory
  14.498 -	  space and the remaining part of the 4GB virtual memory space is used
  14.499 -	  by the kernel to permanently map as much physical memory as
  14.500 -	  possible.
  14.501 -
  14.502 -	  If the machine has between 1 and 4 Gigabytes physical RAM, then
  14.503 -	  answer "4GB" here.
  14.504 -
  14.505 -	  If more than 4 Gigabytes is used then answer "64GB" here. This
  14.506 -	  selection turns Intel PAE (Physical Address Extension) mode on.
  14.507 -	  PAE implements 3-level paging on IA32 processors. PAE is fully
  14.508 -	  supported by Linux, PAE mode is implemented on all recent Intel
  14.509 -	  processors (Pentium Pro and better). NOTE: If you say "64GB" here,
  14.510 -	  then the kernel will not boot on CPUs that don't support PAE!
  14.511 -
  14.512 -	  The actual amount of total physical memory will either be
  14.513 -	  auto detected or can be forced by using a kernel command line option
  14.514 -	  such as "mem=256M". (Try "man bootparam" or see the documentation of
  14.515 -	  your boot loader (lilo or loadlin) about how to pass options to the
  14.516 -	  kernel at boot time.)
  14.517 -
  14.518 -	  If unsure, say "off".
  14.519 -
  14.520 -config HIGHMEM4G
  14.521 -	bool "4GB"
  14.522 -	help
  14.523 -	  Select this if you have a 32-bit processor and between 1 and 4
  14.524 -	  gigabytes of physical RAM.
  14.525 -
  14.526 -#config HIGHMEM64G
  14.527 -#	bool "64GB"
  14.528 -#	help
  14.529 -#	  Select this if you have a 32-bit processor and more than 4
  14.530 -#	  gigabytes of physical RAM.
  14.531 -
  14.532 -endchoice
  14.533 -
  14.534 -config HIGHMEM
  14.535 -	bool
  14.536 -	depends on HIGHMEM64G || HIGHMEM4G
  14.537 -	default y
  14.538 -
  14.539 -config X86_PAE
  14.540 -	bool
  14.541 -	depends on HIGHMEM64G
  14.542 -	default y
  14.543 -
  14.544 -# Common NUMA Features
  14.545 -config NUMA
  14.546 -	bool "Numa Memory Allocation and Scheduler Support"
  14.547 -	depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI))
  14.548 -	default n if X86_PC
  14.549 -	default y if (X86_NUMAQ || X86_SUMMIT)
  14.550 -
  14.551 -# Need comments to help the hapless user trying to turn on NUMA support
  14.552 -comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
  14.553 -	depends on X86_NUMAQ && (!HIGHMEM64G || !SMP)
  14.554 -
  14.555 -comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
  14.556 -	depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
  14.557 -
  14.558 -config DISCONTIGMEM
  14.559 -	bool
  14.560 -	depends on NUMA
  14.561 -	default y
  14.562 -
  14.563 -config HAVE_ARCH_BOOTMEM_NODE
  14.564 -	bool
  14.565 -	depends on NUMA
  14.566 -	default y
  14.567 -
  14.568 -#config HIGHPTE
  14.569 -#	bool "Allocate 3rd-level pagetables from highmem"
  14.570 -#	depends on HIGHMEM4G || HIGHMEM64G
  14.571 -#	help
  14.572 -#	  The VM uses one page table entry for each page of physical memory.
  14.573 -#	  For systems with a lot of RAM, this can be wasteful of precious
  14.574 -#	  low memory.  Setting this option will put user-space page table
  14.575 -#	  entries in high memory.
  14.576 -
  14.577 -config MTRR
  14.578 -	bool
  14.579 -	depends on XEN_PRIVILEGED_GUEST
  14.580 -	default y
  14.581 -
  14.582 -#config MTRR
  14.583 -#	 bool "MTRR (Memory Type Range Register) support"
  14.584 -#	 ---help---
  14.585 -#	   On Intel P6 family processors (Pentium Pro, Pentium II and later)
  14.586 -#	   the Memory Type Range Registers (MTRRs) may be used to control
  14.587 -#	   processor access to memory ranges. This is most useful if you have
  14.588 -#	   a video (VGA) card on a PCI or AGP bus. Enabling write-combining
  14.589 -#	   allows bus write transfers to be combined into a larger transfer
  14.590 -#	   before bursting over the PCI/AGP bus. This can increase performance
  14.591 -#	   of image write operations 2.5 times or more. Saying Y here creates a
  14.592 -#	   /proc/mtrr file which may be used to manipulate your processor's
  14.593 -#	   MTRRs. Typically the X server should use this.
  14.594 -#
  14.595 -#	   This code has a reasonably generic interface so that similar
  14.596 -#	   control registers on other processors can be easily supported
  14.597 -#	   as well:
  14.598 -#
  14.599 -#	   The Cyrix 6x86, 6x86MX and M II processors have Address Range
  14.600 -#	   Registers (ARRs) which provide a similar functionality to MTRRs. For
  14.601 -#	   these, the ARRs are used to emulate the MTRRs.
  14.602 -#	   The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
  14.603 -#	   MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
  14.604 -#	   write-combining. All of these processors are supported by this code
  14.605 -#	   and it makes sense to say Y here if you have one of them.
  14.606 -#
  14.607 -#	   Saying Y here also fixes a problem with buggy SMP BIOSes which only
  14.608 -#	   set the MTRRs for the boot CPU and not for the secondary CPUs. This
  14.609 -#	   can lead to all sorts of problems, so it's good to say Y here.
  14.610 -#
  14.611 -#	   You can safely say Y even if your machine doesn't have MTRRs, you'll
  14.612 -#	   just add about 9 KB to your kernel.
  14.613 -#
  14.614 -#	   See <file:Documentation/mtrr.txt> for more information.
  14.615 -
  14.616 -config IRQBALANCE
  14.617 - 	bool "Enable kernel irq balancing"
  14.618 -	depends on SMP && X86_IO_APIC
  14.619 -	default y
  14.620 -	help
  14.621 - 	  The default yes will allow the kernel to do irq load balancing.
  14.622 -	  Saying no will keep the kernel from doing irq load balancing.
  14.623 -
  14.624 -config HAVE_DEC_LOCK
  14.625 -	bool
  14.626 -	depends on (SMP || PREEMPT) && X86_CMPXCHG
  14.627 -	default y
  14.628 -
  14.629 -# turning this on wastes a bunch of space.
  14.630 -# Summit needs it only when NUMA is on
  14.631 -config BOOT_IOREMAP
  14.632 -	bool
  14.633 -	depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI))
  14.634 -	default y
  14.635 -
  14.636 -config REGPARM
  14.637 -	bool "Use register arguments (EXPERIMENTAL)"
  14.638 -	depends on EXPERIMENTAL
  14.639 -	default n
  14.640 -	help
  14.641 -	Compile the kernel with -mregparm=3. This uses an different ABI
  14.642 -	and passes the first three arguments of a function call in registers.
  14.643 -	This will probably break binary only modules.
  14.644 -
  14.645 -	This feature is only enabled for gcc-3.0 and later - earlier compilers
  14.646 -	generate incorrect output with certain kernel constructs when
  14.647 -	-mregparm=3 is used.
  14.648 -
  14.649 -
  14.650 -config X86_LOCAL_APIC
  14.651 -	bool
  14.652 -	depends on (X86_VISWS || SMP) && !X86_VOYAGER
  14.653 -	default n
  14.654 -
  14.655 -if XEN_PHYSDEV_ACCESS
  14.656 -
  14.657 -menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
  14.658 -
  14.659 -config X86_VISWS_APIC
  14.660 -	bool
  14.661 -	depends on X86_VISWS
  14.662 -	default y
  14.663 -
  14.664 -#config X86_IO_APIC
  14.665 -#	bool
  14.666 -#	depends on SMP && !(X86_VISWS || X86_VOYAGER)
  14.667 -#	default y
  14.668 -
  14.669 -config PCI
  14.670 -	bool "PCI support" if !X86_VISWS
  14.671 -	depends on !X86_VOYAGER
  14.672 -	default y if X86_VISWS
  14.673 -	help
  14.674 -	  Find out whether you have a PCI motherboard. PCI is the name of a
  14.675 -	  bus system, i.e. the way the CPU talks to the other stuff inside
  14.676 -	  your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
  14.677 -	  VESA. If you have PCI, say Y, otherwise N.
  14.678 -
  14.679 -	  The PCI-HOWTO, available from
  14.680 -	  <http://www.tldp.org/docs.html#howto>, contains valuable
  14.681 -	  information about which PCI hardware does work under Linux and which
  14.682 -	  doesn't.
  14.683 -
  14.684 -#choice
  14.685 -#	prompt "PCI access mode"
  14.686 -#	depends on PCI && !X86_VISWS
  14.687 -#	default PCI_GOANY
  14.688 -#	---help---
  14.689 -#	  On PCI systems, the BIOS can be used to detect the PCI devices and
  14.690 -#	  determine their configuration. However, some old PCI motherboards
  14.691 -#	  have BIOS bugs and may crash if this is done. Also, some embedded
  14.692 -#	  PCI-based systems don't have any BIOS at all. Linux can also try to
  14.693 -#	  detect the PCI hardware directly without using the BIOS.
  14.694 -#
  14.695 -#	  With this option, you can specify how Linux should detect the
  14.696 -#	  PCI devices. If you choose "BIOS", the BIOS will be used,
  14.697 -#	  if you choose "Direct", the BIOS won't be used, and if you
  14.698 -#	  choose "MMConfig", then PCI Express MMCONFIG will be used.
  14.699 -#	  If you choose "Any", the kernel will try MMCONFIG, then the
  14.700 -#	  direct access method and falls back to the BIOS if that doesn't
  14.701 -#	  work. If unsure, go with the default, which is "Any".
  14.702 -#
  14.703 -#config PCI_GOBIOS
  14.704 -#	bool "BIOS"
  14.705 -#
  14.706 -#config PCI_GOMMCONFIG
  14.707 -#	bool "MMConfig"
  14.708 -#
  14.709 -#config PCI_GODIRECT
  14.710 -#	bool "Direct"
  14.711 -#
  14.712 -#config PCI_GOANY
  14.713 -#	bool "Any"
  14.714 -#
  14.715 -#endchoice
  14.716 -#
  14.717 -#config PCI_BIOS
  14.718 -#	bool
  14.719 -#	depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
  14.720 -#	default y
  14.721 -#
  14.722 -#config PCI_DIRECT
  14.723 -#	bool
  14.724 -# 	depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS)
  14.725 -#	default y
  14.726 -
  14.727 -config PCI_DIRECT
  14.728 -	bool
  14.729 - 	depends on PCI
  14.730 -	default y
  14.731 -
  14.732 -source "drivers/pci/Kconfig"
  14.733 -
  14.734 -config ISA
  14.735 -	bool "ISA support"
  14.736 -	depends on !(X86_VOYAGER || X86_VISWS)
  14.737 -	help
  14.738 -	  Find out whether you have ISA slots on your motherboard.  ISA is the
  14.739 -	  name of a bus system, i.e. the way the CPU talks to the other stuff
  14.740 -	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
  14.741 -	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
  14.742 -	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
  14.743 -
  14.744 -config EISA
  14.745 -	bool "EISA support"
  14.746 -	depends on ISA
  14.747 -	---help---
  14.748 -	  The Extended Industry Standard Architecture (EISA) bus was
  14.749 -	  developed as an open alternative to the IBM MicroChannel bus.
  14.750 -
  14.751 -	  The EISA bus provided some of the features of the IBM MicroChannel
  14.752 -	  bus while maintaining backward compatibility with cards made for
  14.753 -	  the older ISA bus.  The EISA bus saw limited use between 1988 and
  14.754 -	  1995 when it was made obsolete by the PCI bus.
  14.755 -
  14.756 -	  Say Y here if you are building a kernel for an EISA-based machine.
  14.757 -
  14.758 -	  Otherwise, say N.
  14.759 -
  14.760 -source "drivers/eisa/Kconfig"
  14.761 -
  14.762 -config MCA
  14.763 -	bool "MCA support"
  14.764 -	depends on !(X86_VISWS || X86_VOYAGER)
  14.765 -	help
  14.766 -	  MicroChannel Architecture is found in some IBM PS/2 machines and
  14.767 -	  laptops.  It is a bus system similar to PCI or ISA. See
  14.768 -	  <file:Documentation/mca.txt> (and especially the web page given
  14.769 -	  there) before attempting to build an MCA bus kernel.
  14.770 -
  14.771 -config MCA
  14.772 -	depends on X86_VOYAGER
  14.773 -	default y if X86_VOYAGER
  14.774 -
  14.775 -source "drivers/mca/Kconfig"
  14.776 -
  14.777 -config SCx200
  14.778 -	tristate "NatSemi SCx200 support"
  14.779 -	depends on !X86_VOYAGER
  14.780 -	help
  14.781 -	  This provides basic support for the National Semiconductor SCx200
  14.782 -	  processor.  Right now this is just a driver for the GPIO pins.
  14.783 -
  14.784 -	  If you don't know what to do here, say N.
  14.785 -
  14.786 -	  This support is also available as a module.  If compiled as a
  14.787 -	  module, it will be called scx200.
  14.788 -
  14.789 -source "drivers/pcmcia/Kconfig"
  14.790 -
  14.791 -source "drivers/pci/hotplug/Kconfig"
  14.792 -
  14.793 -endmenu
  14.794 -
  14.795 -endif
  14.796 -
  14.797 -menu "Kernel hacking"
  14.798 -
  14.799 -config DEBUG_KERNEL
  14.800 -	bool "Kernel debugging"
  14.801 -	help
  14.802 -	  Say Y here if you are developing drivers or trying to debug and
  14.803 -	  identify kernel problems.
  14.804 -
  14.805 -config EARLY_PRINTK
  14.806 -	bool "Early printk" if EMBEDDED
  14.807 -	default y
  14.808 -	help
  14.809 -	  Write kernel log output directly into the VGA buffer or to a serial
  14.810 -	  port.
  14.811 -
  14.812 -	  This is useful for kernel debugging when your machine crashes very
  14.813 -	  early before the console code is initialized. For normal operation
  14.814 -	  it is not recommended because it looks ugly and doesn't cooperate
  14.815 -	  with klogd/syslogd or the X server. You should normally N here,
  14.816 -	  unless you want to debug such a crash.
  14.817 -
  14.818 -config DEBUG_STACKOVERFLOW
  14.819 -	bool "Check for stack overflows"
  14.820 -	depends on DEBUG_KERNEL
  14.821 -
  14.822 -config DEBUG_STACK_USAGE
  14.823 -	bool "Stack utilization instrumentation"
  14.824 -	depends on DEBUG_KERNEL
  14.825 -	help
  14.826 -	  Enables the display of the minimum amount of free stack which each
  14.827 -	  task has ever had available in the sysrq-T and sysrq-P debug output.
  14.828 -
  14.829 -	  This option will slow down process creation somewhat.
  14.830 -
  14.831 -config DEBUG_SLAB
  14.832 -	bool "Debug memory allocations"
  14.833 -	depends on DEBUG_KERNEL
  14.834 -	help
  14.835 -	  Say Y here to have the kernel do limited verification on memory
  14.836 -	  allocation as well as poisoning memory on free to catch use of freed
  14.837 -	  memory.
  14.838 -
  14.839 -config MAGIC_SYSRQ
  14.840 -	bool "Magic SysRq key"
  14.841 -	depends on DEBUG_KERNEL
  14.842 -	help
  14.843 -	  If you say Y here, you will have some control over the system even
  14.844 -	  if the system crashes for example during kernel debugging (e.g., you
  14.845 -	  will be able to flush the buffer cache to disk, reboot the system
  14.846 -	  immediately or dump some status information). This is accomplished
  14.847 -	  by pressing various keys while holding SysRq (Alt+PrintScreen). It
  14.848 -	  also works on a serial console (on PC hardware at least), if you
  14.849 -	  send a BREAK and then within 5 seconds a command keypress. The
  14.850 -	  keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
  14.851 -	  unless you really know what this hack does.
  14.852 -
  14.853 -config DEBUG_SPINLOCK
  14.854 -	bool "Spinlock debugging"
  14.855 -	depends on DEBUG_KERNEL
  14.856 -	help
  14.857 -	  Say Y here and build SMP to catch missing spinlock initialization
  14.858 -	  and certain other kinds of spinlock errors commonly made.  This is
  14.859 -	  best used in conjunction with the NMI watchdog so that spinlock
  14.860 -	  deadlocks are also debuggable.
  14.861 -
  14.862 -config DEBUG_PAGEALLOC
  14.863 -	bool "Page alloc debugging"
  14.864 -	depends on DEBUG_KERNEL
  14.865 -	help
  14.866 -	  Unmap pages from the kernel linear mapping after free_pages().
  14.867 -	  This results in a large slowdown, but helps to find certain types
  14.868 -	  of memory corruptions.
  14.869 -
  14.870 -config DEBUG_HIGHMEM
  14.871 -	bool "Highmem debugging"
  14.872 -	depends on DEBUG_KERNEL && HIGHMEM
  14.873 -	help
  14.874 -	  This options enables addition error checking for high memory systems.
  14.875 -	  Disable for production systems.
  14.876 -
  14.877 -config DEBUG_INFO
  14.878 -	bool "Compile the kernel with debug info"
  14.879 -	depends on DEBUG_KERNEL
  14.880 -	help
  14.881 -          If you say Y here the resulting kernel image will include
  14.882 -	  debugging info resulting in a larger kernel image.
  14.883 -	  Say Y here only if you plan to use gdb to debug the kernel.
  14.884 -	  If you don't debug the kernel, you can say N.
  14.885 -	  
  14.886 -config DEBUG_SPINLOCK_SLEEP
  14.887 -	bool "Sleep-inside-spinlock checking"
  14.888 -	help
  14.889 -	  If you say Y here, various routines which may sleep will become very
  14.890 -	  noisy if they are called with a spinlock held.	
  14.891 -
  14.892 -config FRAME_POINTER
  14.893 -	bool "Compile the kernel with frame pointers"
  14.894 -	help
  14.895 -	  If you say Y here the resulting kernel image will be slightly larger
  14.896 -	  and slower, but it will give very useful debugging information.
  14.897 -	  If you don't debug the kernel, you can say N, but we may not be able
  14.898 -	  to solve problems without frame pointers.
  14.899 -
  14.900 -config 4KSTACKS
  14.901 -	bool "Use 4Kb for kernel stacks instead of 8Kb"
  14.902 -	help
  14.903 -	  If you say Y here the kernel will use a 4Kb stacksize for the
  14.904 -	  kernel stack attached to each process/thread. This facilitates
  14.905 -	  running more threads on a system and also reduces the pressure
  14.906 -	  on the VM subsystem for higher order allocations. This option
  14.907 -	  will also use IRQ stacks to compensate for the reduced stackspace.
  14.908 -
  14.909 -config X86_FIND_SMP_CONFIG
  14.910 -	bool
  14.911 -	depends on X86_LOCAL_APIC || X86_VOYAGER
  14.912 -	default y
  14.913 -
  14.914 -config X86_MPPARSE
  14.915 -	bool
  14.916 -	depends on X86_LOCAL_APIC && !X86_VISWS
  14.917 -	default y
  14.918 -
  14.919 -endmenu
  14.920 -
  14.921 -#
  14.922 -# Use the generic interrupt handling code in kernel/irq/:
  14.923 -#
  14.924 -config GENERIC_HARDIRQS
  14.925 -	bool
  14.926 -	default y
  14.927 -
  14.928 -config GENERIC_IRQ_PROBE
  14.929 -	bool
  14.930 -	default y
  14.931 -
  14.932 -config X86_SMP
  14.933 -	bool
  14.934 -	depends on SMP && !X86_VOYAGER
  14.935 -	default y
  14.936 -
  14.937 -#config X86_HT
  14.938 -#	bool
  14.939 -#	depends on SMP && !(X86_VISWS || X86_VOYAGER)
  14.940 -#	default y
  14.941 -
  14.942 -config X86_BIOS_REBOOT
  14.943 -	bool
  14.944 -	depends on !(X86_VISWS || X86_VOYAGER)
  14.945 -	default y
  14.946 -
  14.947 -config X86_TRAMPOLINE
  14.948 -	bool
  14.949 -	depends on X86_SMP || (X86_VOYAGER && SMP)
  14.950 -	default y
  14.951 -
  14.952 -config PC
  14.953 -	bool
  14.954 -	depends on X86 && !EMBEDDED
  14.955 -	default y
  14.956 -
  14.957 -endmenu
    15.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/Makefile	Thu Mar 10 22:09:19 2005 +0000
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,102 +0,0 @@
    15.4 -#
    15.5 -# i386/Makefile
    15.6 -#
    15.7 -# This file is included by the global makefile so that you can add your own
    15.8 -# architecture-specific flags and dependencies. Remember to do have actions
    15.9 -# for "archclean" cleaning up for this architecture.
   15.10 -#
   15.11 -# This file is subject to the terms and conditions of the GNU General Public
   15.12 -# License.  See the file "COPYING" in the main directory of this archive
   15.13 -# for more details.
   15.14 -#
   15.15 -# Copyright (C) 1994 by Linus Torvalds
   15.16 -#
   15.17 -# 19990713  Artur Skawina <skawina@geocities.com>
   15.18 -#           Added '-march' and '-mpreferred-stack-boundary' support
   15.19 -#
   15.20 -
   15.21 -XENARCH	:= $(subst ",,$(CONFIG_XENARCH))
   15.22 -
   15.23 -LDFLAGS		:= -m elf_i386
   15.24 -LDFLAGS_vmlinux :=
   15.25 -CHECK		:= $(CHECK) -D__i386__=1
   15.26 -
   15.27 -CFLAGS += -m32
   15.28 -AFLAGS += -m32
   15.29 -
   15.30 -CFLAGS += -pipe -msoft-float
   15.31 -
   15.32 -# prevent gcc from keeping the stack 16 byte aligned
   15.33 -CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,)
   15.34 -
   15.35 -align := $(cc-option-align)
   15.36 -cflags-$(CONFIG_M386)		+= -march=i386
   15.37 -cflags-$(CONFIG_M486)		+= -march=i486
   15.38 -cflags-$(CONFIG_M586)		+= -march=i586
   15.39 -cflags-$(CONFIG_M586TSC)	+= -march=i586
   15.40 -cflags-$(CONFIG_M586MMX)	+= $(call cc-option,-march=pentium-mmx,-march=i586)
   15.41 -cflags-$(CONFIG_M686)		+= -march=i686
   15.42 -cflags-$(CONFIG_MPENTIUMII)	+= -march=i686 $(call cc-option,-mtune=pentium2)
   15.43 -cflags-$(CONFIG_MPENTIUMIII)	+= -march=i686 $(call cc-option,-mtune=pentium3)
   15.44 -cflags-$(CONFIG_MPENTIUMM)	+= -march=i686 $(call cc-option,-mtune=pentium3)
   15.45 -cflags-$(CONFIG_MPENTIUM4)	+= -march=i686 $(call cc-option,-mtune=pentium4)
   15.46 -cflags-$(CONFIG_MK6)		+= -march=k6
   15.47 -# Please note, that patches that add -march=athlon-xp and friends are pointless.
   15.48 -# They make zero difference whatsosever to performance at this time.
   15.49 -cflags-$(CONFIG_MK7)		+= $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)
   15.50 -cflags-$(CONFIG_MK8)		+= $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4))
   15.51 -cflags-$(CONFIG_MCRUSOE)	+= -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
   15.52 -cflags-$(CONFIG_MEFFICEON)	+= -march=i686 $(call cc-option,-mtune=pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
   15.53 -cflags-$(CONFIG_MWINCHIPC6)	+= $(call cc-option,-march=winchip-c6,-march=i586)
   15.54 -cflags-$(CONFIG_MWINCHIP2)	+= $(call cc-option,-march=winchip2,-march=i586)
   15.55 -cflags-$(CONFIG_MWINCHIP3D)	+= $(call cc-option,-march=winchip2,-march=i586)
   15.56 -cflags-$(CONFIG_MCYRIXIII)	+= $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
   15.57 -cflags-$(CONFIG_MVIAC3_2)	+= $(call cc-option,-march=c3-2,-march=i686)
   15.58 -
   15.59 -# AMD Elan support
   15.60 -cflags-$(CONFIG_X86_ELAN)	+= -march=i486
   15.61 -
   15.62 -# -mregparm=3 works ok on gcc-3.0 and later
   15.63 -#
   15.64 -GCC_VERSION			:= $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
   15.65 -cflags-$(CONFIG_REGPARM) 	+= $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;)
   15.66 -
   15.67 -# Disable unit-at-a-time mode, it makes gcc use a lot more stack
   15.68 -# due to the lack of sharing of stacklots.
   15.69 -CFLAGS += $(call cc-option,-fno-unit-at-a-time,)
   15.70 -
   15.71 -CFLAGS += $(cflags-y)
   15.72 -
   15.73 -head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o
   15.74 -
   15.75 -libs-y 					+= arch/i386/lib/
   15.76 -core-y					+= arch/xen/i386/kernel/ \
   15.77 -					   arch/xen/i386/mm/ \
   15.78 -					   arch/i386/crypto/
   15.79 -# \
   15.80 -#					   arch/xen/$(mcore-y)/
   15.81 -drivers-$(CONFIG_MATH_EMULATION)	+= arch/i386/math-emu/
   15.82 -drivers-$(CONFIG_PCI)			+= arch/xen/i386/pci/
   15.83 -# must be linked after kernel/
   15.84 -drivers-$(CONFIG_OPROFILE)		+= arch/i386/oprofile/
   15.85 -drivers-$(CONFIG_PM)			+= arch/i386/power/
   15.86 -
   15.87 -# for clean
   15.88 -obj-	+= kernel/ mm/ pci/
   15.89 -#obj-	+= ../../i386/lib/ ../../i386/mm/ 
   15.90 -#../../i386/$(mcore-y)/
   15.91 -#obj-	+= ../../i386/pci/ ../../i386/oprofile/ ../../i386/power/
   15.92 -
   15.93 -xenflags-y += -Iinclude/asm-xen/asm-i386/mach-xen \
   15.94 -		-Iinclude/asm-i386/mach-default
   15.95 -CFLAGS += $(xenflags-y)
   15.96 -AFLAGS += $(xenflags-y)
   15.97 -
   15.98 -prepare: include/asm-$(XENARCH)/asm_offsets.h
   15.99 -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h
  15.100 -
  15.101 -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \
  15.102 -	include/linux/version.h include/config/MARKER
  15.103 -
  15.104 -include/asm-$(XENARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s
  15.105 -	$(call filechk,gen-asm-offsets)
    16.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile	Thu Mar 10 22:09:19 2005 +0000
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,91 +0,0 @@
    16.4 -#
    16.5 -# Makefile for the linux kernel.
    16.6 -#
    16.7 -
    16.8 -XENARCH	:= $(subst ",,$(CONFIG_XENARCH))
    16.9 -
   16.10 -CFLAGS	+= -Iarch/$(XENARCH)/kernel
   16.11 -
   16.12 -extra-y := head.o init_task.o
   16.13 -
   16.14 -obj-y	:= process.o signal.o entry.o traps.o \
   16.15 -		time.o ioport.o ldt.o setup.o \
   16.16 -		pci-dma.o i386_ksyms.o
   16.17 -
   16.18 -c-obj-y	:= semaphore.o irq.o vm86.o \
   16.19 -		ptrace.o sys_i386.o \
   16.20 -		i387.o dmi_scan.o bootflag.o \
   16.21 -		doublefault.o quirks.o
   16.22 -s-obj-y	:=
   16.23 -
   16.24 -obj-y				+= cpu/
   16.25 -obj-y				+= timers/
   16.26 -c-obj-$(CONFIG_ACPI_BOOT)	+= acpi/
   16.27 -#c-obj-$(CONFIG_X86_BIOS_REBOOT)	+= reboot.o
   16.28 -c-obj-$(CONFIG_MCA)		+= mca.o
   16.29 -c-obj-$(CONFIG_X86_MSR)		+= msr.o
   16.30 -c-obj-$(CONFIG_X86_CPUID)	+= cpuid.o
   16.31 -obj-$(CONFIG_MICROCODE)		+= microcode.o
   16.32 -c-obj-$(CONFIG_APM)		+= apm.o
   16.33 -obj-$(CONFIG_X86_SMP)		+= smp.o smpboot.o
   16.34 -#obj-$(CONFIG_X86_TRAMPOLINE)	+= trampoline.o
   16.35 -c-obj-$(CONFIG_X86_MPPARSE)	+= mpparse.o
   16.36 -#obj-$(CONFIG_X86_LOCAL_APIC)	+= apic.o
   16.37 -c-obj-$(CONFIG_X86_LOCAL_APIC)	+= nmi.o
   16.38 -c-obj-$(CONFIG_X86_IO_APIC)	+= io_apic.o
   16.39 -c-obj-$(CONFIG_X86_NUMAQ)	+= numaq.o
   16.40 -c-obj-$(CONFIG_X86_SUMMIT_NUMA)	+= summit.o
   16.41 -c-obj-$(CONFIG_MODULES)		+= module.o
   16.42 -c-obj-y				+= sysenter.o
   16.43 -obj-y				+= vsyscall.o
   16.44 -c-obj-$(CONFIG_ACPI_SRAT) 	+= srat.o
   16.45 -c-obj-$(CONFIG_HPET_TIMER) 	+= time_hpet.o
   16.46 -c-obj-$(CONFIG_EFI) 		+= efi.o efi_stub.o
   16.47 -c-obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
   16.48 -
   16.49 -EXTRA_AFLAGS   := -traditional
   16.50 -
   16.51 -c-obj-$(CONFIG_SCx200)		+= scx200.o
   16.52 -
   16.53 -# vsyscall.o contains the vsyscall DSO images as __initdata.
   16.54 -# We must build both images before we can assemble it.
   16.55 -# Note: kbuild does not track this dependency due to usage of .incbin
   16.56 -$(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so
   16.57 -targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so)
   16.58 -
   16.59 -# The DSO images are built using a special linker script.
   16.60 -quiet_cmd_syscall = SYSCALL $@
   16.61 -      cmd_syscall = $(CC) -nostdlib -m32 $(SYSCFLAGS_$(@F)) \
   16.62 -		          -Wl,-T,$(filter-out FORCE,$^) -o $@
   16.63 -
   16.64 -vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1
   16.65 -SYSCFLAGS_vsyscall-sysenter.so	= $(vsyscall-flags)
   16.66 -SYSCFLAGS_vsyscall-int80.so	= $(vsyscall-flags)
   16.67 -
   16.68 -$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \
   16.69 -$(obj)/vsyscall-%.so: $(obj)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
   16.70 -	$(call if_changed,syscall)
   16.71 -
   16.72 -# We also create a special relocatable object that should mirror the symbol
   16.73 -# table and layout of the linked DSO.  With ld -R we can then refer to
   16.74 -# these symbols in the kernel code rather than hand-coded addresses.
   16.75 -extra-y += vsyscall-syms.o
   16.76 -$(obj)/built-in.o: $(obj)/vsyscall-syms.o
   16.77 -$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o
   16.78 -
   16.79 -SYSCFLAGS_vsyscall-syms.o = -r
   16.80 -$(obj)/vsyscall-syms.o: $(obj)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE
   16.81 -	$(call if_changed,syscall)
   16.82 -
   16.83 -c-link	:= init_task.o
   16.84 -s-link	:= vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o
   16.85 -
   16.86 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)):
   16.87 -	@ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@
   16.88 -
   16.89 -$(obj)/vsyscall-int80.S: $(obj)/vsyscall-sigreturn.S
   16.90 -
   16.91 -obj-y	+= $(c-obj-y) $(s-obj-y)
   16.92 -
   16.93 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
   16.94 -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link))
    17.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/Makefile	Thu Mar 10 22:09:19 2005 +0000
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,31 +0,0 @@
    17.4 -#
    17.5 -# Makefile for x86-compatible CPU details and quirks
    17.6 -#
    17.7 -
    17.8 -CFLAGS	+= -Iarch/i386/kernel/cpu
    17.9 -
   17.10 -obj-y	:=	common.o
   17.11 -c-obj-y	+=	proc.o
   17.12 -
   17.13 -c-obj-y	+=	amd.o
   17.14 -c-obj-y	+=	cyrix.o
   17.15 -c-obj-y	+=	centaur.o
   17.16 -c-obj-y	+=	transmeta.o
   17.17 -c-obj-y	+=	intel.o intel_cacheinfo.o
   17.18 -c-obj-y	+=	rise.o
   17.19 -c-obj-y	+=	nexgen.o
   17.20 -c-obj-y	+=	umc.o
   17.21 -
   17.22 -#obj-$(CONFIG_X86_MCE)	+=	../../../../i386/kernel/cpu/mcheck/
   17.23 -
   17.24 -obj-$(CONFIG_MTRR)	+= 	mtrr/
   17.25 -#obj-$(CONFIG_CPU_FREQ)	+=	../../../../i386/kernel/cpu/cpufreq/
   17.26 -
   17.27 -c-link	:=
   17.28 -
   17.29 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)):
   17.30 -	@ln -fsn $(srctree)/arch/i386/kernel/cpu/$(notdir $@) $@
   17.31 -
   17.32 -obj-y	+= $(c-obj-y)
   17.33 -
   17.34 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
    18.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c	Thu Mar 10 22:09:19 2005 +0000
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,601 +0,0 @@
    18.4 -#include <linux/init.h>
    18.5 -#include <linux/string.h>
    18.6 -#include <linux/delay.h>
    18.7 -#include <linux/smp.h>
    18.8 -#include <linux/module.h>
    18.9 -#include <linux/percpu.h>
   18.10 -#include <asm/semaphore.h>
   18.11 -#include <asm/processor.h>
   18.12 -#include <asm/i387.h>
   18.13 -#include <asm/msr.h>
   18.14 -#include <asm/io.h>
   18.15 -#include <asm/mmu_context.h>
   18.16 -#include <asm-xen/hypervisor.h>
   18.17 -
   18.18 -#include "cpu.h"
   18.19 -
   18.20 -DEFINE_PER_CPU(struct desc_struct, cpu_gdt_table[GDT_ENTRIES]);
   18.21 -EXPORT_PER_CPU_SYMBOL(cpu_gdt_table);
   18.22 -
   18.23 -static int cachesize_override __initdata = -1;
   18.24 -static int disable_x86_fxsr __initdata = 0;
   18.25 -static int disable_x86_serial_nr __initdata = 1;
   18.26 -
   18.27 -struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {};
   18.28 -
   18.29 -extern void mcheck_init(struct cpuinfo_x86 *c);
   18.30 -
   18.31 -extern void machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c);
   18.32 -
   18.33 -extern int disable_pse;
   18.34 -
   18.35 -static void default_init(struct cpuinfo_x86 * c)
   18.36 -{
   18.37 -	/* Not much we can do here... */
   18.38 -	/* Check if at least it has cpuid */
   18.39 -	if (c->cpuid_level == -1) {
   18.40 -		/* No cpuid. It must be an ancient CPU */
   18.41 -		if (c->x86 == 4)
   18.42 -			strcpy(c->x86_model_id, "486");
   18.43 -		else if (c->x86 == 3)
   18.44 -			strcpy(c->x86_model_id, "386");
   18.45 -	}
   18.46 -}
   18.47 -
   18.48 -static struct cpu_dev default_cpu = {
   18.49 -	.c_init	= default_init,
   18.50 -};
   18.51 -static struct cpu_dev * this_cpu = &default_cpu;
   18.52 -
   18.53 -static int __init cachesize_setup(char *str)
   18.54 -{
   18.55 -	get_option (&str, &cachesize_override);
   18.56 -	return 1;
   18.57 -}
   18.58 -__setup("cachesize=", cachesize_setup);
   18.59 -
   18.60 -int __init get_model_name(struct cpuinfo_x86 *c)
   18.61 -{
   18.62 -	unsigned int *v;
   18.63 -	char *p, *q;
   18.64 -
   18.65 -	if (cpuid_eax(0x80000000) < 0x80000004)
   18.66 -		return 0;
   18.67 -
   18.68 -	v = (unsigned int *) c->x86_model_id;
   18.69 -	cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]);
   18.70 -	cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]);
   18.71 -	cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]);
   18.72 -	c->x86_model_id[48] = 0;
   18.73 -
   18.74 -	/* Intel chips right-justify this string for some dumb reason;
   18.75 -	   undo that brain damage */
   18.76 -	p = q = &c->x86_model_id[0];
   18.77 -	while ( *p == ' ' )
   18.78 -	     p++;
   18.79 -	if ( p != q ) {
   18.80 -	     while ( *p )
   18.81 -		  *q++ = *p++;
   18.82 -	     while ( q <= &c->x86_model_id[48] )
   18.83 -		  *q++ = '\0';	/* Zero-pad the rest */
   18.84 -	}
   18.85 -
   18.86 -	return 1;
   18.87 -}
   18.88 -
   18.89 -
   18.90 -void __init display_cacheinfo(struct cpuinfo_x86 *c)
   18.91 -{
   18.92 -	unsigned int n, dummy, ecx, edx, l2size;
   18.93 -
   18.94 -	n = cpuid_eax(0x80000000);
   18.95 -
   18.96 -	if (n >= 0x80000005) {
   18.97 -		cpuid(0x80000005, &dummy, &dummy, &ecx, &edx);
   18.98 -		printk(KERN_INFO "CPU: L1 I Cache: %dK (%d bytes/line), D cache %dK (%d bytes/line)\n",
   18.99 -			edx>>24, edx&0xFF, ecx>>24, ecx&0xFF);
  18.100 -		c->x86_cache_size=(ecx>>24)+(edx>>24);	
  18.101 -	}
  18.102 -
  18.103 -	if (n < 0x80000006)	/* Some chips just has a large L1. */
  18.104 -		return;
  18.105 -
  18.106 -	ecx = cpuid_ecx(0x80000006);
  18.107 -	l2size = ecx >> 16;
  18.108 -	
  18.109 -	/* do processor-specific cache resizing */
  18.110 -	if (this_cpu->c_size_cache)
  18.111 -		l2size = this_cpu->c_size_cache(c,l2size);
  18.112 -
  18.113 -	/* Allow user to override all this if necessary. */
  18.114 -	if (cachesize_override != -1)
  18.115 -		l2size = cachesize_override;
  18.116 -
  18.117 -	if ( l2size == 0 )
  18.118 -		return;		/* Again, no L2 cache is possible */
  18.119 -
  18.120 -	c->x86_cache_size = l2size;
  18.121 -
  18.122 -	printk(KERN_INFO "CPU: L2 Cache: %dK (%d bytes/line)\n",
  18.123 -	       l2size, ecx & 0xFF);
  18.124 -}
  18.125 -
  18.126 -/* Naming convention should be: <Name> [(<Codename>)] */
  18.127 -/* This table only is used unless init_<vendor>() below doesn't set it; */
  18.128 -/* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */
  18.129 -
  18.130 -/* Look up CPU names by table lookup. */
  18.131 -static char __init *table_lookup_model(struct cpuinfo_x86 *c)
  18.132 -{
  18.133 -	struct cpu_model_info *info;
  18.134 -
  18.135 -	if ( c->x86_model >= 16 )
  18.136 -		return NULL;	/* Range check */
  18.137 -
  18.138 -	if (!this_cpu)
  18.139 -		return NULL;
  18.140 -
  18.141 -	info = this_cpu->c_models;
  18.142 -
  18.143 -	while (info && info->family) {
  18.144 -		if (info->family == c->x86)
  18.145 -			return info->model_names[c->x86_model];
  18.146 -		info++;
  18.147 -	}
  18.148 -	return NULL;		/* Not found */
  18.149 -}
  18.150 -
  18.151 -
  18.152 -void __init get_cpu_vendor(struct cpuinfo_x86 *c, int early)
  18.153 -{
  18.154 -	char *v = c->x86_vendor_id;
  18.155 -	int i;
  18.156 -
  18.157 -	for (i = 0; i < X86_VENDOR_NUM; i++) {
  18.158 -		if (cpu_devs[i]) {
  18.159 -			if (!strcmp(v,cpu_devs[i]->c_ident[0]) ||
  18.160 -			    (cpu_devs[i]->c_ident[1] && 
  18.161 -			     !strcmp(v,cpu_devs[i]->c_ident[1]))) {
  18.162 -				c->x86_vendor = i;
  18.163 -				if (!early)
  18.164 -					this_cpu = cpu_devs[i];
  18.165 -				break;
  18.166 -			}
  18.167 -		}
  18.168 -	}
  18.169 -}
  18.170 -
  18.171 -
  18.172 -static int __init x86_fxsr_setup(char * s)
  18.173 -{
  18.174 -	disable_x86_fxsr = 1;
  18.175 -	return 1;
  18.176 -}
  18.177 -__setup("nofxsr", x86_fxsr_setup);
  18.178 -
  18.179 -
  18.180 -/* Standard macro to see if a specific flag is changeable */
  18.181 -static inline int flag_is_changeable_p(u32 flag)
  18.182 -{
  18.183 -	u32 f1, f2;
  18.184 -
  18.185 -	asm("pushfl\n\t"
  18.186 -	    "pushfl\n\t"
  18.187 -	    "popl %0\n\t"
  18.188 -	    "movl %0,%1\n\t"
  18.189 -	    "xorl %2,%0\n\t"
  18.190 -	    "pushl %0\n\t"
  18.191 -	    "popfl\n\t"
  18.192 -	    "pushfl\n\t"
  18.193 -	    "popl %0\n\t"
  18.194 -	    "popfl\n\t"
  18.195 -	    : "=&r" (f1), "=&r" (f2)
  18.196 -	    : "ir" (flag));
  18.197 -
  18.198 -	return ((f1^f2) & flag) != 0;
  18.199 -}
  18.200 -
  18.201 -
  18.202 -/* Probe for the CPUID instruction */
  18.203 -int __init have_cpuid_p(void)
  18.204 -{
  18.205 -	return flag_is_changeable_p(X86_EFLAGS_ID);
  18.206 -}
  18.207 -
  18.208 -/* Do minimum CPU detection early.
  18.209 -   Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment.
  18.210 -   The others are not touched to avoid unwanted side effects. */
  18.211 -void __init early_cpu_detect(void)
  18.212 -{
  18.213 -	struct cpuinfo_x86 *c = &boot_cpu_data;
  18.214 -
  18.215 -	c->x86_cache_alignment = 32;
  18.216 -
  18.217 -	if (!have_cpuid_p())
  18.218 -		return;
  18.219 -
  18.220 -	/* Get vendor name */
  18.221 -	cpuid(0x00000000, &c->cpuid_level,
  18.222 -	      (int *)&c->x86_vendor_id[0],
  18.223 -	      (int *)&c->x86_vendor_id[8],
  18.224 -	      (int *)&c->x86_vendor_id[4]);
  18.225 -
  18.226 -	get_cpu_vendor(c, 1);
  18.227 -
  18.228 -	c->x86 = 4;
  18.229 -	if (c->cpuid_level >= 0x00000001) {
  18.230 -		u32 junk, tfms, cap0, misc;
  18.231 -		cpuid(0x00000001, &tfms, &misc, &junk, &cap0);
  18.232 -		c->x86 = (tfms >> 8) & 15;
  18.233 -		c->x86_model = (tfms >> 4) & 15;
  18.234 -		if (c->x86 == 0xf) {
  18.235 -			c->x86 += (tfms >> 20) & 0xff;
  18.236 -			c->x86_model += ((tfms >> 16) & 0xF) << 4;
  18.237 -		}
  18.238 -		c->x86_mask = tfms & 15;
  18.239 -		if (cap0 & (1<<19))
  18.240 -			c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8;
  18.241 -	}
  18.242 -
  18.243 -	early_intel_workaround(c);
  18.244 -}
  18.245 -
  18.246 -void __init generic_identify(struct cpuinfo_x86 * c)
  18.247 -{
  18.248 -	u32 tfms, xlvl;
  18.249 -	int junk;
  18.250 -
  18.251 -	if (have_cpuid_p()) {
  18.252 -		/* Get vendor name */
  18.253 -		cpuid(0x00000000, &c->cpuid_level,
  18.254 -		      (int *)&c->x86_vendor_id[0],
  18.255 -		      (int *)&c->x86_vendor_id[8],
  18.256 -		      (int *)&c->x86_vendor_id[4]);
  18.257 -		
  18.258 -		get_cpu_vendor(c, 0);
  18.259 -		/* Initialize the standard set of capabilities */
  18.260 -		/* Note that the vendor-specific code below might override */
  18.261 -	
  18.262 -		/* Intel-defined flags: level 0x00000001 */
  18.263 -		if ( c->cpuid_level >= 0x00000001 ) {
  18.264 -			u32 capability, excap;
  18.265 -			cpuid(0x00000001, &tfms, &junk, &excap, &capability);
  18.266 -			c->x86_capability[0] = capability;
  18.267 -			c->x86_capability[4] = excap;
  18.268 -			c->x86 = (tfms >> 8) & 15;
  18.269 -			c->x86_model = (tfms >> 4) & 15;
  18.270 -			if (c->x86 == 0xf) {
  18.271 -				c->x86 += (tfms >> 20) & 0xff;
  18.272 -				c->x86_model += ((tfms >> 16) & 0xF) << 4;
  18.273 -			} 
  18.274 -			c->x86_mask = tfms & 15;
  18.275 -		} else {
  18.276 -			/* Have CPUID level 0 only - unheard of */
  18.277 -			c->x86 = 4;
  18.278 -		}
  18.279 -
  18.280 -		/* AMD-defined flags: level 0x80000001 */
  18.281 -		xlvl = cpuid_eax(0x80000000);
  18.282 -		if ( (xlvl & 0xffff0000) == 0x80000000 ) {
  18.283 -			if ( xlvl >= 0x80000001 )
  18.284 -				c->x86_capability[1] = cpuid_edx(0x80000001);
  18.285 -			if ( xlvl >= 0x80000004 )
  18.286 -				get_model_name(c); /* Default name */
  18.287 -		}
  18.288 -	}
  18.289 -}
  18.290 -
  18.291 -static void __init squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
  18.292 -{
  18.293 -	if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) {
  18.294 -		/* Disable processor serial number */
  18.295 -		unsigned long lo,hi;
  18.296 -		rdmsr(MSR_IA32_BBL_CR_CTL,lo,hi);
  18.297 -		lo |= 0x200000;
  18.298 -		wrmsr(MSR_IA32_BBL_CR_CTL,lo,hi);
  18.299 -		printk(KERN_NOTICE "CPU serial number disabled.\n");
  18.300 -		clear_bit(X86_FEATURE_PN, c->x86_capability);
  18.301 -
  18.302 -		/* Disabling the serial number may affect the cpuid level */
  18.303 -		c->cpuid_level = cpuid_eax(0);
  18.304 -	}
  18.305 -}
  18.306 -
  18.307 -static int __init x86_serial_nr_setup(char *s)
  18.308 -{
  18.309 -	disable_x86_serial_nr = 0;
  18.310 -	return 1;
  18.311 -}
  18.312 -__setup("serialnumber", x86_serial_nr_setup);
  18.313 -
  18.314 -
  18.315 -
  18.316 -/*
  18.317 - * This does the hard work of actually picking apart the CPU stuff...
  18.318 - */
  18.319 -void __init identify_cpu(struct cpuinfo_x86 *c)
  18.320 -{
  18.321 -	int i;
  18.322 -
  18.323 -	c->loops_per_jiffy = loops_per_jiffy;
  18.324 -	c->x86_cache_size = -1;
  18.325 -	c->x86_vendor = X86_VENDOR_UNKNOWN;
  18.326 -	c->cpuid_level = -1;	/* CPUID not detected */
  18.327 -	c->x86_model = c->x86_mask = 0;	/* So far unknown... */
  18.328 -	c->x86_vendor_id[0] = '\0'; /* Unset */
  18.329 -	c->x86_model_id[0] = '\0';  /* Unset */
  18.330 -	memset(&c->x86_capability, 0, sizeof c->x86_capability);
  18.331 -
  18.332 -	if (!have_cpuid_p()) {
  18.333 -		/* First of all, decide if this is a 486 or higher */
  18.334 -		/* It's a 486 if we can modify the AC flag */
  18.335 -		if ( flag_is_changeable_p(X86_EFLAGS_AC) )
  18.336 -			c->x86 = 4;
  18.337 -		else
  18.338 -			c->x86 = 3;
  18.339 -	}
  18.340 -
  18.341 -	generic_identify(c);
  18.342 -
  18.343 -	printk(KERN_DEBUG "CPU: After generic identify, caps: %08lx %08lx %08lx %08lx\n",
  18.344 -		c->x86_capability[0],
  18.345 -		c->x86_capability[1],
  18.346 -		c->x86_capability[2],
  18.347 -		c->x86_capability[3]);
  18.348 -
  18.349 -	if (this_cpu->c_identify) {
  18.350 -		this_cpu->c_identify(c);
  18.351 -
  18.352 -	printk(KERN_DEBUG "CPU: After vendor identify, caps:  %08lx %08lx %08lx %08lx\n",
  18.353 -		c->x86_capability[0],
  18.354 -		c->x86_capability[1],
  18.355 -		c->x86_capability[2],
  18.356 -		c->x86_capability[3]);
  18.357 -}
  18.358 -
  18.359 -	/*
  18.360 -	 * Vendor-specific initialization.  In this section we
  18.361 -	 * canonicalize the feature flags, meaning if there are
  18.362 -	 * features a certain CPU supports which CPUID doesn't
  18.363 -	 * tell us, CPUID claiming incorrect flags, or other bugs,
  18.364 -	 * we handle them here.
  18.365 -	 *
  18.366 -	 * At the end of this section, c->x86_capability better
  18.367 -	 * indicate the features this CPU genuinely supports!
  18.368 -	 */
  18.369 -	if (this_cpu->c_init)
  18.370 -		this_cpu->c_init(c);
  18.371 -
  18.372 -	/* Disable the PN if appropriate */
  18.373 -	squash_the_stupid_serial_number(c);
  18.374 -
  18.375 -	/*
  18.376 -	 * The vendor-specific functions might have changed features.  Now
  18.377 -	 * we do "generic changes."
  18.378 -	 */
  18.379 -
  18.380 -	/* TSC disabled? */
  18.381 -	if ( tsc_disable )
  18.382 -		clear_bit(X86_FEATURE_TSC, c->x86_capability);
  18.383 -
  18.384 -	/* FXSR disabled? */
  18.385 -	if (disable_x86_fxsr) {
  18.386 -		clear_bit(X86_FEATURE_FXSR, c->x86_capability);
  18.387 -		clear_bit(X86_FEATURE_XMM, c->x86_capability);
  18.388 -	}
  18.389 -
  18.390 -	if (disable_pse)
  18.391 -		clear_bit(X86_FEATURE_PSE, c->x86_capability);
  18.392 -
  18.393 -	/* If the model name is still unset, do table lookup. */
  18.394 -	if ( !c->x86_model_id[0] ) {
  18.395 -		char *p;
  18.396 -		p = table_lookup_model(c);
  18.397 -		if ( p )
  18.398 -			strcpy(c->x86_model_id, p);
  18.399 -		else
  18.400 -			/* Last resort... */
  18.401 -			sprintf(c->x86_model_id, "%02x/%02x",
  18.402 -				c->x86_vendor, c->x86_model);
  18.403 -	}
  18.404 -
  18.405 -	machine_specific_modify_cpu_capabilities(c);
  18.406 -
  18.407 -	/* Now the feature flags better reflect actual CPU features! */
  18.408 -
  18.409 -	printk(KERN_DEBUG "CPU: After all inits, caps:        %08lx %08lx %08lx %08lx\n",
  18.410 -	       c->x86_capability[0],
  18.411 -	       c->x86_capability[1],
  18.412 -	       c->x86_capability[2],
  18.413 -	       c->x86_capability[3]);
  18.414 -
  18.415 -	/*
  18.416 -	 * On SMP, boot_cpu_data holds the common feature set between
  18.417 -	 * all CPUs; so make sure that we indicate which features are
  18.418 -	 * common between the CPUs.  The first time this routine gets
  18.419 -	 * executed, c == &boot_cpu_data.
  18.420 -	 */
  18.421 -	if ( c != &boot_cpu_data ) {
  18.422 -		/* AND the already accumulated flags with these */
  18.423 -		for ( i = 0 ; i < NCAPINTS ; i++ )
  18.424 -			boot_cpu_data.x86_capability[i] &= c->x86_capability[i];
  18.425 -	}
  18.426 -
  18.427 -	/* Init Machine Check Exception if available. */
  18.428 -#ifdef CONFIG_X86_MCE
  18.429 -	mcheck_init(c);
  18.430 -#endif
  18.431 -}
  18.432 -/*
  18.433 - *	Perform early boot up checks for a valid TSC. See arch/i386/kernel/time.c
  18.434 - */
  18.435 - 
  18.436 -void __init dodgy_tsc(void)
  18.437 -{
  18.438 -	if (( boot_cpu_data.x86_vendor == X86_VENDOR_CYRIX ) ||
  18.439 -	    ( boot_cpu_data.x86_vendor == X86_VENDOR_NSC   ))
  18.440 -		cpu_devs[X86_VENDOR_CYRIX]->c_init(&boot_cpu_data);
  18.441 -}
  18.442 -
  18.443 -void __init print_cpu_info(struct cpuinfo_x86 *c)
  18.444 -{
  18.445 -	char *vendor = NULL;
  18.446 -
  18.447 -	if (c->x86_vendor < X86_VENDOR_NUM)
  18.448 -		vendor = this_cpu->c_vendor;
  18.449 -	else if (c->cpuid_level >= 0)
  18.450 -		vendor = c->x86_vendor_id;
  18.451 -
  18.452 -	if (vendor && strncmp(c->x86_model_id, vendor, strlen(vendor)))
  18.453 -		printk("%s ", vendor);
  18.454 -
  18.455 -	if (!c->x86_model_id[0])
  18.456 -		printk("%d86", c->x86);
  18.457 -	else
  18.458 -		printk("%s", c->x86_model_id);
  18.459 -
  18.460 -	if (c->x86_mask || c->cpuid_level >= 0) 
  18.461 -		printk(" stepping %02x\n", c->x86_mask);
  18.462 -	else
  18.463 -		printk("\n");
  18.464 -}
  18.465 -
  18.466 -unsigned long cpu_initialized __initdata = 0;
  18.467 -
  18.468 -/* This is hacky. :)
  18.469 - * We're emulating future behavior.
  18.470 - * In the future, the cpu-specific init functions will be called implicitly
  18.471 - * via the magic of initcalls.
  18.472 - * They will insert themselves into the cpu_devs structure.
  18.473 - * Then, when cpu_init() is called, we can just iterate over that array.
  18.474 - */
  18.475 -
  18.476 -extern int intel_cpu_init(void);
  18.477 -extern int cyrix_init_cpu(void);
  18.478 -extern int nsc_init_cpu(void);
  18.479 -extern int amd_init_cpu(void);
  18.480 -extern int centaur_init_cpu(void);
  18.481 -extern int transmeta_init_cpu(void);
  18.482 -extern int rise_init_cpu(void);
  18.483 -extern int nexgen_init_cpu(void);
  18.484 -extern int umc_init_cpu(void);
  18.485 -void early_cpu_detect(void);
  18.486 -
  18.487 -void __init early_cpu_init(void)
  18.488 -{
  18.489 -	intel_cpu_init();
  18.490 -	cyrix_init_cpu();
  18.491 -	nsc_init_cpu();
  18.492 -	amd_init_cpu();
  18.493 -	centaur_init_cpu();
  18.494 -	transmeta_init_cpu();
  18.495 -	rise_init_cpu();
  18.496 -	nexgen_init_cpu();
  18.497 -	umc_init_cpu();
  18.498 -	early_cpu_detect();
  18.499 -
  18.500 -#ifdef CONFIG_DEBUG_PAGEALLOC
  18.501 -	/* pse is not compatible with on-the-fly unmapping,
  18.502 -	 * disable it even if the cpus claim to support it.
  18.503 -	 */
  18.504 -	clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability);
  18.505 -	disable_pse = 1;
  18.506 -#endif
  18.507 -}
  18.508 -
  18.509 -void __init cpu_gdt_init(struct Xgt_desc_struct *gdt_descr)
  18.510 -{
  18.511 -	unsigned long frames[gdt_descr->size >> PAGE_SHIFT];
  18.512 -	unsigned long va;
  18.513 -	int f;
  18.514 -
  18.515 -	for (va = gdt_descr->address, f = 0;
  18.516 -	     va < gdt_descr->address + gdt_descr->size;
  18.517 -	     va += PAGE_SIZE, f++) {
  18.518 -		frames[f] = virt_to_machine(va) >> PAGE_SHIFT;
  18.519 -		make_page_readonly((void *)va);
  18.520 -	}
  18.521 -	flush_page_update_queue();
  18.522 -	if (HYPERVISOR_set_gdt(frames, gdt_descr->size / 8))
  18.523 -		BUG();
  18.524 -	lgdt_finish();
  18.525 -}
  18.526 -
  18.527 -/*
  18.528 - * cpu_init() initializes state that is per-CPU. Some data is already
  18.529 - * initialized (naturally) in the bootstrap process, such as the GDT
  18.530 - * and IDT. We reload them nevertheless, this function acts as a
  18.531 - * 'CPU state barrier', nothing should get across.
  18.532 - */
  18.533 -void __init cpu_init (void)
  18.534 -{
  18.535 -	int cpu = smp_processor_id();
  18.536 -	struct tss_struct * t = &per_cpu(init_tss, cpu);
  18.537 -	struct thread_struct *thread = &current->thread;
  18.538 -
  18.539 -	if (test_and_set_bit(cpu, &cpu_initialized)) {
  18.540 -		printk(KERN_WARNING "CPU#%d already initialized!\n", cpu);
  18.541 -		for (;;) local_irq_enable();
  18.542 -	}
  18.543 -	printk(KERN_INFO "Initializing CPU#%d\n", cpu);
  18.544 -
  18.545 -	if (cpu_has_vme || cpu_has_de)
  18.546 -		clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE);
  18.547 -	if (tsc_disable && cpu_has_tsc) {
  18.548 -		printk(KERN_NOTICE "Disabling TSC...\n");
  18.549 -		/**** FIX-HPA: DOES THIS REALLY BELONG HERE? ****/
  18.550 -		clear_bit(X86_FEATURE_TSC, boot_cpu_data.x86_capability);
  18.551 -		set_in_cr4(X86_CR4_TSD);
  18.552 -	}
  18.553 -
  18.554 -	/*
  18.555 -	 * Set up the per-thread TLS descriptor cache:
  18.556 -	 */
  18.557 -	memcpy(thread->tls_array, &get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN],
  18.558 -	    GDT_ENTRY_TLS_ENTRIES * 8);
  18.559 -
  18.560 -	cpu_gdt_init(&cpu_gdt_descr[cpu]);
  18.561 -
  18.562 -	/*
  18.563 -	 * Delete NT
  18.564 -	 */
  18.565 -	__asm__("pushfl ; andl $0xffffbfff,(%esp) ; popfl");
  18.566 -
  18.567 -	/*
  18.568 -	 * Set up and load the per-CPU TSS and LDT
  18.569 -	 */
  18.570 -	atomic_inc(&init_mm.mm_count);
  18.571 -	current->active_mm = &init_mm;
  18.572 -	if (current->mm)
  18.573 -		BUG();
  18.574 -	enter_lazy_tlb(&init_mm, current);
  18.575 -
  18.576 -	load_esp0(t, thread);
  18.577 -
  18.578 -	load_LDT(&init_mm.context);
  18.579 -	flush_page_update_queue();
  18.580 -
  18.581 -	/* Clear %fs and %gs. */
  18.582 -	asm volatile ("xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs");
  18.583 -
  18.584 -	/* Clear all 6 debug registers: */
  18.585 -
  18.586 -#define CD(register) HYPERVISOR_set_debugreg(register, 0)
  18.587 -
  18.588 -	CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7);
  18.589 -
  18.590 -#undef CD
  18.591 -
  18.592 -	/*
  18.593 -	 * Force FPU initialization:
  18.594 -	 */
  18.595 -	current_thread_info()->status = 0;
  18.596 -	current->used_math = 0;
  18.597 -	mxcsr_feature_mask_init();
  18.598 -}
  18.599 -
  18.600 -
  18.601 -int get_smp_processor_id(void)
  18.602 -{
  18.603 -	return smp_processor_id();
  18.604 -}
    19.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile	Thu Mar 10 22:09:19 2005 +0000
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,16 +0,0 @@
    19.4 -obj-y	:= main.o
    19.5 -c-obj-y	:= if.o
    19.6 -
    19.7 -c-link	:=
    19.8 -
    19.9 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): $(obj)/mtrr.h
   19.10 -	@ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/$(notdir $@) $@
   19.11 -
   19.12 -$(patsubst %.o,$(obj)/%.c,$(obj-y)): $(obj)/mtrr.h
   19.13 -
   19.14 -$(obj)/mtrr.h:
   19.15 -	@ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/mtrr.h $@
   19.16 -
   19.17 -obj-y	+= $(c-obj-y)
   19.18 -
   19.19 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
    20.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c	Thu Mar 10 22:09:19 2005 +0000
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,165 +0,0 @@
    20.4 -#include <linux/init.h>
    20.5 -#include <linux/proc_fs.h>
    20.6 -#include <linux/ctype.h>
    20.7 -#include <linux/module.h>
    20.8 -#include <linux/seq_file.h>
    20.9 -#include <asm/uaccess.h>
   20.10 -
   20.11 -#include <asm/mtrr.h>
   20.12 -#include "mtrr.h"
   20.13 -
   20.14 -void generic_get_mtrr(unsigned int reg, unsigned long *base,
   20.15 -		      unsigned int *size, mtrr_type * type)
   20.16 -{
   20.17 -	dom0_op_t op;
   20.18 -
   20.19 -	op.cmd = DOM0_READ_MEMTYPE;
   20.20 -	op.u.read_memtype.reg = reg;
   20.21 -	(void)HYPERVISOR_dom0_op(&op);
   20.22 -
   20.23 -	*size = op.u.read_memtype.nr_pfns;
   20.24 -	*base = op.u.read_memtype.pfn;
   20.25 -	*type = op.u.read_memtype.type;
   20.26 -}
   20.27 -
   20.28 -struct mtrr_ops generic_mtrr_ops = {
   20.29 -	.use_intel_if      = 1,
   20.30 -	.get               = generic_get_mtrr,
   20.31 -};
   20.32 -
   20.33 -struct mtrr_ops *mtrr_if = &generic_mtrr_ops;
   20.34 -unsigned int num_var_ranges;
   20.35 -unsigned int *usage_table;
   20.36 -
   20.37 -void __init set_num_var_ranges(void)
   20.38 -{
   20.39 -	dom0_op_t op;
   20.40 -
   20.41 -	for (num_var_ranges = 0; ; num_var_ranges++) {
   20.42 -		op.cmd = DOM0_READ_MEMTYPE;
   20.43 -		op.u.read_memtype.reg = num_var_ranges;
   20.44 -		if (HYPERVISOR_dom0_op(&op) != 0)
   20.45 -			break;
   20.46 -	}
   20.47 -}
   20.48 -
   20.49 -static void __init init_table(void)
   20.50 -{
   20.51 -	int i, max;
   20.52 -
   20.53 -	max = num_var_ranges;
   20.54 -	if ((usage_table = kmalloc(max * sizeof *usage_table, GFP_KERNEL))
   20.55 -	    == NULL) {
   20.56 -		printk(KERN_ERR "mtrr: could not allocate\n");
   20.57 -		return;
   20.58 -	}
   20.59 -	for (i = 0; i < max; i++)
   20.60 -		usage_table[i] = 0;
   20.61 -}
   20.62 -
   20.63 -int mtrr_add_page(unsigned long base, unsigned long size, 
   20.64 -		  unsigned int type, char increment)
   20.65 -{
   20.66 -	int error;
   20.67 -	dom0_op_t op;
   20.68 -
   20.69 -	op.cmd = DOM0_ADD_MEMTYPE;
   20.70 -	op.u.add_memtype.pfn     = base;
   20.71 -	op.u.add_memtype.nr_pfns = size;
   20.72 -	op.u.add_memtype.type    = type;
   20.73 -	if ((error = HYPERVISOR_dom0_op(&op)))
   20.74 -		return error;
   20.75 -
   20.76 -	if (increment)
   20.77 -		++usage_table[op.u.add_memtype.reg];
   20.78 -
   20.79 -	return op.u.add_memtype.reg;
   20.80 -}
   20.81 -
   20.82 -int
   20.83 -mtrr_add(unsigned long base, unsigned long size, unsigned int type,
   20.84 -	 char increment)
   20.85 -{
   20.86 -	if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) {
   20.87 -		printk(KERN_WARNING "mtrr: size and base must be multiples of 4 kiB\n");
   20.88 -		printk(KERN_DEBUG "mtrr: size: 0x%lx  base: 0x%lx\n", size, base);
   20.89 -		return -EINVAL;
   20.90 -	}
   20.91 -	return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type,
   20.92 -			     increment);
   20.93 -}
   20.94 -
   20.95 -int mtrr_del_page(int reg, unsigned long base, unsigned long size)
   20.96 -{
   20.97 -	int i, max;
   20.98 -	mtrr_type ltype;
   20.99 -	unsigned long lbase;
  20.100 -	unsigned int lsize;
  20.101 -	int error = -EINVAL;
  20.102 -	dom0_op_t op;
  20.103 -
  20.104 -	max = num_var_ranges;
  20.105 -	if (reg < 0) {
  20.106 -		/*  Search for existing MTRR  */
  20.107 -		for (i = 0; i < max; ++i) {
  20.108 -			mtrr_if->get(i, &lbase, &lsize, &ltype);
  20.109 -			if (lbase == base && lsize == size) {
  20.110 -				reg = i;
  20.111 -				break;
  20.112 -			}
  20.113 -		}
  20.114 -		if (reg < 0) {
  20.115 -			printk(KERN_DEBUG "mtrr: no MTRR for %lx000,%lx000 found\n", base,
  20.116 -			       size);
  20.117 -			goto out;
  20.118 -		}
  20.119 -	}
  20.120 -	if (usage_table[reg] < 1) {
  20.121 -		printk(KERN_WARNING "mtrr: reg: %d has count=0\n", reg);
  20.122 -		goto out;
  20.123 -	}
  20.124 -	if (--usage_table[reg] < 1) {
  20.125 -		op.cmd = DOM0_DEL_MEMTYPE;
  20.126 -		op.u.del_memtype.handle = 0;
  20.127 -		op.u.add_memtype.reg    = reg;
  20.128 -		(void)HYPERVISOR_dom0_op(&op);
  20.129 -	}
  20.130 -	error = reg;
  20.131 - out:
  20.132 -	return error;
  20.133 -}
  20.134 -
  20.135 -int
  20.136 -mtrr_del(int reg, unsigned long base, unsigned long size)
  20.137 -{
  20.138 -	if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) {
  20.139 -		printk(KERN_INFO "mtrr: size and base must be multiples of 4 kiB\n");
  20.140 -		printk(KERN_DEBUG "mtrr: size: 0x%lx  base: 0x%lx\n", size, base);
  20.141 -		return -EINVAL;
  20.142 -	}
  20.143 -	return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
  20.144 -}
  20.145 -
  20.146 -EXPORT_SYMBOL(mtrr_add);
  20.147 -EXPORT_SYMBOL(mtrr_del);
  20.148 -
  20.149 -static int __init mtrr_init(void)
  20.150 -{
  20.151 -	struct cpuinfo_x86 *c = &boot_cpu_data;
  20.152 -
  20.153 -	if (!(xen_start_info.flags & SIF_PRIVILEGED))
  20.154 -		return -ENODEV;
  20.155 -
  20.156 -	if ((!cpu_has(c, X86_FEATURE_MTRR)) &&
  20.157 -	    (!cpu_has(c, X86_FEATURE_K6_MTRR)) &&
  20.158 -	    (!cpu_has(c, X86_FEATURE_CYRIX_ARR)) &&
  20.159 -	    (!cpu_has(c, X86_FEATURE_CENTAUR_MCR)))
  20.160 -		return -ENODEV;
  20.161 -
  20.162 -	set_num_var_ranges();
  20.163 -	init_table();
  20.164 -
  20.165 -	return 0;
  20.166 -}
  20.167 -
  20.168 -subsys_initcall(mtrr_init);
    21.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/entry.S	Thu Mar 10 22:09:19 2005 +0000
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,1080 +0,0 @@
    21.4 -/*
    21.5 - *  linux/arch/i386/entry.S
    21.6 - *
    21.7 - *  Copyright (C) 1991, 1992  Linus Torvalds
    21.8 - */
    21.9 -
   21.10 -/*
   21.11 - * entry.S contains the system-call and fault low-level handling routines.
   21.12 - * This also contains the timer-interrupt handler, as well as all interrupts
   21.13 - * and faults that can result in a task-switch.
   21.14 - *
   21.15 - * NOTE: This code handles signal-recognition, which happens every time
   21.16 - * after a timer-interrupt and after each system call.
   21.17 - *
   21.18 - * I changed all the .align's to 4 (16 byte alignment), as that's faster
   21.19 - * on a 486.
   21.20 - *
   21.21 - * Stack layout in 'ret_from_system_call':
   21.22 - * 	ptrace needs to have all regs on the stack.
   21.23 - *	if the order here is changed, it needs to be
   21.24 - *	updated in fork.c:copy_process, signal.c:do_signal,
   21.25 - *	ptrace.c and ptrace.h
   21.26 - *
   21.27 - *	 0(%esp) - %ebx
   21.28 - *	 4(%esp) - %ecx
   21.29 - *	 8(%esp) - %edx
   21.30 - *       C(%esp) - %esi
   21.31 - *	10(%esp) - %edi
   21.32 - *	14(%esp) - %ebp
   21.33 - *	18(%esp) - %eax
   21.34 - *	1C(%esp) - %ds
   21.35 - *	20(%esp) - %es
   21.36 - *	24(%esp) - orig_eax
   21.37 - *	28(%esp) - %eip
   21.38 - *	2C(%esp) - %cs
   21.39 - *	30(%esp) - %eflags
   21.40 - *	34(%esp) - %oldesp
   21.41 - *	38(%esp) - %oldss
   21.42 - *
   21.43 - * "current" is in register %ebx during any slow entries.
   21.44 - */
   21.45 -
   21.46 -#include <linux/config.h>
   21.47 -#include <linux/linkage.h>
   21.48 -#include <asm/thread_info.h>
   21.49 -#include <asm/errno.h>
   21.50 -#include <asm/segment.h>
   21.51 -#include <asm/smp.h>
   21.52 -#include <asm/page.h>
   21.53 -#include "irq_vectors.h"
   21.54 -#include <asm-xen/xen-public/xen.h>
   21.55 -
   21.56 -#define nr_syscalls ((syscall_table_size)/4)
   21.57 -
   21.58 -EBX		= 0x00
   21.59 -ECX		= 0x04
   21.60 -EDX		= 0x08
   21.61 -ESI		= 0x0C
   21.62 -EDI		= 0x10
   21.63 -EBP		= 0x14
   21.64 -EAX		= 0x18
   21.65 -DS		= 0x1C
   21.66 -ES		= 0x20
   21.67 -ORIG_EAX	= 0x24
   21.68 -EIP		= 0x28
   21.69 -CS		= 0x2C
   21.70 -EVENT_MASK	= 0x2E
   21.71 -EFLAGS		= 0x30
   21.72 -OLDESP		= 0x34
   21.73 -OLDSS		= 0x38
   21.74 -
   21.75 -CF_MASK		= 0x00000001
   21.76 -TF_MASK		= 0x00000100
   21.77 -IF_MASK		= 0x00000200
   21.78 -DF_MASK		= 0x00000400 
   21.79 -NT_MASK		= 0x00004000
   21.80 -VM_MASK		= 0x00020000
   21.81 -
   21.82 -/* Offsets into shared_info_t. */
   21.83 -#define evtchn_upcall_pending		/* 0 */
   21.84 -#define evtchn_upcall_mask		1
   21.85 -
   21.86 -#define sizeof_vcpu_shift		3
   21.87 -
   21.88 -#ifdef CONFIG_SMP
   21.89 -#define XEN_GET_VCPU_INFO(reg)
   21.90 -#define preempt_disable(reg)	incl TI_preempt_count(reg)
   21.91 -#define preempt_enable(reg)	decl TI_preempt_count(reg)
   21.92 -#define XEN_LOCK_VCPU_INFO_SMP(reg) preempt_disable(%ebp)		; \
   21.93 -				movl TI_cpu(%ebp),reg			; \
   21.94 -				shl  $sizeof_vcpu_shift,reg		; \
   21.95 -				addl HYPERVISOR_shared_info,reg
   21.96 -#define XEN_UNLOCK_VCPU_INFO_SMP(reg) preempt_enable(%ebp)
   21.97 -#define XEN_UNLOCK_VCPU_INFO_SMP_fixup .byte 0xff,0xff,0xff
   21.98 -#define Ux00 0xff
   21.99 -#define XEN_LOCKED_BLOCK_EVENTS(reg)	movb $1,evtchn_upcall_mask(reg)
  21.100 -#define XEN_BLOCK_EVENTS(reg)	XEN_LOCK_VCPU_INFO_SMP(reg)		; \
  21.101 -				XEN_LOCKED_BLOCK_EVENTS(reg)		; \
  21.102 -    				XEN_UNLOCK_VCPU_INFO_SMP(reg)
  21.103 -#define XEN_UNBLOCK_EVENTS(reg)	XEN_LOCK_VCPU_INFO_SMP(reg)		; \
  21.104 -				movb $0,evtchn_upcall_mask(reg)		; \
  21.105 -    				XEN_UNLOCK_VCPU_INFO_SMP(reg)
  21.106 -#define XEN_SAVE_UPCALL_MASK(reg,tmp,off) GET_THREAD_INFO(%ebp)		; \
  21.107 -				XEN_LOCK_VCPU_INFO_SMP(reg)		; \
  21.108 -				movb evtchn_upcall_mask(reg), tmp	; \
  21.109 -				movb tmp, off(%esp)			; \
  21.110 -    				XEN_UNLOCK_VCPU_INFO_SMP(reg)
  21.111 -#else
  21.112 -#define XEN_GET_VCPU_INFO(reg)	movl HYPERVISOR_shared_info,reg
  21.113 -#define XEN_LOCK_VCPU_INFO_SMP(reg)
  21.114 -#define XEN_UNLOCK_VCPU_INFO_SMP(reg)
  21.115 -#define XEN_UNLOCK_VCPU_INFO_SMP_fixup
  21.116 -#define Ux00 0x00
  21.117 -#define XEN_LOCKED_BLOCK_EVENTS(reg)	movb $1,evtchn_upcall_mask(reg)
  21.118 -#define XEN_BLOCK_EVENTS(reg)	XEN_LOCKED_BLOCK_EVENTS(reg)
  21.119 -#define XEN_UNBLOCK_EVENTS(reg)	movb $0,evtchn_upcall_mask(reg)
  21.120 -#define XEN_SAVE_UPCALL_MASK(reg,tmp,off) \
  21.121 -	movb evtchn_upcall_mask(reg), tmp; \
  21.122 -	movb tmp, off(%esp)
  21.123 -#endif
  21.124 -
  21.125 -#define XEN_TEST_PENDING(reg)	testb $0xFF,evtchn_upcall_pending(reg)
  21.126 -
  21.127 -#ifdef CONFIG_PREEMPT
  21.128 -#define preempt_stop		XEN_BLOCK_EVENTS(%esi)
  21.129 -#else
  21.130 -#define preempt_stop
  21.131 -#define resume_kernel		restore_all
  21.132 -#endif
  21.133 -
  21.134 -#define SAVE_ALL_NO_EVENTMASK \
  21.135 -	cld; \
  21.136 -	pushl %es; \
  21.137 -	pushl %ds; \
  21.138 -	pushl %eax; \
  21.139 -	pushl %ebp; \
  21.140 -	pushl %edi; \
  21.141 -	pushl %esi; \
  21.142 -	pushl %edx; \
  21.143 -	pushl %ecx; \
  21.144 -	pushl %ebx; \
  21.145 -	movl $(__USER_DS), %edx; \
  21.146 -	movl %edx, %ds; \
  21.147 -	movl %edx, %es;
  21.148 -
  21.149 -#define SAVE_ALL \
  21.150 -	SAVE_ALL_NO_EVENTMASK; \
  21.151 -	XEN_GET_VCPU_INFO(%esi); \
  21.152 -	XEN_SAVE_UPCALL_MASK(%esi,%dl,EVENT_MASK)
  21.153 -
  21.154 -#define RESTORE_INT_REGS \
  21.155 -	popl %ebx;	\
  21.156 -	popl %ecx;	\
  21.157 -	popl %edx;	\
  21.158 -	popl %esi;	\
  21.159 -	popl %edi;	\
  21.160 -	popl %ebp;	\
  21.161 -	popl %eax
  21.162 -
  21.163 -#define RESTORE_REGS	\
  21.164 -	RESTORE_INT_REGS; \
  21.165 -1:	popl %ds;	\
  21.166 -2:	popl %es;	\
  21.167 -.section .fixup,"ax";	\
  21.168 -3:	movl $0,(%esp);	\
  21.169 -	jmp 1b;		\
  21.170 -4:	movl $0,(%esp);	\
  21.171 -	jmp 2b;		\
  21.172 -.previous;		\
  21.173 -.section __ex_table,"a";\
  21.174 -	.align 4;	\
  21.175 -	.long 1b,3b;	\
  21.176 -	.long 2b,4b;	\
  21.177 -.previous
  21.178 -
  21.179 -
  21.180 -#define RESTORE_ALL	\
  21.181 -	RESTORE_REGS	\
  21.182 -	addl $4, %esp;	\
  21.183 -1:	iret;		\
  21.184 -.section .fixup,"ax";   \
  21.185 -2:	movl $(__USER_DS), %edx; \
  21.186 -	movl %edx, %ds; \
  21.187 -	movl %edx, %es; \
  21.188 -	movl $11,%eax;	\
  21.189 -	call do_exit;	\
  21.190 -.previous;		\
  21.191 -.section __ex_table,"a";\
  21.192 -	.align 4;	\
  21.193 -	.long 1b,2b;	\
  21.194 -.previous
  21.195 -
  21.196 -
  21.197 -ENTRY(ret_from_fork)
  21.198 -	pushl %eax
  21.199 -	call schedule_tail
  21.200 -	GET_THREAD_INFO(%ebp)
  21.201 -	popl %eax
  21.202 -	XEN_GET_VCPU_INFO(%esi)
  21.203 -	jmp syscall_exit
  21.204 -
  21.205 -/*
  21.206 - * Return to user mode is not as complex as all this looks,
  21.207 - * but we want the default path for a system call return to
  21.208 - * go as quickly as possible which is why some of this is
  21.209 - * less clear than it otherwise should be.
  21.210 - */
  21.211 -
  21.212 -	# userspace resumption stub bypassing syscall exit tracing
  21.213 -	ALIGN
  21.214 -ret_from_exception:
  21.215 -	preempt_stop
  21.216 -ret_from_intr:
  21.217 -	GET_THREAD_INFO(%ebp)
  21.218 -	movl EFLAGS(%esp), %eax		# mix EFLAGS and CS
  21.219 -	movb CS(%esp), %al
  21.220 -	testl $(VM_MASK | 2), %eax
  21.221 -	jz resume_kernel		# returning to kernel or vm86-space
  21.222 -ENTRY(resume_userspace)
  21.223 -	XEN_GET_VCPU_INFO(%esi)
  21.224 -	XEN_BLOCK_EVENTS(%esi)		# make sure we don't miss an interrupt
  21.225 -					# setting need_resched or sigpending
  21.226 -					# between sampling and the iret
  21.227 -	movl TI_flags(%ebp), %ecx
  21.228 -	andl $_TIF_WORK_MASK, %ecx	# is there any work to be done on
  21.229 -					# int/exception return?
  21.230 -	jne work_pending
  21.231 -	jmp restore_all
  21.232 -
  21.233 -#ifdef CONFIG_PREEMPT
  21.234 -ENTRY(resume_kernel)
  21.235 -	XEN_GET_VCPU_INFO(%esi)
  21.236 -	cmpl $0,TI_preempt_count(%ebp)	# non-zero preempt_count ?
  21.237 -	jnz restore_all
  21.238 -need_resched:
  21.239 -	movl TI_flags(%ebp), %ecx	# need_resched set ?
  21.240 -	testb $_TIF_NEED_RESCHED, %cl
  21.241 -	jz restore_all
  21.242 -	testb $0xFF,EVENT_MASK(%esp)	# interrupts off (exception path) ?
  21.243 -	jnz restore_all
  21.244 -	movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp)
  21.245 -	XEN_UNBLOCK_EVENTS(%esi)
  21.246 -	call schedule
  21.247 -	XEN_BLOCK_EVENTS(%esi)
  21.248 -	movl $0,TI_preempt_count(%ebp)
  21.249 -	jmp need_resched
  21.250 -#endif
  21.251 -
  21.252 -/* SYSENTER_RETURN points to after the "sysenter" instruction in
  21.253 -   the vsyscall page.  See vsyscall-sysentry.S, which defines the symbol.  */
  21.254 -
  21.255 -	# sysenter call handler stub
  21.256 -ENTRY(sysenter_entry)
  21.257 -	movl TSS_sysenter_esp0(%esp),%esp
  21.258 -sysenter_past_esp:
  21.259 -	sti
  21.260 -	pushl $(__USER_DS)
  21.261 -	pushl %ebp
  21.262 -	pushfl
  21.263 -	pushl $(__USER_CS)
  21.264 -	pushl $SYSENTER_RETURN
  21.265 -
  21.266 -/*
  21.267 - * Load the potential sixth argument from user stack.
  21.268 - * Careful about security.
  21.269 - */
  21.270 -	cmpl $__PAGE_OFFSET-3,%ebp
  21.271 -	jae syscall_fault
  21.272 -1:	movl (%ebp),%ebp
  21.273 -.section __ex_table,"a"
  21.274 -	.align 4
  21.275 -	.long 1b,syscall_fault
  21.276 -.previous
  21.277 -
  21.278 -	pushl %eax
  21.279 -	SAVE_ALL
  21.280 -	GET_THREAD_INFO(%ebp)
  21.281 -
  21.282 -	testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
  21.283 -	jnz syscall_trace_entry
  21.284 -	cmpl $(nr_syscalls), %eax
  21.285 -	jae syscall_badsys
  21.286 -	call *sys_call_table(,%eax,4)
  21.287 -	movl %eax,EAX(%esp)
  21.288 -	cli
  21.289 -	movl TI_flags(%ebp), %ecx
  21.290 -	testw $_TIF_ALLWORK_MASK, %cx
  21.291 -	jne syscall_exit_work
  21.292 -/* if something modifies registers it must also disable sysexit */
  21.293 -	movl EIP(%esp), %edx
  21.294 -	movl OLDESP(%esp), %ecx
  21.295 -	xorl %ebp,%ebp
  21.296 -	sti
  21.297 -	sysexit
  21.298 -
  21.299 -
  21.300 -	# system call handler stub
  21.301 -ENTRY(system_call)
  21.302 -	pushl %eax			# save orig_eax
  21.303 -	SAVE_ALL
  21.304 -	GET_THREAD_INFO(%ebp)
  21.305 -					# system call tracing in operation
  21.306 -	testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
  21.307 -	jnz syscall_trace_entry
  21.308 -	cmpl $(nr_syscalls), %eax
  21.309 -	jae syscall_badsys
  21.310 -syscall_call:
  21.311 -	call *sys_call_table(,%eax,4)
  21.312 -	movl %eax,EAX(%esp)		# store the return value
  21.313 -syscall_exit:
  21.314 -	XEN_BLOCK_EVENTS(%esi)		# make sure we don't miss an interrupt
  21.315 -					# setting need_resched or sigpending
  21.316 -					# between sampling and the iret
  21.317 -	movl TI_flags(%ebp), %ecx
  21.318 -	testw $_TIF_ALLWORK_MASK, %cx	# current->work
  21.319 -	jne syscall_exit_work
  21.320 -restore_all:
  21.321 -	testl $VM_MASK, EFLAGS(%esp)
  21.322 -	jnz resume_vm86
  21.323 -	movb EVENT_MASK(%esp), %al
  21.324 -	notb %al			# %al == ~saved_mask
  21.325 -	XEN_LOCK_VCPU_INFO_SMP(%esi)
  21.326 -	andb evtchn_upcall_mask(%esi),%al
  21.327 -	andb $1,%al			# %al == mask & ~saved_mask
  21.328 -	jnz restore_all_enable_events	#     != 0 => reenable event delivery
  21.329 -	XEN_UNLOCK_VCPU_INFO_SMP(%esi)
  21.330 -	RESTORE_ALL
  21.331 -
  21.332 -resume_vm86:
  21.333 -	XEN_UNBLOCK_EVENTS(%esi)
  21.334 -	RESTORE_REGS
  21.335 -	movl %eax,(%esp)
  21.336 -	movl $__HYPERVISOR_switch_vm86,%eax
  21.337 -	int $0x82
  21.338 -	ud2
  21.339 -
  21.340 -	# perform work that needs to be done immediately before resumption
  21.341 -	ALIGN
  21.342 -work_pending:
  21.343 -	testb $_TIF_NEED_RESCHED, %cl
  21.344 -	jz work_notifysig
  21.345 -work_resched:
  21.346 -	call schedule
  21.347 -	XEN_BLOCK_EVENTS(%esi)		# make sure we don't miss an interrupt
  21.348 -					# setting need_resched or sigpending
  21.349 -					# between sampling and the iret
  21.350 -	movl TI_flags(%ebp), %ecx
  21.351 -	andl $_TIF_WORK_MASK, %ecx	# is there any work to be done other
  21.352 -					# than syscall tracing?
  21.353 -	jz restore_all
  21.354 -	testb $_TIF_NEED_RESCHED, %cl
  21.355 -	jnz work_resched
  21.356 -
  21.357 -work_notifysig:				# deal with pending signals and
  21.358 -					# notify-resume requests
  21.359 -	testl $VM_MASK, EFLAGS(%esp)
  21.360 -	movl %esp, %eax
  21.361 -	jne work_notifysig_v86		# returning to kernel-space or
  21.362 -					# vm86-space
  21.363 -	xorl %edx, %edx
  21.364 -	call do_notify_resume
  21.365 -	jmp restore_all
  21.366 -
  21.367 -	ALIGN
  21.368 -work_notifysig_v86:
  21.369 -	pushl %ecx			# save ti_flags for do_notify_resume
  21.370 -	call save_v86_state		# %eax contains pt_regs pointer
  21.371 -	popl %ecx
  21.372 -	movl %eax, %esp
  21.373 -	xorl %edx, %edx
  21.374 -	call do_notify_resume
  21.375 -	jmp restore_all
  21.376 -
  21.377 -	# perform syscall exit tracing
  21.378 -	ALIGN
  21.379 -syscall_trace_entry:
  21.380 -	movl $-ENOSYS,EAX(%esp)
  21.381 -	movl %esp, %eax
  21.382 -	xorl %edx,%edx
  21.383 -	call do_syscall_trace
  21.384 -	movl ORIG_EAX(%esp), %eax
  21.385 -	cmpl $(nr_syscalls), %eax
  21.386 -	jnae syscall_call
  21.387 -	jmp syscall_exit
  21.388 -
  21.389 -	# perform syscall exit tracing
  21.390 -	ALIGN
  21.391 -syscall_exit_work:
  21.392 -	testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl
  21.393 -	jz work_pending
  21.394 -	XEN_UNBLOCK_EVENTS(%esi)	# could let do_syscall_trace() call
  21.395 -					# schedule() instead
  21.396 -	movl %esp, %eax
  21.397 -	movl $1, %edx
  21.398 -	call do_syscall_trace
  21.399 -	jmp resume_userspace
  21.400 -
  21.401 -	ALIGN
  21.402 -syscall_fault:
  21.403 -	pushl %eax			# save orig_eax
  21.404 -	SAVE_ALL
  21.405 -	GET_THREAD_INFO(%ebp)
  21.406 -	movl $-EFAULT,EAX(%esp)
  21.407 -	jmp resume_userspace
  21.408 -
  21.409 -	ALIGN
  21.410 -syscall_badsys:
  21.411 -	movl $-ENOSYS,EAX(%esp)
  21.412 -	jmp resume_userspace
  21.413 -
  21.414 -#if 0 /* XEN */
  21.415 -/*
  21.416 - * Build the entry stubs and pointer table with
  21.417 - * some assembler magic.
  21.418 - */
  21.419 -.data
  21.420 -ENTRY(interrupt)
  21.421 -.text
  21.422 -
  21.423 -vector=0
  21.424 -ENTRY(irq_entries_start)
  21.425 -.rept NR_IRQS
  21.426 -	ALIGN
  21.427 -1:	pushl $vector-256
  21.428 -	jmp common_interrupt
  21.429 -.data
  21.430 -	.long 1b
  21.431 -.text
  21.432 -vector=vector+1
  21.433 -.endr
  21.434 -
  21.435 -	ALIGN
  21.436 -common_interrupt:
  21.437 -	SAVE_ALL
  21.438 -	movl %esp,%eax
  21.439 -	call do_IRQ
  21.440 -	jmp ret_from_intr
  21.441 -
  21.442 -#define BUILD_INTERRUPT(name, nr)	\
  21.443 -ENTRY(name)				\
  21.444 -	pushl $nr-256;			\
  21.445 -	SAVE_ALL			\
  21.446 -	movl %esp,%eax;			\
  21.447 -	call smp_/**/name;		\
  21.448 -	jmp ret_from_intr;
  21.449 -
  21.450 -/* The include is where all of the SMP etc. interrupts come from */
  21.451 -#include "entry_arch.h"
  21.452 -#endif /* XEN */
  21.453 -
  21.454 -ENTRY(divide_error)
  21.455 -	pushl $0			# no error code
  21.456 -	pushl $do_divide_error
  21.457 -	ALIGN
  21.458 -error_code:
  21.459 -	pushl %ds
  21.460 -	pushl %eax
  21.461 -	xorl %eax, %eax
  21.462 -	pushl %ebp
  21.463 -	pushl %edi
  21.464 -	pushl %esi
  21.465 -	pushl %edx
  21.466 -	decl %eax			# eax = -1
  21.467 -	pushl %ecx
  21.468 -	pushl %ebx
  21.469 -	cld
  21.470 -	movl %es, %ecx
  21.471 -	movl ES(%esp), %edi		# get the function address
  21.472 -	movl ORIG_EAX(%esp), %edx	# get the error code
  21.473 -	movl %eax, ORIG_EAX(%esp)
  21.474 -	movl %ecx, ES(%esp)
  21.475 -	movl $(__USER_DS), %ecx
  21.476 -	movl %ecx, %ds
  21.477 -	movl %ecx, %es
  21.478 -	movl %esp,%eax			# pt_regs pointer
  21.479 -	XEN_GET_VCPU_INFO(%esi)
  21.480 -	XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK)
  21.481 -	call *%edi
  21.482 -	jmp ret_from_exception
  21.483 -
  21.484 -# A note on the "critical region" in our callback handler.
  21.485 -# We want to avoid stacking callback handlers due to events occurring
  21.486 -# during handling of the last event. To do this, we keep events disabled
  21.487 -# until we've done all processing. HOWEVER, we must enable events before
  21.488 -# popping the stack frame (can't be done atomically) and so it would still
  21.489 -# be possible to get enough handler activations to overflow the stack.
  21.490 -# Although unlikely, bugs of that kind are hard to track down, so we'd
  21.491 -# like to avoid the possibility.
  21.492 -# So, on entry to the handler we detect whether we interrupted an
  21.493 -# existing activation in its critical region -- if so, we pop the current
  21.494 -# activation and restart the handler using the previous one.
  21.495 -ENTRY(hypervisor_callback)
  21.496 -	pushl %eax
  21.497 -	SAVE_ALL_NO_EVENTMASK
  21.498 -	movl EIP(%esp),%eax
  21.499 -	cmpl $scrit,%eax
  21.500 -	jb   11f
  21.501 -	cmpl $ecrit,%eax
  21.502 -	jb   critical_region_fixup
  21.503 -11:	XEN_GET_VCPU_INFO(%esi)
  21.504 -	movb $0, EVENT_MASK(%esp)
  21.505 -	push %esp
  21.506 -	call evtchn_do_upcall
  21.507 -	add  $4,%esp
  21.508 -	jmp  ret_from_intr
  21.509 -
  21.510 -        ALIGN
  21.511 -restore_all_enable_events:  
  21.512 -	XEN_UNBLOCK_EVENTS(%esi)
  21.513 -scrit:	/**** START OF CRITICAL REGION ****/
  21.514 -	XEN_TEST_PENDING(%esi)
  21.515 -	jnz  14f			# process more events if necessary...
  21.516 -	XEN_UNLOCK_VCPU_INFO_SMP(%esi)
  21.517 -	RESTORE_ALL
  21.518 -14:	XEN_LOCKED_BLOCK_EVENTS(%esi)
  21.519 -	XEN_UNLOCK_VCPU_INFO_SMP(%esi)
  21.520 -	jmp  11b
  21.521 -ecrit:  /**** END OF CRITICAL REGION ****/
  21.522 -# [How we do the fixup]. We want to merge the current stack frame with the
  21.523 -# just-interrupted frame. How we do this depends on where in the critical
  21.524 -# region the interrupted handler was executing, and so how many saved
  21.525 -# registers are in each frame. We do this quickly using the lookup table
  21.526 -# 'critical_fixup_table'. For each byte offset in the critical region, it
  21.527 -# provides the number of bytes which have already been popped from the
  21.528 -# interrupted stack frame. 
  21.529 -critical_region_fixup:
  21.530 -	addl $critical_fixup_table-scrit,%eax
  21.531 -	movzbl (%eax),%eax		# %eax contains num bytes popped
  21.532 -#ifdef CONFIG_SMP
  21.533 -	cmpb $0xff,%al
  21.534 -	jne  15f
  21.535 -	add  $1,%al
  21.536 -	GET_THREAD_INFO(%ebp)
  21.537 -	XEN_UNLOCK_VCPU_INFO_SMP(%esi)
  21.538 -15:
  21.539 -#endif
  21.540 -    	mov  %esp,%esi
  21.541 -	add  %eax,%esi			# %esi points at end of src region
  21.542 -	mov  %esp,%edi
  21.543 -	add  $0x34,%edi			# %edi points at end of dst region
  21.544 -	mov  %eax,%ecx
  21.545 -	shr  $2,%ecx			# convert words to bytes
  21.546 -	je   17f			# skip loop if nothing to copy
  21.547 -16:	subl $4,%esi			# pre-decrementing copy loop
  21.548 -	subl $4,%edi
  21.549 -	movl (%esi),%eax
  21.550 -	movl %eax,(%edi)
  21.551 -	loop 16b
  21.552 -17:	movl %edi,%esp			# final %edi is top of merged stack
  21.553 -	jmp  11b
  21.554 -
  21.555 -critical_fixup_table:
  21.556 -	.byte Ux00,Ux00,Ux00		# testb $0xff,(%esi) = XEN_TEST_PENDING
  21.557 -	.byte Ux00,Ux00			# jnz  14f
  21.558 -	XEN_UNLOCK_VCPU_INFO_SMP_fixup
  21.559 -	.byte 0x00			# pop  %ebx
  21.560 -	.byte 0x04			# pop  %ecx
  21.561 -	.byte 0x08			# pop  %edx
  21.562 -	.byte 0x0c			# pop  %esi
  21.563 -	.byte 0x10			# pop  %edi
  21.564 -	.byte 0x14			# pop  %ebp
  21.565 -	.byte 0x18			# pop  %eax
  21.566 -	.byte 0x1c			# pop  %ds
  21.567 -	.byte 0x20			# pop  %es
  21.568 -	.byte 0x24,0x24,0x24		# add  $4,%esp
  21.569 -	.byte 0x28			# iret
  21.570 -	.byte Ux00,Ux00,Ux00,Ux00	# movb $1,1(%esi)
  21.571 -	XEN_UNLOCK_VCPU_INFO_SMP_fixup
  21.572 -	.byte 0x00,0x00			# jmp  11b
  21.573 -
  21.574 -# Hypervisor uses this for application faults while it executes.
  21.575 -ENTRY(failsafe_callback)
  21.576 -1:	popl %ds
  21.577 -2:	popl %es
  21.578 -3:	popl %fs
  21.579 -4:	popl %gs
  21.580 -	subl $4,%esp
  21.581 -	SAVE_ALL
  21.582 -	jmp  ret_from_exception
  21.583 -.section .fixup,"ax";	\
  21.584 -6:	movl $0,(%esp);	\
  21.585 -	jmp 1b;		\
  21.586 -7:	movl $0,(%esp);	\
  21.587 -	jmp 2b;		\
  21.588 -8:	movl $0,(%esp);	\
  21.589 -	jmp 3b;		\
  21.590 -9:	movl $0,(%esp);	\
  21.591 -	jmp 4b;		\
  21.592 -.previous;		\
  21.593 -.section __ex_table,"a";\
  21.594 -	.align 4;	\
  21.595 -	.long 1b,6b;	\
  21.596 -	.long 2b,7b;	\
  21.597 -	.long 3b,8b;	\
  21.598 -	.long 4b,9b;	\
  21.599 -.previous
  21.600 -
  21.601 -ENTRY(coprocessor_error)
  21.602 -	pushl $0
  21.603 -	pushl $do_coprocessor_error
  21.604 -	jmp error_code
  21.605 -
  21.606 -ENTRY(simd_coprocessor_error)
  21.607 -	pushl $0
  21.608 -	pushl $do_simd_coprocessor_error
  21.609 -	jmp error_code
  21.610 -
  21.611 -ENTRY(device_not_available)
  21.612 -	pushl $-1			# mark this as an int
  21.613 -	SAVE_ALL
  21.614 -	preempt_stop
  21.615 -	call math_state_restore
  21.616 -	jmp ret_from_exception
  21.617 -
  21.618 -/*
  21.619 - * Debug traps and NMI can happen at the one SYSENTER instruction
  21.620 - * that sets up the real kernel stack. Check here, since we can't
  21.621 - * allow the wrong stack to be used.
  21.622 - *
  21.623 - * "TSS_sysenter_esp0+12" is because the NMI/debug handler will have
  21.624 - * already pushed 3 words if it hits on the sysenter instruction:
  21.625 - * eflags, cs and eip.
  21.626 - *
  21.627 - * We just load the right stack, and push the three (known) values
  21.628 - * by hand onto the new stack - while updating the return eip past
  21.629 - * the instruction that would have done it for sysenter.
  21.630 - */
  21.631 -#define FIX_STACK(offset, ok, label)		\
  21.632 -	cmpw $__KERNEL_CS,4(%esp);		\
  21.633 -	jne ok;					\
  21.634 -label:						\
  21.635 -	movl TSS_sysenter_esp0+offset(%esp),%esp;	\
  21.636 -	pushfl;					\
  21.637 -	pushl $__KERNEL_CS;			\
  21.638 -	pushl $sysenter_past_esp
  21.639 -
  21.640 -ENTRY(debug)
  21.641 -	cmpl $sysenter_entry,(%esp)
  21.642 -	jne debug_stack_correct
  21.643 -	FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn)
  21.644 -debug_stack_correct:
  21.645 -	pushl $-1			# mark this as an int
  21.646 -	SAVE_ALL
  21.647 -	xorl %edx,%edx			# error code 0
  21.648 -	movl %esp,%eax			# pt_regs pointer
  21.649 -	call do_debug
  21.650 -	testl %eax,%eax
  21.651 -	jnz restore_all
  21.652 -	jmp ret_from_exception
  21.653 -
  21.654 -#if 0 /* XEN */
  21.655 -/*
  21.656 - * NMI is doubly nasty. It can happen _while_ we're handling
  21.657 - * a debug fault, and the debug fault hasn't yet been able to
  21.658 - * clear up the stack. So we first check whether we got  an
  21.659 - * NMI on the sysenter entry path, but after that we need to
  21.660 - * check whether we got an NMI on the debug path where the debug
  21.661 - * fault happened on the sysenter path.
  21.662 - */
  21.663 -ENTRY(nmi)
  21.664 -	cmpl $sysenter_entry,(%esp)
  21.665 -	je nmi_stack_fixup
  21.666 -	pushl %eax
  21.667 -	movl %esp,%eax
  21.668 -	/* Do not access memory above the end of our stack page,
  21.669 -	 * it might not exist.
  21.670 -	 */
  21.671 -	andl $(THREAD_SIZE-1),%eax
  21.672 -	cmpl $(THREAD_SIZE-20),%eax
  21.673 -	popl %eax
  21.674 -	jae nmi_stack_correct
  21.675 -	cmpl $sysenter_entry,12(%esp)
  21.676 -	je nmi_debug_stack_check
  21.677 -nmi_stack_correct:
  21.678 -	pushl %eax
  21.679 -	SAVE_ALL
  21.680 -	xorl %edx,%edx		# zero error code
  21.681 -	movl %esp,%eax		# pt_regs pointer
  21.682 -	call do_nmi
  21.683 -	RESTORE_ALL
  21.684 -
  21.685 -nmi_stack_fixup:
  21.686 -	FIX_STACK(12,nmi_stack_correct, 1)
  21.687 -	jmp nmi_stack_correct
  21.688 -nmi_debug_stack_check:
  21.689 -	cmpw $__KERNEL_CS,16(%esp)
  21.690 -	jne nmi_stack_correct
  21.691 -	cmpl $debug - 1,(%esp)
  21.692 -	jle nmi_stack_correct
  21.693 -	cmpl $debug_esp_fix_insn,(%esp)
  21.694 -	jle nmi_debug_stack_fixup
  21.695 -nmi_debug_stack_fixup:
  21.696 -	FIX_STACK(24,nmi_stack_correct, 1)
  21.697 -	jmp nmi_stack_correct
  21.698 -#endif /* XEN */
  21.699 -
  21.700 -ENTRY(int3)
  21.701 -	pushl $-1			# mark this as an int
  21.702 -	SAVE_ALL
  21.703 -	xorl %edx,%edx		# zero error code
  21.704 -	movl %esp,%eax		# pt_regs pointer
  21.705 -	call do_int3
  21.706 -	testl %eax,%eax
  21.707 -	jnz restore_all
  21.708 -	jmp ret_from_exception
  21.709 -
  21.710 -ENTRY(overflow)
  21.711 -	pushl $0
  21.712 -	pushl $do_overflow
  21.713 -	jmp error_code
  21.714 -
  21.715 -ENTRY(bounds)
  21.716 -	pushl $0
  21.717 -	pushl $do_bounds
  21.718 -	jmp error_code
  21.719 -
  21.720 -ENTRY(invalid_op)
  21.721 -	pushl $0
  21.722 -	pushl $do_invalid_op
  21.723 -	jmp error_code
  21.724 -
  21.725 -ENTRY(coprocessor_segment_overrun)
  21.726 -	pushl $0
  21.727 -	pushl $do_coprocessor_segment_overrun
  21.728 -	jmp error_code
  21.729 -
  21.730 -ENTRY(invalid_TSS)
  21.731 -	pushl $do_invalid_TSS
  21.732 -	jmp error_code
  21.733 -
  21.734 -ENTRY(segment_not_present)
  21.735 -	pushl $do_segment_not_present
  21.736 -	jmp error_code
  21.737 -
  21.738 -ENTRY(stack_segment)
  21.739 -	pushl $do_stack_segment
  21.740 -	jmp error_code
  21.741 -
  21.742 -ENTRY(general_protection)
  21.743 -	pushl $do_general_protection
  21.744 -	jmp error_code
  21.745 -
  21.746 -ENTRY(alignment_check)
  21.747 -	pushl $do_alignment_check
  21.748 -	jmp error_code
  21.749 -
  21.750 -# This handler is special, because it gets an extra value on its stack,
  21.751 -# which is the linear faulting address.
  21.752 -# fastcall register usage:  %eax = pt_regs, %edx = error code,
  21.753 -#			    %ecx = fault address
  21.754 -ENTRY(page_fault)
  21.755 -	pushl %ds
  21.756 -	pushl %eax
  21.757 -	xorl %eax, %eax
  21.758 -	pushl %ebp
  21.759 -	pushl %edi
  21.760 -	pushl %esi
  21.761 -	pushl %edx
  21.762 -	decl %eax			/* eax = -1 */
  21.763 -	pushl %ecx
  21.764 -	pushl %ebx
  21.765 -	cld
  21.766 -	movl %es,%edi
  21.767 -	movl ES(%esp), %ecx		/* get the faulting address */
  21.768 -	movl ORIG_EAX(%esp), %edx	/* get the error code */
  21.769 -	movl %eax, ORIG_EAX(%esp)
  21.770 -	movl %edi, ES(%esp)
  21.771 -	movl $(__KERNEL_DS),%eax
  21.772 -	movl %eax, %ds
  21.773 -	movl %eax, %es
  21.774 -	movl %esp,%eax			/* pt_regs pointer */
  21.775 -	XEN_GET_VCPU_INFO(%esi)
  21.776 -	XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK)
  21.777 -	call do_page_fault
  21.778 -	jmp ret_from_exception
  21.779 -
  21.780 -#ifdef CONFIG_X86_MCE
  21.781 -ENTRY(machine_check)
  21.782 -	pushl $0
  21.783 -	pushl machine_check_vector
  21.784 -	jmp error_code
  21.785 -#endif
  21.786 -
  21.787 -ENTRY(fixup_4gb_segment)
  21.788 -	pushl $do_fixup_4gb_segment
  21.789 -	jmp error_code
  21.790 -
  21.791 -.data
  21.792 -ENTRY(sys_call_table)
  21.793 -	.long sys_restart_syscall	/* 0 - old "setup()" system call, used for restarting */
  21.794 -	.long sys_exit
  21.795 -	.long sys_fork
  21.796 -	.long sys_read
  21.797 -	.long sys_write
  21.798 -	.long sys_open		/* 5 */
  21.799 -	.long sys_close
  21.800 -	.long sys_waitpid
  21.801 -	.long sys_creat
  21.802 -	.long sys_link
  21.803 -	.long sys_unlink	/* 10 */
  21.804 -	.long sys_execve
  21.805 -	.long sys_chdir
  21.806 -	.long sys_time
  21.807 -	.long sys_mknod
  21.808 -	.long sys_chmod		/* 15 */
  21.809 -	.long sys_lchown16
  21.810 -	.long sys_ni_syscall	/* old break syscall holder */
  21.811 -	.long sys_stat
  21.812 -	.long sys_lseek
  21.813 -	.long sys_getpid	/* 20 */
  21.814 -	.long sys_mount
  21.815 -	.long sys_oldumount
  21.816 -	.long sys_setuid16
  21.817 -	.long sys_getuid16
  21.818 -	.long sys_stime		/* 25 */
  21.819 -	.long sys_ptrace
  21.820 -	.long sys_alarm
  21.821 -	.long sys_fstat
  21.822 -	.long sys_pause
  21.823 -	.long sys_utime		/* 30 */
  21.824 -	.long sys_ni_syscall	/* old stty syscall holder */
  21.825 -	.long sys_ni_syscall	/* old gtty syscall holder */
  21.826 -	.long sys_access
  21.827 -	.long sys_nice
  21.828 -	.long sys_ni_syscall	/* 35 - old ftime syscall holder */
  21.829 -	.long sys_sync
  21.830 -	.long sys_kill
  21.831 -	.long sys_rename
  21.832 -	.long sys_mkdir
  21.833 -	.long sys_rmdir		/* 40 */
  21.834 -	.long sys_dup
  21.835 -	.long sys_pipe
  21.836 -	.long sys_times
  21.837 -	.long sys_ni_syscall	/* old prof syscall holder */
  21.838 -	.long sys_brk		/* 45 */
  21.839 -	.long sys_setgid16
  21.840 -	.long sys_getgid16
  21.841 -	.long sys_signal
  21.842 -	.long sys_geteuid16
  21.843 -	.long sys_getegid16	/* 50 */
  21.844 -	.long sys_acct
  21.845 -	.long sys_umount	/* recycled never used phys() */
  21.846 -	.long sys_ni_syscall	/* old lock syscall holder */
  21.847 -	.long sys_ioctl
  21.848 -	.long sys_fcntl		/* 55 */
  21.849 -	.long sys_ni_syscall	/* old mpx syscall holder */
  21.850 -	.long sys_setpgid
  21.851 -	.long sys_ni_syscall	/* old ulimit syscall holder */
  21.852 -	.long sys_olduname
  21.853 -	.long sys_umask		/* 60 */
  21.854 -	.long sys_chroot
  21.855 -	.long sys_ustat
  21.856 -	.long sys_dup2
  21.857 -	.long sys_getppid
  21.858 -	.long sys_getpgrp	/* 65 */
  21.859 -	.long sys_setsid
  21.860 -	.long sys_sigaction
  21.861 -	.long sys_sgetmask
  21.862 -	.long sys_ssetmask
  21.863 -	.long sys_setreuid16	/* 70 */
  21.864 -	.long sys_setregid16
  21.865 -	.long sys_sigsuspend
  21.866 -	.long sys_sigpending
  21.867 -	.long sys_sethostname
  21.868 -	.long sys_setrlimit	/* 75 */
  21.869 -	.long sys_old_getrlimit
  21.870 -	.long sys_getrusage
  21.871 -	.long sys_gettimeofday
  21.872 -	.long sys_settimeofday
  21.873 -	.long sys_getgroups16	/* 80 */
  21.874 -	.long sys_setgroups16
  21.875 -	.long old_select
  21.876 -	.long sys_symlink
  21.877 -	.long sys_lstat
  21.878 -	.long sys_readlink	/* 85 */
  21.879 -	.long sys_uselib
  21.880 -	.long sys_swapon
  21.881 -	.long sys_reboot
  21.882 -	.long old_readdir
  21.883 -	.long old_mmap		/* 90 */
  21.884 -	.long sys_munmap
  21.885 -	.long sys_truncate
  21.886 -	.long sys_ftruncate
  21.887 -	.long sys_fchmod
  21.888 -	.long sys_fchown16	/* 95 */
  21.889 -	.long sys_getpriority
  21.890 -	.long sys_setpriority
  21.891 -	.long sys_ni_syscall	/* old profil syscall holder */
  21.892 -	.long sys_statfs
  21.893 -	.long sys_fstatfs	/* 100 */
  21.894 -	.long sys_ioperm
  21.895 -	.long sys_socketcall
  21.896 -	.long sys_syslog
  21.897 -	.long sys_setitimer
  21.898 -	.long sys_getitimer	/* 105 */
  21.899 -	.long sys_newstat
  21.900 -	.long sys_newlstat
  21.901 -	.long sys_newfstat
  21.902 -	.long sys_uname
  21.903 -	.long sys_iopl		/* 110 */
  21.904 -	.long sys_vhangup
  21.905 -	.long sys_ni_syscall	/* old "idle" system call */
  21.906 -	.long sys_vm86old
  21.907 -	.long sys_wait4
  21.908 -	.long sys_swapoff	/* 115 */
  21.909 -	.long sys_sysinfo
  21.910 -	.long sys_ipc
  21.911 -	.long sys_fsync
  21.912 -	.long sys_sigreturn
  21.913 -	.long sys_clone		/* 120 */
  21.914 -	.long sys_setdomainname
  21.915 -	.long sys_newuname
  21.916 -	.long sys_modify_ldt
  21.917 -	.long sys_adjtimex
  21.918 -	.long sys_mprotect	/* 125 */
  21.919 -	.long sys_sigprocmask
  21.920 -	.long sys_ni_syscall	/* old "create_module" */ 
  21.921 -	.long sys_init_module
  21.922 -	.long sys_delete_module
  21.923 -	.long sys_ni_syscall	/* 130:	old "get_kernel_syms" */
  21.924 -	.long sys_quotactl
  21.925 -	.long sys_getpgid
  21.926 -	.long sys_fchdir
  21.927 -	.long sys_bdflush
  21.928 -	.long sys_sysfs		/* 135 */
  21.929 -	.long sys_personality
  21.930 -	.long sys_ni_syscall	/* reserved for afs_syscall */
  21.931 -	.long sys_setfsuid16
  21.932 -	.long sys_setfsgid16
  21.933 -	.long sys_llseek	/* 140 */
  21.934 -	.long sys_getdents
  21.935 -	.long sys_select
  21.936 -	.long sys_flock
  21.937 -	.long sys_msync
  21.938 -	.long sys_readv		/* 145 */
  21.939 -	.long sys_writev
  21.940 -	.long sys_getsid
  21.941 -	.long sys_fdatasync
  21.942 -	.long sys_sysctl
  21.943 -	.long sys_mlock		/* 150 */
  21.944 -	.long sys_munlock
  21.945 -	.long sys_mlockall
  21.946 -	.long sys_munlockall
  21.947 -	.long sys_sched_setparam
  21.948 -	.long sys_sched_getparam   /* 155 */
  21.949 -	.long sys_sched_setscheduler
  21.950 -	.long sys_sched_getscheduler
  21.951 -	.long sys_sched_yield
  21.952 -	.long sys_sched_get_priority_max
  21.953 -	.long sys_sched_get_priority_min  /* 160 */
  21.954 -	.long sys_sched_rr_get_interval
  21.955 -	.long sys_nanosleep
  21.956 -	.long sys_mremap
  21.957 -	.long sys_setresuid16
  21.958 -	.long sys_getresuid16	/* 165 */
  21.959 -	.long sys_vm86
  21.960 -	.long sys_ni_syscall	/* Old sys_query_module */
  21.961 -	.long sys_poll
  21.962 -	.long sys_nfsservctl
  21.963 -	.long sys_setresgid16	/* 170 */
  21.964 -	.long sys_getresgid16
  21.965 -	.long sys_prctl
  21.966 -	.long sys_rt_sigreturn
  21.967 -	.long sys_rt_sigaction
  21.968 -	.long sys_rt_sigprocmask	/* 175 */
  21.969 -	.long sys_rt_sigpending
  21.970 -	.long sys_rt_sigtimedwait
  21.971 -	.long sys_rt_sigqueueinfo
  21.972 -	.long sys_rt_sigsuspend
  21.973 -	.long sys_pread64	/* 180 */
  21.974 -	.long sys_pwrite64
  21.975 -	.long sys_chown16
  21.976 -	.long sys_getcwd
  21.977 -	.long sys_capget
  21.978 -	.long sys_capset	/* 185 */
  21.979 -	.long sys_sigaltstack
  21.980 -	.long sys_sendfile
  21.981 -	.long sys_ni_syscall	/* reserved for streams1 */
  21.982 -	.long sys_ni_syscall	/* reserved for streams2 */
  21.983 -	.long sys_vfork		/* 190 */
  21.984 -	.long sys_getrlimit
  21.985 -	.long sys_mmap2
  21.986 -	.long sys_truncate64
  21.987 -	.long sys_ftruncate64
  21.988 -	.long sys_stat64	/* 195 */
  21.989 -	.long sys_lstat64
  21.990 -	.long sys_fstat64
  21.991 -	.long sys_lchown
  21.992 -	.long sys_getuid
  21.993 -	.long sys_getgid	/* 200 */
  21.994 -	.long sys_geteuid
  21.995 -	.long sys_getegid
  21.996 -	.long sys_setreuid
  21.997 -	.long sys_setregid
  21.998 -	.long sys_getgroups	/* 205 */
  21.999 -	.long sys_setgroups
 21.1000 -	.long sys_fchown
 21.1001 -	.long sys_setresuid
 21.1002 -	.long sys_getresuid
 21.1003 -	.long sys_setresgid	/* 210 */
 21.1004 -	.long sys_getresgid
 21.1005 -	.long sys_chown
 21.1006 -	.long sys_setuid
 21.1007 -	.long sys_setgid
 21.1008 -	.long sys_setfsuid	/* 215 */
 21.1009 -	.long sys_setfsgid
 21.1010 -	.long sys_pivot_root
 21.1011 -	.long sys_mincore
 21.1012 -	.long sys_madvise
 21.1013 -	.long sys_getdents64	/* 220 */
 21.1014 -	.long sys_fcntl64
 21.1015 -	.long sys_ni_syscall	/* reserved for TUX */
 21.1016 -	.long sys_ni_syscall
 21.1017 -	.long sys_gettid
 21.1018 -	.long sys_readahead	/* 225 */
 21.1019 -	.long sys_setxattr
 21.1020 -	.long sys_lsetxattr
 21.1021 -	.long sys_fsetxattr
 21.1022 -	.long sys_getxattr
 21.1023 -	.long sys_lgetxattr	/* 230 */
 21.1024 -	.long sys_fgetxattr
 21.1025 -	.long sys_listxattr
 21.1026 -	.long sys_llistxattr
 21.1027 -	.long sys_flistxattr
 21.1028 -	.long sys_removexattr	/* 235 */
 21.1029 -	.long sys_lremovexattr
 21.1030 -	.long sys_fremovexattr
 21.1031 -	.long sys_tkill
 21.1032 -	.long sys_sendfile64
 21.1033 -	.long sys_futex		/* 240 */
 21.1034 -	.long sys_sched_setaffinity
 21.1035 -	.long sys_sched_getaffinity
 21.1036 -	.long sys_set_thread_area
 21.1037 -	.long sys_get_thread_area
 21.1038 -	.long sys_io_setup	/* 245 */
 21.1039 -	.long sys_io_destroy
 21.1040 -	.long sys_io_getevents
 21.1041 -	.long sys_io_submit
 21.1042 -	.long sys_io_cancel
 21.1043 -	.long sys_fadvise64	/* 250 */
 21.1044 -	.long sys_ni_syscall
 21.1045 -	.long sys_exit_group
 21.1046 -	.long sys_lookup_dcookie
 21.1047 -	.long sys_epoll_create
 21.1048 -	.long sys_epoll_ctl	/* 255 */
 21.1049 -	.long sys_epoll_wait
 21.1050 - 	.long sys_remap_file_pages
 21.1051 - 	.long sys_set_tid_address
 21.1052 - 	.long sys_timer_create
 21.1053 - 	.long sys_timer_settime		/* 260 */
 21.1054 - 	.long sys_timer_gettime
 21.1055 - 	.long sys_timer_getoverrun
 21.1056 - 	.long sys_timer_delete
 21.1057 - 	.long sys_clock_settime
 21.1058 - 	.long sys_clock_gettime		/* 265 */
 21.1059 - 	.long sys_clock_getres
 21.1060 - 	.long sys_clock_nanosleep
 21.1061 -	.long sys_statfs64
 21.1062 -	.long sys_fstatfs64	
 21.1063 -	.long sys_tgkill	/* 270 */
 21.1064 -	.long sys_utimes
 21.1065 - 	.long sys_fadvise64_64
 21.1066 -	.long sys_ni_syscall	/* sys_vserver */
 21.1067 -	.long sys_mbind
 21.1068 -	.long sys_get_mempolicy
 21.1069 -	.long sys_set_mempolicy
 21.1070 -	.long sys_mq_open
 21.1071 -	.long sys_mq_unlink
 21.1072 -	.long sys_mq_timedsend
 21.1073 -	.long sys_mq_timedreceive	/* 280 */
 21.1074 -	.long sys_mq_notify
 21.1075 -	.long sys_mq_getsetattr
 21.1076 -	.long sys_ni_syscall		/* reserved for kexec */
 21.1077 -	.long sys_waitid
 21.1078 -	.long sys_ni_syscall		/* 285 */ /* available */
 21.1079 -	.long sys_add_key
 21.1080 -	.long sys_request_key
 21.1081 -	.long sys_keyctl
 21.1082 -
 21.1083 -syscall_table_size=(.-sys_call_table)
    22.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S	Thu Mar 10 22:09:19 2005 +0000
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,185 +0,0 @@
    22.4 -
    22.5 -#include <linux/config.h>
    22.6 -
    22.7 -.section __xen_guest
    22.8 -	.ascii	"GUEST_OS=linux,GUEST_VER=2.6,XEN_VER=3.0,VIRT_BASE=0xC0000000"
    22.9 -	.ascii	",LOADER=generic"
   22.10 -	.ascii	",PT_MODE_WRITABLE"
   22.11 -	.byte	0
   22.12 -
   22.13 -.text
   22.14 -#include <linux/threads.h>
   22.15 -#include <linux/linkage.h>
   22.16 -#include <asm/segment.h>
   22.17 -#include <asm/thread_info.h>
   22.18 -#include <asm/asm_offsets.h>
   22.19 -#include <asm-xen/xen-public/arch-x86_32.h>
   22.20 -
   22.21 -/*
   22.22 - * References to members of the new_cpu_data structure.
   22.23 - */
   22.24 -
   22.25 -#define X86		new_cpu_data+CPUINFO_x86
   22.26 -#define X86_VENDOR	new_cpu_data+CPUINFO_x86_vendor
   22.27 -#define X86_MODEL	new_cpu_data+CPUINFO_x86_model
   22.28 -#define X86_MASK	new_cpu_data+CPUINFO_x86_mask
   22.29 -#define X86_HARD_MATH	new_cpu_data+CPUINFO_hard_math
   22.30 -#define X86_CPUID	new_cpu_data+CPUINFO_cpuid_level
   22.31 -#define X86_CAPABILITY	new_cpu_data+CPUINFO_x86_capability
   22.32 -#define X86_VENDOR_ID	new_cpu_data+CPUINFO_x86_vendor_id
   22.33 -
   22.34 -ENTRY(startup_32)
   22.35 -	cld
   22.36 -
   22.37 -	/* Copy the necessary stuff from xen_start_info structure. */
   22.38 -	mov  $xen_start_info_union,%edi
   22.39 -	mov  $128,%ecx
   22.40 -	rep movsl
   22.41 -
   22.42 -#ifdef CONFIG_SMP
   22.43 -ENTRY(startup_32_smp)
   22.44 -	cld
   22.45 -#endif /* CONFIG_SMP */
   22.46 -
   22.47 -	/* Set up the stack pointer */
   22.48 -	lss stack_start,%esp
   22.49 -
   22.50 -checkCPUtype:
   22.51 -
   22.52 -	/* get vendor info */
   22.53 -	xorl %eax,%eax			# call CPUID with 0 -> return vendor ID
   22.54 -	cpuid
   22.55 -	movl %eax,X86_CPUID		# save CPUID level
   22.56 -	movl %ebx,X86_VENDOR_ID		# lo 4 chars
   22.57 -	movl %edx,X86_VENDOR_ID+4	# next 4 chars
   22.58 -	movl %ecx,X86_VENDOR_ID+8	# last 4 chars
   22.59 -
   22.60 -	movl $1,%eax		# Use the CPUID instruction to get CPU type
   22.61 -	cpuid
   22.62 -	movb %al,%cl		# save reg for future use
   22.63 -	andb $0x0f,%ah		# mask processor family
   22.64 -	movb %ah,X86
   22.65 -	andb $0xf0,%al		# mask model
   22.66 -	shrb $4,%al
   22.67 -	movb %al,X86_MODEL
   22.68 -	andb $0x0f,%cl		# mask mask revision
   22.69 -	movb %cl,X86_MASK
   22.70 -	movl %edx,X86_CAPABILITY
   22.71 -
   22.72 -	incb ready
   22.73 -
   22.74 -	xorl %eax,%eax		# Clear FS/GS and LDT
   22.75 -	movl %eax,%fs
   22.76 -	movl %eax,%gs
   22.77 -	cld		# gcc2 wants the direction flag cleared at all times
   22.78 -
   22.79 -#ifdef CONFIG_SMP
   22.80 -	movb ready, %cl	
   22.81 -	cmpb $1,%cl
   22.82 -	je 1f			# the first CPU calls start_kernel
   22.83 -				# all other CPUs call initialize_secondary
   22.84 -	call initialize_secondary
   22.85 -	jmp L6
   22.86 -1:
   22.87 -#endif /* CONFIG_SMP */
   22.88 -	call start_kernel
   22.89 -L6:
   22.90 -	jmp L6			# main should never return here, but
   22.91 -				# just in case, we know what happens.
   22.92 -
   22.93 -ENTRY(lgdt_finish)
   22.94 -	movl $(__KERNEL_DS),%eax	# reload all the segment registers
   22.95 -	movw %ax,%ss			# after changing gdt.
   22.96 -
   22.97 -	movl $(__USER_DS),%eax		# DS/ES contains default USER segment
   22.98 -	movw %ax,%ds
   22.99 -	movw %ax,%es
  22.100 -
  22.101 -	popl %eax			# reload CS by intersegment return
  22.102 -	pushl $(__KERNEL_CS)
  22.103 -	pushl %eax
  22.104 -	lret
  22.105 -
  22.106 -ENTRY(stack_start)
  22.107 -	.long init_thread_union+THREAD_SIZE
  22.108 -	.long __BOOT_DS
  22.109 -
  22.110 -ready:	.byte 0
  22.111 -
  22.112 -.globl idt_descr
  22.113 -.globl cpu_gdt_descr
  22.114 -
  22.115 -	ALIGN
  22.116 -	.word 0				# 32-bit align idt_desc.address
  22.117 -idt_descr:
  22.118 -	.word IDT_ENTRIES*8-1		# idt contains 256 entries
  22.119 -	.long idt_table
  22.120 -
  22.121 -# boot GDT descriptor (later on used by CPU#0):
  22.122 -	.word 0				# 32 bit align gdt_desc.address
  22.123 -cpu_gdt_descr:
  22.124 -	.word GDT_SIZE
  22.125 -	.long cpu_gdt_table
  22.126 -
  22.127 -	.fill NR_CPUS-1,8,0		# space for the other GDT descriptors
  22.128 -
  22.129 -.org 0x1000
  22.130 -ENTRY(empty_zero_page)
  22.131 -
  22.132 -.org 0x2000
  22.133 -ENTRY(swapper_pg_dir)
  22.134 -
  22.135 -.org 0x3000
  22.136 -ENTRY(cpu_gdt_table)
  22.137 -	.quad 0x0000000000000000	/* NULL descriptor */
  22.138 -	.quad 0x0000000000000000	/* 0x0b reserved */
  22.139 -	.quad 0x0000000000000000	/* 0x13 reserved */
  22.140 -	.quad 0x0000000000000000	/* 0x1b reserved */
  22.141 -	.quad 0x0000000000000000	/* 0x20 unused */
  22.142 -	.quad 0x0000000000000000	/* 0x28 unused */
  22.143 -	.quad 0x0000000000000000	/* 0x33 TLS entry 1 */
  22.144 -	.quad 0x0000000000000000	/* 0x3b TLS entry 2 */
  22.145 -	.quad 0x0000000000000000	/* 0x43 TLS entry 3 */
  22.146 -	.quad 0x0000000000000000	/* 0x4b reserved */
  22.147 -	.quad 0x0000000000000000	/* 0x53 reserved */
  22.148 -	.quad 0x0000000000000000	/* 0x5b reserved */
  22.149 -
  22.150 -	.quad 0x00cfbb000000c3ff	/* 0x60 kernel 4GB code at 0x00000000 */
  22.151 -	.quad 0x00cfb3000000c3ff	/* 0x68 kernel 4GB data at 0x00000000 */
  22.152 -	.quad 0x00cffb000000c3ff	/* 0x73 user 4GB code at 0x00000000 */
  22.153 -	.quad 0x00cff3000000c3ff	/* 0x7b user 4GB data at 0x00000000 */
  22.154 -
  22.155 -	.quad 0x0000000000000000	/* 0x80 TSS descriptor */
  22.156 -	.quad 0x0000000000000000	/* 0x88 LDT descriptor */
  22.157 -
  22.158 -	/* Segments used for calling PnP BIOS */
  22.159 -	.quad 0x0000000000000000	/* 0x90 32-bit code */
  22.160 -	.quad 0x0000000000000000	/* 0x98 16-bit code */
  22.161 -	.quad 0x0000000000000000	/* 0xa0 16-bit data */
  22.162 -	.quad 0x0000000000000000	/* 0xa8 16-bit data */
  22.163 -	.quad 0x0000000000000000	/* 0xb0 16-bit data */
  22.164 -	/*
  22.165 -	 * The APM segments have byte granularity and their bases
  22.166 -	 * and limits are set at run time.
  22.167 -	 */
  22.168 -	.quad 0x0000000000000000	/* 0xb8 APM CS    code */
  22.169 -	.quad 0x0000000000000000	/* 0xc0 APM CS 16 code (16 bit) */
  22.170 -	.quad 0x0000000000000000	/* 0xc8 APM DS    data */
  22.171 -
  22.172 -	.quad 0x0000000000000000	/* 0xd0 - unused */
  22.173 -	.quad 0x0000000000000000	/* 0xd8 - unused */
  22.174 -	.quad 0x0000000000000000	/* 0xe0 - unused */
  22.175 -	.quad 0x0000000000000000	/* 0xe8 - unused */
  22.176 -	.quad 0x0000000000000000	/* 0xf0 - unused */
  22.177 -	.quad 0x0000000000000000	/* 0xf8 - GDT entry 31: double-fault TSS */
  22.178 -	.fill GDT_ENTRIES-32,8,0
  22.179 -
  22.180 -.org 0x4000
  22.181 -ENTRY(default_ldt)
  22.182 -
  22.183 -.org 0x5000
  22.184 -/*
  22.185 - * Real beginning of normal "text" segment
  22.186 - */
  22.187 -ENTRY(stext)
  22.188 -ENTRY(_stext)
    23.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c	Thu Mar 10 22:09:19 2005 +0000
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,196 +0,0 @@
    23.4 -#include <linux/config.h>
    23.5 -#include <linux/module.h>
    23.6 -#include <linux/smp.h>
    23.7 -#include <linux/user.h>
    23.8 -#include <linux/elfcore.h>
    23.9 -#include <linux/mca.h>
   23.10 -#include <linux/sched.h>
   23.11 -#include <linux/in6.h>
   23.12 -#include <linux/interrupt.h>
   23.13 -#include <linux/smp_lock.h>
   23.14 -#include <linux/pm.h>
   23.15 -#include <linux/pci.h>
   23.16 -#include <linux/apm_bios.h>
   23.17 -#include <linux/kernel.h>
   23.18 -#include <linux/string.h>
   23.19 -#include <linux/tty.h>
   23.20 -#include <linux/highmem.h>
   23.21 -#include <linux/time.h>
   23.22 -
   23.23 -#include <asm/semaphore.h>
   23.24 -#include <asm/processor.h>
   23.25 -#include <asm/i387.h>
   23.26 -#include <asm/uaccess.h>
   23.27 -#include <asm/checksum.h>
   23.28 -#include <asm/io.h>
   23.29 -#include <asm/delay.h>
   23.30 -#include <asm/irq.h>
   23.31 -#include <asm/mmx.h>
   23.32 -#include <asm/desc.h>
   23.33 -#include <asm/pgtable.h>
   23.34 -#include <asm/tlbflush.h>
   23.35 -#include <asm/nmi.h>
   23.36 -#include <asm/ist.h>
   23.37 -#include <asm/kdebug.h>
   23.38 -
   23.39 -extern void dump_thread(struct pt_regs *, struct user *);
   23.40 -extern spinlock_t rtc_lock;
   23.41 -
   23.42 -/* This is definitely a GPL-only symbol */
   23.43 -EXPORT_SYMBOL_GPL(cpu_gdt_table);
   23.44 -
   23.45 -#if defined(CONFIG_APM_MODULE)
   23.46 -extern void machine_real_restart(unsigned char *, int);
   23.47 -EXPORT_SYMBOL(machine_real_restart);
   23.48 -extern void default_idle(void);
   23.49 -EXPORT_SYMBOL(default_idle);
   23.50 -#endif
   23.51 -
   23.52 -#ifdef CONFIG_SMP
   23.53 -extern void FASTCALL( __write_lock_failed(rwlock_t *rw));
   23.54 -extern void FASTCALL( __read_lock_failed(rwlock_t *rw));
   23.55 -#endif
   23.56 -
   23.57 -#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
   23.58 -extern struct drive_info_struct drive_info;
   23.59 -EXPORT_SYMBOL(drive_info);
   23.60 -#endif
   23.61 -
   23.62 -extern unsigned long cpu_khz;
   23.63 -extern unsigned long get_cmos_time(void);
   23.64 -
   23.65 -/* platform dependent support */
   23.66 -EXPORT_SYMBOL(boot_cpu_data);
   23.67 -EXPORT_SYMBOL(MCA_bus);
   23.68 -#ifdef CONFIG_DISCONTIGMEM
   23.69 -EXPORT_SYMBOL(node_data);
   23.70 -EXPORT_SYMBOL(physnode_map);
   23.71 -#endif
   23.72 -#ifdef CONFIG_X86_NUMAQ
   23.73 -EXPORT_SYMBOL(xquad_portio);
   23.74 -#endif
   23.75 -EXPORT_SYMBOL(dump_thread);
   23.76 -EXPORT_SYMBOL(dump_fpu);
   23.77 -EXPORT_SYMBOL_GPL(kernel_fpu_begin);
   23.78 -EXPORT_SYMBOL(__ioremap);
   23.79 -EXPORT_SYMBOL(ioremap_nocache);
   23.80 -EXPORT_SYMBOL(iounmap);
   23.81 -EXPORT_SYMBOL(probe_irq_mask);
   23.82 -EXPORT_SYMBOL(kernel_thread);
   23.83 -EXPORT_SYMBOL(pm_idle);
   23.84 -#ifdef CONFIG_APM
   23.85 -EXPORT_SYMBOL(pm_power_off);
   23.86 -#endif
   23.87 -EXPORT_SYMBOL(get_cmos_time);
   23.88 -EXPORT_SYMBOL(cpu_khz);
   23.89 -EXPORT_SYMBOL(apm_info);
   23.90 -
   23.91 -EXPORT_SYMBOL(__down_failed);
   23.92 -EXPORT_SYMBOL(__down_failed_interruptible);
   23.93 -EXPORT_SYMBOL(__down_failed_trylock);
   23.94 -EXPORT_SYMBOL(__up_wakeup);
   23.95 -/* Networking helper routines. */
   23.96 -EXPORT_SYMBOL(csum_partial_copy_generic);
   23.97 -/* Delay loops */
   23.98 -EXPORT_SYMBOL(__ndelay);
   23.99 -EXPORT_SYMBOL(__udelay);
  23.100 -EXPORT_SYMBOL(__delay);
  23.101 -EXPORT_SYMBOL(__const_udelay);
  23.102 -
  23.103 -EXPORT_SYMBOL(__get_user_1);
  23.104 -EXPORT_SYMBOL(__get_user_2);
  23.105 -EXPORT_SYMBOL(__get_user_4);
  23.106 -
  23.107 -EXPORT_SYMBOL(strpbrk);
  23.108 -EXPORT_SYMBOL(strstr);
  23.109 -
  23.110 -EXPORT_SYMBOL(strncpy_from_user);
  23.111 -EXPORT_SYMBOL(__strncpy_from_user);
  23.112 -EXPORT_SYMBOL(clear_user);
  23.113 -EXPORT_SYMBOL(__clear_user);
  23.114 -EXPORT_SYMBOL(__copy_from_user_ll);
  23.115 -EXPORT_SYMBOL(__copy_to_user_ll);
  23.116 -EXPORT_SYMBOL(strnlen_user);
  23.117 -
  23.118 -EXPORT_SYMBOL(dma_alloc_coherent);
  23.119 -EXPORT_SYMBOL(dma_free_coherent);
  23.120 -
  23.121 -#ifdef CONFIG_PCI
  23.122 -EXPORT_SYMBOL(pcibios_penalize_isa_irq);
  23.123 -EXPORT_SYMBOL(pci_mem_start);
  23.124 -#endif
  23.125 -
  23.126 -#ifdef CONFIG_PCI_BIOS
  23.127 -EXPORT_SYMBOL(pcibios_set_irq_routing);
  23.128 -EXPORT_SYMBOL(pcibios_get_irq_routing_table);
  23.129 -#endif
  23.130 -
  23.131 -#ifdef CONFIG_X86_USE_3DNOW
  23.132 -EXPORT_SYMBOL(_mmx_memcpy);
  23.133 -EXPORT_SYMBOL(mmx_clear_page);
  23.134 -EXPORT_SYMBOL(mmx_copy_page);
  23.135 -#endif
  23.136 -
  23.137 -#ifdef CONFIG_X86_HT
  23.138 -EXPORT_SYMBOL(smp_num_siblings);
  23.139 -EXPORT_SYMBOL(cpu_sibling_map);
  23.140 -#endif
  23.141 -
  23.142 -#ifdef CONFIG_SMP
  23.143 -EXPORT_SYMBOL(cpu_data);
  23.144 -EXPORT_SYMBOL(cpu_online_map);
  23.145 -EXPORT_SYMBOL(cpu_callout_map);
  23.146 -EXPORT_SYMBOL(__write_lock_failed);
  23.147 -EXPORT_SYMBOL(__read_lock_failed);
  23.148 -
  23.149 -/* Global SMP stuff */
  23.150 -EXPORT_SYMBOL(smp_call_function);
  23.151 -
  23.152 -/* TLB flushing */
  23.153 -EXPORT_SYMBOL(flush_tlb_page);
  23.154 -EXPORT_SYMBOL_GPL(flush_tlb_all);
  23.155 -#endif
  23.156 -
  23.157 -#ifdef CONFIG_X86_IO_APIC
  23.158 -EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
  23.159 -#endif
  23.160 -
  23.161 -#ifdef CONFIG_MCA
  23.162 -EXPORT_SYMBOL(machine_id);
  23.163 -#endif
  23.164 -
  23.165 -#ifdef CONFIG_VT
  23.166 -EXPORT_SYMBOL(screen_info);
  23.167 -#endif
  23.168 -
  23.169 -EXPORT_SYMBOL(get_wchan);
  23.170 -
  23.171 -EXPORT_SYMBOL(rtc_lock);
  23.172 -
  23.173 -EXPORT_SYMBOL_GPL(set_nmi_callback);
  23.174 -EXPORT_SYMBOL_GPL(unset_nmi_callback);
  23.175 -
  23.176 -#undef memcmp
  23.177 -extern int memcmp(const void *,const void *,__kernel_size_t);
  23.178 -EXPORT_SYMBOL(memcmp);
  23.179 -
  23.180 -EXPORT_SYMBOL(register_die_notifier);
  23.181 -#ifdef CONFIG_HAVE_DEC_LOCK
  23.182 -EXPORT_SYMBOL(_atomic_dec_and_lock);
  23.183 -#endif
  23.184 -
  23.185 -EXPORT_SYMBOL(__PAGE_KERNEL);
  23.186 -
  23.187 -#ifdef CONFIG_HIGHMEM
  23.188 -EXPORT_SYMBOL(kmap);
  23.189 -EXPORT_SYMBOL(kunmap);
  23.190 -EXPORT_SYMBOL(kmap_atomic);
  23.191 -EXPORT_SYMBOL(kunmap_atomic);
  23.192 -EXPORT_SYMBOL(kmap_atomic_to_page);
  23.193 -#endif
  23.194 -
  23.195 -#if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE)
  23.196 -EXPORT_SYMBOL(ist_info);
  23.197 -#endif
  23.198 -
  23.199 -EXPORT_SYMBOL(csum_partial);
    24.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ioport.c	Thu Mar 10 22:09:19 2005 +0000
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,51 +0,0 @@
    24.4 -#include <linux/sched.h>
    24.5 -#include <linux/kernel.h>
    24.6 -#include <linux/errno.h>
    24.7 -#include <linux/types.h>
    24.8 -#include <linux/ioport.h>
    24.9 -#include <linux/mm.h>
   24.10 -#include <linux/smp.h>
   24.11 -#include <linux/smp_lock.h>
   24.12 -#include <linux/stddef.h>
   24.13 -#include <linux/slab.h>
   24.14 -#include <asm-xen/xen-public/dom0_ops.h>
   24.15 -
   24.16 -asmlinkage long sys_iopl(unsigned int new_io_pl)
   24.17 -{
   24.18 -	unsigned int old_io_pl = current->thread.io_pl;
   24.19 -	dom0_op_t op;
   24.20 -
   24.21 -	if (new_io_pl > 3)
   24.22 -		return -EINVAL;
   24.23 -
   24.24 -	/* Need "raw I/O" privileges for direct port access. */
   24.25 -	if ((new_io_pl > old_io_pl) && !capable(CAP_SYS_RAWIO))
   24.26 -		return -EPERM;
   24.27 -
   24.28 -	if (!(xen_start_info.flags & SIF_PRIVILEGED))
   24.29 -		return -EPERM;
   24.30 -
   24.31 -	/* Maintain OS privileges even if user attempts to relinquish them. */
   24.32 -	if (new_io_pl == 0)
   24.33 -		new_io_pl = 1;
   24.34 -
   24.35 -	/* Change our version of the privilege levels. */
   24.36 -	current->thread.io_pl = new_io_pl;
   24.37 -
   24.38 -	/* Force the change at ring 0. */
   24.39 -	op.cmd           = DOM0_IOPL;
   24.40 -	op.u.iopl.domain = DOMID_SELF;
   24.41 -	op.u.iopl.iopl   = new_io_pl;
   24.42 -	HYPERVISOR_dom0_op(&op);
   24.43 -
   24.44 -	return 0;
   24.45 -}
   24.46 -
   24.47 -asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
   24.48 -{
   24.49 -#if 0
   24.50 -	printk(KERN_INFO "ioperm not fully supported - %s\n",
   24.51 -		turn_on ? "set iopl to 3" : "ignore resource release");
   24.52 -#endif
   24.53 -	return turn_on ? sys_iopl(3) : 0;
   24.54 -}
    25.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/irq.c	Thu Mar 10 22:09:19 2005 +0000
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,258 +0,0 @@
    25.4 -/*
    25.5 - *	linux/arch/i386/kernel/irq.c
    25.6 - *
    25.7 - *	Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar
    25.8 - *
    25.9 - * This file contains the lowest level x86-specific interrupt
   25.10 - * entry, irq-stacks and irq statistics code. All the remaining
   25.11 - * irq logic is done by the generic kernel/irq/ code and
   25.12 - * by the x86-specific irq controller code. (e.g. i8259.c and
   25.13 - * io_apic.c.)
   25.14 - */
   25.15 -
   25.16 -#include <asm/uaccess.h>
   25.17 -#include <linux/module.h>
   25.18 -#include <linux/seq_file.h>
   25.19 -#include <linux/interrupt.h>
   25.20 -#include <linux/kernel_stat.h>
   25.21 -
   25.22 -#ifndef CONFIG_X86_LOCAL_APIC
   25.23 -/*
   25.24 - * 'what should we do if we get a hw irq event on an illegal vector'.
   25.25 - * each architecture has to answer this themselves.
   25.26 - */
   25.27 -void ack_bad_irq(unsigned int irq)
   25.28 -{
   25.29 -	printk("unexpected IRQ trap at vector %02x\n", irq);
   25.30 -}
   25.31 -#endif
   25.32 -
   25.33 -#ifdef CONFIG_4KSTACKS
   25.34 -/*
   25.35 - * per-CPU IRQ handling contexts (thread information and stack)
   25.36 - */
   25.37 -union irq_ctx {
   25.38 -	struct thread_info      tinfo;
   25.39 -	u32                     stack[THREAD_SIZE/sizeof(u32)];
   25.40 -};
   25.41 -
   25.42 -static union irq_ctx *hardirq_ctx[NR_CPUS];
   25.43 -static union irq_ctx *softirq_ctx[NR_CPUS];
   25.44 -#endif
   25.45 -
   25.46 -/*
   25.47 - * do_IRQ handles all normal device IRQ's (the special
   25.48 - * SMP cross-CPU interrupts have their own specific
   25.49 - * handlers).
   25.50 - */
   25.51 -fastcall unsigned int do_IRQ(struct pt_regs *regs)
   25.52 -{	
   25.53 -	/* high bits used in ret_from_ code */
   25.54 -	int irq = regs->orig_eax & __IRQ_MASK(HARDIRQ_BITS);
   25.55 -#ifdef CONFIG_4KSTACKS
   25.56 -	union irq_ctx *curctx, *irqctx;
   25.57 -	u32 *isp;
   25.58 -#endif
   25.59 -
   25.60 -	irq_enter();
   25.61 -#ifdef CONFIG_DEBUG_STACKOVERFLOW
   25.62 -	/* Debugging check for stack overflow: is there less than 1KB free? */
   25.63 -	{
   25.64 -		long esp;
   25.65 -
   25.66 -		__asm__ __volatile__("andl %%esp,%0" :
   25.67 -					"=r" (esp) : "0" (THREAD_SIZE - 1));
   25.68 -		if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) {
   25.69 -			printk("do_IRQ: stack overflow: %ld\n",
   25.70 -				esp - sizeof(struct thread_info));
   25.71 -			dump_stack();
   25.72 -		}
   25.73 -	}
   25.74 -#endif
   25.75 -
   25.76 -#ifdef CONFIG_4KSTACKS
   25.77 -
   25.78 -	curctx = (union irq_ctx *) current_thread_info();
   25.79 -	irqctx = hardirq_ctx[smp_processor_id()];
   25.80 -
   25.81 -	/*
   25.82 -	 * this is where we switch to the IRQ stack. However, if we are
   25.83 -	 * already using the IRQ stack (because we interrupted a hardirq
   25.84 -	 * handler) we can't do that and just have to keep using the
   25.85 -	 * current stack (which is the irq stack already after all)
   25.86 -	 */
   25.87 -	if (curctx != irqctx) {
   25.88 -		int arg1, arg2, ebx;
   25.89 -
   25.90 -		/* build the stack frame on the IRQ stack */
   25.91 -		isp = (u32*) ((char*)irqctx + sizeof(*irqctx));
   25.92 -		irqctx->tinfo.task = curctx->tinfo.task;
   25.93 -		irqctx->tinfo.previous_esp = current_stack_pointer;
   25.94 -
   25.95 -		asm volatile(
   25.96 -			"       xchgl   %%ebx,%%esp      \n"
   25.97 -			"       call    __do_IRQ         \n"
   25.98 -			"       movl   %%ebx,%%esp      \n"
   25.99 -			: "=a" (arg1), "=d" (arg2), "=b" (ebx)
  25.100 -			:  "0" (irq),   "1" (regs),  "2" (isp)
  25.101 -			: "memory", "cc", "ecx"
  25.102 -		);
  25.103 -	} else
  25.104 -#endif
  25.105 -		__do_IRQ(irq, regs);
  25.106 -
  25.107 -	irq_exit();
  25.108 -
  25.109 -	return 1;
  25.110 -}
  25.111 -
  25.112 -#ifdef CONFIG_4KSTACKS
  25.113 -
  25.114 -/*
  25.115 - * These should really be __section__(".bss.page_aligned") as well, but
  25.116 - * gcc's 3.0 and earlier don't handle that correctly.
  25.117 - */
  25.118 -static char softirq_stack[NR_CPUS * THREAD_SIZE]
  25.119 -		__attribute__((__aligned__(THREAD_SIZE)));
  25.120 -
  25.121 -static char hardirq_stack[NR_CPUS * THREAD_SIZE]
  25.122 -		__attribute__((__aligned__(THREAD_SIZE)));
  25.123 -
  25.124 -/*
  25.125 - * allocate per-cpu stacks for hardirq and for softirq processing
  25.126 - */
  25.127 -void irq_ctx_init(int cpu)
  25.128 -{
  25.129 -	union irq_ctx *irqctx;
  25.130 -
  25.131 -	if (hardirq_ctx[cpu])
  25.132 -		return;
  25.133 -
  25.134 -	irqctx = (union irq_ctx*) &hardirq_stack[cpu*THREAD_SIZE];
  25.135 -	irqctx->tinfo.task              = NULL;
  25.136 -	irqctx->tinfo.exec_domain       = NULL;
  25.137 -	irqctx->tinfo.cpu               = cpu;
  25.138 -	irqctx->tinfo.preempt_count     = HARDIRQ_OFFSET;
  25.139 -	irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
  25.140 -
  25.141 -	hardirq_ctx[cpu] = irqctx;
  25.142 -
  25.143 -	irqctx = (union irq_ctx*) &softirq_stack[cpu*THREAD_SIZE];
  25.144 -	irqctx->tinfo.task              = NULL;
  25.145 -	irqctx->tinfo.exec_domain       = NULL;
  25.146 -	irqctx->tinfo.cpu               = cpu;
  25.147 -	irqctx->tinfo.preempt_count     = SOFTIRQ_OFFSET;
  25.148 -	irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
  25.149 -
  25.150 -	softirq_ctx[cpu] = irqctx;
  25.151 -
  25.152 -	printk("CPU %u irqstacks, hard=%p soft=%p\n",
  25.153 -		cpu,hardirq_ctx[cpu],softirq_ctx[cpu]);
  25.154 -}
  25.155 -
  25.156 -extern asmlinkage void __do_softirq(void);
  25.157 -
  25.158 -asmlinkage void do_softirq(void)
  25.159 -{
  25.160 -	unsigned long flags;
  25.161 -	struct thread_info *curctx;
  25.162 -	union irq_ctx *irqctx;
  25.163 -	u32 *isp;
  25.164 -
  25.165 -	if (in_interrupt())
  25.166 -		return;
  25.167 -
  25.168 -	local_irq_save(flags);
  25.169 -
  25.170 -	if (local_softirq_pending()) {
  25.171 -		curctx = current_thread_info();
  25.172 -		irqctx = softirq_ctx[smp_processor_id()];
  25.173 -		irqctx->tinfo.task = curctx->task;
  25.174 -		irqctx->tinfo.previous_esp = current_stack_pointer;
  25.175 -
  25.176 -		/* build the stack frame on the softirq stack */
  25.177 -		isp = (u32*) ((char*)irqctx + sizeof(*irqctx));
  25.178 -
  25.179 -		asm volatile(
  25.180 -			"       xchgl   %%ebx,%%esp     \n"
  25.181 -			"       call    __do_softirq    \n"
  25.182 -			"       movl    %%ebx,%%esp     \n"
  25.183 -			: "=b"(isp)
  25.184 -			: "0"(isp)
  25.185 -			: "memory", "cc", "edx", "ecx", "eax"
  25.186 -		);
  25.187 -	}
  25.188 -
  25.189 -	local_irq_restore(flags);
  25.190 -}
  25.191 -
  25.192 -EXPORT_SYMBOL(do_softirq);
  25.193 -#endif
  25.194 -
  25.195 -/*
  25.196 - * Interrupt statistics:
  25.197 - */
  25.198 -
  25.199 -atomic_t irq_err_count;
  25.200 -
  25.201 -/*
  25.202 - * /proc/interrupts printing:
  25.203 - */
  25.204 -
  25.205 -int show_interrupts(struct seq_file *p, void *v)
  25.206 -{
  25.207 -	int i = *(loff_t *) v, j;
  25.208 -	struct irqaction * action;
  25.209 -	unsigned long flags;
  25.210 -
  25.211 -	if (i == 0) {
  25.212 -		seq_printf(p, "           ");
  25.213 -		for (j=0; j<NR_CPUS; j++)
  25.214 -			if (cpu_online(j))
  25.215 -				seq_printf(p, "CPU%d       ",j);
  25.216 -		seq_putc(p, '\n');
  25.217 -	}
  25.218 -
  25.219 -	if (i < NR_IRQS) {
  25.220 -		spin_lock_irqsave(&irq_desc[i].lock, flags);
  25.221 -		action = irq_desc[i].action;
  25.222 -		if (!action)
  25.223 -			goto skip;
  25.224 -		seq_printf(p, "%3d: ",i);
  25.225 -#ifndef CONFIG_SMP
  25.226 -		seq_printf(p, "%10u ", kstat_irqs(i));
  25.227 -#else
  25.228 -		for (j = 0; j < NR_CPUS; j++)
  25.229 -			if (cpu_online(j))
  25.230 -				seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
  25.231 -#endif
  25.232 -		seq_printf(p, " %14s", irq_desc[i].handler->typename);
  25.233 -		seq_printf(p, "  %s", action->name);
  25.234 -
  25.235 -		for (action=action->next; action; action = action->next)
  25.236 -			seq_printf(p, ", %s", action->name);
  25.237 -
  25.238 -		seq_putc(p, '\n');
  25.239 -skip:
  25.240 -		spin_unlock_irqrestore(&irq_desc[i].lock, flags);
  25.241 -	} else if (i == NR_IRQS) {
  25.242 -		seq_printf(p, "NMI: ");
  25.243 -		for (j = 0; j < NR_CPUS; j++)
  25.244 -			if (cpu_online(j))
  25.245 -				seq_printf(p, "%10u ", nmi_count(j));
  25.246 -		seq_putc(p, '\n');
  25.247 -#ifdef CONFIG_X86_LOCAL_APIC
  25.248 -		seq_printf(p, "LOC: ");
  25.249 -		for (j = 0; j < NR_CPUS; j++)
  25.250 -			if (cpu_online(j))
  25.251 -				seq_printf(p, "%10u ",
  25.252 -					irq_stat[j].apic_timer_irqs);
  25.253 -		seq_putc(p, '\n');
  25.254 -#endif
  25.255 -		seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
  25.256 -#if defined(CONFIG_X86_IO_APIC)
  25.257 -		seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count));
  25.258 -#endif
  25.259 -	}
  25.260 -	return 0;
  25.261 -}
    26.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c	Thu Mar 10 22:09:19 2005 +0000
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,270 +0,0 @@
    26.4 -/*
    26.5 - * linux/kernel/ldt.c
    26.6 - *
    26.7 - * Copyright (C) 1992 Krishna Balasubramanian and Linus Torvalds
    26.8 - * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
    26.9 - */
   26.10 -
   26.11 -#include <linux/errno.h>
   26.12 -#include <linux/sched.h>
   26.13 -#include <linux/string.h>
   26.14 -#include <linux/mm.h>
   26.15 -#include <linux/smp.h>
   26.16 -#include <linux/smp_lock.h>
   26.17 -#include <linux/vmalloc.h>
   26.18 -#include <linux/slab.h>
   26.19 -
   26.20 -#include <asm/uaccess.h>
   26.21 -#include <asm/system.h>
   26.22 -#include <asm/ldt.h>
   26.23 -#include <asm/desc.h>
   26.24 -
   26.25 -#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */
   26.26 -static void flush_ldt(void *null)
   26.27 -{
   26.28 -	if (current->active_mm) {
   26.29 -		load_LDT(&current->active_mm->context);
   26.30 -		flush_page_update_queue();
   26.31 -	}
   26.32 -}
   26.33 -#endif
   26.34 -
   26.35 -static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
   26.36 -{
   26.37 -	void *oldldt;
   26.38 -	void *newldt;
   26.39 -	int oldsize;
   26.40 -
   26.41 -	if (mincount <= pc->size)
   26.42 -		return 0;
   26.43 -	oldsize = pc->size;
   26.44 -	mincount = (mincount+511)&(~511);
   26.45 -	if (mincount*LDT_ENTRY_SIZE > PAGE_SIZE)
   26.46 -		newldt = vmalloc(mincount*LDT_ENTRY_SIZE);
   26.47 -	else
   26.48 -		newldt = kmalloc(mincount*LDT_ENTRY_SIZE, GFP_KERNEL);
   26.49 -
   26.50 -	if (!newldt)
   26.51 -		return -ENOMEM;
   26.52 -
   26.53 -	if (oldsize)
   26.54 -		memcpy(newldt, pc->ldt, oldsize*LDT_ENTRY_SIZE);
   26.55 -	oldldt = pc->ldt;
   26.56 -	memset(newldt+oldsize*LDT_ENTRY_SIZE, 0, (mincount-oldsize)*LDT_ENTRY_SIZE);
   26.57 -	pc->ldt = newldt;
   26.58 -	wmb();
   26.59 -	pc->size = mincount;
   26.60 -	wmb();
   26.61 -
   26.62 -	if (reload) {
   26.63 -#ifdef CONFIG_SMP
   26.64 -		cpumask_t mask;
   26.65 -		preempt_disable();
   26.66 -#endif
   26.67 -		make_pages_readonly(pc->ldt, (pc->size * LDT_ENTRY_SIZE) /
   26.68 -				    PAGE_SIZE);
   26.69 -		load_LDT(pc);
   26.70 -		flush_page_update_queue();
   26.71 -#ifdef CONFIG_SMP
   26.72 -		mask = cpumask_of_cpu(smp_processor_id());
   26.73 -		if (!cpus_equal(current->mm->cpu_vm_mask, mask))
   26.74 -			smp_call_function(flush_ldt, NULL, 1, 1);
   26.75 -		preempt_enable();
   26.76 -#endif
   26.77 -	}
   26.78 -	if (oldsize) {
   26.79 -		make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) /
   26.80 -			PAGE_SIZE);
   26.81 -		flush_page_update_queue();
   26.82 -		if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE)
   26.83 -			vfree(oldldt);
   26.84 -		else
   26.85 -			kfree(oldldt);
   26.86 -	}
   26.87 -	return 0;
   26.88 -}
   26.89 -
   26.90 -static inline int copy_ldt(mm_context_t *new, mm_context_t *old)
   26.91 -{
   26.92 -	int err = alloc_ldt(new, old->size, 0);
   26.93 -	if (err < 0)
   26.94 -		return err;
   26.95 -	memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE);
   26.96 -	make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) /
   26.97 -			    PAGE_SIZE);
   26.98 -	flush_page_update_queue();
   26.99 -	return 0;
  26.100 -}
  26.101 -
  26.102 -/*
  26.103 - * we do not have to muck with descriptors here, that is
  26.104 - * done in switch_mm() as needed.
  26.105 - */
  26.106 -int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
  26.107 -{
  26.108 -	struct mm_struct * old_mm;
  26.109 -	int retval = 0;
  26.110 -
  26.111 -	init_MUTEX(&mm->context.sem);
  26.112 -	mm->context.size = 0;
  26.113 -	old_mm = current->mm;
  26.114 -	if (old_mm && old_mm->context.size > 0) {
  26.115 -		down(&old_mm->context.sem);
  26.116 -		retval = copy_ldt(&mm->context, &old_mm->context);
  26.117 -		up(&old_mm->context.sem);
  26.118 -	}
  26.119 -	return retval;
  26.120 -}
  26.121 -
  26.122 -/*
  26.123 - * No need to lock the MM as we are the last user
  26.124 - */
  26.125 -void destroy_context(struct mm_struct *mm)
  26.126 -{
  26.127 -	if (mm->context.size) {
  26.128 -		if (mm == current->active_mm)
  26.129 -			clear_LDT();
  26.130 -		make_pages_writable(mm->context.ldt, 
  26.131 -				    (mm->context.size * LDT_ENTRY_SIZE) /
  26.132 -				    PAGE_SIZE);
  26.133 -		flush_page_update_queue();
  26.134 -		if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE)
  26.135 -			vfree(mm->context.ldt);
  26.136 -		else
  26.137 -			kfree(mm->context.ldt);
  26.138 -		mm->context.size = 0;
  26.139 -	}
  26.140 -}
  26.141 -
  26.142 -static int read_ldt(void __user * ptr, unsigned long bytecount)
  26.143 -{
  26.144 -	int err;
  26.145 -	unsigned long size;
  26.146 -	struct mm_struct * mm = current->mm;
  26.147 -
  26.148 -	if (!mm->context.size)
  26.149 -		return 0;
  26.150 -	if (bytecount > LDT_ENTRY_SIZE*LDT_ENTRIES)
  26.151 -		bytecount = LDT_ENTRY_SIZE*LDT_ENTRIES;
  26.152 -
  26.153 -	down(&mm->context.sem);
  26.154 -	size = mm->context.size*LDT_ENTRY_SIZE;
  26.155 -	if (size > bytecount)
  26.156 -		size = bytecount;
  26.157 -
  26.158 -	err = 0;
  26.159 -	if (copy_to_user(ptr, mm->context.ldt, size))
  26.160 -		err = -EFAULT;
  26.161 -	up(&mm->context.sem);
  26.162 -	if (err < 0)
  26.163 -		goto error_return;
  26.164 -	if (size != bytecount) {
  26.165 -		/* zero-fill the rest */
  26.166 -		if (clear_user(ptr+size, bytecount-size) != 0) {
  26.167 -			err = -EFAULT;
  26.168 -			goto error_return;
  26.169 -		}
  26.170 -	}
  26.171 -	return bytecount;
  26.172 -error_return:
  26.173 -	return err;
  26.174 -}
  26.175 -
  26.176 -static int read_default_ldt(void __user * ptr, unsigned long bytecount)
  26.177 -{
  26.178 -	int err;
  26.179 -	unsigned long size;
  26.180 -	void *address;
  26.181 -
  26.182 -	err = 0;
  26.183 -	address = &default_ldt[0];
  26.184 -	size = 5*sizeof(struct desc_struct);
  26.185 -	if (size > bytecount)
  26.186 -		size = bytecount;
  26.187 -
  26.188 -	err = size;
  26.189 -	if (copy_to_user(ptr, address, size))
  26.190 -		err = -EFAULT;
  26.191 -
  26.192 -	return err;
  26.193 -}
  26.194 -
  26.195 -static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode)
  26.196 -{
  26.197 -	struct mm_struct * mm = current->mm;
  26.198 -	__u32 entry_1, entry_2, *lp;
  26.199 -	unsigned long mach_lp;
  26.200 -	int error;
  26.201 -	struct user_desc ldt_info;
  26.202 -
  26.203 -	error = -EINVAL;
  26.204 -	if (bytecount != sizeof(ldt_info))
  26.205 -		goto out;
  26.206 -	error = -EFAULT; 	
  26.207 -	if (copy_from_user(&ldt_info, ptr, sizeof(ldt_info)))
  26.208 -		goto out;
  26.209 -
  26.210 -	error = -EINVAL;
  26.211 -	if (ldt_info.entry_number >= LDT_ENTRIES)
  26.212 -		goto out;
  26.213 -	if (ldt_info.contents == 3) {
  26.214 -		if (oldmode)
  26.215 -			goto out;
  26.216 -		if (ldt_info.seg_not_present == 0)
  26.217 -			goto out;
  26.218 -	}
  26.219 -
  26.220 -	down(&mm->context.sem);
  26.221 -	if (ldt_info.entry_number >= mm->context.size) {
  26.222 -		error = alloc_ldt(&current->mm->context, ldt_info.entry_number+1, 1);
  26.223 -		if (error < 0)
  26.224 -			goto out_unlock;
  26.225 -	}
  26.226 -
  26.227 -	lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->context.ldt);
  26.228 -	mach_lp = arbitrary_virt_to_machine(lp);
  26.229 -
  26.230 -   	/* Allow LDTs to be cleared by the user. */
  26.231 -   	if (ldt_info.base_addr == 0 && ldt_info.limit == 0) {
  26.232 -		if (oldmode || LDT_empty(&ldt_info)) {
  26.233 -			entry_1 = 0;
  26.234 -			entry_2 = 0;
  26.235 -			goto install;
  26.236 -		}
  26.237 -	}
  26.238 -
  26.239 -	entry_1 = LDT_entry_a(&ldt_info);
  26.240 -	entry_2 = LDT_entry_b(&ldt_info);
  26.241 -	if (oldmode)
  26.242 -		entry_2 &= ~(1 << 20);
  26.243 -
  26.244 -	/* Install the new entry ...  */
  26.245 -install:
  26.246 -	error = HYPERVISOR_update_descriptor(mach_lp, entry_1, entry_2);
  26.247 -
  26.248 -out_unlock:
  26.249 -	up(&mm->context.sem);
  26.250 -out:
  26.251 -	return error;
  26.252 -}
  26.253 -
  26.254 -asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount)
  26.255 -{
  26.256 -	int ret = -ENOSYS;
  26.257 -
  26.258 -	switch (func) {
  26.259 -	case 0:
  26.260 -		ret = read_ldt(ptr, bytecount);
  26.261 -		break;
  26.262 -	case 1:
  26.263 -		ret = write_ldt(ptr, bytecount, 1);
  26.264 -		break;
  26.265 -	case 2:
  26.266 -		ret = read_default_ldt(ptr, bytecount);
  26.267 -		break;
  26.268 -	case 0x11:
  26.269 -		ret = write_ldt(ptr, bytecount, 0);
  26.270 -		break;
  26.271 -	}
  26.272 -	return ret;
  26.273 -}
    27.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/microcode.c	Thu Mar 10 22:09:19 2005 +0000
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,163 +0,0 @@
    27.4 -/*
    27.5 - *	Intel CPU Microcode Update Driver for Linux
    27.6 - *
    27.7 - *	Copyright (C) 2000-2004 Tigran Aivazian
    27.8 - *
    27.9 - *	This driver allows to upgrade microcode on Intel processors
   27.10 - *	belonging to IA-32 family - PentiumPro, Pentium II, 
   27.11 - *	Pentium III, Xeon, Pentium 4, etc.
   27.12 - *
   27.13 - *	Reference: Section 8.10 of Volume III, Intel Pentium 4 Manual, 
   27.14 - *	Order Number 245472 or free download from:
   27.15 - *		
   27.16 - *	http://developer.intel.com/design/pentium4/manuals/245472.htm
   27.17 - *
   27.18 - *	For more information, go to http://www.urbanmyth.org/microcode
   27.19 - *
   27.20 - *	This program is free software; you can redistribute it and/or
   27.21 - *	modify it under the terms of the GNU General Public License
   27.22 - *	as published by the Free Software Foundation; either version
   27.23 - *	2 of the License, or (at your option) any later version.
   27.24 - */
   27.25 -
   27.26 -//#define DEBUG /* pr_debug */
   27.27 -#include <linux/kernel.h>
   27.28 -#include <linux/init.h>
   27.29 -#include <linux/sched.h>
   27.30 -#include <linux/module.h>
   27.31 -#include <linux/slab.h>
   27.32 -#include <linux/vmalloc.h>
   27.33 -#include <linux/miscdevice.h>
   27.34 -#include <linux/spinlock.h>
   27.35 -#include <linux/mm.h>
   27.36 -#include <linux/syscalls.h>
   27.37 -
   27.38 -#include <asm/msr.h>
   27.39 -#include <asm/uaccess.h>
   27.40 -#include <asm/processor.h>
   27.41 -
   27.42 -MODULE_DESCRIPTION("Intel CPU (IA-32) Microcode Update Driver");
   27.43 -MODULE_AUTHOR("Tigran Aivazian <tigran@veritas.com>");
   27.44 -MODULE_LICENSE("GPL");
   27.45 -
   27.46 -#define MICROCODE_VERSION 	"1.14-xen"
   27.47 -
   27.48 -#define DEFAULT_UCODE_DATASIZE 	(2000) 	  /* 2000 bytes */
   27.49 -#define MC_HEADER_SIZE		(sizeof (microcode_header_t))  	  /* 48 bytes */
   27.50 -#define DEFAULT_UCODE_TOTALSIZE (DEFAULT_UCODE_DATASIZE + MC_HEADER_SIZE) /* 2048 bytes */
   27.51 -
   27.52 -/* no concurrent ->write()s are allowed on /dev/cpu/microcode */
   27.53 -static DECLARE_MUTEX(microcode_sem);
   27.54 -
   27.55 -static void __user *user_buffer;	/* user area microcode data buffer */
   27.56 -static unsigned int user_buffer_size;	/* it's size */
   27.57 -				
   27.58 -static int microcode_open (struct inode *unused1, struct file *unused2)
   27.59 -{
   27.60 -	return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
   27.61 -}
   27.62 -
   27.63 -
   27.64 -static int do_microcode_update (void)
   27.65 -{
   27.66 -	int err;
   27.67 -	dom0_op_t op;
   27.68 -
   27.69 -	err = sys_mlock((unsigned long)user_buffer, user_buffer_size);
   27.70 -	if (err != 0)
   27.71 -		return err;
   27.72 -
   27.73 -	op.cmd = DOM0_MICROCODE;
   27.74 -	op.u.microcode.data = user_buffer;
   27.75 -	op.u.microcode.length = user_buffer_size;
   27.76 -	err = HYPERVISOR_dom0_op(&op);
   27.77 -
   27.78 -	(void)sys_munlock((unsigned long)user_buffer, user_buffer_size);
   27.79 -
   27.80 -	return err;
   27.81 -}
   27.82 -
   27.83 -static ssize_t microcode_write (struct file *file, const char __user *buf, size_t len, loff_t *ppos)
   27.84 -{
   27.85 -	ssize_t ret;
   27.86 -
   27.87 -	if (len < DEFAULT_UCODE_TOTALSIZE) {
   27.88 -		printk(KERN_ERR "microcode: not enough data\n"); 
   27.89 -		return -EINVAL;
   27.90 -	}
   27.91 -
   27.92 -	if ((len >> PAGE_SHIFT) > num_physpages) {
   27.93 -		printk(KERN_ERR "microcode: too much data (max %ld pages)\n", num_physpages);
   27.94 -		return -EINVAL;
   27.95 -	}
   27.96 -
   27.97 -	down(&microcode_sem);
   27.98 -
   27.99 -	user_buffer = (void __user *) buf;
  27.100 -	user_buffer_size = (int) len;
  27.101 -
  27.102 -	ret = do_microcode_update();
  27.103 -	if (!ret)
  27.104 -		ret = (ssize_t)len;
  27.105 -
  27.106 -	up(&microcode_sem);
  27.107 -
  27.108 -	return ret;
  27.109 -}
  27.110 -
  27.111 -static int microcode_ioctl (struct inode *inode, struct file *file, 
  27.112 -		unsigned int cmd, unsigned long arg)
  27.113 -{
  27.114 -	switch (cmd) {
  27.115 -		/* 
  27.116 -		 *  XXX: will be removed after microcode_ctl 
  27.117 -		 *  is updated to ignore failure of this ioctl()
  27.118 -		 */
  27.119 -		case MICROCODE_IOCFREE:
  27.120 -			return 0;
  27.121 -		default:
  27.122 -			return -EINVAL;
  27.123 -	}
  27.124 -	return -EINVAL;
  27.125 -}
  27.126 -
  27.127 -static struct file_operations microcode_fops = {
  27.128 -	.owner		= THIS_MODULE,
  27.129 -	.write		= microcode_write,
  27.130 -	.ioctl		= microcode_ioctl,
  27.131 -	.open		= microcode_open,
  27.132 -};
  27.133 -
  27.134 -static struct miscdevice microcode_dev = {
  27.135 -	.minor		= MICROCODE_MINOR,
  27.136 -	.name		= "microcode",
  27.137 -	.devfs_name	= "cpu/microcode",
  27.138 -	.fops		= &microcode_fops,
  27.139 -};
  27.140 -
  27.141 -static int __init microcode_init (void)
  27.142 -{
  27.143 -	int error;
  27.144 -
  27.145 -	error = misc_register(&microcode_dev);
  27.146 -	if (error) {
  27.147 -		printk(KERN_ERR
  27.148 -			"microcode: can't misc_register on minor=%d\n",
  27.149 -			MICROCODE_MINOR);
  27.150 -		return error;
  27.151 -	}
  27.152 -
  27.153 -	printk(KERN_INFO 
  27.154 -		"IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@veritas.com>\n");
  27.155 -	return 0;
  27.156 -}
  27.157 -
  27.158 -static void __exit microcode_exit (void)
  27.159 -{
  27.160 -	misc_deregister(&microcode_dev);
  27.161 -	printk(KERN_INFO "IA-32 Microcode Update Driver v" MICROCODE_VERSION " unregistered\n");
  27.162 -}
  27.163 -
  27.164 -module_init(microcode_init)
  27.165 -module_exit(microcode_exit)
  27.166 -MODULE_ALIAS_MISCDEV(MICROCODE_MINOR);
    28.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c	Thu Mar 10 22:09:19 2005 +0000
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,232 +0,0 @@
    28.4 -/*
    28.5 - * Dynamic DMA mapping support.
    28.6 - *
    28.7 - * On i386 there is no hardware dynamic DMA address translation,
    28.8 - * so consistent alloc/free are merely page allocation/freeing.
    28.9 - * The rest of the dynamic DMA mapping interface is implemented
   28.10 - * in asm/pci.h.
   28.11 - */
   28.12 -
   28.13 -#include <linux/types.h>
   28.14 -#include <linux/mm.h>
   28.15 -#include <linux/string.h>
   28.16 -#include <linux/pci.h>
   28.17 -#include <linux/version.h>
   28.18 -#include <asm/io.h>
   28.19 -#include <asm-xen/balloon.h>
   28.20 -
   28.21 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
   28.22 -#define pte_offset_kernel pte_offset
   28.23 -#endif
   28.24 -
   28.25 -struct dma_coherent_mem {
   28.26 -	void		*virt_base;
   28.27 -	u32		device_base;
   28.28 -	int		size;
   28.29 -	int		flags;
   28.30 -	unsigned long	*bitmap;
   28.31 -};
   28.32 -
   28.33 -static void
   28.34 -xen_contig_memory(unsigned long vstart, unsigned int order)
   28.35 -{
   28.36 -	/*
   28.37 -	 * Ensure multi-page extents are contiguous in machine memory.
   28.38 -	 * This code could be cleaned up some, and the number of
   28.39 -	 * hypercalls reduced.
   28.40 -	 */
   28.41 -	pgd_t         *pgd; 
   28.42 -	pmd_t         *pmd;
   28.43 -	pte_t         *pte;
   28.44 -	unsigned long  pfn, i, flags;
   28.45 -
   28.46 -	scrub_pages(vstart, 1 << order);
   28.47 -
   28.48 -        balloon_lock(flags);
   28.49 -
   28.50 -	/* 1. Zap current PTEs, giving away the underlying pages. */
   28.51 -	for (i = 0; i < (1<<order); i++) {
   28.52 -		pgd = pgd_offset_k(   (vstart + (i*PAGE_SIZE)));
   28.53 -		pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE)));
   28.54 -		pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
   28.55 -		pfn = pte->pte_low >> PAGE_SHIFT;
   28.56 -		queue_l1_entry_update(pte, 0);
   28.57 -		phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
   28.58 -			INVALID_P2M_ENTRY;
   28.59 -		flush_page_update_queue();
   28.60 -		if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation, 
   28.61 -					  &pfn, 1, 0) != 1) BUG();
   28.62 -	}
   28.63 -	/* 2. Get a new contiguous memory extent. */
   28.64 -	if (HYPERVISOR_dom_mem_op(MEMOP_increase_reservation,
   28.65 -				  &pfn, 1, order) != 1) BUG();
   28.66 -	/* 3. Map the new extent in place of old pages. */
   28.67 -	for (i = 0; i < (1<<order); i++) {
   28.68 -		pgd = pgd_offset_k(   (vstart + (i*PAGE_SIZE)));
   28.69 -		pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE)));
   28.70 -		pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
   28.71 -		queue_l1_entry_update(
   28.72 -			pte, ((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL);
   28.73 -		queue_machphys_update(
   28.74 -			pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i);
   28.75 -		phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
   28.76 -			pfn+i;
   28.77 -	}
   28.78 -	/* Flush updates through and flush the TLB. */
   28.79 -	xen_tlb_flush();
   28.80 -
   28.81 -        balloon_unlock(flags);
   28.82 -}
   28.83 -
   28.84 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
   28.85 -void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
   28.86 -			   dma_addr_t *dma_handle)
   28.87 -#else
   28.88 -void *dma_alloc_coherent(struct device *dev, size_t size,
   28.89 -			   dma_addr_t *dma_handle, int gfp)
   28.90 -#endif
   28.91 -{
   28.92 -	void *ret;
   28.93 -	unsigned int order = get_order(size);
   28.94 -	unsigned long vstart;
   28.95 -
   28.96 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
   28.97 -	int gfp = GFP_ATOMIC;
   28.98 -
   28.99 -	if (hwdev == NULL || ((u32)hwdev->dma_mask < 0xffffffff))
  28.100 -		gfp |= GFP_DMA;
  28.101 -#else
  28.102 -	struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
  28.103 -
  28.104 -	/* ignore region specifiers */
  28.105 -	gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
  28.106 -
  28.107 -	if (mem) {
  28.108 -		int page = bitmap_find_free_region(mem->bitmap, mem->size,
  28.109 -						     order);
  28.110 -		if (page >= 0) {
  28.111 -			*dma_handle = mem->device_base + (page << PAGE_SHIFT);
  28.112 -			ret = mem->virt_base + (page << PAGE_SHIFT);
  28.113 -			memset(ret, 0, size);
  28.114 -			return ret;
  28.115 -		}
  28.116 -		if (mem->flags & DMA_MEMORY_EXCLUSIVE)
  28.117 -			return NULL;
  28.118 -	}
  28.119 -
  28.120 -	if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff))
  28.121 -		gfp |= GFP_DMA;
  28.122 -#endif
  28.123 -
  28.124 -	vstart = __get_free_pages(gfp, order);
  28.125 -	ret = (void *)vstart;
  28.126 -	if (ret == NULL)
  28.127 -		return ret;
  28.128 -
  28.129 -	xen_contig_memory(vstart, order);
  28.130 -
  28.131 -	memset(ret, 0, size);
  28.132 -	*dma_handle = virt_to_bus(ret);
  28.133 -
  28.134 -	return ret;
  28.135 -}
  28.136 -
  28.137 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
  28.138 -void pci_free_consistent(struct pci_dev *hwdev, size_t size,
  28.139 -			 void *vaddr, dma_addr_t dma_handle)
  28.140 -{
  28.141 -	free_pages((unsigned long)vaddr, get_order(size));
  28.142 -}
  28.143 -#else
  28.144 -
  28.145 -void dma_free_coherent(struct device *dev, size_t size,
  28.146 -			 void *vaddr, dma_addr_t dma_handle)
  28.147 -{
  28.148 -	struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
  28.149 -	int order = get_order(size);
  28.150 -	
  28.151 -	if (mem && vaddr >= mem->virt_base && vaddr < (mem->virt_base + (mem->size << PAGE_SHIFT))) {
  28.152 -		int page = (vaddr - mem->virt_base) >> PAGE_SHIFT;
  28.153 -
  28.154 -		bitmap_release_region(mem->bitmap, page, order);
  28.155 -	} else
  28.156 -		free_pages((unsigned long)vaddr, order);
  28.157 -}
  28.158 -
  28.159 -int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
  28.160 -				dma_addr_t device_addr, size_t size, int flags)
  28.161 -{
  28.162 -	void __iomem *mem_base;
  28.163 -	int pages = size >> PAGE_SHIFT;
  28.164 -	int bitmap_size = (pages + 31)/32;
  28.165 -
  28.166 -	if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0)
  28.167 -		goto out;
  28.168 -	if (!size)
  28.169 -		goto out;
  28.170 -	if (dev->dma_mem)
  28.171 -		goto out;
  28.172 -
  28.173 -	/* FIXME: this routine just ignores DMA_MEMORY_INCLUDES_CHILDREN */
  28.174 -
  28.175 -	mem_base = ioremap(bus_addr, size);
  28.176 -	if (!mem_base)
  28.177 -		goto out;
  28.178 -
  28.179 -	dev->dma_mem = kmalloc(GFP_KERNEL, sizeof(struct dma_coherent_mem));
  28.180 -	if (!dev->dma_mem)
  28.181 -		goto out;
  28.182 -	memset(dev->dma_mem, 0, sizeof(struct dma_coherent_mem));
  28.183 -	dev->dma_mem->bitmap = kmalloc(GFP_KERNEL, bitmap_size);
  28.184 -	if (!dev->dma_mem->bitmap)
  28.185 -		goto free1_out;
  28.186 -	memset(dev->dma_mem->bitmap, 0, bitmap_size);
  28.187 -
  28.188 -	dev->dma_mem->virt_base = mem_base;
  28.189 -	dev->dma_mem->device_base = device_addr;
  28.190 -	dev->dma_mem->size = pages;
  28.191 -	dev->dma_mem->flags = flags;
  28.192 -
  28.193 -	if (flags & DMA_MEMORY_MAP)
  28.194 -		return DMA_MEMORY_MAP;
  28.195 -
  28.196 -	return DMA_MEMORY_IO;
  28.197 -
  28.198 - free1_out:
  28.199 -	kfree(dev->dma_mem->bitmap);
  28.200 - out:
  28.201 -	return 0;
  28.202 -}
  28.203 -EXPORT_SYMBOL(dma_declare_coherent_memory);
  28.204 -
  28.205 -void dma_release_declared_memory(struct device *dev)
  28.206 -{
  28.207 -	struct dma_coherent_mem *mem = dev->dma_mem;
  28.208 -	
  28.209 -	if(!mem)
  28.210 -		return;
  28.211 -	dev->dma_mem = NULL;
  28.212 -	kfree(mem->bitmap);
  28.213 -	kfree(mem);
  28.214 -}
  28.215 -EXPORT_SYMBOL(dma_release_declared_memory);
  28.216 -
  28.217 -void *dma_mark_declared_memory_occupied(struct device *dev,
  28.218 -					dma_addr_t device_addr, size_t size)
  28.219 -{
  28.220 -	struct dma_coherent_mem *mem = dev->dma_mem;
  28.221 -	int pages = (size + (device_addr & ~PAGE_MASK) + PAGE_SIZE - 1) >> PAGE_SHIFT;
  28.222 -	int pos, err;
  28.223 -
  28.224 -	if (!mem)
  28.225 -		return ERR_PTR(-EINVAL);
  28.226 -
  28.227 -	pos = (device_addr - mem->device_base) >> PAGE_SHIFT;
  28.228 -	err = bitmap_allocate_region(mem->bitmap, pos, get_order(pages));
  28.229 -	if (err != 0)
  28.230 -		return ERR_PTR(err);
  28.231 -	return mem->virt_base + (pos << PAGE_SHIFT);
  28.232 -}
  28.233 -EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
  28.234 -
  28.235 -#endif
    29.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c	Thu Mar 10 22:09:19 2005 +0000
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,769 +0,0 @@
    29.4 -/*
    29.5 - *  linux/arch/i386/kernel/process.c
    29.6 - *
    29.7 - *  Copyright (C) 1995  Linus Torvalds
    29.8 - *
    29.9 - *  Pentium III FXSR, SSE support
   29.10 - *	Gareth Hughes <gareth@valinux.com>, May 2000
   29.11 - */
   29.12 -
   29.13 -/*
   29.14 - * This file handles the architecture-dependent parts of process handling..
   29.15 - */
   29.16 -
   29.17 -#include <stdarg.h>
   29.18 -
   29.19 -#include <linux/errno.h>
   29.20 -#include <linux/sched.h>
   29.21 -#include <linux/fs.h>
   29.22 -#include <linux/kernel.h>
   29.23 -#include <linux/mm.h>
   29.24 -#include <linux/elfcore.h>
   29.25 -#include <linux/smp.h>
   29.26 -#include <linux/smp_lock.h>
   29.27 -#include <linux/stddef.h>
   29.28 -#include <linux/slab.h>
   29.29 -#include <linux/vmalloc.h>
   29.30 -#include <linux/user.h>
   29.31 -#include <linux/a.out.h>
   29.32 -#include <linux/interrupt.h>
   29.33 -#include <linux/config.h>
   29.34 -#include <linux/utsname.h>
   29.35 -#include <linux/delay.h>
   29.36 -#include <linux/reboot.h>
   29.37 -#include <linux/init.h>
   29.38 -#include <linux/mc146818rtc.h>
   29.39 -#include <linux/module.h>
   29.40 -#include <linux/kallsyms.h>
   29.41 -#include <linux/ptrace.h>
   29.42 -
   29.43 -#include <asm/uaccess.h>
   29.44 -#include <asm/pgtable.h>
   29.45 -#include <asm/system.h>
   29.46 -#include <asm/io.h>
   29.47 -#include <asm/ldt.h>
   29.48 -#include <asm/processor.h>
   29.49 -#include <asm/i387.h>
   29.50 -#include <asm/irq.h>
   29.51 -#include <asm/desc.h>
   29.52 -#include <asm-xen/multicall.h>
   29.53 -#include <asm-xen/xen-public/dom0_ops.h>
   29.54 -#ifdef CONFIG_MATH_EMULATION
   29.55 -#include <asm/math_emu.h>
   29.56 -#endif
   29.57 -
   29.58 -#include <linux/irq.h>
   29.59 -#include <linux/err.h>
   29.60 -
   29.61 -asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
   29.62 -
   29.63 -int hlt_counter;
   29.64 -
   29.65 -unsigned long boot_option_idle_override = 0;
   29.66 -EXPORT_SYMBOL(boot_option_idle_override);
   29.67 -
   29.68 -/*
   29.69 - * Return saved PC of a blocked thread.
   29.70 - */
   29.71 -unsigned long thread_saved_pc(struct task_struct *tsk)
   29.72 -{
   29.73 -	return ((unsigned long *)tsk->thread.esp)[3];
   29.74 -}
   29.75 -
   29.76 -/*
   29.77 - * Powermanagement idle function, if any..
   29.78 - */
   29.79 -void (*pm_idle)(void);
   29.80 -
   29.81 -void disable_hlt(void)
   29.82 -{
   29.83 -	hlt_counter++;
   29.84 -}
   29.85 -
   29.86 -EXPORT_SYMBOL(disable_hlt);
   29.87 -
   29.88 -void enable_hlt(void)
   29.89 -{
   29.90 -	hlt_counter--;
   29.91 -}
   29.92 -
   29.93 -EXPORT_SYMBOL(enable_hlt);
   29.94 -
   29.95 -/* XXX XEN doesn't use default_idle(), poll_idle(). Use xen_idle() instead. */
   29.96 -extern int set_timeout_timer(void);
   29.97 -void xen_idle(void)
   29.98 -{
   29.99 -	int cpu;
  29.100 -
  29.101 -	local_irq_disable();
  29.102 -
  29.103 -	cpu = smp_processor_id();
  29.104 -	if (rcu_pending(cpu))
  29.105 -		rcu_check_callbacks(cpu, 0);
  29.106 -
  29.107 -	if (need_resched()) {
  29.108 -		local_irq_enable();
  29.109 -	} else if (set_timeout_timer() == 0) {
  29.110 -		/* NB. Blocking reenable events in a race-free manner. */
  29.111 -		HYPERVISOR_block();
  29.112 -	} else {
  29.113 -		local_irq_enable();
  29.114 -		HYPERVISOR_yield();
  29.115 -	}
  29.116 -}
  29.117 -
  29.118 -/*
  29.119 - * The idle thread. There's no useful work to be
  29.120 - * done, so just try to conserve power and have a
  29.121 - * low exit latency (ie sit in a loop waiting for
  29.122 - * somebody to say that they'd like to reschedule)
  29.123 - */
  29.124 -void cpu_idle (void)
  29.125 -{
  29.126 -	/* endless idle loop with no priority at all */
  29.127 -	while (1) {
  29.128 -		while (!need_resched()) {
  29.129 -			/*
  29.130 -			 * Mark this as an RCU critical section so that
  29.131 -			 * synchronize_kernel() in the unload path waits
  29.132 -			 * for our completion.
  29.133 -			 */
  29.134 -			rcu_read_lock();
  29.135 -			irq_stat[smp_processor_id()].idle_timestamp = jiffies;
  29.136 -			xen_idle();
  29.137 -			rcu_read_unlock();
  29.138 -		}
  29.139 -		schedule();
  29.140 -	}
  29.141 -}
  29.142 -
  29.143 -/* XXX XEN doesn't use mwait_idle(), select_idle_routine(), idle_setup(). */
  29.144 -/* Always use xen_idle() instead. */
  29.145 -void __init select_idle_routine(const struct cpuinfo_x86 *c) {}
  29.146 -
  29.147 -void show_regs(struct pt_regs * regs)
  29.148 -{
  29.149 -	printk("\n");
  29.150 -	printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
  29.151 -	printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id());
  29.152 -	print_symbol("EIP is at %s\n", regs->eip);
  29.153 -
  29.154 -	if (regs->xcs & 2)
  29.155 -		printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp);
  29.156 -	printk(" EFLAGS: %08lx    %s  (%s)\n",
  29.157 -	       regs->eflags, print_tainted(),UTS_RELEASE);
  29.158 -	printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
  29.159 -		regs->eax,regs->ebx,regs->ecx,regs->edx);
  29.160 -	printk("ESI: %08lx EDI: %08lx EBP: %08lx",
  29.161 -		regs->esi, regs->edi, regs->ebp);
  29.162 -	printk(" DS: %04x ES: %04x\n",
  29.163 -		0xffff & regs->xds,0xffff & regs->xes);
  29.164 -
  29.165 -	show_trace(NULL, &regs->esp);
  29.166 -}
  29.167 -
  29.168 -/*
  29.169 - * This gets run with %ebx containing the
  29.170 - * function to call, and %edx containing
  29.171 - * the "args".
  29.172 - */
  29.173 -extern void kernel_thread_helper(void);
  29.174 -__asm__(".section .text\n"
  29.175 -	".align 4\n"
  29.176 -	"kernel_thread_helper:\n\t"
  29.177 -	"movl %edx,%eax\n\t"
  29.178 -	"pushl %edx\n\t"
  29.179 -	"call *%ebx\n\t"
  29.180 -	"pushl %eax\n\t"
  29.181 -	"call do_exit\n"
  29.182 -	".previous");
  29.183 -
  29.184 -/*
  29.185 - * Create a kernel thread
  29.186 - */
  29.187 -int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
  29.188 -{
  29.189 -	struct pt_regs regs;
  29.190 -
  29.191 -	memset(&regs, 0, sizeof(regs));
  29.192 -
  29.193 -	regs.ebx = (unsigned long) fn;
  29.194 -	regs.edx = (unsigned long) arg;
  29.195 -
  29.196 -	regs.xds = __USER_DS;
  29.197 -	regs.xes = __USER_DS;
  29.198 -	regs.orig_eax = -1;
  29.199 -	regs.eip = (unsigned long) kernel_thread_helper;
  29.200 -	regs.xcs = __KERNEL_CS;
  29.201 -	regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
  29.202 -
  29.203 -	/* Ok, create the new process.. */
  29.204 -	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
  29.205 -}
  29.206 -
  29.207 -/*
  29.208 - * Free current thread data structures etc..
  29.209 - */
  29.210 -void exit_thread(void)
  29.211 -{
  29.212 -	struct task_struct *tsk = current;
  29.213 -	struct thread_struct *t = &tsk->thread;
  29.214 -
  29.215 -	/* The process may have allocated an io port bitmap... nuke it. */
  29.216 -	if (unlikely(NULL != t->io_bitmap_ptr)) {
  29.217 -		int cpu = get_cpu();
  29.218 -		struct tss_struct *tss = &per_cpu(init_tss, cpu);
  29.219 -
  29.220 -		kfree(t->io_bitmap_ptr);
  29.221 -		t->io_bitmap_ptr = NULL;
  29.222 -		/*
  29.223 -		 * Careful, clear this in the TSS too:
  29.224 -		 */
  29.225 -		memset(tss->io_bitmap, 0xff, tss->io_bitmap_max);
  29.226 -		t->io_bitmap_max = 0;
  29.227 -		tss->io_bitmap_owner = NULL;
  29.228 -		tss->io_bitmap_max = 0;
  29.229 -		tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
  29.230 -		put_cpu();
  29.231 -	}
  29.232 -}
  29.233 -
  29.234 -void flush_thread(void)
  29.235 -{
  29.236 -	struct task_struct *tsk = current;
  29.237 -
  29.238 -	memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
  29.239 -	memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));	
  29.240 -	/*
  29.241 -	 * Forget coprocessor state..
  29.242 -	 */
  29.243 -	clear_fpu(tsk);
  29.244 -	tsk->used_math = 0;
  29.245 -}
  29.246 -
  29.247 -void release_thread(struct task_struct *dead_task)
  29.248 -{
  29.249 -	if (dead_task->mm) {
  29.250 -		// temporary debugging check
  29.251 -		if (dead_task->mm->context.size) {
  29.252 -			printk("WARNING: dead process %8s still has LDT? <%p/%d>\n",
  29.253 -					dead_task->comm,
  29.254 -					dead_task->mm->context.ldt,
  29.255 -					dead_task->mm->context.size);
  29.256 -			BUG();
  29.257 -		}
  29.258 -	}
  29.259 -
  29.260 -	release_vm86_irqs(dead_task);
  29.261 -}
  29.262 -
  29.263 -/*
  29.264 - * This gets called before we allocate a new thread and copy
  29.265 - * the current task into it.
  29.266 - */
  29.267 -void prepare_to_copy(struct task_struct *tsk)
  29.268 -{
  29.269 -	unlazy_fpu(tsk);
  29.270 -}
  29.271 -
  29.272 -int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
  29.273 -	unsigned long unused,
  29.274 -	struct task_struct * p, struct pt_regs * regs)
  29.275 -{
  29.276 -	struct pt_regs * childregs;
  29.277 -	struct task_struct *tsk;
  29.278 -	int err;
  29.279 -	unsigned long eflags;
  29.280 -
  29.281 -	childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1;
  29.282 -	*childregs = *regs;
  29.283 -	childregs->eax = 0;
  29.284 -	childregs->esp = esp;
  29.285 -
  29.286 -	p->thread.esp = (unsigned long) childregs;
  29.287 -	p->thread.esp0 = (unsigned long) (childregs+1);
  29.288 -
  29.289 -	p->thread.eip = (unsigned long) ret_from_fork;
  29.290 -
  29.291 -	savesegment(fs,p->thread.fs);
  29.292 -	savesegment(gs,p->thread.gs);
  29.293 -
  29.294 -	tsk = current;
  29.295 -	if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) {
  29.296 -		p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
  29.297 -		if (!p->thread.io_bitmap_ptr) {
  29.298 -			p->thread.io_bitmap_max = 0;
  29.299 -			return -ENOMEM;
  29.300 -		}
  29.301 -		memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr,
  29.302 -			IO_BITMAP_BYTES);
  29.303 -	}
  29.304 -
  29.305 -	/*
  29.306 -	 * Set a new TLS for the child thread?
  29.307 -	 */
  29.308 -	if (clone_flags & CLONE_SETTLS) {
  29.309 -		struct desc_struct *desc;
  29.310 -		struct user_desc info;
  29.311 -		int idx;
  29.312 -
  29.313 -		err = -EFAULT;
  29.314 -		if (copy_from_user(&info, (void __user *)childregs->esi, sizeof(info)))
  29.315 -			goto out;
  29.316 -		err = -EINVAL;
  29.317 -		if (LDT_empty(&info))
  29.318 -			goto out;
  29.319 -
  29.320 -		idx = info.entry_number;
  29.321 -		if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
  29.322 -			goto out;
  29.323 -
  29.324 -		desc = p->thread.tls_array + idx - GDT_ENTRY_TLS_MIN;
  29.325 -		desc->a = LDT_entry_a(&info);
  29.326 -		desc->b = LDT_entry_b(&info);
  29.327 -	}
  29.328 -
  29.329 -
  29.330 -	__asm__ __volatile__ ( "pushfl; popl %0" : "=r" (eflags) : );
  29.331 -	p->thread.io_pl = (eflags >> 12) & 3;
  29.332 -
  29.333 -	err = 0;
  29.334 - out:
  29.335 -	if (err && p->thread.io_bitmap_ptr) {
  29.336 -		kfree(p->thread.io_bitmap_ptr);
  29.337 -		p->thread.io_bitmap_max = 0;
  29.338 -	}
  29.339 -	return err;
  29.340 -}
  29.341 -
  29.342 -/*
  29.343 - * fill in the user structure for a core dump..
  29.344 - */
  29.345 -void dump_thread(struct pt_regs * regs, struct user * dump)
  29.346 -{
  29.347 -	int i;
  29.348 -
  29.349 -/* changed the size calculations - should hopefully work better. lbt */
  29.350 -	dump->magic = CMAGIC;
  29.351 -	dump->start_code = 0;
  29.352 -	dump->start_stack = regs->esp & ~(PAGE_SIZE - 1);
  29.353 -	dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
  29.354 -	dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT;
  29.355 -	dump->u_dsize -= dump->u_tsize;
  29.356 -	dump->u_ssize = 0;
  29.357 -	for (i = 0; i < 8; i++)
  29.358 -		dump->u_debugreg[i] = current->thread.debugreg[i];  
  29.359 -
  29.360 -	if (dump->start_stack < TASK_SIZE)
  29.361 -		dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT;
  29.362 -
  29.363 -	dump->regs.ebx = regs->ebx;
  29.364 -	dump->regs.ecx = regs->ecx;
  29.365 -	dump->regs.edx = regs->edx;
  29.366 -	dump->regs.esi = regs->esi;
  29.367 -	dump->regs.edi = regs->edi;
  29.368 -	dump->regs.ebp = regs->ebp;
  29.369 -	dump->regs.eax = regs->eax;
  29.370 -	dump->regs.ds = regs->xds;
  29.371 -	dump->regs.es = regs->xes;
  29.372 -	savesegment(fs,dump->regs.fs);
  29.373 -	savesegment(gs,dump->regs.gs);
  29.374 -	dump->regs.orig_eax = regs->orig_eax;
  29.375 -	dump->regs.eip = regs->eip;
  29.376 -	dump->regs.cs = regs->xcs;
  29.377 -	dump->regs.eflags = regs->eflags;
  29.378 -	dump->regs.esp = regs->esp;
  29.379 -	dump->regs.ss = regs->xss;
  29.380 -
  29.381 -	dump->u_fpvalid = dump_fpu (regs, &dump->i387);
  29.382 -}
  29.383 -
  29.384 -/* 
  29.385 - * Capture the user space registers if the task is not running (in user space)
  29.386 - */
  29.387 -int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
  29.388 -{
  29.389 -	struct pt_regs ptregs;
  29.390 -	
  29.391 -	ptregs = *(struct pt_regs *)
  29.392 -		((unsigned long)tsk->thread_info+THREAD_SIZE - sizeof(ptregs));
  29.393 -	ptregs.xcs &= 0xffff;
  29.394 -	ptregs.xds &= 0xffff;
  29.395 -	ptregs.xes &= 0xffff;
  29.396 -	ptregs.xss &= 0xffff;
  29.397 -
  29.398 -	elf_core_copy_regs(regs, &ptregs);
  29.399 -
  29.400 -	boot_option_idle_override = 1;
  29.401 -	return 1;
  29.402 -}
  29.403 -
  29.404 -static inline void
  29.405 -handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss)
  29.406 -{
  29.407 -	if (!next->io_bitmap_ptr) {
  29.408 -		/*
  29.409 -		 * Disable the bitmap via an invalid offset. We still cache
  29.410 -		 * the previous bitmap owner and the IO bitmap contents:
  29.411 -		 */
  29.412 -		tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
  29.413 -		return;
  29.414 -	}
  29.415 -	if (likely(next == tss->io_bitmap_owner)) {
  29.416 -		/*
  29.417 -		 * Previous owner of the bitmap (hence the bitmap content)
  29.418 -		 * matches the next task, we dont have to do anything but
  29.419 -		 * to set a valid offset in the TSS:
  29.420 -		 */
  29.421 -		tss->io_bitmap_base = IO_BITMAP_OFFSET;
  29.422 -		return;
  29.423 -	}
  29.424 -	/*
  29.425 -	 * Lazy TSS's I/O bitmap copy. We set an invalid offset here
  29.426 -	 * and we let the task to get a GPF in case an I/O instruction
  29.427 -	 * is performed.  The handler of the GPF will verify that the
  29.428 -	 * faulting task has a valid I/O bitmap and, it true, does the
  29.429 -	 * real copy and restart the instruction.  This will save us
  29.430 -	 * redundant copies when the currently switched task does not
  29.431 -	 * perform any I/O during its timeslice.
  29.432 -	 */
  29.433 -	tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET_LAZY;
  29.434 -}
  29.435 -/*
  29.436 - * This special macro can be used to load a debugging register
  29.437 - */
  29.438 -#define loaddebug(thread,register) \
  29.439 -		HYPERVISOR_set_debugreg((register),	\
  29.440 -			(thread->debugreg[register]))
  29.441 -
  29.442 -/*
  29.443 - *	switch_to(x,yn) should switch tasks from x to y.
  29.444 - *
  29.445 - * We fsave/fwait so that an exception goes off at the right time
  29.446 - * (as a call from the fsave or fwait in effect) rather than to
  29.447 - * the wrong process. Lazy FP saving no longer makes any sense
  29.448 - * with modern CPU's, and this simplifies a lot of things (SMP
  29.449 - * and UP become the same).
  29.450 - *
  29.451 - * NOTE! We used to use the x86 hardware context switching. The
  29.452 - * reason for not using it any more becomes apparent when you
  29.453 - * try to recover gracefully from saved state that is no longer
  29.454 - * valid (stale segment register values in particular). With the
  29.455 - * hardware task-switch, there is no way to fix up bad state in
  29.456 - * a reasonable manner.
  29.457 - *
  29.458 - * The fact that Intel documents the hardware task-switching to
  29.459 - * be slow is a fairly red herring - this code is not noticeably
  29.460 - * faster. However, there _is_ some room for improvement here,
  29.461 - * so the performance issues may eventually be a valid point.
  29.462 - * More important, however, is the fact that this allows us much
  29.463 - * more flexibility.
  29.464 - *
  29.465 - * The return value (in %eax) will be the "prev" task after
  29.466 - * the task-switch, and shows up in ret_from_fork in entry.S,
  29.467 - * for example.
  29.468 - */
  29.469 -struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  29.470 -{
  29.471 -	struct thread_struct *prev = &prev_p->thread,
  29.472 -				 *next = &next_p->thread;
  29.473 -	int cpu = smp_processor_id();
  29.474 -	struct tss_struct *tss = &per_cpu(init_tss, cpu);
  29.475 -	dom0_op_t op;
  29.476 -
  29.477 -        /* NB. No need to disable interrupts as already done in sched.c */
  29.478 -        /* __cli(); */
  29.479 -
  29.480 -	/*
  29.481 -	 * Save away %fs and %gs. No need to save %es and %ds, as
  29.482 -	 * those are always kernel segments while inside the kernel.
  29.483 -	 */
  29.484 -	asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs));
  29.485 -	asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs));
  29.486 -
  29.487 -	/*
  29.488 -	 * We clobber FS and GS here so that we avoid a GPF when restoring
  29.489 -	 * previous task's FS/GS values in Xen when the LDT is switched.
  29.490 -	 */
  29.491 -	__asm__ __volatile__ ( 
  29.492 -		"xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs" : : :
  29.493 -		"eax" );
  29.494 -
  29.495 -	MULTICALL_flush_page_update_queue();
  29.496 -
  29.497 -	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  29.498 -
  29.499 -	/*
  29.500 -	 * This is basically '__unlazy_fpu', except that we queue a
  29.501 -	 * multicall to indicate FPU task switch, rather than
  29.502 -	 * synchronously trapping to Xen.
  29.503 -	 */
  29.504 -	if (prev_p->thread_info->status & TS_USEDFPU) {
  29.505 -		__save_init_fpu(prev_p); /* _not_ save_init_fpu() */
  29.506 -		queue_multicall1(__HYPERVISOR_fpu_taskswitch, 1);
  29.507 -	}
  29.508 -
  29.509 -	/*
  29.510 -	 * Reload esp0, LDT and the page table pointer:
  29.511 -	 * This is load_esp0(tss, next) with a multicall.
  29.512 -	 */
  29.513 -	tss->esp0 = next->esp0;
  29.514 -	queue_multicall2(__HYPERVISOR_stack_switch, tss->ss0, tss->esp0);
  29.515 -
  29.516 -	/*
  29.517 -	 * Load the per-thread Thread-Local Storage descriptor.
  29.518 -	 * This is load_TLS(next, cpu) with multicalls.
  29.519 -	 */
  29.520 -#define C(i) do {							    \
  29.521 -	if (unlikely(next->tls_array[i].a != prev->tls_array[i].a ||	    \
  29.522 -		     next->tls_array[i].b != prev->tls_array[i].b))	    \
  29.523 -		queue_multicall3(__HYPERVISOR_update_descriptor,	    \
  29.524 -				 virt_to_machine(&get_cpu_gdt_table(cpu)    \
  29.525 -						 [GDT_ENTRY_TLS_MIN + i]),  \
  29.526 -				 ((u32 *)&next->tls_array[i])[0],	    \
  29.527 -				 ((u32 *)&next->tls_array[i])[1]);	    \
  29.528 -} while (0)
  29.529 -	C(0); C(1); C(2);
  29.530 -#undef C
  29.531 -
  29.532 -	if (xen_start_info.flags & SIF_PRIVILEGED) {
  29.533 -		op.cmd           = DOM0_IOPL;
  29.534 -		op.u.iopl.domain = DOMID_SELF;
  29.535 -		op.u.iopl.iopl   = next->io_pl;
  29.536 -		op.interface_version = DOM0_INTERFACE_VERSION;
  29.537 -		queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op);
  29.538 -	}
  29.539 -
  29.540 -	/* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */
  29.541 -	execute_multicall_list();
  29.542 -        /* __sti(); */
  29.543 -
  29.544 -	/*
  29.545 -	 * Restore %fs and %gs if needed.
  29.546 -	 */
  29.547 -	if (unlikely(next->fs | next->gs)) {
  29.548 -		loadsegment(fs, next->fs);
  29.549 -		loadsegment(gs, next->gs);
  29.550 -	}
  29.551 -
  29.552 -	/*
  29.553 -	 * Now maybe reload the debug registers
  29.554 -	 */
  29.555 -	if (unlikely(next->debugreg[7])) {
  29.556 -		loaddebug(next, 0);
  29.557 -		loaddebug(next, 1);
  29.558 -		loaddebug(next, 2);
  29.559 -		loaddebug(next, 3);
  29.560 -		/* no 4 and 5 */
  29.561 -		loaddebug(next, 6);
  29.562 -		loaddebug(next, 7);
  29.563 -	}
  29.564 -
  29.565 -	if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr))
  29.566 -		handle_io_bitmap(next, tss);
  29.567 -
  29.568 -	return prev_p;
  29.569 -}
  29.570 -
  29.571 -asmlinkage int sys_fork(struct pt_regs regs)
  29.572 -{
  29.573 -	return do_fork(SIGCHLD, regs.esp, &regs, 0, NULL, NULL);
  29.574 -}
  29.575 -
  29.576 -asmlinkage int sys_clone(struct pt_regs regs)
  29.577 -{
  29.578 -	unsigned long clone_flags;
  29.579 -	unsigned long newsp;
  29.580 -	int __user *parent_tidptr, *child_tidptr;
  29.581 -
  29.582 -	clone_flags = regs.ebx;
  29.583 -	newsp = regs.ecx;
  29.584 -	parent_tidptr = (int __user *)regs.edx;
  29.585 -	child_tidptr = (int __user *)regs.edi;
  29.586 -	if (!newsp)
  29.587 -		newsp = regs.esp;
  29.588 -	return do_fork(clone_flags, newsp, &regs, 0, parent_tidptr, child_tidptr);
  29.589 -}
  29.590 -
  29.591 -/*
  29.592 - * This is trivial, and on the face of it looks like it
  29.593 - * could equally well be done in user mode.
  29.594 - *
  29.595 - * Not so, for quite unobvious reasons - register pressure.
  29.596 - * In user mode vfork() cannot have a stack frame, and if
  29.597 - * done by calling the "clone()" system call directly, you
  29.598 - * do not have enough call-clobbered registers to hold all
  29.599 - * the information you need.
  29.600 - */
  29.601 -asmlinkage int sys_vfork(struct pt_regs regs)
  29.602 -{
  29.603 -	return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs.esp, &regs, 0, NULL, NULL);
  29.604 -}
  29.605 -
  29.606 -/*
  29.607 - * sys_execve() executes a new program.
  29.608 - */
  29.609 -asmlinkage int sys_execve(struct pt_regs regs)
  29.610 -{
  29.611 -	int error;
  29.612 -	char * filename;
  29.613 -
  29.614 -	filename = getname((char __user *) regs.ebx);
  29.615 -	error = PTR_ERR(filename);
  29.616 -	if (IS_ERR(filename))
  29.617 -		goto out;
  29.618 -	error = do_execve(filename,
  29.619 -			(char __user * __user *) regs.ecx,
  29.620 -			(char __user * __user *) regs.edx,
  29.621 -			&regs);
  29.622 -	if (error == 0) {
  29.623 -		task_lock(current);
  29.624 -		current->ptrace &= ~PT_DTRACE;
  29.625 -		task_unlock(current);
  29.626 -		/* Make sure we don't return using sysenter.. */
  29.627 -		set_thread_flag(TIF_IRET);
  29.628 -	}
  29.629 -	putname(filename);
  29.630 -out:
  29.631 -	return error;
  29.632 -}
  29.633 -
  29.634 -#define top_esp                (THREAD_SIZE - sizeof(unsigned long))
  29.635 -#define top_ebp                (THREAD_SIZE - 2*sizeof(unsigned long))
  29.636 -
  29.637 -unsigned long get_wchan(struct task_struct *p)
  29.638 -{
  29.639 -	unsigned long ebp, esp, eip;
  29.640 -	unsigned long stack_page;
  29.641 -	int count = 0;
  29.642 -	if (!p || p == current || p->state == TASK_RUNNING)
  29.643 -		return 0;
  29.644 -	stack_page = (unsigned long)p->thread_info;
  29.645 -	esp = p->thread.esp;
  29.646 -	if (!stack_page || esp < stack_page || esp > top_esp+stack_page)
  29.647 -		return 0;
  29.648 -	/* include/asm-i386/system.h:switch_to() pushes ebp last. */
  29.649 -	ebp = *(unsigned long *) esp;
  29.650 -	do {
  29.651 -		if (ebp < stack_page || ebp > top_ebp+stack_page)
  29.652 -			return 0;
  29.653 -		eip = *(unsigned long *) (ebp+4);
  29.654 -		if (!in_sched_functions(eip))
  29.655 -			return eip;
  29.656 -		ebp = *(unsigned long *) ebp;
  29.657 -	} while (count++ < 16);
  29.658 -	return 0;
  29.659 -}
  29.660 -
  29.661 -/*
  29.662 - * sys_alloc_thread_area: get a yet unused TLS descriptor index.
  29.663 - */
  29.664 -static int get_free_idx(void)
  29.665 -{
  29.666 -	struct thread_struct *t = &current->thread;
  29.667 -	int idx;
  29.668 -
  29.669 -	for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++)
  29.670 -		if (desc_empty(t->tls_array + idx))
  29.671 -			return idx + GDT_ENTRY_TLS_MIN;
  29.672 -	return -ESRCH;
  29.673 -}
  29.674 -
  29.675 -/*
  29.676 - * Set a given TLS descriptor:
  29.677 - */
  29.678 -asmlinkage int sys_set_thread_area(struct user_desc __user *u_info)
  29.679 -{
  29.680 -	struct thread_struct *t = &current->thread;
  29.681 -	struct user_desc info;
  29.682 -	struct desc_struct *desc;
  29.683 -	int cpu, idx;
  29.684 -
  29.685 -	if (copy_from_user(&info, u_info, sizeof(info)))
  29.686 -		return -EFAULT;
  29.687 -	idx = info.entry_number;
  29.688 -
  29.689 -	/*
  29.690 -	 * index -1 means the kernel should try to find and
  29.691 -	 * allocate an empty descriptor:
  29.692 -	 */
  29.693 -	if (idx == -1) {
  29.694 -		idx = get_free_idx();
  29.695 -		if (idx < 0)
  29.696 -			return idx;
  29.697 -		if (put_user(idx, &u_info->entry_number))
  29.698 -			return -EFAULT;
  29.699 -	}
  29.700 -
  29.701 -	if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
  29.702 -		return -EINVAL;
  29.703 -
  29.704 -	desc = t->tls_array + idx - GDT_ENTRY_TLS_MIN;
  29.705 -
  29.706 -	/*
  29.707 -	 * We must not get preempted while modifying the TLS.
  29.708 -	 */
  29.709 -	cpu = get_cpu();
  29.710 -
  29.711 -	if (LDT_empty(&info)) {
  29.712 -		desc->a = 0;
  29.713 -		desc->b = 0;
  29.714 -	} else {
  29.715 -		desc->a = LDT_entry_a(&info);
  29.716 -		desc->b = LDT_entry_b(&info);
  29.717 -	}
  29.718 -	load_TLS(t, cpu);
  29.719 -
  29.720 -	put_cpu();
  29.721 -
  29.722 -	return 0;
  29.723 -}
  29.724 -
  29.725 -/*
  29.726 - * Get the current Thread-Local Storage area:
  29.727 - */
  29.728 -
  29.729 -#define GET_BASE(desc) ( \
  29.730 -	(((desc)->a >> 16) & 0x0000ffff) | \
  29.731 -	(((desc)->b << 16) & 0x00ff0000) | \
  29.732 -	( (desc)->b        & 0xff000000)   )
  29.733 -
  29.734 -#define GET_LIMIT(desc) ( \
  29.735 -	((desc)->a & 0x0ffff) | \
  29.736 -	 ((desc)->b & 0xf0000) )
  29.737 -	
  29.738 -#define GET_32BIT(desc)		(((desc)->b >> 22) & 1)
  29.739 -#define GET_CONTENTS(desc)	(((desc)->b >> 10) & 3)
  29.740 -#define GET_WRITABLE(desc)	(((desc)->b >>  9) & 1)
  29.741 -#define GET_LIMIT_PAGES(desc)	(((desc)->b >> 23) & 1)
  29.742 -#define GET_PRESENT(desc)	(((desc)->b >> 15) & 1)
  29.743 -#define GET_USEABLE(desc)	(((desc)->b >> 20) & 1)
  29.744 -
  29.745 -asmlinkage int sys_get_thread_area(struct user_desc __user *u_info)
  29.746 -{
  29.747 -	struct user_desc info;
  29.748 -	struct desc_struct *desc;
  29.749 -	int idx;
  29.750 -
  29.751 -	if (get_user(idx, &u_info->entry_number))
  29.752 -		return -EFAULT;
  29.753 -	if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
  29.754 -		return -EINVAL;
  29.755 -
  29.756 -	desc = current->thread.tls_array + idx - GDT_ENTRY_TLS_MIN;
  29.757 -
  29.758 -	info.entry_number = idx;
  29.759 -	info.base_addr = GET_BASE(desc);
  29.760 -	info.limit = GET_LIMIT(desc);
  29.761 -	info.seg_32bit = GET_32BIT(desc);
  29.762 -	info.contents = GET_CONTENTS(desc);
  29.763 -	info.read_exec_only = !GET_WRITABLE(desc);
  29.764 -	info.limit_in_pages = GET_LIMIT_PAGES(desc);
  29.765 -	info.seg_not_present = !GET_PRESENT(desc);
  29.766 -	info.useable = GET_USEABLE(desc);
  29.767 -
  29.768 -	if (copy_to_user(u_info, &info, sizeof(info)))
  29.769 -		return -EFAULT;
  29.770 -	return 0;
  29.771 -}
  29.772 -
    30.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c	Thu Mar 10 22:09:19 2005 +0000
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,1550 +0,0 @@
    30.4 -/*
    30.5 - *  linux/arch/i386/kernel/setup.c
    30.6 - *
    30.7 - *  Copyright (C) 1995  Linus Torvalds
    30.8 - *
    30.9 - *  Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999
   30.10 - *
   30.11 - *  Memory region support
   30.12 - *	David Parsons <orc@pell.chi.il.us>, July-August 1999
   30.13 - *
   30.14 - *  Added E820 sanitization routine (removes overlapping memory regions);
   30.15 - *  Brian Moyle <bmoyle@mvista.com>, February 2001
   30.16 - *
   30.17 - * Moved CPU detection code to cpu/${cpu}.c
   30.18 - *    Patrick Mochel <mochel@osdl.org>, March 2002
   30.19 - *
   30.20 - *  Provisions for empty E820 memory regions (reported by certain BIOSes).
   30.21 - *  Alex Achenbach <xela@slit.de>, December 2002.
   30.22 - *
   30.23 - */
   30.24 -
   30.25 -/*
   30.26 - * This file handles the architecture-dependent parts of initialization
   30.27 - */
   30.28 -
   30.29 -#include <linux/sched.h>
   30.30 -#include <linux/mm.h>
   30.31 -#include <linux/tty.h>
   30.32 -#include <linux/ioport.h>
   30.33 -#include <linux/acpi.h>
   30.34 -#include <linux/apm_bios.h>
   30.35 -#include <linux/initrd.h>
   30.36 -#include <linux/bootmem.h>
   30.37 -#include <linux/seq_file.h>
   30.38 -#include <linux/console.h>
   30.39 -#include <linux/root_dev.h>
   30.40 -#include <linux/highmem.h>
   30.41 -#include <linux/module.h>
   30.42 -#include <linux/efi.h>
   30.43 -#include <linux/init.h>
   30.44 -#include <linux/edd.h>
   30.45 -#include <linux/percpu.h>
   30.46 -#include <video/edid.h>
   30.47 -#include <asm/e820.h>
   30.48 -#include <asm/mpspec.h>
   30.49 -#include <asm/setup.h>
   30.50 -#include <asm/arch_hooks.h>
   30.51 -#include <asm/sections.h>
   30.52 -#include <asm/io_apic.h>
   30.53 -#include <asm/ist.h>
   30.54 -#include <asm/io.h>
   30.55 -#include <asm-xen/hypervisor.h>
   30.56 -#include "setup_arch_pre.h"
   30.57 -#include <bios_ebda.h>
   30.58 -
   30.59 -/* Allows setting of maximum possible memory size  */
   30.60 -static unsigned long xen_override_max_pfn;
   30.61 -
   30.62 -int disable_pse __initdata = 0;
   30.63 -
   30.64 -/*
   30.65 - * Machine setup..
   30.66 - */
   30.67 -
   30.68 -#ifdef CONFIG_EFI
   30.69 -int efi_enabled = 0;
   30.70 -EXPORT_SYMBOL(efi_enabled);
   30.71 -#endif
   30.72 -
   30.73 -/* cpu data as detected by the assembly code in head.S */
   30.74 -struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 0, 1, 0, -1 };
   30.75 -/* common cpu data for all cpus */
   30.76 -struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 0, 1, 0, -1 };
   30.77 -
   30.78 -unsigned long mmu_cr4_features;
   30.79 -EXPORT_SYMBOL_GPL(mmu_cr4_features);
   30.80 -
   30.81 -#ifdef	CONFIG_ACPI_INTERPRETER
   30.82 -	int acpi_disabled = 0;
   30.83 -#else
   30.84 -	int acpi_disabled = 1;
   30.85 -#endif
   30.86 -EXPORT_SYMBOL(acpi_disabled);
   30.87 -
   30.88 -#ifdef	CONFIG_ACPI_BOOT
   30.89 -int __initdata acpi_force = 0;
   30.90 -extern acpi_interrupt_flags	acpi_sci_flags;
   30.91 -#endif
   30.92 -
   30.93 -int MCA_bus;
   30.94 -/* for MCA, but anyone else can use it if they want */
   30.95 -unsigned int machine_id;
   30.96 -unsigned int machine_submodel_id;
   30.97 -unsigned int BIOS_revision;
   30.98 -unsigned int mca_pentium_flag;
   30.99 -
  30.100 -/* For PCI or other memory-mapped resources */
  30.101 -unsigned long pci_mem_start = 0x10000000;
  30.102 -
  30.103 -/* user-defined highmem size */
  30.104 -static unsigned int highmem_pages = -1;
  30.105 -
  30.106 -/*
  30.107 - * Setup options
  30.108 - */
  30.109 -struct drive_info_struct { char dummy[32]; } drive_info;
  30.110 -struct screen_info screen_info;
  30.111 -struct apm_info apm_info;
  30.112 -struct sys_desc_table_struct {
  30.113 -	unsigned short length;
  30.114 -	unsigned char table[0];
  30.115 -};
  30.116 -struct edid_info edid_info;
  30.117 -struct ist_info ist_info;
  30.118 -struct e820map e820;
  30.119 -
  30.120 -unsigned char aux_device_present;
  30.121 -
  30.122 -extern void early_cpu_init(void);
  30.123 -extern void dmi_scan_machine(void);
  30.124 -extern void generic_apic_probe(char *);
  30.125 -extern int root_mountflags;
  30.126 -
  30.127 -unsigned long saved_videomode;
  30.128 -
  30.129 -#define RAMDISK_IMAGE_START_MASK  	0x07FF
  30.130 -#define RAMDISK_PROMPT_FLAG		0x8000
  30.131 -#define RAMDISK_LOAD_FLAG		0x4000	
  30.132 -
  30.133 -static char command_line[COMMAND_LINE_SIZE];
  30.134 -
  30.135 -unsigned char __initdata boot_params[PARAM_SIZE];
  30.136 -
  30.137 -static struct resource data_resource = {
  30.138 -	.name	= "Kernel data",
  30.139 -	.start	= 0,
  30.140 -	.end	= 0,
  30.141 -	.flags	= IORESOURCE_BUSY | IORESOURCE_MEM
  30.142 -};
  30.143 -
  30.144 -static struct resource code_resource = {
  30.145 -	.name	= "Kernel code",
  30.146 -	.start	= 0,
  30.147 -	.end	= 0,
  30.148 -	.flags	= IORESOURCE_BUSY | IORESOURCE_MEM
  30.149 -};
  30.150 -
  30.151 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST
  30.152 -static struct resource system_rom_resource = {
  30.153 -	.name	= "System ROM",
  30.154 -	.start	= 0xf0000,
  30.155 -	.end	= 0xfffff,
  30.156 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.157 -};
  30.158 -
  30.159 -static struct resource extension_rom_resource = {
  30.160 -	.name	= "Extension ROM",
  30.161 -	.start	= 0xe0000,
  30.162 -	.end	= 0xeffff,
  30.163 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.164 -};
  30.165 -
  30.166 -static struct resource adapter_rom_resources[] = { {
  30.167 -	.name 	= "Adapter ROM",
  30.168 -	.start	= 0xc8000,
  30.169 -	.end	= 0,
  30.170 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.171 -}, {
  30.172 -	.name 	= "Adapter ROM",
  30.173 -	.start	= 0,
  30.174 -	.end	= 0,
  30.175 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.176 -}, {
  30.177 -	.name 	= "Adapter ROM",
  30.178 -	.start	= 0,
  30.179 -	.end	= 0,
  30.180 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.181 -}, {
  30.182 -	.name 	= "Adapter ROM",
  30.183 -	.start	= 0,
  30.184 -	.end	= 0,
  30.185 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.186 -}, {
  30.187 -	.name 	= "Adapter ROM",
  30.188 -	.start	= 0,
  30.189 -	.end	= 0,
  30.190 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.191 -}, {
  30.192 -	.name 	= "Adapter ROM",
  30.193 -	.start	= 0,
  30.194 -	.end	= 0,
  30.195 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.196 -} };
  30.197 -
  30.198 -#define ADAPTER_ROM_RESOURCES \
  30.199 -	(sizeof adapter_rom_resources / sizeof adapter_rom_resources[0])
  30.200 -
  30.201 -static struct resource video_rom_resource = {
  30.202 -	.name 	= "Video ROM",
  30.203 -	.start	= 0xc0000,
  30.204 -	.end	= 0xc7fff,
  30.205 -	.flags	= IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM
  30.206 -};
  30.207 -#endif
  30.208 -
  30.209 -static struct resource video_ram_resource = {
  30.210 -	.name	= "Video RAM area",
  30.211 -	.start	= 0xa0000,
  30.212 -	.end	= 0xbffff,
  30.213 -	.flags	= IORESOURCE_BUSY | IORESOURCE_MEM
  30.214 -};
  30.215 -
  30.216 -static struct resource standard_io_resources[] = { {
  30.217 -	.name	= "dma1",
  30.218 -	.start	= 0x0000,
  30.219 -	.end	= 0x001f,
  30.220 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.221 -}, {
  30.222 -	.name	= "pic1",
  30.223 -	.start	= 0x0020,
  30.224 -	.end	= 0x0021,
  30.225 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.226 -}, {
  30.227 -	.name   = "timer0",
  30.228 -	.start	= 0x0040,
  30.229 -	.end    = 0x0043,
  30.230 -	.flags  = IORESOURCE_BUSY | IORESOURCE_IO
  30.231 -}, {
  30.232 -	.name   = "timer1",
  30.233 -	.start  = 0x0050,
  30.234 -	.end    = 0x0053,
  30.235 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.236 -}, {
  30.237 -	.name	= "keyboard",
  30.238 -	.start	= 0x0060,
  30.239 -	.end	= 0x006f,
  30.240 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.241 -}, {
  30.242 -	.name	= "dma page reg",
  30.243 -	.start	= 0x0080,
  30.244 -	.end	= 0x008f,
  30.245 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.246 -}, {
  30.247 -	.name	= "pic2",
  30.248 -	.start	= 0x00a0,
  30.249 -	.end	= 0x00a1,
  30.250 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.251 -}, {
  30.252 -	.name	= "dma2",
  30.253 -	.start	= 0x00c0,
  30.254 -	.end	= 0x00df,
  30.255 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.256 -}, {
  30.257 -	.name	= "fpu",
  30.258 -	.start	= 0x00f0,
  30.259 -	.end	= 0x00ff,
  30.260 -	.flags	= IORESOURCE_BUSY | IORESOURCE_IO
  30.261 -} };
  30.262 -
  30.263 -#define STANDARD_IO_RESOURCES \
  30.264 -	(sizeof standard_io_resources / sizeof standard_io_resources[0])
  30.265 -
  30.266 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST
  30.267 -#define romsignature(x) (*(unsigned short *)(x) == 0xaa55)
  30.268 -
  30.269 -static int __init romchecksum(unsigned char *rom, unsigned long length)
  30.270 -{
  30.271 -	unsigned char *p, sum = 0;
  30.272 -
  30.273 -	for (p = rom; p < rom + length; p++)
  30.274 -		sum += *p;
  30.275 -	return sum == 0;
  30.276 -}
  30.277 -
  30.278 -static void __init probe_roms(void)
  30.279 -{
  30.280 -	unsigned long start, length, upper;
  30.281 -	unsigned char *rom;
  30.282 -	int	      i;
  30.283 -
  30.284 -	/* video rom */
  30.285 -	upper = adapter_rom_resources[0].start;
  30.286 -	for (start = video_rom_resource.start; start < upper; start += 2048) {
  30.287 -		rom = isa_bus_to_virt(start);
  30.288 -		if (!romsignature(rom))
  30.289 -			continue;
  30.290 -
  30.291 -		video_rom_resource.start = start;
  30.292 -
  30.293 -		/* 0 < length <= 0x7f * 512, historically */
  30.294 -		length = rom[2] * 512;
  30.295 -
  30.296 -		/* if checksum okay, trust length byte */
  30.297 -		if (length && romchecksum(rom, length))
  30.298 -			video_rom_resource.end = start + length - 1;
  30.299 -
  30.300 -		request_resource(&iomem_resource, &video_rom_resource);
  30.301 -		break;
  30.302 -	}
  30.303 -
  30.304 -	start = (video_rom_resource.end + 1 + 2047) & ~2047UL;
  30.305 -	if (start < upper)
  30.306 -		start = upper;
  30.307 -
  30.308 -	/* system rom */
  30.309 -	request_resource(&iomem_resource, &system_rom_resource);
  30.310 -	upper = system_rom_resource.start;
  30.311 -
  30.312 -	/* check for extension rom (ignore length byte!) */
  30.313 -	rom = isa_bus_to_virt(extension_rom_resource.start);
  30.314 -	if (romsignature(rom)) {
  30.315 -		length = extension_rom_resource.end - extension_rom_resource.start + 1;
  30.316 -		if (romchecksum(rom, length)) {
  30.317 -			request_resource(&iomem_resource, &extension_rom_resource);
  30.318 -			upper = extension_rom_resource.start;
  30.319 -		}
  30.320 -	}
  30.321 -
  30.322 -	/* check for adapter roms on 2k boundaries */
  30.323 -	for (i = 0; i < ADAPTER_ROM_RESOURCES && start < upper; start += 2048) {
  30.324 -		rom = isa_bus_to_virt(start);
  30.325 -		if (!romsignature(rom))
  30.326 -			continue;
  30.327 -
  30.328 -		/* 0 < length <= 0x7f * 512, historically */
  30.329 -		length = rom[2] * 512;
  30.330 -
  30.331 -		/* but accept any length that fits if checksum okay */
  30.332 -		if (!length || start + length > upper || !romchecksum(rom, length))
  30.333 -			continue;
  30.334 -
  30.335 -		adapter_rom_resources[i].start = start;
  30.336 -		adapter_rom_resources[i].end = start + length - 1;
  30.337 -		request_resource(&iomem_resource, &adapter_rom_resources[i]);
  30.338 -
  30.339 -		start = adapter_rom_resources[i++].end & ~2047UL;
  30.340 -	}
  30.341 -}
  30.342 -#endif
  30.343 -
  30.344 -/*
  30.345 - * Point at the empty zero page to start with. We map the real shared_info
  30.346 - * page as soon as fixmap is up and running.
  30.347 - */
  30.348 -shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
  30.349 -EXPORT_SYMBOL(HYPERVISOR_shared_info);
  30.350 -
  30.351 -unsigned int *phys_to_machine_mapping, *pfn_to_mfn_frame_list;
  30.352 -EXPORT_SYMBOL(phys_to_machine_mapping);
  30.353 -
  30.354 -DEFINE_PER_CPU(multicall_entry_t, multicall_list[8]);
  30.355 -DEFINE_PER_CPU(int, nr_multicall_ents);
  30.356 -
  30.357 -/* Raw start-of-day parameters from the hypervisor. */
  30.358 -union xen_start_info_union xen_start_info_union;
  30.359 -
  30.360 -static void __init limit_regions(unsigned long long size)
  30.361 -{
  30.362 -	unsigned long long current_addr = 0;
  30.363 -	int i;
  30.364 -
  30.365 -	if (efi_enabled) {
  30.366 -		for (i = 0; i < memmap.nr_map; i++) {
  30.367 -			current_addr = memmap.map[i].phys_addr +
  30.368 -				       (memmap.map[i].num_pages << 12);
  30.369 -			if (memmap.map[i].type == EFI_CONVENTIONAL_MEMORY) {
  30.370 -				if (current_addr >= size) {
  30.371 -					memmap.map[i].num_pages -=
  30.372 -						(((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT);
  30.373 -					memmap.nr_map = i + 1;
  30.374 -					return;
  30.375 -				}
  30.376 -			}
  30.377 -		}
  30.378 -	}
  30.379 -	for (i = 0; i < e820.nr_map; i++) {
  30.380 -		if (e820.map[i].type == E820_RAM) {
  30.381 -			current_addr = e820.map[i].addr + e820.map[i].size;
  30.382 -			if (current_addr >= size) {
  30.383 -				e820.map[i].size -= current_addr-size;
  30.384 -				e820.nr_map = i + 1;
  30.385 -				return;
  30.386 -			}
  30.387 -		}
  30.388 -	}
  30.389 -}
  30.390 -
  30.391 -static void __init add_memory_region(unsigned long long start,
  30.392 -                                  unsigned long long size, int type)
  30.393 -{
  30.394 -	int x;
  30.395 -
  30.396 -	if (!efi_enabled) {
  30.397 -       		x = e820.nr_map;
  30.398 -
  30.399 -		if (x == E820MAX) {
  30.400 -		    printk(KERN_ERR "Ooops! Too many entries in the memory map!\n");
  30.401 -		    return;
  30.402 -		}
  30.403 -
  30.404 -		e820.map[x].addr = start;
  30.405 -		e820.map[x].size = size;
  30.406 -		e820.map[x].type = type;
  30.407 -		e820.nr_map++;
  30.408 -	}
  30.409 -} /* add_memory_region */
  30.410 -
  30.411 -#define E820_DEBUG	1
  30.412 -
  30.413 -static void __init print_memory_map(char *who)
  30.414 -{
  30.415 -	int i;
  30.416 -
  30.417 -	for (i = 0; i < e820.nr_map; i++) {
  30.418 -		printk(" %s: %016Lx - %016Lx ", who,
  30.419 -			e820.map[i].addr,
  30.420 -			e820.map[i].addr + e820.map[i].size);
  30.421 -		switch (e820.map[i].type) {
  30.422 -		case E820_RAM:	printk("(usable)\n");
  30.423 -				break;
  30.424 -		case E820_RESERVED:
  30.425 -				printk("(reserved)\n");
  30.426 -				break;
  30.427 -		case E820_ACPI:
  30.428 -				printk("(ACPI data)\n");
  30.429 -				break;
  30.430 -		case E820_NVS:
  30.431 -				printk("(ACPI NVS)\n");
  30.432 -				break;
  30.433 -		default:	printk("type %lu\n", e820.map[i].type);
  30.434 -				break;
  30.435 -		}
  30.436 -	}
  30.437 -}
  30.438 -
  30.439 -#if 0
  30.440 -/*
  30.441 - * Sanitize the BIOS e820 map.
  30.442 - *
  30.443 - * Some e820 responses include overlapping entries.  The following 
  30.444 - * replaces the original e820 map with a new one, removing overlaps.
  30.445 - *
  30.446 - */
  30.447 -struct change_member {
  30.448 -	struct e820entry *pbios; /* pointer to original bios entry */
  30.449 -	unsigned long long addr; /* address for this change point */
  30.450 -};
  30.451 -struct change_member change_point_list[2*E820MAX] __initdata;
  30.452 -struct change_member *change_point[2*E820MAX] __initdata;
  30.453 -struct e820entry *overlap_list[E820MAX] __initdata;
  30.454 -struct e820entry new_bios[E820MAX] __initdata;
  30.455 -
  30.456 -static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
  30.457 -{
  30.458 -	struct change_member *change_tmp;
  30.459 -	unsigned long current_type, last_type;
  30.460 -	unsigned long long last_addr;
  30.461 -	int chgidx, still_changing;
  30.462 -	int overlap_entries;
  30.463 -	int new_bios_entry;
  30.464 -	int old_nr, new_nr, chg_nr;
  30.465 -	int i;
  30.466 -
  30.467 -	/*
  30.468 -		Visually we're performing the following (1,2,3,4 = memory types)...
  30.469 -
  30.470 -		Sample memory map (w/overlaps):
  30.471 -		   ____22__________________
  30.472 -		   ______________________4_
  30.473 -		   ____1111________________
  30.474 -		   _44_____________________
  30.475 -		   11111111________________
  30.476 -		   ____________________33__
  30.477 -		   ___________44___________
  30.478 -		   __________33333_________
  30.479 -		   ______________22________
  30.480 -		   ___________________2222_
  30.481 -		   _________111111111______
  30.482 -		   _____________________11_
  30.483 -		   _________________4______
  30.484 -
  30.485 -		Sanitized equivalent (no overlap):
  30.486 -		   1_______________________
  30.487 -		   _44_____________________
  30.488 -		   ___1____________________
  30.489 -		   ____22__________________
  30.490 -		   ______11________________
  30.491 -		   _________1______________
  30.492 -		   __________3_____________
  30.493 -		   ___________44___________
  30.494 -		   _____________33_________
  30.495 -		   _______________2________
  30.496 -		   ________________1_______
  30.497 -		   _________________4______
  30.498 -		   ___________________2____
  30.499 -		   ____________________33__
  30.500 -		   ______________________4_
  30.501 -	*/
  30.502 -
  30.503 -	/* if there's only one memory region, don't bother */
  30.504 -	if (*pnr_map < 2)
  30.505 -		return -1;
  30.506 -
  30.507 -	old_nr = *pnr_map;
  30.508 -
  30.509 -	/* bail out if we find any unreasonable addresses in bios map */
  30.510 -	for (i=0; i<old_nr; i++)
  30.511 -		if (biosmap[i].addr + biosmap[i].size < biosmap[i].addr)
  30.512 -			return -1;
  30.513 -
  30.514 -	/* create pointers for initial change-point information (for sorting) */
  30.515 -	for (i=0; i < 2*old_nr; i++)
  30.516 -		change_point[i] = &change_point_list[i];
  30.517 -
  30.518 -	/* record all known change-points (starting and ending addresses),
  30.519 -	   omitting those that are for empty memory regions */
  30.520 -	chgidx = 0;
  30.521 -	for (i=0; i < old_nr; i++)	{
  30.522 -		if (biosmap[i].size != 0) {
  30.523 -			change_point[chgidx]->addr = biosmap[i].addr;
  30.524 -			change_point[chgidx++]->pbios = &biosmap[i];
  30.525 -			change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size;
  30.526 -			change_point[chgidx++]->pbios = &biosmap[i];
  30.527 -		}
  30.528 -	}
  30.529 -	chg_nr = chgidx;    	/* true number of change-points */
  30.530 -
  30.531 -	/* sort change-point list by memory addresses (low -> high) */
  30.532 -	still_changing = 1;
  30.533 -	while (still_changing)	{
  30.534 -		still_changing = 0;
  30.535 -		for (i=1; i < chg_nr; i++)  {
  30.536 -			/* if <current_addr> > <last_addr>, swap */
  30.537 -			/* or, if current=<start_addr> & last=<end_addr>, swap */
  30.538 -			if ((change_point[i]->addr < change_point[i-1]->addr) ||
  30.539 -				((change_point[i]->addr == change_point[i-1]->addr) &&
  30.540 -				 (change_point[i]->addr == change_point[i]->pbios->addr) &&
  30.541 -				 (change_point[i-1]->addr != change_point[i-1]->pbios->addr))
  30.542 -			   )
  30.543 -			{
  30.544 -				change_tmp = change_point[i];
  30.545 -				change_point[i] = change_point[i-1];
  30.546 -				change_point[i-1] = change_tmp;
  30.547 -				still_changing=1;
  30.548 -			}
  30.549 -		}
  30.550 -	}
  30.551 -
  30.552 -	/* create a new bios memory map, removing overlaps */
  30.553 -	overlap_entries=0;	 /* number of entries in the overlap table */
  30.554 -	new_bios_entry=0;	 /* index for creating new bios map entries */
  30.555 -	last_type = 0;		 /* start with undefined memory type */
  30.556 -	last_addr = 0;		 /* start with 0 as last starting address */
  30.557 -	/* loop through change-points, determining affect on the new bios map */
  30.558 -	for (chgidx=0; chgidx < chg_nr; chgidx++)
  30.559 -	{
  30.560 -		/* keep track of all overlapping bios entries */
  30.561 -		if (change_point[chgidx]->addr == change_point[chgidx]->pbios->addr)
  30.562 -		{
  30.563 -			/* add map entry to overlap list (> 1 entry implies an overlap) */
  30.564 -			overlap_list[overlap_entries++]=change_point[chgidx]->pbios;
  30.565 -		}
  30.566 -		else
  30.567 -		{
  30.568 -			/* remove entry from list (order independent, so swap with last) */
  30.569 -			for (i=0; i<overlap_entries; i++)
  30.570 -			{
  30.571 -				if (overlap_list[i] == change_point[chgidx]->pbios)
  30.572 -					overlap_list[i] = overlap_list[overlap_entries-1];
  30.573 -			}
  30.574 -			overlap_entries--;
  30.575 -		}
  30.576 -		/* if there are overlapping entries, decide which "type" to use */
  30.577 -		/* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */
  30.578 -		current_type = 0;
  30.579 -		for (i=0; i<overlap_entries; i++)
  30.580 -			if (overlap_list[i]->type > current_type)
  30.581 -				current_type = overlap_list[i]->type;
  30.582 -		/* continue building up new bios map based on this information */
  30.583 -		if (current_type != last_type)	{
  30.584 -			if (last_type != 0)	 {
  30.585 -				new_bios[new_bios_entry].size =
  30.586 -					change_point[chgidx]->addr - last_addr;
  30.587 -				/* move forward only if the new size was non-zero */
  30.588 -				if (new_bios[new_bios_entry].size != 0)
  30.589 -					if (++new_bios_entry >= E820MAX)
  30.590 -						break; 	/* no more space left for new bios entries */
  30.591 -			}
  30.592 -			if (current_type != 0)	{
  30.593 -				new_bios[new_bios_entry].addr = change_point[chgidx]->addr;
  30.594 -				new_bios[new_bios_entry].type = current_type;
  30.595 -				last_addr=change_point[chgidx]->addr;
  30.596 -			}
  30.597 -			last_type = current_type;
  30.598 -		}
  30.599 -	}
  30.600 -	new_nr = new_bios_entry;   /* retain count for new bios entries */
  30.601 -
  30.602 -	/* copy new bios mapping into original location */
  30.603 -	memcpy(biosmap, new_bios, new_nr*sizeof(struct e820entry));
  30.604 -	*pnr_map = new_nr;
  30.605 -
  30.606 -	return 0;
  30.607 -}
  30.608 -
  30.609 -/*
  30.610 - * Copy the BIOS e820 map into a safe place.
  30.611 - *
  30.612 - * Sanity-check it while we're at it..
  30.613 - *
  30.614 - * If we're lucky and live on a modern system, the setup code
  30.615 - * will have given us a memory map that we can use to properly
  30.616 - * set up memory.  If we aren't, we'll fake a memory map.
  30.617 - *
  30.618 - * We check to see that the memory map contains at least 2 elements
  30.619 - * before we'll use it, because the detection code in setup.S may
  30.620 - * not be perfect and most every PC known to man has two memory
  30.621 - * regions: one from 0 to 640k, and one from 1mb up.  (The IBM
  30.622 - * thinkpad 560x, for example, does not cooperate with the memory
  30.623 - * detection code.)
  30.624 - */
  30.625 -static int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
  30.626 -{
  30.627 -	/* Only one memory region (or negative)? Ignore it */
  30.628 -	if (nr_map < 2)
  30.629 -		return -1;
  30.630 -
  30.631 -	do {
  30.632 -		unsigned long long start = biosmap->addr;
  30.633 -		unsigned long long size = biosmap->size;
  30.634 -		unsigned long long end = start + size;
  30.635 -		unsigned long type = biosmap->type;
  30.636 -
  30.637 -		/* Overflow in 64 bits? Ignore the memory map. */
  30.638 -		if (start > end)
  30.639 -			return -1;
  30.640 -
  30.641 -		/*
  30.642 -		 * Some BIOSes claim RAM in the 640k - 1M region.
  30.643 -		 * Not right. Fix it up.
  30.644 -		 */
  30.645 -		if (type == E820_RAM) {
  30.646 -			if (start < 0x100000ULL && end > 0xA0000ULL) {
  30.647 -				if (start < 0xA0000ULL)
  30.648 -					add_memory_region(start, 0xA0000ULL-start, type);
  30.649 -				if (end <= 0x100000ULL)
  30.650 -					continue;
  30.651 -				start = 0x100000ULL;
  30.652 -				size = end - start;
  30.653 -			}
  30.654 -		}
  30.655 -		add_memory_region(start, size, type);
  30.656 -	} while (biosmap++,--nr_map);
  30.657 -	return 0;
  30.658 -}
  30.659 -#endif
  30.660 -
  30.661 -#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
  30.662 -struct edd edd;
  30.663 -#ifdef CONFIG_EDD_MODULE
  30.664 -EXPORT_SYMBOL(edd);
  30.665 -#endif
  30.666 -/**
  30.667 - * copy_edd() - Copy the BIOS EDD information
  30.668 - *              from boot_params into a safe place.
  30.669 - *
  30.670 - */
  30.671 -static inline void copy_edd(void)
  30.672 -{
  30.673 -     memcpy(edd.mbr_signature, EDD_MBR_SIGNATURE, sizeof(edd.mbr_signature));
  30.674 -     memcpy(edd.edd_info, EDD_BUF, sizeof(edd.edd_info));
  30.675 -     edd.mbr_signature_nr = EDD_MBR_SIG_NR;
  30.676 -     edd.edd_info_nr = EDD_NR;
  30.677 -}
  30.678 -#else
  30.679 -static inline void copy_edd(void)
  30.680 -{
  30.681 -}
  30.682 -#endif
  30.683 -
  30.684 -/*
  30.685 - * Do NOT EVER look at the BIOS memory size location.
  30.686 - * It does not work on many machines.
  30.687 - */
  30.688 -#define LOWMEMSIZE()	(0x9f000)
  30.689 -
  30.690 -static void __init parse_cmdline_early (char ** cmdline_p)
  30.691 -{
  30.692 -	char c = ' ', *to = command_line, *from = saved_command_line;
  30.693 -	int len = 0;
  30.694 -	int userdef = 0;
  30.695 -
  30.696 -	memcpy(saved_command_line, xen_start_info.cmd_line, MAX_CMDLINE);
  30.697 -	/* Save unparsed command line copy for /proc/cmdline */
  30.698 -	saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
  30.699 -
  30.700 -	for (;;) {
  30.701 -		/*
  30.702 -		 * "mem=nopentium" disables the 4MB page tables.
  30.703 -		 * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM
  30.704 -		 * to <mem>, overriding the bios size.
  30.705 -		 * "memmap=XXX[KkmM]@XXX[KkmM]" defines a memory region from
  30.706 -		 * <start> to <start>+<mem>, overriding the bios size.
  30.707 -		 *
  30.708 -		 * HPA tells me bootloaders need to parse mem=, so no new
  30.709 -		 * option should be mem=  [also see Documentation/i386/boot.txt]
  30.710 -		 */
  30.711 -		if (c == ' ' && !memcmp(from, "mem=", 4)) {
  30.712 -			if (to != command_line)
  30.713 -				to--;
  30.714 -			if (!memcmp(from+4, "nopentium", 9)) {
  30.715 -				from += 9+4;
  30.716 -				clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability);
  30.717 -				disable_pse = 1;
  30.718 -			} else {
  30.719 -				/* If the user specifies memory size, we
  30.720 -				 * limit the BIOS-provided memory map to
  30.721 -				 * that size. exactmap can be used to specify
  30.722 -				 * the exact map. mem=number can be used to
  30.723 -				 * trim the existing memory map.
  30.724 -				 */
  30.725 -				unsigned long long mem_size;
  30.726 - 
  30.727 -				mem_size = memparse(from+4, &from);
  30.728 -#if 0
  30.729 -				limit_regions(mem_size);
  30.730 -				userdef=1;
  30.731 -#else
  30.732 -				xen_override_max_pfn =
  30.733 -					(unsigned long)(mem_size>>PAGE_SHIFT);
  30.734 -#endif
  30.735 -			}
  30.736 -		}
  30.737 -
  30.738 -		if (c == ' ' && !memcmp(from, "memmap=", 7)) {
  30.739 -			if (to != command_line)
  30.740 -				to--;
  30.741 -			if (!memcmp(from+7, "exactmap", 8)) {
  30.742 -				from += 8+7;
  30.743 -				e820.nr_map = 0;
  30.744 -				userdef = 1;
  30.745 -			} else {
  30.746 -				/* If the user specifies memory size, we
  30.747 -				 * limit the BIOS-provided memory map to
  30.748 -				 * that size. exactmap can be used to specify
  30.749 -				 * the exact map. mem=number can be used to
  30.750 -				 * trim the existing memory map.
  30.751 -				 */
  30.752 -				unsigned long long start_at, mem_size;
  30.753 - 
  30.754 -				mem_size = memparse(from+7, &from);
  30.755 -				if (*from == '@') {
  30.756 -					start_at = memparse(from+1, &from);
  30.757 -					add_memory_region(start_at, mem_size, E820_RAM);
  30.758 -				} else if (*from == '#') {
  30.759 -					start_at = memparse(from+1, &from);
  30.760 -					add_memory_region(start_at, mem_size, E820_ACPI);
  30.761 -				} else if (*from == '$') {
  30.762 -					start_at = memparse(from+1, &from);
  30.763 -					add_memory_region(start_at, mem_size, E820_RESERVED);
  30.764 -				} else {
  30.765 -					limit_regions(mem_size);
  30.766 -					userdef=1;
  30.767 -				}
  30.768 -			}
  30.769 -		}
  30.770 -
  30.771 -#ifdef  CONFIG_X86_SMP
  30.772 -		/*
  30.773 -		 * If the BIOS enumerates physical processors before logical,
  30.774 -		 * maxcpus=N at enumeration-time can be used to disable HT.
  30.775 -		 */
  30.776 -		else if (!memcmp(from, "maxcpus=", 8)) {
  30.777 -			extern unsigned int maxcpus;
  30.778 -
  30.779 -			maxcpus = simple_strtoul(from + 8, NULL, 0);
  30.780 -		}
  30.781 -#endif
  30.782 -
  30.783 -#ifdef CONFIG_ACPI_BOOT
  30.784 -		/* "acpi=off" disables both ACPI table parsing and interpreter */
  30.785 -		else if (!memcmp(from, "acpi=off", 8)) {
  30.786 -			disable_acpi();
  30.787 -		}
  30.788 -
  30.789 -		/* acpi=force to over-ride black-list */
  30.790 -		else if (!memcmp(from, "acpi=force", 10)) {
  30.791 -			acpi_force = 1;
  30.792 -			acpi_ht = 1;
  30.793 -			acpi_disabled = 0;
  30.794 -		}
  30.795 -
  30.796 -		/* acpi=strict disables out-of-spec workarounds */
  30.797 -		else if (!memcmp(from, "acpi=strict", 11)) {
  30.798 -			acpi_strict = 1;
  30.799 -		}
  30.800 -
  30.801 -		/* Limit ACPI just to boot-time to enable HT */
  30.802 -		else if (!memcmp(from, "acpi=ht", 7)) {
  30.803 -			if (!acpi_force)
  30.804 -				disable_acpi();
  30.805 -			acpi_ht = 1;
  30.806 -		}
  30.807 -		
  30.808 -		/* "pci=noacpi" disable ACPI IRQ routing and PCI scan */
  30.809 -		else if (!memcmp(from, "pci=noacpi", 10)) {
  30.810 -			acpi_disable_pci();
  30.811 -		}
  30.812 -		/* "acpi=noirq" disables ACPI interrupt routing */
  30.813 -		else if (!memcmp(from, "acpi=noirq", 10)) {
  30.814 -			acpi_noirq_set();
  30.815 -		}
  30.816 -
  30.817 -		else if (!memcmp(from, "acpi_sci=edge", 13))
  30.818 -			acpi_sci_flags.trigger =  1;
  30.819 -
  30.820 -		else if (!memcmp(from, "acpi_sci=level", 14))
  30.821 -			acpi_sci_flags.trigger = 3;
  30.822 -
  30.823 -		else if (!memcmp(from, "acpi_sci=high", 13))
  30.824 -			acpi_sci_flags.polarity = 1;
  30.825 -
  30.826 -		else if (!memcmp(from, "acpi_sci=low", 12))
  30.827 -			acpi_sci_flags.polarity = 3;
  30.828 -
  30.829 -#ifdef CONFIG_X86_IO_APIC
  30.830 -		else if (!memcmp(from, "acpi_skip_timer_override", 24))
  30.831 -			acpi_skip_timer_override = 1;
  30.832 -#endif
  30.833 -
  30.834 -#ifdef CONFIG_X86_LOCAL_APIC
  30.835 -		/* disable IO-APIC */
  30.836 -		else if (!memcmp(from, "noapic", 6))
  30.837 -			disable_ioapic_setup();
  30.838 -#endif /* CONFIG_X86_LOCAL_APIC */
  30.839 -#endif /* CONFIG_ACPI_BOOT */
  30.840 -
  30.841 -		/*
  30.842 -		 * highmem=size forces highmem to be exactly 'size' bytes.
  30.843 -		 * This works even on boxes that have no highmem otherwise.
  30.844 -		 * This also works to reduce highmem size on bigger boxes.
  30.845 -		 */
  30.846 -		if (c == ' ' && !memcmp(from, "highmem=", 8))
  30.847 -			highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT;
  30.848 -	
  30.849 -		/*
  30.850 -		 * vmalloc=size forces the vmalloc area to be exactly 'size'
  30.851 -		 * bytes. This can be used to increase (or decrease) the
  30.852 -		 * vmalloc area - the default is 128m.
  30.853 -		 */
  30.854 -		if (c == ' ' && !memcmp(from, "vmalloc=", 8))
  30.855 -			__VMALLOC_RESERVE = memparse(from+8, &from);
  30.856 -
  30.857 -		c = *(from++);
  30.858 -		if (!c)
  30.859 -			break;
  30.860 -		if (COMMAND_LINE_SIZE <= ++len)
  30.861 -			break;
  30.862 -		*(to++) = c;
  30.863 -	}
  30.864 -	*to = '\0';
  30.865 -	*cmdline_p = command_line;
  30.866 -	if (userdef) {
  30.867 -		printk(KERN_INFO "user-defined physical RAM map:\n");
  30.868 -		print_memory_map("user");
  30.869 -	}
  30.870 -}
  30.871 -
  30.872 -#if 0 /* !XEN */
  30.873 -/*
  30.874 - * Callback for efi_memory_walk.
  30.875 - */
  30.876 -static int __init
  30.877 -efi_find_max_pfn(unsigned long start, unsigned long end, void *arg)
  30.878 -{
  30.879 -	unsigned long *max_pfn = arg, pfn;
  30.880 -
  30.881 -	if (start < end) {
  30.882 -		pfn = PFN_UP(end -1);
  30.883 -		if (pfn > *max_pfn)
  30.884 -			*max_pfn = pfn;
  30.885 -	}
  30.886 -	return 0;
  30.887 -}
  30.888 -
  30.889 -/*
  30.890 - * Find the highest page frame number we have available
  30.891 - */
  30.892 -void __init find_max_pfn(void)
  30.893 -{
  30.894 -	int i;
  30.895 -
  30.896 -	max_pfn = 0;
  30.897 -	if (efi_enabled) {
  30.898 -		efi_memmap_walk(efi_find_max_pfn, &max_pfn);
  30.899 -		return;
  30.900 -	}
  30.901 -
  30.902 -	for (i = 0; i < e820.nr_map; i++) {
  30.903 -		unsigned long start, end;
  30.904 -		/* RAM? */
  30.905 -		if (e820.map[i].type != E820_RAM)
  30.906 -			continue;
  30.907 -		start = PFN_UP(e820.map[i].addr);
  30.908 -		end = PFN_DOWN(e820.map[i].addr + e820.map[i].size);
  30.909 -		if (start >= end)
  30.910 -			continue;
  30.911 -		if (end > max_pfn)
  30.912 -			max_pfn = end;
  30.913 -	}
  30.914 -}
  30.915 -#else
  30.916 -/* We don't use the fake e820 because we need to respond to user override. */
  30.917 -void __init find_max_pfn(void)
  30.918 -{
  30.919 -	if ( xen_override_max_pfn < xen_start_info.nr_pages )
  30.920 -		xen_override_max_pfn = xen_start_info.nr_pages;
  30.921 -	max_pfn = xen_override_max_pfn;
  30.922 -}
  30.923 -#endif /* XEN */
  30.924 -
  30.925 -/*
  30.926 - * Determine low and high memory ranges:
  30.927 - */
  30.928 -unsigned long __init find_max_low_pfn(void)
  30.929 -{
  30.930 -	unsigned long max_low_pfn;
  30.931 -
  30.932 -	max_low_pfn = max_pfn;
  30.933 -	if (max_low_pfn > MAXMEM_PFN) {
  30.934 -		if (highmem_pages == -1)
  30.935 -			highmem_pages = max_pfn - MAXMEM_PFN;
  30.936 -		if (highmem_pages + MAXMEM_PFN < max_pfn)
  30.937 -			max_pfn = MAXMEM_PFN + highmem_pages;
  30.938 -		if (highmem_pages + MAXMEM_PFN > max_pfn) {
  30.939 -			printk("only %luMB highmem pages available, ignoring highmem size of %uMB.\n", pages_to_mb(max_pfn - MAXMEM_PFN), pages_to_mb(highmem_pages));
  30.940 -			highmem_pages = 0;
  30.941 -		}
  30.942 -		max_low_pfn = MAXMEM_PFN;
  30.943 -#ifndef CONFIG_HIGHMEM
  30.944 -		/* Maximum memory usable is what is directly addressable */
  30.945 -		printk(KERN_WARNING "Warning only %ldMB will be used.\n",
  30.946 -					MAXMEM>>20);
  30.947 -		if (max_pfn > MAX_NONPAE_PFN)
  30.948 -			printk(KERN_WARNING "Use a PAE enabled kernel.\n");
  30.949 -		else
  30.950 -			printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n");
  30.951 -		max_pfn = MAXMEM_PFN;
  30.952 -#else /* !CONFIG_HIGHMEM */
  30.953 -#ifndef CONFIG_X86_PAE
  30.954 -		if (max_pfn > MAX_NONPAE_PFN) {
  30.955 -			max_pfn = MAX_NONPAE_PFN;
  30.956 -			printk(KERN_WARNING "Warning only 4GB will be used.\n");
  30.957 -			printk(KERN_WARNING "Use a PAE enabled kernel.\n");
  30.958 -		}
  30.959 -#endif /* !CONFIG_X86_PAE */
  30.960 -#endif /* !CONFIG_HIGHMEM */
  30.961 -	} else {
  30.962 -		if (highmem_pages == -1)
  30.963 -			highmem_pages = 0;
  30.964 -#ifdef CONFIG_HIGHMEM
  30.965 -		if (highmem_pages >= max_pfn) {
  30.966 -			printk(KERN_ERR "highmem size specified (%uMB) is bigger than pages available (%luMB)!.\n", pages_to_mb(highmem_pages), pages_to_mb(max_pfn));
  30.967 -			highmem_pages = 0;
  30.968 -		}
  30.969 -		if (highmem_pages) {
  30.970 -			if (max_low_pfn-highmem_pages < 64*1024*1024/PAGE_SIZE){
  30.971 -				printk(KERN_ERR "highmem size %uMB results in smaller than 64MB lowmem, ignoring it.\n", pages_to_mb(highmem_pages));
  30.972 -				highmem_pages = 0;
  30.973 -			}
  30.974 -			max_low_pfn -= highmem_pages;
  30.975 -		}
  30.976 -#else
  30.977 -		if (highmem_pages)
  30.978 -			printk(KERN_ERR "ignoring highmem size on non-highmem kernel!\n");
  30.979 -#endif
  30.980 -	}
  30.981 -	return max_low_pfn;
  30.982 -}
  30.983 -
  30.984 -#ifndef CONFIG_DISCONTIGMEM
  30.985 -
  30.986 -/*
  30.987 - * Free all available memory for boot time allocation.  Used
  30.988 - * as a callback function by efi_memory_walk()
  30.989 - */
  30.990 -
  30.991 -static int __init
  30.992 -free_available_memory(unsigned long start, unsigned long end, void *arg)
  30.993 -{
  30.994 -	/* check max_low_pfn */
  30.995 -	if (start >= ((max_low_pfn + 1) << PAGE_SHIFT))
  30.996 -		return 0;
  30.997 -	if (end >= ((max_low_pfn + 1) << PAGE_SHIFT))
  30.998 -		end = (max_low_pfn + 1) << PAGE_SHIFT;
  30.999 -	if (start < end)
 30.1000 -		free_bootmem(start, end - start);
 30.1001 -
 30.1002 -	return 0;
 30.1003 -}
 30.1004 -/*
 30.1005 - * Register fully available low RAM pages with the bootmem allocator.
 30.1006 - */
 30.1007 -static void __init register_bootmem_low_pages(unsigned long max_low_pfn)
 30.1008 -{
 30.1009 -	int i;
 30.1010 -
 30.1011 -	if (efi_enabled) {
 30.1012 -		efi_memmap_walk(free_available_memory, NULL);
 30.1013 -		return;
 30.1014 -	}
 30.1015 -	for (i = 0; i < e820.nr_map; i++) {
 30.1016 -		unsigned long curr_pfn, last_pfn, size;
 30.1017 -		/*
 30.1018 -		 * Reserve usable low memory
 30.1019 -		 */
 30.1020 -		if (e820.map[i].type != E820_RAM)
 30.1021 -			continue;
 30.1022 -		/*
 30.1023 -		 * We are rounding up the start address of usable memory:
 30.1024 -		 */
 30.1025 -		curr_pfn = PFN_UP(e820.map[i].addr);
 30.1026 -		if (curr_pfn >= max_low_pfn)
 30.1027 -			continue;
 30.1028 -		/*
 30.1029 -		 * ... and at the end of the usable range downwards:
 30.1030 -		 */
 30.1031 -		last_pfn = PFN_DOWN(e820.map[i].addr + e820.map[i].size);
 30.1032 -
 30.1033 -		if (last_pfn > max_low_pfn)
 30.1034 -			last_pfn = max_low_pfn;
 30.1035 -
 30.1036 -		/*
 30.1037 -		 * .. finally, did all the rounding and playing
 30.1038 -		 * around just make the area go away?
 30.1039 -		 */
 30.1040 -		if (last_pfn <= curr_pfn)
 30.1041 -			continue;
 30.1042 -
 30.1043 -		size = last_pfn - curr_pfn;
 30.1044 -		free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size));
 30.1045 -	}
 30.1046 -}
 30.1047 -
 30.1048 -/*
 30.1049 - * workaround for Dell systems that neglect to reserve EBDA
 30.1050 - */
 30.1051 -static void __init reserve_ebda_region(void)
 30.1052 -{
 30.1053 -	unsigned int addr;
 30.1054 -	addr = get_bios_ebda();
 30.1055 -	if (addr)
 30.1056 -		reserve_bootmem(addr, PAGE_SIZE);	
 30.1057 -}
 30.1058 -
 30.1059 -static unsigned long __init setup_memory(void)
 30.1060 -{
 30.1061 -	unsigned long bootmap_size, start_pfn, max_low_pfn;
 30.1062 -
 30.1063 -	/*
 30.1064 -	 * partially used pages are not usable - thus
 30.1065 -	 * we are rounding upwards:
 30.1066 -	 */
 30.1067 -	start_pfn = PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames;
 30.1068 -
 30.1069 -	find_max_pfn();
 30.1070 -
 30.1071 -	max_low_pfn = find_max_low_pfn();
 30.1072 -
 30.1073 -#ifdef CONFIG_HIGHMEM
 30.1074 -	highstart_pfn = highend_pfn = max_pfn;
 30.1075 -	if (max_pfn > max_low_pfn) {
 30.1076 -		highstart_pfn = max_low_pfn;
 30.1077 -	}
 30.1078 -	printk(KERN_NOTICE "%ldMB HIGHMEM available.\n",
 30.1079 -		pages_to_mb(highend_pfn - highstart_pfn));
 30.1080 -#endif
 30.1081 -	printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
 30.1082 -			pages_to_mb(max_low_pfn));
 30.1083 -	/*
 30.1084 -	 * Initialize the boot-time allocator (with low memory only):
 30.1085 -	 */
 30.1086 -	bootmap_size = init_bootmem(start_pfn, max_low_pfn);
 30.1087 -
 30.1088 -	register_bootmem_low_pages(max_low_pfn);
 30.1089 -
 30.1090 -	/*
 30.1091 -	 * Reserve the bootmem bitmap itself as well. We do this in two
 30.1092 -	 * steps (first step was init_bootmem()) because this catches
 30.1093 -	 * the (very unlikely) case of us accidentally initializing the
 30.1094 -	 * bootmem allocator with an invalid RAM area.
 30.1095 -	 */
 30.1096 -	reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(start_pfn) +
 30.1097 -			 bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY));
 30.1098 -
 30.1099 -	/* reserve EBDA region, it's a 4K region */
 30.1100 -	reserve_ebda_region();
 30.1101 -
 30.1102 -    /* could be an AMD 768MPX chipset. Reserve a page  before VGA to prevent
 30.1103 -       PCI prefetch into it (errata #56). Usually the page is reserved anyways,
 30.1104 -       unless you have no PS/2 mouse plugged in. */
 30.1105 -	if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
 30.1106 -	    boot_cpu_data.x86 == 6)
 30.1107 -	     reserve_bootmem(0xa0000 - 4096, 4096);
 30.1108 -
 30.1109 -#ifdef CONFIG_SMP
 30.1110 -	/*
 30.1111 -	 * But first pinch a few for the stack/trampoline stuff
 30.1112 -	 * FIXME: Don't need the extra page at 4K, but need to fix
 30.1113 -	 * trampoline before removing it. (see the GDT stuff)
 30.1114 -	 */
 30.1115 -	reserve_bootmem(PAGE_SIZE, PAGE_SIZE);
 30.1116 -#endif
 30.1117 -#ifdef CONFIG_ACPI_SLEEP
 30.1118 -	/*
 30.1119 -	 * Reserve low memory region for sleep support.
 30.1120 -	 */
 30.1121 -	acpi_reserve_bootmem();
 30.1122 -#endif
 30.1123 -#ifdef CONFIG_X86_FIND_SMP_CONFIG
 30.1124 -	/*
 30.1125 -	 * Find and reserve possible boot-time SMP configuration:
 30.1126 -	 */
 30.1127 -	find_smp_config();
 30.1128 -#endif
 30.1129 -
 30.1130 -#ifdef CONFIG_BLK_DEV_INITRD
 30.1131 -	if (xen_start_info.mod_start) {
 30.1132 -		if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
 30.1133 -			/*reserve_bootmem(INITRD_START, INITRD_SIZE);*/
 30.1134 -			initrd_start = INITRD_START + PAGE_OFFSET;
 30.1135 -			initrd_end = initrd_start+INITRD_SIZE;
 30.1136 -			initrd_below_start_ok = 1;
 30.1137 -		}
 30.1138 -		else {
 30.1139 -			printk(KERN_ERR "initrd extends beyond end of memory "
 30.1140 -			    "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
 30.1141 -			    INITRD_START + INITRD_SIZE,
 30.1142 -			    max_low_pfn << PAGE_SHIFT);
 30.1143 -			initrd_start = 0;
 30.1144 -		}
 30.1145 -	}
 30.1146 -#endif
 30.1147 -
 30.1148 -	phys_to_machine_mapping = (unsigned int *)xen_start_info.mfn_list;
 30.1149 -
 30.1150 -	return max_low_pfn;
 30.1151 -}
 30.1152 -#else
 30.1153 -extern unsigned long setup_memory(void);
 30.1154 -#endif /* !CONFIG_DISCONTIGMEM */
 30.1155 -
 30.1156 -/*
 30.1157 - * Request address space for all standard RAM and ROM resources
 30.1158 - * and also for regions reported as reserved by the e820.
 30.1159 - */
 30.1160 -static void __init
 30.1161 -legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource)
 30.1162 -{
 30.1163 -	int i;
 30.1164 -
 30.1165 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST
 30.1166 -	probe_roms();
 30.1167 -#endif
 30.1168 -	for (i = 0; i < e820.nr_map; i++) {
 30.1169 -		struct resource *res;
 30.1170 -		if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL)
 30.1171 -			continue;
 30.1172 -		res = alloc_bootmem_low(sizeof(struct resource));
 30.1173 -		switch (e820.map[i].type) {
 30.1174 -		case E820_RAM:	res->name = "System RAM"; break;
 30.1175 -		case E820_ACPI:	res->name = "ACPI Tables"; break;
 30.1176 -		case E820_NVS:	res->name = "ACPI Non-volatile Storage"; break;
 30.1177 -		default:	res->name = "reserved";
 30.1178 -		}
 30.1179 -		res->start = e820.map[i].addr;
 30.1180 -		res->end = res->start + e820.map[i].size - 1;
 30.1181 -		res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
 30.1182 -		request_resource(&iomem_resource, res);
 30.1183 -		if (e820.map[i].type == E820_RAM) {
 30.1184 -			/*
 30.1185 -			 *  We don't know which RAM region contains kernel data,
 30.1186 -			 *  so we try it repeatedly and let the resource manager
 30.1187 -			 *  test it.
 30.1188 -			 */
 30.1189 -			request_resource(res, code_resource);
 30.1190 -			request_resource(res, data_resource);
 30.1191 -		}
 30.1192 -	}
 30.1193 -}
 30.1194 -
 30.1195 -/*
 30.1196 - * Request address space for all standard resources
 30.1197 - */
 30.1198 -static void __init register_memory(unsigned long max_low_pfn)
 30.1199 -{
 30.1200 -	unsigned long low_mem_size;
 30.1201 -	int	      i;
 30.1202 -
 30.1203 -	if (efi_enabled)
 30.1204 -		efi_initialize_iomem_resources(&code_resource, &data_resource);
 30.1205 -	else
 30.1206 -		legacy_init_iomem_resources(&code_resource, &data_resource);
 30.1207 -
 30.1208 -	/* EFI systems may still have VGA */
 30.1209 -	request_resource(&iomem_resource, &video_ram_resource);
 30.1210 -
 30.1211 -	/* request I/O space for devices used on all i[345]86 PCs */
 30.1212 -	for (i = 0; i < STANDARD_IO_RESOURCES; i++)
 30.1213 -		request_resource(&ioport_resource, &standard_io_resources[i]);
 30.1214 -
 30.1215 -	/* Tell the PCI layer not to allocate too close to the RAM area.. */
 30.1216 -	low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff;
 30.1217 -	if (low_mem_size > pci_mem_start)
 30.1218 -		pci_mem_start = low_mem_size;
 30.1219 -}
 30.1220 -
 30.1221 -/* Use inline assembly to define this because the nops are defined 
 30.1222 -   as inline assembly strings in the include files and we cannot 
 30.1223 -   get them easily into strings. */
 30.1224 -asm("\t.data\nintelnops: " 
 30.1225 -    GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6
 30.1226 -    GENERIC_NOP7 GENERIC_NOP8); 
 30.1227 -asm("\t.data\nk8nops: " 
 30.1228 -    K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6
 30.1229 -    K8_NOP7 K8_NOP8); 
 30.1230 -asm("\t.data\nk7nops: " 
 30.1231 -    K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6
 30.1232 -    K7_NOP7 K7_NOP8); 
 30.1233 -    
 30.1234 -extern unsigned char intelnops[], k8nops[], k7nops[];
 30.1235 -static unsigned char *intel_nops[ASM_NOP_MAX+1] = { 
 30.1236 -     NULL,
 30.1237 -     intelnops,
 30.1238 -     intelnops + 1,
 30.1239 -     intelnops + 1 + 2,
 30.1240 -     intelnops + 1 + 2 + 3,
 30.1241 -     intelnops + 1 + 2 + 3 + 4,
 30.1242 -     intelnops + 1 + 2 + 3 + 4 + 5,
 30.1243 -     intelnops + 1 + 2 + 3 + 4 + 5 + 6,
 30.1244 -     intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
 30.1245 -}; 
 30.1246 -static unsigned char *k8_nops[ASM_NOP_MAX+1] = { 
 30.1247 -     NULL,
 30.1248 -     k8nops,
 30.1249 -     k8nops + 1,
 30.1250 -     k8nops + 1 + 2,
 30.1251 -     k8nops + 1 + 2 + 3,
 30.1252 -     k8nops + 1 + 2 + 3 + 4,
 30.1253 -     k8nops + 1 + 2 + 3 + 4 + 5,
 30.1254 -     k8nops + 1 + 2 + 3 + 4 + 5 + 6,
 30.1255 -     k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
 30.1256 -}; 
 30.1257 -static unsigned char *k7_nops[ASM_NOP_MAX+1] = { 
 30.1258 -     NULL,
 30.1259 -     k7nops,
 30.1260 -     k7nops + 1,
 30.1261 -     k7nops + 1 + 2,
 30.1262 -     k7nops + 1 + 2 + 3,
 30.1263 -     k7nops + 1 + 2 + 3 + 4,
 30.1264 -     k7nops + 1 + 2 + 3 + 4 + 5,
 30.1265 -     k7nops + 1 + 2 + 3 + 4 + 5 + 6,
 30.1266 -     k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7,
 30.1267 -}; 
 30.1268 -static struct nop { 
 30.1269 -     int cpuid; 
 30.1270 -     unsigned char **noptable; 
 30.1271 -} noptypes[] = { 
 30.1272 -     { X86_FEATURE_K8, k8_nops }, 
 30.1273 -     { X86_FEATURE_K7, k7_nops }, 
 30.1274 -     { -1, NULL }
 30.1275 -}; 
 30.1276 -
 30.1277 -/* Replace instructions with better alternatives for this CPU type.
 30.1278 -
 30.1279 -   This runs before SMP is initialized to avoid SMP problems with
 30.1280 -   self modifying code. This implies that assymetric systems where
 30.1281 -   APs have less capabilities than the boot processor are not handled. 
 30.1282 -   In this case boot with "noreplacement". */ 
 30.1283 -void apply_alternatives(void *start, void *end) 
 30.1284 -{ 
 30.1285 -	struct alt_instr *a; 
 30.1286 -	int diff, i, k;
 30.1287 -        unsigned char **noptable = intel_nops; 
 30.1288 -	for (i = 0; noptypes[i].cpuid >= 0; i++) { 
 30.1289 -		if (boot_cpu_has(noptypes[i].cpuid)) { 
 30.1290 -			noptable = noptypes[i].noptable;
 30.1291 -			break;
 30.1292 -		}
 30.1293 -	} 
 30.1294 -	for (a = start; (void *)a < end; a++) { 
 30.1295 -		if (!boot_cpu_has(a->cpuid))
 30.1296 -			continue;
 30.1297 -		BUG_ON(a->replacementlen > a->instrlen); 
 30.1298 -		memcpy(a->instr, a->replacement, a->replacementlen); 
 30.1299 -		diff = a->instrlen - a->replacementlen; 
 30.1300 -		/* Pad the rest with nops */
 30.1301 -		for (i = a->replacementlen; diff > 0; diff -= k, i += k) {
 30.1302 -			k = diff;
 30.1303 -			if (k > ASM_NOP_MAX)
 30.1304 -				k = ASM_NOP_MAX;
 30.1305 -			memcpy(a->instr + i, noptable[k], k); 
 30.1306 -		} 
 30.1307 -	}
 30.1308 -} 
 30.1309 -
 30.1310 -static int no_replacement __initdata = 0; 
 30.1311 - 
 30.1312 -void __init alternative_instructions(void)
 30.1313 -{
 30.1314 -	extern struct alt_instr __alt_instructions[], __alt_instructions_end[];
 30.1315 -	if (no_replacement) 
 30.1316 -		return;
 30.1317 -	apply_alternatives(__alt_instructions, __alt_instructions_end);
 30.1318 -}
 30.1319 -
 30.1320 -static int __init noreplacement_setup(char *s)
 30.1321 -{ 
 30.1322 -     no_replacement = 1; 
 30.1323 -     return 0; 
 30.1324 -} 
 30.1325 -
 30.1326 -__setup("noreplacement", noreplacement_setup); 
 30.1327 -
 30.1328 -static char * __init machine_specific_memory_setup(void);
 30.1329 -
 30.1330 -/*
 30.1331 - * Determine if we were loaded by an EFI loader.  If so, then we have also been
 30.1332 - * passed the efi memmap, systab, etc., so we should use these data structures
 30.1333 - * for initialization.  Note, the efi init code path is determined by the
 30.1334 - * global efi_enabled. This allows the same kernel image to be used on existing
 30.1335 - * systems (with a traditional BIOS) as well as on EFI systems.
 30.1336 - */
 30.1337 -void __init setup_arch(char **cmdline_p)
 30.1338 -{
 30.1339 -        int i,j;
 30.1340 -
 30.1341 -        unsigned long max_low_pfn;
 30.1342 -
 30.1343 -	/* Force a quick death if the kernel panics. */
 30.1344 -	extern int panic_timeout;
 30.1345 -	if ( panic_timeout == 0 )
 30.1346 -		panic_timeout = 1;
 30.1347 -
 30.1348 -	HYPERVISOR_vm_assist(VMASST_CMD_enable,
 30.1349 -			     VMASST_TYPE_4gb_segments);
 30.1350 -
 30.1351 -	memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));
 30.1352 -	early_cpu_init();
 30.1353 -
 30.1354 -	/*
 30.1355 -	 * FIXME: This isn't an official loader_type right
 30.1356 -	 * now but does currently work with elilo.
 30.1357 -	 * If we were configured as an EFI kernel, check to make
 30.1358 -	 * sure that we were loaded correctly from elilo and that
 30.1359 -	 * the system table is valid.  If not, then initialize normally.
 30.1360 -	 */
 30.1361 -#ifdef CONFIG_EFI
 30.1362 -	if ((LOADER_TYPE == 0x50) && EFI_SYSTAB)
 30.1363 -		efi_enabled = 1;
 30.1364 -#endif
 30.1365 -
 30.1366 -	/* This must be initialized to UNNAMED_MAJOR for ipconfig to work
 30.1367 -	   properly.  Setting ROOT_DEV to default to /dev/ram0 breaks initrd.
 30.1368 -	*/
 30.1369 -	ROOT_DEV = MKDEV(UNNAMED_MAJOR,0);
 30.1370 - 	drive_info = DRIVE_INFO;
 30.1371 - 	screen_info = SCREEN_INFO;
 30.1372 -	edid_info = EDID_INFO;
 30.1373 -	apm_info.bios = APM_BIOS_INFO;
 30.1374 -	ist_info = IST_INFO;
 30.1375 -	saved_videomode = VIDEO_MODE;
 30.1376 -	if( SYS_DESC_TABLE.length != 0 ) {
 30.1377 -		MCA_bus = SYS_DESC_TABLE.table[3] &0x2;
 30.1378 -		machine_id = SYS_DESC_TABLE.table[0];
 30.1379 -		machine_submodel_id = SYS_DESC_TABLE.table[1];
 30.1380 -		BIOS_revision = SYS_DESC_TABLE.table[2];
 30.1381 -	}
 30.1382 -	aux_device_present = AUX_DEVICE_INFO;
 30.1383 -
 30.1384 -#ifdef CONFIG_XEN_PHYSDEV_ACCESS
 30.1385 -	/* This is drawn from a dump from vgacon:startup in standard Linux. */
 30.1386 -	screen_info.orig_video_mode = 3; 
 30.1387 -	screen_info.orig_video_isVGA = 1;
 30.1388 -	screen_info.orig_video_lines = 25;
 30.1389 -	screen_info.orig_video_cols = 80;
 30.1390 -	screen_info.orig_video_ega_bx = 3;
 30.1391 -	screen_info.orig_video_points = 16;
 30.1392 -#endif
 30.1393 -
 30.1394 -#ifdef CONFIG_BLK_DEV_RAM
 30.1395 -	rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;
 30.1396 -	rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0);
 30.1397 -	rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0);
 30.1398 -#endif
 30.1399 -	ARCH_SETUP
 30.1400 -	if (efi_enabled)
 30.1401 -		efi_init();
 30.1402 -	else {
 30.1403 -		printk(KERN_INFO "BIOS-provided physical RAM map:\n");
 30.1404 -		print_memory_map(machine_specific_memory_setup());
 30.1405 -	}
 30.1406 -
 30.1407 -	copy_edd();
 30.1408 -
 30.1409 -	if (!MOUNT_ROOT_RDONLY)
 30.1410 -		root_mountflags &= ~MS_RDONLY;
 30.1411 -	init_mm.start_code = (unsigned long) _text;
 30.1412 -	init_mm.end_code = (unsigned long) _etext;
 30.1413 -	init_mm.end_data = (unsigned long) _edata;
 30.1414 -	init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT;
 30.1415 -
 30.1416 -	/* XEN: This is nonsense: kernel may not even be contiguous in RAM. */
 30.1417 -	/*code_resource.start = virt_to_phys(_text);*/
 30.1418 -	/*code_resource.end = virt_to_phys(_etext)-1;*/
 30.1419 -	/*data_resource.start = virt_to_phys(_etext);*/
 30.1420 -	/*data_resource.end = virt_to_phys(_edata)-1;*/
 30.1421 -
 30.1422 -	parse_cmdline_early(cmdline_p);
 30.1423 -
 30.1424 -	max_low_pfn = setup_memory();
 30.1425 -
 30.1426 -	/*
 30.1427 -	 * NOTE: before this point _nobody_ is allowed to allocate
 30.1428 -	 * any memory using the bootmem allocator.  Although the
 30.1429 -	 * alloctor is now initialised only the first 8Mb of the kernel
 30.1430 -	 * virtual address space has been mapped.  All allocations before
 30.1431 -	 * paging_init() has completed must use the alloc_bootmem_low_pages()
 30.1432 -	 * variant (which allocates DMA'able memory) and care must be taken
 30.1433 -	 * not to exceed the 8Mb limit.
 30.1434 -	 */
 30.1435 -
 30.1436 -#ifdef CONFIG_SMP
 30.1437 -	smp_alloc_memory(); /* AP processor realmode stacks in low memory*/
 30.1438 -#endif
 30.1439 -	paging_init();
 30.1440 -
 30.1441 -	/* Make sure we have a large enough P->M table. */
 30.1442 -	if (max_pfn > xen_start_info.nr_pages) {
 30.1443 -		phys_to_machine_mapping = alloc_bootmem_low_pages(
 30.1444 -			max_pfn * sizeof(unsigned long));
 30.1445 -		memset(phys_to_machine_mapping, ~0,
 30.1446 -			max_pfn * sizeof(unsigned long));
 30.1447 -		memcpy(phys_to_machine_mapping,
 30.1448 -			(unsigned long *)xen_start_info.mfn_list,
 30.1449 -			xen_start_info.nr_pages * sizeof(unsigned long));
 30.1450 -		free_bootmem(
 30.1451 -			__pa(xen_start_info.mfn_list), 
 30.1452 -			PFN_PHYS(PFN_UP(xen_start_info.nr_pages *
 30.1453 -			sizeof(unsigned long))));
 30.1454 -	}
 30.1455 -
 30.1456 -	pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE);
 30.1457 -	for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ )
 30.1458 -	{	
 30.1459 -	     pfn_to_mfn_frame_list[j] = 
 30.1460 -		  virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT;
 30.1461 -	}
 30.1462 -	HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list =
 30.1463 -	     virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT;
 30.1464 -
 30.1465 -
 30.1466 -	/*
 30.1467 -	 * NOTE: at this point the bootmem allocator is fully available.
 30.1468 -	 */
 30.1469 -
 30.1470 -#ifdef CONFIG_EARLY_PRINTK
 30.1471 -	{
 30.1472 -		char *s = strstr(*cmdline_p, "earlyprintk=");
 30.1473 -		if (s) {
 30.1474 -			extern void setup_early_printk(char *);
 30.1475 -
 30.1476 -			setup_early_printk(s);
 30.1477 -			printk("early console enabled\n");
 30.1478 -		}
 30.1479 -	}
 30.1480 -#endif
 30.1481 -
 30.1482 -
 30.1483 -	dmi_scan_machine();
 30.1484 -
 30.1485 -#ifdef CONFIG_X86_GENERICARCH
 30.1486 -	generic_apic_probe(*cmdline_p);
 30.1487 -#endif	
 30.1488 -	if (efi_enabled)
 30.1489 -		efi_map_memmap();
 30.1490 -
 30.1491 -	/*
 30.1492 -	 * Parse the ACPI tables for possible boot-time SMP configuration.
 30.1493 -	 */
 30.1494 -	acpi_boot_init();
 30.1495 -
 30.1496 -#ifdef CONFIG_X86_LOCAL_APIC
 30.1497 -	if (smp_found_config)
 30.1498 -		get_smp_config();
 30.1499 -#endif
 30.1500 -
 30.1501 -	/* XXX Disable irqdebug until we have a way to avoid interrupt
 30.1502 -	 * conflicts. */
 30.1503 -	noirqdebug_setup("");
 30.1504 -
 30.1505 -	register_memory(max_low_pfn);
 30.1506 -
 30.1507 -	/* If we are a privileged guest OS then we should request IO privs. */
 30.1508 -	if (xen_start_info.flags & SIF_PRIVILEGED) {
 30.1509 -		dom0_op_t op;
 30.1510 -		op.cmd           = DOM0_IOPL;
 30.1511 -		op.u.iopl.domain = DOMID_SELF;
 30.1512 -		op.u.iopl.iopl   = 1;
 30.1513 -		if (HYPERVISOR_dom0_op(&op) != 0)
 30.1514 -			panic("Unable to obtain IOPL, despite SIF_PRIVILEGED");
 30.1515 -		current->thread.io_pl = 1;
 30.1516 -	}
 30.1517 -
 30.1518 -	if (xen_start_info.flags & SIF_INITDOMAIN) {
 30.1519 -		if (!(xen_start_info.flags & SIF_PRIVILEGED))
 30.1520 -			panic("Xen granted us console access "
 30.1521 -			      "but not privileged status");
 30.1522 -
 30.1523 -#ifdef CONFIG_VT
 30.1524 -#if defined(CONFIG_VGA_CONSOLE)
 30.1525 -		if (!efi_enabled ||
 30.1526 -		    (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY))
 30.1527 -			conswitchp = &vga_con;
 30.1528 -#elif defined(CONFIG_DUMMY_CONSOLE)
 30.1529 -		conswitchp = &dummy_con;
 30.1530 -#endif
 30.1531 -#endif
 30.1532 -	} else {
 30.1533 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST
 30.1534 -		extern const struct consw xennull_con;
 30.1535 -		extern int console_use_vt;
 30.1536 -#if defined(CONFIG_VGA_CONSOLE)
 30.1537 -		/* disable VGA driver */
 30.1538 -		ORIG_VIDEO_ISVGA = VIDEO_TYPE_VLFB;
 30.1539 -#endif
 30.1540 -		conswitchp = &xennull_con;
 30.1541 -		console_use_vt = 0;
 30.1542 -#endif
 30.1543 -	}
 30.1544 -}
 30.1545 -
 30.1546 -#include "setup_arch_post.h"
 30.1547 -/*
 30.1548 - * Local Variables:
 30.1549 - * mode:c
 30.1550 - * c-file-style:"k&r"
 30.1551 - * c-basic-offset:8
 30.1552 - * End:
 30.1553 - */
    31.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c	Thu Mar 10 22:09:19 2005 +0000
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,664 +0,0 @@
    31.4 -/*
    31.5 - *  linux/arch/i386/kernel/signal.c
    31.6 - *
    31.7 - *  Copyright (C) 1991, 1992  Linus Torvalds
    31.8 - *
    31.9 - *  1997-11-28  Modified for POSIX.1b signals by Richard Henderson
   31.10 - *  2000-06-20  Pentium III FXSR, SSE support by Gareth Hughes
   31.11 - */
   31.12 -
   31.13 -#include <linux/sched.h>
   31.14 -#include <linux/mm.h>
   31.15 -#include <linux/smp.h>
   31.16 -#include <linux/smp_lock.h>
   31.17 -#include <linux/kernel.h>
   31.18 -#include <linux/signal.h>
   31.19 -#include <linux/errno.h>
   31.20 -#include <linux/wait.h>
   31.21 -#include <linux/unistd.h>
   31.22 -#include <linux/stddef.h>
   31.23 -#include <linux/personality.h>
   31.24 -#include <linux/suspend.h>
   31.25 -#include <linux/ptrace.h>
   31.26 -#include <linux/elf.h>
   31.27 -#include <asm/processor.h>
   31.28 -#include <asm/ucontext.h>
   31.29 -#include <asm/uaccess.h>
   31.30 -#include <asm/i387.h>
   31.31 -#include "sigframe.h"
   31.32 -
   31.33 -#define DEBUG_SIG 0
   31.34 -
   31.35 -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
   31.36 -
   31.37 -/*
   31.38 - * Atomically swap in the new signal mask, and wait for a signal.
   31.39 - */
   31.40 -asmlinkage int
   31.41 -sys_sigsuspend(int history0, int history1, old_sigset_t mask)
   31.42 -{
   31.43 -	struct pt_regs * regs = (struct pt_regs *) &history0;
   31.44 -	sigset_t saveset;
   31.45 -
   31.46 -	mask &= _BLOCKABLE;
   31.47 -	spin_lock_irq(&current->sighand->siglock);
   31.48 -	saveset = current->blocked;
   31.49 -	siginitset(&current->blocked, mask);
   31.50 -	recalc_sigpending();
   31.51 -	spin_unlock_irq(&current->sighand->siglock);
   31.52 -
   31.53 -	regs->eax = -EINTR;
   31.54 -	while (1) {
   31.55 -		current->state = TASK_INTERRUPTIBLE;
   31.56 -		schedule();
   31.57 -		if (do_signal(regs, &saveset))
   31.58 -			return -EINTR;
   31.59 -	}
   31.60 -}
   31.61 -
   31.62 -asmlinkage int
   31.63 -sys_rt_sigsuspend(struct pt_regs regs)
   31.64 -{
   31.65 -	sigset_t saveset, newset;
   31.66 -
   31.67 -	/* XXX: Don't preclude handling different sized sigset_t's.  */
   31.68 -	if (regs.ecx != sizeof(sigset_t))
   31.69 -		return -EINVAL;
   31.70 -
   31.71 -	if (copy_from_user(&newset, (sigset_t __user *)regs.ebx, sizeof(newset)))
   31.72 -		return -EFAULT;
   31.73 -	sigdelsetmask(&newset, ~_BLOCKABLE);
   31.74 -
   31.75 -	spin_lock_irq(&current->sighand->siglock);
   31.76 -	saveset = current->blocked;
   31.77 -	current->blocked = newset;
   31.78 -	recalc_sigpending();
   31.79 -	spin_unlock_irq(&current->sighand->siglock);
   31.80 -
   31.81 -	regs.eax = -EINTR;
   31.82 -	while (1) {
   31.83 -		current->state = TASK_INTERRUPTIBLE;
   31.84 -		schedule();
   31.85 -		if (do_signal(&regs, &saveset))
   31.86 -			return -EINTR;
   31.87 -	}
   31.88 -}
   31.89 -
   31.90 -asmlinkage int 
   31.91 -sys_sigaction(int sig, const struct old_sigaction __user *act,
   31.92 -	      struct old_sigaction __user *oact)
   31.93 -{
   31.94 -	struct k_sigaction new_ka, old_ka;
   31.95 -	int ret;
   31.96 -
   31.97 -	if (act) {
   31.98 -		old_sigset_t mask;
   31.99 -		if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
  31.100 -		    __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
  31.101 -		    __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
  31.102 -			return -EFAULT;
  31.103 -		__get_user(new_ka.sa.sa_flags, &act->sa_flags);
  31.104 -		__get_user(mask, &act->sa_mask);
  31.105 -		siginitset(&new_ka.sa.sa_mask, mask);
  31.106 -	}
  31.107 -
  31.108 -	ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
  31.109 -
  31.110 -	if (!ret && oact) {
  31.111 -		if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) ||
  31.112 -		    __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
  31.113 -		    __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
  31.114 -			return -EFAULT;
  31.115 -		__put_user(old_ka.sa.sa_flags, &oact->sa_flags);
  31.116 -		__put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
  31.117 -	}
  31.118 -
  31.119 -	return ret;
  31.120 -}
  31.121 -
  31.122 -asmlinkage int
  31.123 -sys_sigaltstack(unsigned long ebx)
  31.124 -{
  31.125 -	/* This is needed to make gcc realize it doesn't own the "struct pt_regs" */
  31.126 -	struct pt_regs *regs = (struct pt_regs *)&ebx;
  31.127 -	const stack_t __user *uss = (const stack_t __user *)ebx;
  31.128 -	stack_t __user *uoss = (stack_t __user *)regs->ecx;
  31.129 -
  31.130 -	return do_sigaltstack(uss, uoss, regs->esp);
  31.131 -}
  31.132 -
  31.133 -
  31.134 -/*
  31.135 - * Do a signal return; undo the signal stack.
  31.136 - */
  31.137 -
  31.138 -static int
  31.139 -restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax)
  31.140 -{
  31.141 -	unsigned int err = 0;
  31.142 -
  31.143 -	/* Always make any pending restarted system calls return -EINTR */
  31.144 -	current_thread_info()->restart_block.fn = do_no_restart_syscall;
  31.145 -
  31.146 -#define COPY(x)		err |= __get_user(regs->x, &sc->x)
  31.147 -
  31.148 -#define COPY_SEG(seg)							\
  31.149 -	{ unsigned short tmp;						\
  31.150 -	  err |= __get_user(tmp, &sc->seg);				\
  31.151 -	  regs->x##seg = tmp; }
  31.152 -
  31.153 -#define COPY_SEG_STRICT(seg)						\
  31.154 -	{ unsigned short tmp;						\
  31.155 -	  err |= __get_user(tmp, &sc->seg);				\
  31.156 -	  regs->x##seg = tmp|3; }
  31.157 -
  31.158 -#define GET_SEG(seg)							\
  31.159 -	{ unsigned short tmp;						\
  31.160 -	  err |= __get_user(tmp, &sc->seg);				\
  31.161 -	  loadsegment(seg,tmp); }
  31.162 -
  31.163 -#define	FIX_EFLAGS	(X86_EFLAGS_AC | X86_EFLAGS_OF | X86_EFLAGS_DF | \
  31.164 -			 X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \
  31.165 -			 X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF)
  31.166 -
  31.167 -	GET_SEG(gs);
  31.168 -	GET_SEG(fs);
  31.169 -	COPY_SEG(es);
  31.170 -	COPY_SEG(ds);
  31.171 -	COPY(edi);
  31.172 -	COPY(esi);
  31.173 -	COPY(ebp);
  31.174 -	COPY(esp);
  31.175 -	COPY(ebx);
  31.176 -	COPY(edx);
  31.177 -	COPY(ecx);
  31.178 -	COPY(eip);
  31.179 -	COPY_SEG_STRICT(cs);
  31.180 -	COPY_SEG_STRICT(ss);
  31.181 -	
  31.182 -	{
  31.183 -		unsigned int tmpflags;
  31.184 -		err |= __get_user(tmpflags, &sc->eflags);
  31.185 -		regs->eflags = (regs->eflags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
  31.186 -		regs->orig_eax = -1;		/* disable syscall checks */
  31.187 -	}
  31.188 -
  31.189 -	{
  31.190 -		struct _fpstate __user * buf;
  31.191 -		err |= __get_user(buf, &sc->fpstate);
  31.192 -		if (buf) {
  31.193 -			if (verify_area(VERIFY_READ, buf, sizeof(*buf)))
  31.194 -				goto badframe;
  31.195 -			err |= restore_i387(buf);
  31.196 -		}
  31.197 -	}
  31.198 -
  31.199 -	err |= __get_user(*peax, &sc->eax);
  31.200 -	return err;
  31.201 -
  31.202 -badframe:
  31.203 -	return 1;
  31.204 -}
  31.205 -
  31.206 -asmlinkage int sys_sigreturn(unsigned long __unused)
  31.207 -{
  31.208 -	struct pt_regs *regs = (struct pt_regs *) &__unused;
  31.209 -	struct sigframe __user *frame = (struct sigframe __user *)(regs->esp - 8);
  31.210 -	sigset_t set;
  31.211 -	int eax;
  31.212 -
  31.213 -	if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
  31.214 -		goto badframe;
  31.215 -	if (__get_user(set.sig[0], &frame->sc.oldmask)
  31.216 -	    || (_NSIG_WORDS > 1
  31.217 -		&& __copy_from_user(&set.sig[1], &frame->extramask,
  31.218 -				    sizeof(frame->extramask))))
  31.219 -		goto badframe;
  31.220 -
  31.221 -	sigdelsetmask(&set, ~_BLOCKABLE);
  31.222 -	spin_lock_irq(&current->sighand->siglock);
  31.223 -	current->blocked = set;
  31.224 -	recalc_sigpending();
  31.225 -	spin_unlock_irq(&current->sighand->siglock);
  31.226 -	
  31.227 -	if (restore_sigcontext(regs, &frame->sc, &eax))
  31.228 -		goto badframe;
  31.229 -	return eax;
  31.230 -
  31.231 -badframe:
  31.232 -	force_sig(SIGSEGV, current);
  31.233 -	return 0;
  31.234 -}	
  31.235 -
  31.236 -asmlinkage int sys_rt_sigreturn(unsigned long __unused)
  31.237 -{
  31.238 -	struct pt_regs *regs = (struct pt_regs *) &__unused;
  31.239 -	struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(regs->esp - 4);
  31.240 -	sigset_t set;
  31.241 -	int eax;
  31.242 -
  31.243 -	if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
  31.244 -		goto badframe;
  31.245 -	if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
  31.246 -		goto badframe;
  31.247 -
  31.248 -	sigdelsetmask(&set, ~_BLOCKABLE);
  31.249 -	spin_lock_irq(&current->sighand->siglock);
  31.250 -	current->blocked = set;
  31.251 -	recalc_sigpending();
  31.252 -	spin_unlock_irq(&current->sighand->siglock);
  31.253 -	
  31.254 -	if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &eax))
  31.255 -		goto badframe;
  31.256 -
  31.257 -	if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->esp) == -EFAULT)
  31.258 -		goto badframe;
  31.259 -
  31.260 -	return eax;
  31.261 -
  31.262 -badframe:
  31.263 -	force_sig(SIGSEGV, current);
  31.264 -	return 0;
  31.265 -}	
  31.266 -
  31.267 -/*
  31.268 - * Set up a signal frame.
  31.269 - */
  31.270 -
  31.271 -static int
  31.272 -setup_sigcontext(struct sigcontext __user *sc, struct _fpstate __user *fpstate,
  31.273 -		 struct pt_regs *regs, unsigned long mask)
  31.274 -{
  31.275 -	int tmp, err = 0;
  31.276 -	unsigned long eflags;
  31.277 -
  31.278 -	tmp = 0;
  31.279 -	__asm__("movl %%gs,%0" : "=r"(tmp): "0"(tmp));
  31.280 -	err |= __put_user(tmp, (unsigned int __user *)&sc->gs);
  31.281 -	__asm__("movl %%fs,%0" : "=r"(tmp): "0"(tmp));
  31.282 -	err |= __put_user(tmp, (unsigned int __user *)&sc->fs);
  31.283 -
  31.284 -	err |= __put_user(regs->xes, (unsigned int __user *)&sc->es);
  31.285 -	err |= __put_user(regs->xds, (unsigned int __user *)&sc->ds);
  31.286 -	err |= __put_user(regs->edi, &sc->edi);
  31.287 -	err |= __put_user(regs->esi, &sc->esi);
  31.288 -	err |= __put_user(regs->ebp, &sc->ebp);
  31.289 -	err |= __put_user(regs->esp, &sc->esp);
  31.290 -	err |= __put_user(regs->ebx, &sc->ebx);
  31.291 -	err |= __put_user(regs->edx, &sc->edx);
  31.292 -	err |= __put_user(regs->ecx, &sc->ecx);
  31.293 -	err |= __put_user(regs->eax, &sc->eax);
  31.294 -	err |= __put_user(current->thread.trap_no, &sc->trapno);
  31.295 -	err |= __put_user(current->thread.error_code, &sc->err);
  31.296 -	err |= __put_user(regs->eip, &sc->eip);
  31.297 -	err |= __put_user(regs->xcs, (unsigned int __user *)&sc->cs);
  31.298 -
  31.299 -	/*
  31.300 -	 * Iff TF was set because the program is being single-stepped by a
  31.301 -	 * debugger, don't save that information on the signal stack.. We
  31.302 -	 * don't want debugging to change state.
  31.303 -	 */
  31.304 -	eflags = regs->eflags;
  31.305 -	if (current->ptrace & PT_DTRACE)
  31.306 -		eflags &= ~TF_MASK;
  31.307 -	err |= __put_user(eflags, &sc->eflags);
  31.308 -	err |= __put_user(regs->esp, &sc->esp_at_signal);
  31.309 -	err |= __put_user(regs->xss, (unsigned int __user *)&sc->ss);
  31.310 -
  31.311 -	tmp = save_i387(fpstate);
  31.312 -	if (tmp < 0)
  31.313 -	  err = 1;
  31.314 -	else
  31.315 -	  err |= __put_user(tmp ? fpstate : NULL, &sc->fpstate);
  31.316 -
  31.317 -	/* non-iBCS2 extensions.. */
  31.318 -	err |= __put_user(mask, &sc->oldmask);
  31.319 -	err |= __put_user(current->thread.cr2, &sc->cr2);
  31.320 -
  31.321 -	return err;
  31.322 -}
  31.323 -
  31.324 -/*
  31.325 - * Determine which stack to use..
  31.326 - */
  31.327 -static inline void __user *
  31.328 -get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
  31.329 -{
  31.330 -	unsigned long esp;
  31.331 -
  31.332 -	/* Default to using normal stack */
  31.333 -	esp = regs->esp;
  31.334 -
  31.335 -	/* This is the X/Open sanctioned signal stack switching.  */
  31.336 -	if (ka->sa.sa_flags & SA_ONSTACK) {
  31.337 -		if (sas_ss_flags(esp) == 0)
  31.338 -			esp = current->sas_ss_sp + current->sas_ss_size;
  31.339 -	}
  31.340 -
  31.341 -	/* This is the legacy signal stack switching. */
  31.342 -	else if ((regs->xss & 0xffff) != __USER_DS &&
  31.343 -		 !(ka->sa.sa_flags & SA_RESTORER) &&
  31.344 -		 ka->sa.sa_restorer) {
  31.345 -		esp = (unsigned long) ka->sa.sa_restorer;
  31.346 -	}
  31.347 -
  31.348 -	return (void __user *)((esp - frame_size) & -8ul);
  31.349 -}
  31.350 -
  31.351 -/* These symbols are defined with the addresses in the vsyscall page.
  31.352 -   See vsyscall-sigreturn.S.  */
  31.353 -extern void __user __kernel_sigreturn;
  31.354 -extern void __user __kernel_rt_sigreturn;
  31.355 -
  31.356 -static void setup_frame(int sig, struct k_sigaction *ka,
  31.357 -			sigset_t *set, struct pt_regs * regs)
  31.358 -{
  31.359 -	void __user *restorer;
  31.360 -	struct sigframe __user *frame;
  31.361 -	int err = 0;
  31.362 -	int usig;
  31.363 -
  31.364 -	frame = get_sigframe(ka, regs, sizeof(*frame));
  31.365 -
  31.366 -	if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
  31.367 -		goto give_sigsegv;
  31.368 -
  31.369 -	usig = current_thread_info()->exec_domain
  31.370 -		&& current_thread_info()->exec_domain->signal_invmap
  31.371 -		&& sig < 32
  31.372 -		? current_thread_info()->exec_domain->signal_invmap[sig]
  31.373 -		: sig;
  31.374 -
  31.375 -	err |= __put_user(usig, &frame->sig);
  31.376 -	if (err)
  31.377 -		goto give_sigsegv;
  31.378 -
  31.379 -	err |= setup_sigcontext(&frame->sc, &frame->fpstate, regs, set->sig[0]);
  31.380 -	if (err)
  31.381 -		goto give_sigsegv;
  31.382 -
  31.383 -	if (_NSIG_WORDS > 1) {
  31.384 -		err |= __copy_to_user(&frame->extramask, &set->sig[1],
  31.385 -				      sizeof(frame->extramask));
  31.386 -	}
  31.387 -	if (err)
  31.388 -		goto give_sigsegv;
  31.389 -
  31.390 -	restorer = &__kernel_sigreturn;
  31.391 -	if (ka->sa.sa_flags & SA_RESTORER)
  31.392 -		restorer = ka->sa.sa_restorer;
  31.393 -
  31.394 -	/* Set up to return from userspace.  */
  31.395 -	err |= __put_user(restorer, &frame->pretcode);
  31.396 -	 
  31.397 -	/*
  31.398 -	 * This is popl %eax ; movl $,%eax ; int $0x80
  31.399 -	 *
  31.400 -	 * WE DO NOT USE IT ANY MORE! It's only left here for historical
  31.401 -	 * reasons and because gdb uses it as a signature to notice
  31.402 -	 * signal handler stack frames.
  31.403 -	 */
  31.404 -	err |= __put_user(0xb858, (short __user *)(frame->retcode+0));
  31.405 -	err |= __put_user(__NR_sigreturn, (int __user *)(frame->retcode+2));
  31.406 -	err |= __put_user(0x80cd, (short __user *)(frame->retcode+6));
  31.407 -
  31.408 -	if (err)
  31.409 -		goto give_sigsegv;
  31.410 -
  31.411 -	/* Set up registers for signal handler */
  31.412 -	regs->esp = (unsigned long) frame;
  31.413 -	regs->eip = (unsigned long) ka->sa.sa_handler;
  31.414 -	regs->eax = (unsigned long) sig;
  31.415 -	regs->edx = (unsigned long) 0;
  31.416 -	regs->ecx = (unsigned long) 0;
  31.417 -
  31.418 -	set_fs(USER_DS);
  31.419 -	regs->xds = __USER_DS;
  31.420 -	regs->xes = __USER_DS;
  31.421 -	regs->xss = __USER_DS;
  31.422 -	regs->xcs = __USER_CS;
  31.423 -
  31.424 -	/*
  31.425 -	 * Clear TF when entering the signal handler, but
  31.426 -	 * notify any tracer that was single-stepping it.
  31.427 -	 * The tracer may want to single-step inside the
  31.428 -	 * handler too.
  31.429 -	 */
  31.430 -	if (regs->eflags & TF_MASK) {
  31.431 -		regs->eflags &= ~TF_MASK;
  31.432 -		if (current->ptrace & PT_DTRACE)
  31.433 -			ptrace_notify(SIGTRAP);
  31.434 -	}
  31.435 -
  31.436 -#if DEBUG_SIG
  31.437 -	printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n",
  31.438 -		current->comm, current->pid, frame, regs->eip, frame->pretcode);
  31.439 -#endif
  31.440 -
  31.441 -	return;
  31.442 -
  31.443 -give_sigsegv:
  31.444 -	force_sigsegv(sig, current);
  31.445 -}
  31.446 -
  31.447 -static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
  31.448 -			   sigset_t *set, struct pt_regs * regs)
  31.449 -{
  31.450 -	void __user *restorer;
  31.451 -	struct rt_sigframe __user *frame;
  31.452 -	int err = 0;
  31.453 -	int usig;
  31.454 -
  31.455 -	frame = get_sigframe(ka, regs, sizeof(*frame));
  31.456 -
  31.457 -	if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
  31.458 -		goto give_sigsegv;
  31.459 -
  31.460 -	usig = current_thread_info()->exec_domain
  31.461 -		&& current_thread_info()->exec_domain->signal_invmap
  31.462 -		&& sig < 32
  31.463 -		? current_thread_info()->exec_domain->signal_invmap[sig]
  31.464 -		: sig;
  31.465 -
  31.466 -	err |= __put_user(usig, &frame->sig);
  31.467 -	err |= __put_user(&frame->info, &frame->pinfo);
  31.468 -	err |= __put_user(&frame->uc, &frame->puc);
  31.469 -	err |= copy_siginfo_to_user(&frame->info, info);
  31.470 -	if (err)
  31.471 -		goto give_sigsegv;
  31.472 -
  31.473 -	/* Create the ucontext.  */
  31.474 -	err |= __put_user(0, &frame->uc.uc_flags);
  31.475 -	err |= __put_user(0, &frame->uc.uc_link);
  31.476 -	err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
  31.477 -	err |= __put_user(sas_ss_flags(regs->esp),
  31.478 -			  &frame->uc.uc_stack.ss_flags);
  31.479 -	err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
  31.480 -	err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->fpstate,
  31.481 -			        regs, set->sig[0]);
  31.482 -	err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
  31.483 -	if (err)
  31.484 -		goto give_sigsegv;
  31.485 -
  31.486 -	/* Set up to return from userspace.  */
  31.487 -	restorer = &__kernel_rt_sigreturn;
  31.488 -	if (ka->sa.sa_flags & SA_RESTORER)
  31.489 -		restorer = ka->sa.sa_restorer;
  31.490 -	err |= __put_user(restorer, &frame->pretcode);
  31.491 -	 
  31.492 -	/*
  31.493 -	 * This is movl $,%eax ; int $0x80
  31.494 -	 *
  31.495 -	 * WE DO NOT USE IT ANY MORE! It's only left here for historical
  31.496 -	 * reasons and because gdb uses it as a signature to notice
  31.497 -	 * signal handler stack frames.
  31.498 -	 */
  31.499 -	err |= __put_user(0xb8, (char __user *)(frame->retcode+0));
  31.500 -	err |= __put_user(__NR_rt_sigreturn, (int __user *)(frame->retcode+1));
  31.501 -	err |= __put_user(0x80cd, (short __user *)(frame->retcode+5));
  31.502 -
  31.503 -	if (err)
  31.504 -		goto give_sigsegv;
  31.505 -
  31.506 -	/* Set up registers for signal handler */
  31.507 -	regs->esp = (unsigned long) frame;
  31.508 -	regs->eip = (unsigned long) ka->sa.sa_handler;
  31.509 -	regs->eax = (unsigned long) usig;
  31.510 -	regs->edx = (unsigned long) &frame->info;
  31.511 -	regs->ecx = (unsigned long) &frame->uc;
  31.512 -
  31.513 -	set_fs(USER_DS);
  31.514 -	regs->xds = __USER_DS;
  31.515 -	regs->xes = __USER_DS;
  31.516 -	regs->xss = __USER_DS;
  31.517 -	regs->xcs = __USER_CS;
  31.518 -
  31.519 -	/*
  31.520 -	 * Clear TF when entering the signal handler, but
  31.521 -	 * notify a