direct-io.hg
changeset 3256:054fad40be91
bitkeeper revision 1.1159.170.62 (41b658f7CVacvwHL6JLDDIqJsW_sSQ)
Update to Linux 2.6.10-rc3.
Update to Linux 2.6.10-rc3.
author | cl349@arcadians.cl.cam.ac.uk |
---|---|
date | Wed Dec 08 01:29:27 2004 +0000 (2004-12-08) |
parents | cb4e23337578 |
children | 40ee875afa3b |
files | .rootkeys linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/Makefile linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.10-rc2-xen-sparse/drivers/Makefile linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c linux-2.6.10-rc2-xen-sparse/drivers/xen/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/common.h linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/control.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.10-rc2-xen-sparse/drivers/xen/console/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/common.h linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/control.c linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/interface.c linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/netback.c linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.10-rc2-xen-sparse/include/asm-generic/pgtable.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/balloon.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/evtchn.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/gnttab.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/multicall.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/queues.h linux-2.6.10-rc2-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.10-rc2-xen-sparse/include/linux/gfp.h linux-2.6.10-rc2-xen-sparse/include/linux/irq.h linux-2.6.10-rc2-xen-sparse/include/linux/skbuff.h linux-2.6.10-rc2-xen-sparse/kernel/irq/manage.c linux-2.6.10-rc2-xen-sparse/mkbuildtree linux-2.6.10-rc2-xen-sparse/mm/memory.c linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c linux-2.6.10-rc3-xen-sparse/arch/xen/Kconfig linux-2.6.10-rc3-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.10-rc3-xen-sparse/arch/xen/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/boot/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.10-rc3-xen-sparse/arch/xen/i386/Kconfig linux-2.6.10-rc3-xen-sparse/arch/xen/i386/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/Makefile linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.10-rc3-xen-sparse/drivers/Makefile linux-2.6.10-rc3-xen-sparse/drivers/char/mem.c linux-2.6.10-rc3-xen-sparse/drivers/char/tty_io.c linux-2.6.10-rc3-xen-sparse/drivers/xen/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/common.h linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/control.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.10-rc3-xen-sparse/drivers/xen/console/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/console/console.c linux-2.6.10-rc3-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/common.h linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/control.c linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/interface.c linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/netback.c linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.10-rc3-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.10-rc3-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.10-rc3-xen-sparse/include/asm-generic/pgtable.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/balloon.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/evtchn.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/gnttab.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/multicall.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/queues.h linux-2.6.10-rc3-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.10-rc3-xen-sparse/include/linux/gfp.h linux-2.6.10-rc3-xen-sparse/include/linux/irq.h linux-2.6.10-rc3-xen-sparse/include/linux/skbuff.h linux-2.6.10-rc3-xen-sparse/kernel/irq/manage.c linux-2.6.10-rc3-xen-sparse/mkbuildtree linux-2.6.10-rc3-xen-sparse/mm/memory.c linux-2.6.10-rc3-xen-sparse/mm/page_alloc.c linux-2.6.10-rc3-xen-sparse/net/core/skbuff.c linux-2.6.10-rc3-xen-sparse/net/ipv4/raw.c |
line diff
1.1 --- a/.rootkeys Tue Dec 07 19:17:22 2004 +0000 1.2 +++ b/.rootkeys Wed Dec 08 01:29:27 2004 +0000 1.3 @@ -128,133 +128,133 @@ 409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4 1.4 3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.28-xen-sparse/mm/swapfile.c 1.5 41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.28-xen-sparse/mm/vmalloc.c 1.6 41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.28-xen-sparse/net/core/skbuff.c 1.7 -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig 1.8 -40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers 1.9 -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile 1.10 -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile 1.11 -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig 1.12 -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig 1.13 -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig 1.14 -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile 1.15 -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile 1.16 -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.17 -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.18 -41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile 1.19 -41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c 1.20 -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S 1.21 -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S 1.22 -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.23 -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c 1.24 -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c 1.25 -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.26 -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c 1.27 -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c 1.28 -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c 1.29 -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c 1.30 -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.31 -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.32 -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c 1.33 -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.34 -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.35 -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/Makefile 1.36 -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c 1.37 -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/highmem.c 1.38 -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.39 -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c 1.40 -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/ioremap.c 1.41 -413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c 1.42 -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c 1.43 -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/Makefile 1.44 -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/direct.c 1.45 -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c 1.46 -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/Makefile 1.47 -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/ctrl_if.c 1.48 -41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/devmem.c 1.49 -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c 1.50 -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/fixup.c 1.51 -412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/gnttab.c 1.52 -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/reboot.c 1.53 -414c113396tK1HTVeUalm3u-1DF16g linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/skbuff.c 1.54 -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/xen_proc.c 1.55 -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.10-rc2-xen-sparse/drivers/Makefile 1.56 -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c 1.57 -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c 1.58 -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.10-rc2-xen-sparse/drivers/xen/Makefile 1.59 -41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/Makefile 1.60 -3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/balloon.c 1.61 -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/Makefile 1.62 -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/blkback.c 1.63 -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/common.h 1.64 -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/control.c 1.65 -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/interface.c 1.66 -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/vbd.c 1.67 -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Kconfig 1.68 -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Makefile 1.69 -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/blkfront.c 1.70 -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/block.h 1.71 -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c 1.72 -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.10-rc2-xen-sparse/drivers/xen/console/Makefile 1.73 -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c 1.74 -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/Makefile 1.75 -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c 1.76 -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/Makefile 1.77 -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/common.h 1.78 -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/control.c 1.79 -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/interface.c 1.80 -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/netback.c 1.81 -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Kconfig 1.82 -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Makefile 1.83 -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/netfront.c 1.84 -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/Makefile 1.85 -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/privcmd.c 1.86 -412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.10-rc2-xen-sparse/include/asm-generic/pgtable.h 1.87 -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/desc.h 1.88 -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.89 -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.90 -41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/floppy.h 1.91 -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.92 -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h 1.93 -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.94 -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.95 -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.96 -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.97 -40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/msr.h 1.98 -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h 1.99 -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/param.h 1.100 -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pci.h 1.101 -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.102 -412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.103 -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.104 -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.105 -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h 1.106 -412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.107 -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/segment.h 1.108 -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/setup.h 1.109 -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.110 -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h 1.111 -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.112 -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/vga.h 1.113 -40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/xor.h 1.114 -41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.10-rc2-xen-sparse/include/asm-xen/balloon.h 1.115 -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/ctrl_if.h 1.116 -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.10-rc2-xen-sparse/include/asm-xen/evtchn.h 1.117 -419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.10-rc2-xen-sparse/include/asm-xen/foreign_page.h 1.118 -412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/gnttab.h 1.119 -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/hypervisor.h 1.120 -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/privcmd.h 1.121 -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/suspend.h 1.122 -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/multicall.h 1.123 -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.10-rc2-xen-sparse/include/asm-xen/queues.h 1.124 -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.10-rc2-xen-sparse/include/asm-xen/xen_proc.h 1.125 -419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.10-rc2-xen-sparse/include/linux/gfp.h 1.126 -419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.10-rc2-xen-sparse/include/linux/irq.h 1.127 -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.10-rc2-xen-sparse/include/linux/skbuff.h 1.128 -419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.10-rc2-xen-sparse/kernel/irq/manage.c 1.129 -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.10-rc2-xen-sparse/mkbuildtree 1.130 -412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.10-rc2-xen-sparse/mm/memory.c 1.131 -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c 1.132 -41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c 1.133 -4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c 1.134 +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-rc3-xen-sparse/arch/xen/Kconfig 1.135 +40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-rc3-xen-sparse/arch/xen/Kconfig.drivers 1.136 +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-rc3-xen-sparse/arch/xen/Makefile 1.137 +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.10-rc3-xen-sparse/arch/xen/boot/Makefile 1.138 +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xen0_defconfig 1.139 +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.10-rc3-xen-sparse/arch/xen/configs/xenU_defconfig 1.140 +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/Kconfig 1.141 +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.10-rc3-xen-sparse/arch/xen/i386/Makefile 1.142 +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/Makefile 1.143 +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.144 +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.145 +41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile 1.146 +41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c 1.147 +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/entry.S 1.148 +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/head.S 1.149 +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.150 +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/ioport.c 1.151 +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/ldt.c 1.152 +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.153 +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/process.c 1.154 +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/setup.c 1.155 +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/signal.c 1.156 +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/time.c 1.157 +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.158 +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.159 +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/traps.c 1.160 +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.161 +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.162 +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/Makefile 1.163 +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/fault.c 1.164 +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/highmem.c 1.165 +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.166 +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/init.c 1.167 +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/ioremap.c 1.168 +413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/pageattr.c 1.169 +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.10-rc3-xen-sparse/arch/xen/i386/mm/pgtable.c 1.170 +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/Makefile 1.171 +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/direct.c 1.172 +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.10-rc3-xen-sparse/arch/xen/i386/pci/irq.c 1.173 +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/Makefile 1.174 +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/ctrl_if.c 1.175 +41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/devmem.c 1.176 +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/evtchn.c 1.177 +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/fixup.c 1.178 +412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/gnttab.c 1.179 +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/reboot.c 1.180 +414c113396tK1HTVeUalm3u-1DF16g linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/skbuff.c 1.181 +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.10-rc3-xen-sparse/arch/xen/kernel/xen_proc.c 1.182 +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.10-rc3-xen-sparse/drivers/Makefile 1.183 +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.10-rc3-xen-sparse/drivers/char/mem.c 1.184 +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.10-rc3-xen-sparse/drivers/char/tty_io.c 1.185 +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.10-rc3-xen-sparse/drivers/xen/Makefile 1.186 +41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.10-rc3-xen-sparse/drivers/xen/balloon/Makefile 1.187 +3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.10-rc3-xen-sparse/drivers/xen/balloon/balloon.c 1.188 +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/Makefile 1.189 +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/blkback.c 1.190 +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/common.h 1.191 +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/control.c 1.192 +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/interface.c 1.193 +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.10-rc3-xen-sparse/drivers/xen/blkback/vbd.c 1.194 +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/Kconfig 1.195 +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/Makefile 1.196 +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/blkfront.c 1.197 +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/block.h 1.198 +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.10-rc3-xen-sparse/drivers/xen/blkfront/vbd.c 1.199 +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.10-rc3-xen-sparse/drivers/xen/console/Makefile 1.200 +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.10-rc3-xen-sparse/drivers/xen/console/console.c 1.201 +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.10-rc3-xen-sparse/drivers/xen/evtchn/Makefile 1.202 +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.10-rc3-xen-sparse/drivers/xen/evtchn/evtchn.c 1.203 +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/Makefile 1.204 +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/common.h 1.205 +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/control.c 1.206 +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/interface.c 1.207 +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.10-rc3-xen-sparse/drivers/xen/netback/netback.c 1.208 +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/Kconfig 1.209 +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/Makefile 1.210 +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.10-rc3-xen-sparse/drivers/xen/netfront/netfront.c 1.211 +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.10-rc3-xen-sparse/drivers/xen/privcmd/Makefile 1.212 +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.10-rc3-xen-sparse/drivers/xen/privcmd/privcmd.c 1.213 +412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.10-rc3-xen-sparse/include/asm-generic/pgtable.h 1.214 +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/desc.h 1.215 +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.216 +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.217 +41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/floppy.h 1.218 +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.219 +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/io.h 1.220 +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.221 +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.222 +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.223 +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.224 +40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/msr.h 1.225 +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/page.h 1.226 +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/param.h 1.227 +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pci.h 1.228 +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.229 +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.230 +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.231 +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.232 +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/processor.h 1.233 +412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.234 +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/segment.h 1.235 +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/setup.h 1.236 +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.237 +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/system.h 1.238 +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.239 +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/vga.h 1.240 +40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.10-rc3-xen-sparse/include/asm-xen/asm-i386/xor.h 1.241 +41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.10-rc3-xen-sparse/include/asm-xen/balloon.h 1.242 +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/ctrl_if.h 1.243 +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.10-rc3-xen-sparse/include/asm-xen/evtchn.h 1.244 +419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.10-rc3-xen-sparse/include/asm-xen/foreign_page.h 1.245 +412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/gnttab.h 1.246 +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/hypervisor.h 1.247 +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.10-rc3-xen-sparse/include/asm-xen/linux-public/privcmd.h 1.248 +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/linux-public/suspend.h 1.249 +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.10-rc3-xen-sparse/include/asm-xen/multicall.h 1.250 +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.10-rc3-xen-sparse/include/asm-xen/queues.h 1.251 +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.10-rc3-xen-sparse/include/asm-xen/xen_proc.h 1.252 +419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.10-rc3-xen-sparse/include/linux/gfp.h 1.253 +419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.10-rc3-xen-sparse/include/linux/irq.h 1.254 +4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.10-rc3-xen-sparse/include/linux/skbuff.h 1.255 +419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.10-rc3-xen-sparse/kernel/irq/manage.c 1.256 +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.10-rc3-xen-sparse/mkbuildtree 1.257 +412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.10-rc3-xen-sparse/mm/memory.c 1.258 +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-rc3-xen-sparse/mm/page_alloc.c 1.259 +41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-rc3-xen-sparse/net/core/skbuff.c 1.260 +4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.10-rc3-xen-sparse/net/ipv4/raw.c 1.261 413cb1e4zst25MDYjg63Y-NGC5_pLg netbsd-2.0-xen-sparse/Makefile 1.262 413cb1e5c_Mkxf_X0zimEhTKI_l4DA netbsd-2.0-xen-sparse/mkbuildtree 1.263 413cb1e5kY_Zil7-b0kI6hvCIxBEYg netbsd-2.0-xen-sparse/nbconfig-xen
2.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig Tue Dec 07 19:17:22 2004 +0000 2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 2.3 @@ -1,166 +0,0 @@ 2.4 -# 2.5 -# For a description of the syntax of this configuration file, 2.6 -# see Documentation/kbuild/kconfig-language.txt. 2.7 -# 2.8 - 2.9 -mainmenu "Linux Kernel Configuration" 2.10 - 2.11 -config XEN 2.12 - bool 2.13 - default y 2.14 - help 2.15 - This is the Linux Xen port. 2.16 - 2.17 -config ARCH_XEN 2.18 - bool 2.19 - default y 2.20 - 2.21 - 2.22 -config NO_IDLE_HZ 2.23 - bool 2.24 - default y 2.25 - 2.26 - 2.27 -menu "XEN" 2.28 - 2.29 -config XEN_PRIVILEGED_GUEST 2.30 - bool "Privileged Guest (domain 0)" 2.31 - default n 2.32 - select XEN_PHYSDEV_ACCESS 2.33 - help 2.34 - Support for privileged operation (domain 0) 2.35 - 2.36 -config XEN_PHYSDEV_ACCESS 2.37 - bool "Physical device access" 2.38 - default y if XEN_PRIVILEGED_GUEST 2.39 - default n if !XEN_PRIVILEGED_GUEST 2.40 - help 2.41 - Assume access is available to physical hardware devices 2.42 - (e.g., hard drives, network cards). This allows you to configure 2.43 - such devices and also includes some low-level support that is 2.44 - otherwise not compiled into the kernel. 2.45 - 2.46 -config XEN_BLKDEV_BACKEND 2.47 - bool "Block-device backend driver" 2.48 - default y if XEN_PHYSDEV_ACCESS 2.49 - default n if !XEN_PHYSDEV_ACCESS 2.50 - help 2.51 - The block-device backend driver allows the kernel to export its 2.52 - block devices to other guests via a high-performance shared-memory 2.53 - interface. 2.54 - 2.55 -config XEN_NETDEV_BACKEND 2.56 - bool "Network-device backend driver" 2.57 - default y if XEN_PHYSDEV_ACCESS 2.58 - default n if !XEN_PHYSDEV_ACCESS 2.59 - help 2.60 - The network-device backend driver allows the kernel to export its 2.61 - network devices to other guests via a high-performance shared-memory 2.62 - interface. 2.63 - 2.64 -config XEN_BLKDEV_FRONTEND 2.65 - bool "Block-device frontend driver" 2.66 - default y 2.67 - help 2.68 - The block-device frontend driver allows the kernel to access block 2.69 - devices mounted within another guest OS. Unless you are building a 2.70 - dedicated device-driver domain, or your master control domain 2.71 - (domain 0), then you almost certainly want to say Y here. 2.72 - 2.73 -config XEN_NETDEV_FRONTEND 2.74 - bool "Network-device frontend driver" 2.75 - default y 2.76 - help 2.77 - The network-device frontend driver allows the kernel to access 2.78 - network interfaces within another guest OS. Unless you are building a 2.79 - dedicated device-driver domain, or your master control domain 2.80 - (domain 0), then you almost certainly want to say Y here. 2.81 - 2.82 -if XEN_NETDEV_FRONTEND 2.83 -config XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER 2.84 - bool "Pipelined transmitter (DANGEROUS)" 2.85 - default n 2.86 - help 2.87 - The driver will assume that the backend is pipelining packets for 2.88 - transmission: whenever packets are pending in the remote backend, 2.89 - the driver will not send asynchronous notifications when it queues 2.90 - additional packets for transmission. 2.91 - If the backend is a dumb domain, such as a transparent Ethernet 2.92 - bridge with no local IP interface, it is safe to say Y here to get 2.93 - slightly lower network overhead. 2.94 - If the backend has a local IP interface; or may be doing smart things 2.95 - like reassembling packets to perform firewall filtering; or if you 2.96 - are unsure; or if you experience network hangs when this option is 2.97 - enabled; then you must say N here. 2.98 -endif 2.99 - 2.100 -config XEN_WRITABLE_PAGETABLES 2.101 - bool 2.102 - default y 2.103 - 2.104 -config XEN_SCRUB_PAGES 2.105 - bool "Scrub memory before freeing it to Xen" 2.106 - default y 2.107 - help 2.108 - Erase memory contents before freeing it back to Xen's global 2.109 - pool. This ensures that any secrets contained within that 2.110 - memory (e.g., private keys) cannot be found by other guests that 2.111 - may be running on the machine. Most people will want to say Y here. 2.112 - If security is not a concern then you may increase performance by 2.113 - saying N. 2.114 - 2.115 -endmenu 2.116 - 2.117 -config HAVE_ARCH_DEV_ALLOC_SKB 2.118 - bool 2.119 - default y 2.120 - 2.121 -#config VT 2.122 -# bool 2.123 -# default y 2.124 - 2.125 -#config VT_CONSOLE 2.126 -# bool 2.127 -# default y 2.128 - 2.129 -#config HW_CONSOLE 2.130 -# bool 2.131 -# default y 2.132 - 2.133 -choice 2.134 - prompt "Processor Type" 2.135 - default X86 2.136 - 2.137 -config X86 2.138 - bool "X86" 2.139 - help 2.140 - Choose this option if your computer is a X86 architecture. 2.141 - 2.142 -config X86_64 2.143 - bool "X86_64" 2.144 - help 2.145 - Choose this option if your computer is a X86 architecture. 2.146 - 2.147 -endchoice 2.148 - 2.149 -source "init/Kconfig" 2.150 - 2.151 -if X86 2.152 -source "arch/xen/i386/Kconfig" 2.153 -endif 2.154 - 2.155 -menu "Executable file formats" 2.156 - 2.157 -source "fs/Kconfig.binfmt" 2.158 - 2.159 -endmenu 2.160 - 2.161 -source "arch/xen/Kconfig.drivers" 2.162 - 2.163 -source "fs/Kconfig" 2.164 - 2.165 -source "security/Kconfig" 2.166 - 2.167 -source "crypto/Kconfig" 2.168 - 2.169 -source "lib/Kconfig"
3.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers Tue Dec 07 19:17:22 2004 +0000 3.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 3.3 @@ -1,55 +0,0 @@ 3.4 -# arch/xen/Kconfig.drivers 3.5 - 3.6 -menu "Device Drivers" 3.7 - 3.8 -source "drivers/base/Kconfig" 3.9 - 3.10 -if XEN_PHYSDEV_ACCESS 3.11 -source "drivers/mtd/Kconfig" 3.12 -source "drivers/parport/Kconfig" 3.13 -source "drivers/pnp/Kconfig" 3.14 -endif 3.15 - 3.16 -source "drivers/block/Kconfig" 3.17 - 3.18 -if XEN_PHYSDEV_ACCESS 3.19 -source "drivers/ide/Kconfig" 3.20 -endif 3.21 - 3.22 -source "drivers/scsi/Kconfig" 3.23 - 3.24 -if XEN_PHYSDEV_ACCESS 3.25 -source "drivers/cdrom/Kconfig" 3.26 -endif 3.27 - 3.28 -source "drivers/md/Kconfig" 3.29 - 3.30 -if XEN_PHYSDEV_ACCESS 3.31 -source "drivers/message/fusion/Kconfig" 3.32 -source "drivers/ieee1394/Kconfig" 3.33 -source "drivers/message/i2o/Kconfig" 3.34 -endif 3.35 - 3.36 -source "net/Kconfig" 3.37 - 3.38 -if XEN_PHYSDEV_ACCESS 3.39 -source "drivers/isdn/Kconfig" 3.40 -source "drivers/telephony/Kconfig" 3.41 -source "drivers/input/Kconfig" 3.42 -source "drivers/char/Kconfig" 3.43 -source "drivers/i2c/Kconfig" 3.44 -source "drivers/w1/Kconfig" 3.45 -source "drivers/misc/Kconfig" 3.46 -source "drivers/media/Kconfig" 3.47 -source "drivers/video/Kconfig" 3.48 -source "sound/Kconfig" 3.49 -source "drivers/usb/Kconfig" 3.50 -endif 3.51 - 3.52 -if !XEN_PHYSDEV_ACCESS 3.53 -config UNIX98_PTYS 3.54 - bool 3.55 - default y 3.56 -endif 3.57 - 3.58 -endmenu
4.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile Tue Dec 07 19:17:22 2004 +0000 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,72 +0,0 @@ 4.4 -# 4.5 -# xen/Makefile 4.6 -# 4.7 -# This file is included by the global makefile so that you can add your own 4.8 -# architecture-specific flags and dependencies. Remember to do have actions 4.9 -# for "archclean" cleaning up for this architecture. 4.10 -# 4.11 -# This file is subject to the terms and conditions of the GNU General Public 4.12 -# License. See the file "COPYING" in the main directory of this archive 4.13 -# for more details. 4.14 -# 4.15 -# Copyright (C) 2004 by Christian Limpach 4.16 -# 4.17 - 4.18 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 4.19 - 4.20 -# pick up headers from include/asm-xen/asm in preference over include/asm 4.21 -NOSTDINC_FLAGS = -nostdinc -iwithprefix include/asm-xen -Iinclude/asm-xen -iwithprefix include 4.22 - 4.23 -# make uname return the processor arch 4.24 -UTS_MACHINE := $(XENARCH) 4.25 - 4.26 -core-y += arch/xen/kernel/ 4.27 - 4.28 -include/.asm-ignore: include/asm 4.29 - @rm -f include/.asm-ignore 4.30 - @mv include/asm include/.asm-ignore 4.31 - @echo ' SYMLINK include/asm -> include/asm-$(XENARCH)' 4.32 - $(Q)if [ ! -d include ]; then mkdir -p include; fi; 4.33 - @ln -fsn asm-$(XENARCH) include/asm 4.34 - 4.35 -include/asm-xen/asm: 4.36 - @echo ' SYMLINK $@ -> include/asm-xen/asm-$(XENARCH)' 4.37 - @ln -fsn asm-$(XENARCH) $@ 4.38 - 4.39 -arch/xen/arch: 4.40 - @rm -f $@ 4.41 - @ln -fsn $(XENARCH) $@ 4.42 - 4.43 -prepare: include/.asm-ignore include/asm-xen/asm \ 4.44 - arch/xen/arch ; 4.45 - 4.46 -all: vmlinuz 4.47 - 4.48 -vmlinuz: vmlinux 4.49 - $(Q)$(MAKE) $(build)=arch/xen/boot vmlinuz 4.50 - 4.51 -XINSTALL_NAME ?= $(KERNELRELEASE) 4.52 -install: vmlinuz 4.53 - mkdir -p $(INSTALL_PATH)/boot 4.54 - install -m0644 vmlinuz $(INSTALL_PATH)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 4.55 - install -m0644 vmlinux $(INSTALL_PATH)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 4.56 - install -m0664 .config $(INSTALL_PATH)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 4.57 - install -m0664 System.map $(INSTALL_PATH)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 4.58 - mkdir -p $(INSTALL_PATH)/usr/include/xen/linux 4.59 - install -m0644 include/asm-xen/linux-public/*.h $(INSTALL_PATH)/usr/include/xen/linux 4.60 -dist: 4.61 - $(MAKE) INSTALL_PATH=../dist/install install 4.62 - 4.63 -archclean: 4.64 - @if [ -e arch/xen/arch ]; then $(MAKE) $(clean)=arch/xen/arch; fi; 4.65 - @rm -f arch/xen/arch include/.asm-ignore include/asm-xen/asm 4.66 - @rm -f vmlinux-stripped vmlinuz 4.67 - 4.68 -define archhelp 4.69 - echo '* vmlinuz - Compressed kernel image' 4.70 - echo ' install - Install kernel image and config file' 4.71 -endef 4.72 - 4.73 -ifneq ($(XENARCH),) 4.74 -include $(srctree)/arch/xen/$(XENARCH)/Makefile 4.75 -endif
5.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile Tue Dec 07 19:17:22 2004 +0000 5.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 5.3 @@ -1,8 +0,0 @@ 5.4 - 5.5 -OBJCOPYFLAGS := -g --strip-unneeded 5.6 - 5.7 -vmlinuz: vmlinux-stripped FORCE 5.8 - $(call if_changed,gzip) 5.9 - 5.10 -vmlinux-stripped: vmlinux FORCE 5.11 - $(call if_changed,objcopy)
6.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig Tue Dec 07 19:17:22 2004 +0000 6.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 6.3 @@ -1,1042 +0,0 @@ 6.4 -# 6.5 -# Automatically generated make config: don't edit 6.6 -# Linux kernel version: 2.6.10-rc2-xen0 6.7 -# Wed Dec 1 09:22:49 2004 6.8 -# 6.9 -CONFIG_XEN=y 6.10 -CONFIG_ARCH_XEN=y 6.11 -CONFIG_NO_IDLE_HZ=y 6.12 - 6.13 -# 6.14 -# XEN 6.15 -# 6.16 -CONFIG_XEN_PRIVILEGED_GUEST=y 6.17 -CONFIG_XEN_PHYSDEV_ACCESS=y 6.18 -CONFIG_XEN_BLKDEV_BACKEND=y 6.19 -CONFIG_XEN_NETDEV_BACKEND=y 6.20 -CONFIG_XEN_BLKDEV_FRONTEND=y 6.21 -CONFIG_XEN_NETDEV_FRONTEND=y 6.22 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 6.23 -CONFIG_XEN_WRITABLE_PAGETABLES=y 6.24 -CONFIG_XEN_SCRUB_PAGES=y 6.25 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 6.26 -CONFIG_X86=y 6.27 -# CONFIG_X86_64 is not set 6.28 - 6.29 -# 6.30 -# Code maturity level options 6.31 -# 6.32 -CONFIG_EXPERIMENTAL=y 6.33 -# CONFIG_CLEAN_COMPILE is not set 6.34 -CONFIG_BROKEN=y 6.35 -CONFIG_BROKEN_ON_SMP=y 6.36 -CONFIG_LOCK_KERNEL=y 6.37 - 6.38 -# 6.39 -# General setup 6.40 -# 6.41 -CONFIG_LOCALVERSION="" 6.42 -CONFIG_SWAP=y 6.43 -CONFIG_SYSVIPC=y 6.44 -# CONFIG_POSIX_MQUEUE is not set 6.45 -# CONFIG_BSD_PROCESS_ACCT is not set 6.46 -CONFIG_SYSCTL=y 6.47 -# CONFIG_AUDIT is not set 6.48 -CONFIG_LOG_BUF_SHIFT=14 6.49 -CONFIG_HOTPLUG=y 6.50 -CONFIG_KOBJECT_UEVENT=y 6.51 -# CONFIG_IKCONFIG is not set 6.52 -# CONFIG_EMBEDDED is not set 6.53 -CONFIG_KALLSYMS=y 6.54 -# CONFIG_KALLSYMS_ALL is not set 6.55 -# CONFIG_KALLSYMS_EXTRA_PASS is not set 6.56 -CONFIG_FUTEX=y 6.57 -CONFIG_EPOLL=y 6.58 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 6.59 -CONFIG_SHMEM=y 6.60 -CONFIG_CC_ALIGN_FUNCTIONS=0 6.61 -CONFIG_CC_ALIGN_LABELS=0 6.62 -CONFIG_CC_ALIGN_LOOPS=0 6.63 -CONFIG_CC_ALIGN_JUMPS=0 6.64 -# CONFIG_TINY_SHMEM is not set 6.65 - 6.66 -# 6.67 -# Loadable module support 6.68 -# 6.69 -CONFIG_MODULES=y 6.70 -CONFIG_MODULE_UNLOAD=y 6.71 -# CONFIG_MODULE_FORCE_UNLOAD is not set 6.72 -CONFIG_OBSOLETE_MODPARM=y 6.73 -# CONFIG_MODVERSIONS is not set 6.74 -# CONFIG_MODULE_SRCVERSION_ALL is not set 6.75 -CONFIG_KMOD=y 6.76 - 6.77 -# 6.78 -# X86 Processor Configuration 6.79 -# 6.80 -CONFIG_XENARCH="i386" 6.81 -CONFIG_MMU=y 6.82 -CONFIG_UID16=y 6.83 -CONFIG_GENERIC_ISA_DMA=y 6.84 -CONFIG_GENERIC_IOMAP=y 6.85 -# CONFIG_M686 is not set 6.86 -# CONFIG_MPENTIUMII is not set 6.87 -# CONFIG_MPENTIUMIII is not set 6.88 -# CONFIG_MPENTIUMM is not set 6.89 -CONFIG_MPENTIUM4=y 6.90 -# CONFIG_MK6 is not set 6.91 -# CONFIG_MK7 is not set 6.92 -# CONFIG_MK8 is not set 6.93 -# CONFIG_MCRUSOE is not set 6.94 -# CONFIG_MCYRIXIII is not set 6.95 -# CONFIG_MVIAC3_2 is not set 6.96 -# CONFIG_X86_GENERIC is not set 6.97 -CONFIG_X86_CMPXCHG=y 6.98 -CONFIG_X86_XADD=y 6.99 -CONFIG_X86_L1_CACHE_SHIFT=7 6.100 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 6.101 -CONFIG_X86_WP_WORKS_OK=y 6.102 -CONFIG_X86_INVLPG=y 6.103 -CONFIG_X86_BSWAP=y 6.104 -CONFIG_X86_POPAD_OK=y 6.105 -CONFIG_X86_GOOD_APIC=y 6.106 -CONFIG_X86_INTEL_USERCOPY=y 6.107 -CONFIG_X86_USE_PPRO_CHECKSUM=y 6.108 -# CONFIG_HPET_TIMER is not set 6.109 -# CONFIG_HPET_EMULATE_RTC is not set 6.110 -# CONFIG_SMP is not set 6.111 -CONFIG_PREEMPT=y 6.112 -CONFIG_X86_CPUID=y 6.113 - 6.114 -# 6.115 -# Firmware Drivers 6.116 -# 6.117 -# CONFIG_EDD is not set 6.118 -CONFIG_NOHIGHMEM=y 6.119 -# CONFIG_HIGHMEM4G is not set 6.120 -CONFIG_MTRR=y 6.121 -CONFIG_HAVE_DEC_LOCK=y 6.122 -# CONFIG_REGPARM is not set 6.123 - 6.124 -# 6.125 -# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 6.126 -# 6.127 -CONFIG_PCI=y 6.128 -CONFIG_PCI_DIRECT=y 6.129 -CONFIG_PCI_LEGACY_PROC=y 6.130 -# CONFIG_PCI_NAMES is not set 6.131 -CONFIG_ISA=y 6.132 -# CONFIG_EISA is not set 6.133 -# CONFIG_MCA is not set 6.134 -# CONFIG_SCx200 is not set 6.135 - 6.136 -# 6.137 -# PCCARD (PCMCIA/CardBus) support 6.138 -# 6.139 -# CONFIG_PCCARD is not set 6.140 - 6.141 -# 6.142 -# PC-card bridges 6.143 -# 6.144 -CONFIG_PCMCIA_PROBE=y 6.145 - 6.146 -# 6.147 -# PCI Hotplug Support 6.148 -# 6.149 -# CONFIG_HOTPLUG_PCI is not set 6.150 - 6.151 -# 6.152 -# Kernel hacking 6.153 -# 6.154 -CONFIG_DEBUG_KERNEL=y 6.155 -CONFIG_EARLY_PRINTK=y 6.156 -# CONFIG_DEBUG_STACKOVERFLOW is not set 6.157 -# CONFIG_DEBUG_STACK_USAGE is not set 6.158 -CONFIG_DEBUG_SLAB=y 6.159 -CONFIG_MAGIC_SYSRQ=y 6.160 -# CONFIG_DEBUG_SPINLOCK is not set 6.161 -CONFIG_DEBUG_PAGEALLOC=y 6.162 -# CONFIG_DEBUG_INFO is not set 6.163 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 6.164 -# CONFIG_FRAME_POINTER is not set 6.165 -# CONFIG_4KSTACKS is not set 6.166 -CONFIG_GENERIC_HARDIRQS=y 6.167 -CONFIG_GENERIC_IRQ_PROBE=y 6.168 -CONFIG_X86_BIOS_REBOOT=y 6.169 -CONFIG_PC=y 6.170 - 6.171 -# 6.172 -# Executable file formats 6.173 -# 6.174 -CONFIG_BINFMT_ELF=y 6.175 -# CONFIG_BINFMT_AOUT is not set 6.176 -# CONFIG_BINFMT_MISC is not set 6.177 - 6.178 -# 6.179 -# Device Drivers 6.180 -# 6.181 - 6.182 -# 6.183 -# Generic Driver Options 6.184 -# 6.185 -# CONFIG_STANDALONE is not set 6.186 -CONFIG_PREVENT_FIRMWARE_BUILD=y 6.187 -# CONFIG_FW_LOADER is not set 6.188 -# CONFIG_DEBUG_DRIVER is not set 6.189 - 6.190 -# 6.191 -# Memory Technology Devices (MTD) 6.192 -# 6.193 -# CONFIG_MTD is not set 6.194 - 6.195 -# 6.196 -# Parallel port support 6.197 -# 6.198 -# CONFIG_PARPORT is not set 6.199 - 6.200 -# 6.201 -# Plug and Play support 6.202 -# 6.203 -# CONFIG_PNP is not set 6.204 - 6.205 -# 6.206 -# Block devices 6.207 -# 6.208 -CONFIG_BLK_DEV_FD=y 6.209 -# CONFIG_BLK_DEV_XD is not set 6.210 -# CONFIG_BLK_CPQ_DA is not set 6.211 -CONFIG_BLK_CPQ_CISS_DA=y 6.212 -# CONFIG_CISS_SCSI_TAPE is not set 6.213 -# CONFIG_BLK_DEV_DAC960 is not set 6.214 -# CONFIG_BLK_DEV_UMEM is not set 6.215 -CONFIG_BLK_DEV_LOOP=y 6.216 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 6.217 -# CONFIG_BLK_DEV_NBD is not set 6.218 -# CONFIG_BLK_DEV_SX8 is not set 6.219 -CONFIG_BLK_DEV_RAM=y 6.220 -CONFIG_BLK_DEV_RAM_SIZE=4096 6.221 -CONFIG_BLK_DEV_INITRD=y 6.222 -CONFIG_INITRAMFS_SOURCE="" 6.223 -# CONFIG_LBD is not set 6.224 -# CONFIG_CDROM_PKTCDVD is not set 6.225 - 6.226 -# 6.227 -# IO Schedulers 6.228 -# 6.229 -CONFIG_IOSCHED_NOOP=y 6.230 -CONFIG_IOSCHED_AS=y 6.231 -CONFIG_IOSCHED_DEADLINE=y 6.232 -CONFIG_IOSCHED_CFQ=y 6.233 - 6.234 -# 6.235 -# ATA/ATAPI/MFM/RLL support 6.236 -# 6.237 -CONFIG_IDE=y 6.238 -CONFIG_BLK_DEV_IDE=y 6.239 - 6.240 -# 6.241 -# Please see Documentation/ide.txt for help/info on IDE drives 6.242 -# 6.243 -# CONFIG_BLK_DEV_IDE_SATA is not set 6.244 -# CONFIG_BLK_DEV_HD_IDE is not set 6.245 -CONFIG_BLK_DEV_IDEDISK=y 6.246 -# CONFIG_IDEDISK_MULTI_MODE is not set 6.247 -CONFIG_BLK_DEV_IDECD=y 6.248 -# CONFIG_BLK_DEV_IDETAPE is not set 6.249 -# CONFIG_BLK_DEV_IDEFLOPPY is not set 6.250 -# CONFIG_BLK_DEV_IDESCSI is not set 6.251 -# CONFIG_IDE_TASK_IOCTL is not set 6.252 - 6.253 -# 6.254 -# IDE chipset support/bugfixes 6.255 -# 6.256 -CONFIG_IDE_GENERIC=y 6.257 -# CONFIG_BLK_DEV_CMD640 is not set 6.258 -CONFIG_BLK_DEV_IDEPCI=y 6.259 -# CONFIG_IDEPCI_SHARE_IRQ is not set 6.260 -# CONFIG_BLK_DEV_OFFBOARD is not set 6.261 -CONFIG_BLK_DEV_GENERIC=y 6.262 -# CONFIG_BLK_DEV_OPTI621 is not set 6.263 -# CONFIG_BLK_DEV_RZ1000 is not set 6.264 -CONFIG_BLK_DEV_IDEDMA_PCI=y 6.265 -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 6.266 -CONFIG_IDEDMA_PCI_AUTO=y 6.267 -# CONFIG_IDEDMA_ONLYDISK is not set 6.268 -# CONFIG_BLK_DEV_AEC62XX is not set 6.269 -# CONFIG_BLK_DEV_ALI15X3 is not set 6.270 -# CONFIG_BLK_DEV_AMD74XX is not set 6.271 -# CONFIG_BLK_DEV_ATIIXP is not set 6.272 -# CONFIG_BLK_DEV_CMD64X is not set 6.273 -# CONFIG_BLK_DEV_TRIFLEX is not set 6.274 -# CONFIG_BLK_DEV_CY82C693 is not set 6.275 -# CONFIG_BLK_DEV_CS5520 is not set 6.276 -# CONFIG_BLK_DEV_CS5530 is not set 6.277 -# CONFIG_BLK_DEV_HPT34X is not set 6.278 -# CONFIG_BLK_DEV_HPT366 is not set 6.279 -# CONFIG_BLK_DEV_SC1200 is not set 6.280 -CONFIG_BLK_DEV_PIIX=y 6.281 -# CONFIG_BLK_DEV_NS87415 is not set 6.282 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set 6.283 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set 6.284 -CONFIG_BLK_DEV_SVWKS=y 6.285 -# CONFIG_BLK_DEV_SIIMAGE is not set 6.286 -# CONFIG_BLK_DEV_SIS5513 is not set 6.287 -# CONFIG_BLK_DEV_SLC90E66 is not set 6.288 -# CONFIG_BLK_DEV_TRM290 is not set 6.289 -# CONFIG_BLK_DEV_VIA82CXXX is not set 6.290 -# CONFIG_IDE_ARM is not set 6.291 -# CONFIG_IDE_CHIPSETS is not set 6.292 -CONFIG_BLK_DEV_IDEDMA=y 6.293 -# CONFIG_IDEDMA_IVB is not set 6.294 -CONFIG_IDEDMA_AUTO=y 6.295 -# CONFIG_BLK_DEV_HD is not set 6.296 - 6.297 -# 6.298 -# SCSI device support 6.299 -# 6.300 -CONFIG_SCSI=y 6.301 -CONFIG_SCSI_PROC_FS=y 6.302 - 6.303 -# 6.304 -# SCSI support type (disk, tape, CD-ROM) 6.305 -# 6.306 -CONFIG_BLK_DEV_SD=y 6.307 -# CONFIG_CHR_DEV_ST is not set 6.308 -# CONFIG_CHR_DEV_OSST is not set 6.309 -# CONFIG_BLK_DEV_SR is not set 6.310 -# CONFIG_CHR_DEV_SG is not set 6.311 - 6.312 -# 6.313 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 6.314 -# 6.315 -# CONFIG_SCSI_MULTI_LUN is not set 6.316 -# CONFIG_SCSI_CONSTANTS is not set 6.317 -# CONFIG_SCSI_LOGGING is not set 6.318 - 6.319 -# 6.320 -# SCSI Transport Attributes 6.321 -# 6.322 -# CONFIG_SCSI_SPI_ATTRS is not set 6.323 -# CONFIG_SCSI_FC_ATTRS is not set 6.324 - 6.325 -# 6.326 -# SCSI low-level drivers 6.327 -# 6.328 -CONFIG_BLK_DEV_3W_XXXX_RAID=y 6.329 -# CONFIG_SCSI_3W_9XXX is not set 6.330 -# CONFIG_SCSI_7000FASST is not set 6.331 -# CONFIG_SCSI_ACARD is not set 6.332 -# CONFIG_SCSI_AHA152X is not set 6.333 -# CONFIG_SCSI_AHA1542 is not set 6.334 -CONFIG_SCSI_AACRAID=y 6.335 -CONFIG_SCSI_AIC7XXX=y 6.336 -CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 6.337 -CONFIG_AIC7XXX_RESET_DELAY_MS=15000 6.338 -CONFIG_AIC7XXX_DEBUG_ENABLE=y 6.339 -CONFIG_AIC7XXX_DEBUG_MASK=0 6.340 -CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 6.341 -# CONFIG_SCSI_AIC7XXX_OLD is not set 6.342 -CONFIG_SCSI_AIC79XX=y 6.343 -CONFIG_AIC79XX_CMDS_PER_DEVICE=32 6.344 -CONFIG_AIC79XX_RESET_DELAY_MS=15000 6.345 -# CONFIG_AIC79XX_ENABLE_RD_STRM is not set 6.346 -CONFIG_AIC79XX_DEBUG_ENABLE=y 6.347 -CONFIG_AIC79XX_DEBUG_MASK=0 6.348 -CONFIG_AIC79XX_REG_PRETTY_PRINT=y 6.349 -# CONFIG_SCSI_DPT_I2O is not set 6.350 -# CONFIG_SCSI_ADVANSYS is not set 6.351 -# CONFIG_SCSI_IN2000 is not set 6.352 -# CONFIG_MEGARAID_NEWGEN is not set 6.353 -# CONFIG_MEGARAID_LEGACY is not set 6.354 -CONFIG_SCSI_SATA=y 6.355 -# CONFIG_SCSI_SATA_AHCI is not set 6.356 -# CONFIG_SCSI_SATA_SVW is not set 6.357 -CONFIG_SCSI_ATA_PIIX=y 6.358 -# CONFIG_SCSI_SATA_NV is not set 6.359 -CONFIG_SCSI_SATA_PROMISE=y 6.360 -CONFIG_SCSI_SATA_SX4=y 6.361 -CONFIG_SCSI_SATA_SIL=y 6.362 -# CONFIG_SCSI_SATA_SIS is not set 6.363 -# CONFIG_SCSI_SATA_ULI is not set 6.364 -# CONFIG_SCSI_SATA_VIA is not set 6.365 -# CONFIG_SCSI_SATA_VITESSE is not set 6.366 -CONFIG_SCSI_BUSLOGIC=y 6.367 -# CONFIG_SCSI_OMIT_FLASHPOINT is not set 6.368 -# CONFIG_SCSI_CPQFCTS is not set 6.369 -# CONFIG_SCSI_DMX3191D is not set 6.370 -# CONFIG_SCSI_DTC3280 is not set 6.371 -# CONFIG_SCSI_EATA is not set 6.372 -# CONFIG_SCSI_EATA_PIO is not set 6.373 -# CONFIG_SCSI_FUTURE_DOMAIN is not set 6.374 -# CONFIG_SCSI_GDTH is not set 6.375 -# CONFIG_SCSI_GENERIC_NCR5380 is not set 6.376 -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 6.377 -# CONFIG_SCSI_IPS is not set 6.378 -# CONFIG_SCSI_INITIO is not set 6.379 -# CONFIG_SCSI_INIA100 is not set 6.380 -# CONFIG_SCSI_NCR53C406A is not set 6.381 -# CONFIG_SCSI_SYM53C8XX_2 is not set 6.382 -# CONFIG_SCSI_IPR is not set 6.383 -# CONFIG_SCSI_PAS16 is not set 6.384 -# CONFIG_SCSI_PCI2000 is not set 6.385 -# CONFIG_SCSI_PCI2220I is not set 6.386 -# CONFIG_SCSI_PSI240I is not set 6.387 -# CONFIG_SCSI_QLOGIC_FAS is not set 6.388 -# CONFIG_SCSI_QLOGIC_ISP is not set 6.389 -# CONFIG_SCSI_QLOGIC_FC is not set 6.390 -# CONFIG_SCSI_QLOGIC_1280 is not set 6.391 -# CONFIG_SCSI_QLOGIC_1280_1040 is not set 6.392 -CONFIG_SCSI_QLA2XXX=y 6.393 -# CONFIG_SCSI_QLA21XX is not set 6.394 -# CONFIG_SCSI_QLA22XX is not set 6.395 -# CONFIG_SCSI_QLA2300 is not set 6.396 -# CONFIG_SCSI_QLA2322 is not set 6.397 -# CONFIG_SCSI_QLA6312 is not set 6.398 -# CONFIG_SCSI_QLA6322 is not set 6.399 -# CONFIG_SCSI_SEAGATE is not set 6.400 -# CONFIG_SCSI_SYM53C416 is not set 6.401 -# CONFIG_SCSI_DC395x is not set 6.402 -# CONFIG_SCSI_DC390T is not set 6.403 -# CONFIG_SCSI_T128 is not set 6.404 -# CONFIG_SCSI_U14_34F is not set 6.405 -# CONFIG_SCSI_ULTRASTOR is not set 6.406 -# CONFIG_SCSI_NSP32 is not set 6.407 -# CONFIG_SCSI_DEBUG is not set 6.408 - 6.409 -# 6.410 -# Old CD-ROM drivers (not SCSI, not IDE) 6.411 -# 6.412 -# CONFIG_CD_NO_IDESCSI is not set 6.413 - 6.414 -# 6.415 -# Multi-device support (RAID and LVM) 6.416 -# 6.417 -CONFIG_MD=y 6.418 -CONFIG_BLK_DEV_MD=y 6.419 -# CONFIG_MD_LINEAR is not set 6.420 -CONFIG_MD_RAID0=y 6.421 -CONFIG_MD_RAID1=y 6.422 -# CONFIG_MD_RAID10 is not set 6.423 -CONFIG_MD_RAID5=y 6.424 -# CONFIG_MD_RAID6 is not set 6.425 -# CONFIG_MD_MULTIPATH is not set 6.426 -# CONFIG_MD_FAULTY is not set 6.427 -CONFIG_BLK_DEV_DM=y 6.428 -# CONFIG_DM_CRYPT is not set 6.429 -CONFIG_DM_SNAPSHOT=y 6.430 -CONFIG_DM_MIRROR=y 6.431 -# CONFIG_DM_ZERO is not set 6.432 - 6.433 -# 6.434 -# Fusion MPT device support 6.435 -# 6.436 -# CONFIG_FUSION is not set 6.437 - 6.438 -# 6.439 -# IEEE 1394 (FireWire) support 6.440 -# 6.441 -# CONFIG_IEEE1394 is not set 6.442 - 6.443 -# 6.444 -# I2O device support 6.445 -# 6.446 -# CONFIG_I2O is not set 6.447 - 6.448 -# 6.449 -# Networking support 6.450 -# 6.451 -CONFIG_NET=y 6.452 - 6.453 -# 6.454 -# Networking options 6.455 -# 6.456 -CONFIG_PACKET=y 6.457 -# CONFIG_PACKET_MMAP is not set 6.458 -# CONFIG_NETLINK_DEV is not set 6.459 -CONFIG_UNIX=y 6.460 -# CONFIG_NET_KEY is not set 6.461 -CONFIG_INET=y 6.462 -# CONFIG_IP_MULTICAST is not set 6.463 -# CONFIG_IP_ADVANCED_ROUTER is not set 6.464 -CONFIG_IP_PNP=y 6.465 -CONFIG_IP_PNP_DHCP=y 6.466 -# CONFIG_IP_PNP_BOOTP is not set 6.467 -# CONFIG_IP_PNP_RARP is not set 6.468 -# CONFIG_NET_IPIP is not set 6.469 -# CONFIG_NET_IPGRE is not set 6.470 -# CONFIG_ARPD is not set 6.471 -# CONFIG_SYN_COOKIES is not set 6.472 -# CONFIG_INET_AH is not set 6.473 -# CONFIG_INET_ESP is not set 6.474 -# CONFIG_INET_IPCOMP is not set 6.475 -# CONFIG_INET_TUNNEL is not set 6.476 -CONFIG_IP_TCPDIAG=y 6.477 -# CONFIG_IP_TCPDIAG_IPV6 is not set 6.478 - 6.479 -# 6.480 -# IP: Virtual Server Configuration 6.481 -# 6.482 -# CONFIG_IP_VS is not set 6.483 -# CONFIG_IPV6 is not set 6.484 -CONFIG_NETFILTER=y 6.485 -# CONFIG_NETFILTER_DEBUG is not set 6.486 -CONFIG_BRIDGE_NETFILTER=y 6.487 - 6.488 -# 6.489 -# IP: Netfilter Configuration 6.490 -# 6.491 -CONFIG_IP_NF_CONNTRACK=m 6.492 -CONFIG_IP_NF_CT_ACCT=y 6.493 -# CONFIG_IP_NF_CONNTRACK_MARK is not set 6.494 -# CONFIG_IP_NF_CT_PROTO_SCTP is not set 6.495 -CONFIG_IP_NF_FTP=m 6.496 -# CONFIG_IP_NF_IRC is not set 6.497 -# CONFIG_IP_NF_TFTP is not set 6.498 -# CONFIG_IP_NF_AMANDA is not set 6.499 -# CONFIG_IP_NF_QUEUE is not set 6.500 -CONFIG_IP_NF_IPTABLES=m 6.501 -# CONFIG_IP_NF_MATCH_LIMIT is not set 6.502 -# CONFIG_IP_NF_MATCH_IPRANGE is not set 6.503 -# CONFIG_IP_NF_MATCH_MAC is not set 6.504 -# CONFIG_IP_NF_MATCH_PKTTYPE is not set 6.505 -# CONFIG_IP_NF_MATCH_MARK is not set 6.506 -# CONFIG_IP_NF_MATCH_MULTIPORT is not set 6.507 -# CONFIG_IP_NF_MATCH_TOS is not set 6.508 -# CONFIG_IP_NF_MATCH_RECENT is not set 6.509 -# CONFIG_IP_NF_MATCH_ECN is not set 6.510 -# CONFIG_IP_NF_MATCH_DSCP is not set 6.511 -# CONFIG_IP_NF_MATCH_AH_ESP is not set 6.512 -# CONFIG_IP_NF_MATCH_LENGTH is not set 6.513 -# CONFIG_IP_NF_MATCH_TTL is not set 6.514 -# CONFIG_IP_NF_MATCH_TCPMSS is not set 6.515 -# CONFIG_IP_NF_MATCH_HELPER is not set 6.516 -# CONFIG_IP_NF_MATCH_STATE is not set 6.517 -# CONFIG_IP_NF_MATCH_CONNTRACK is not set 6.518 -# CONFIG_IP_NF_MATCH_OWNER is not set 6.519 -# CONFIG_IP_NF_MATCH_PHYSDEV is not set 6.520 -# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 6.521 -# CONFIG_IP_NF_MATCH_REALM is not set 6.522 -# CONFIG_IP_NF_MATCH_SCTP is not set 6.523 -# CONFIG_IP_NF_MATCH_COMMENT is not set 6.524 -# CONFIG_IP_NF_MATCH_HASHLIMIT is not set 6.525 -# CONFIG_IP_NF_FILTER is not set 6.526 -# CONFIG_IP_NF_TARGET_LOG is not set 6.527 -# CONFIG_IP_NF_TARGET_ULOG is not set 6.528 -# CONFIG_IP_NF_TARGET_TCPMSS is not set 6.529 -# CONFIG_IP_NF_NAT is not set 6.530 -# CONFIG_IP_NF_MANGLE is not set 6.531 -# CONFIG_IP_NF_RAW is not set 6.532 -# CONFIG_IP_NF_ARPTABLES is not set 6.533 -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set 6.534 -# CONFIG_IP_NF_COMPAT_IPFWADM is not set 6.535 - 6.536 -# 6.537 -# Bridge: Netfilter Configuration 6.538 -# 6.539 -# CONFIG_BRIDGE_NF_EBTABLES is not set 6.540 - 6.541 -# 6.542 -# SCTP Configuration (EXPERIMENTAL) 6.543 -# 6.544 -# CONFIG_IP_SCTP is not set 6.545 -# CONFIG_ATM is not set 6.546 -CONFIG_BRIDGE=y 6.547 -# CONFIG_VLAN_8021Q is not set 6.548 -# CONFIG_DECNET is not set 6.549 -# CONFIG_LLC2 is not set 6.550 -# CONFIG_IPX is not set 6.551 -# CONFIG_ATALK is not set 6.552 -# CONFIG_X25 is not set 6.553 -# CONFIG_LAPB is not set 6.554 -# CONFIG_NET_DIVERT is not set 6.555 -# CONFIG_ECONET is not set 6.556 -# CONFIG_WAN_ROUTER is not set 6.557 - 6.558 -# 6.559 -# QoS and/or fair queueing 6.560 -# 6.561 -# CONFIG_NET_SCHED is not set 6.562 -# CONFIG_NET_CLS_ROUTE is not set 6.563 - 6.564 -# 6.565 -# Network testing 6.566 -# 6.567 -# CONFIG_NET_PKTGEN is not set 6.568 -# CONFIG_NETPOLL is not set 6.569 -# CONFIG_NET_POLL_CONTROLLER is not set 6.570 -# CONFIG_HAMRADIO is not set 6.571 -# CONFIG_IRDA is not set 6.572 -# CONFIG_BT is not set 6.573 -CONFIG_NETDEVICES=y 6.574 -# CONFIG_DUMMY is not set 6.575 -# CONFIG_BONDING is not set 6.576 -# CONFIG_EQUALIZER is not set 6.577 -# CONFIG_TUN is not set 6.578 - 6.579 -# 6.580 -# ARCnet devices 6.581 -# 6.582 -# CONFIG_ARCNET is not set 6.583 - 6.584 -# 6.585 -# Ethernet (10 or 100Mbit) 6.586 -# 6.587 -CONFIG_NET_ETHERNET=y 6.588 -CONFIG_MII=y 6.589 -# CONFIG_HAPPYMEAL is not set 6.590 -# CONFIG_SUNGEM is not set 6.591 -CONFIG_NET_VENDOR_3COM=y 6.592 -# CONFIG_EL1 is not set 6.593 -# CONFIG_EL2 is not set 6.594 -# CONFIG_ELPLUS is not set 6.595 -# CONFIG_EL16 is not set 6.596 -# CONFIG_EL3 is not set 6.597 -# CONFIG_3C515 is not set 6.598 -CONFIG_VORTEX=y 6.599 -# CONFIG_TYPHOON is not set 6.600 -# CONFIG_LANCE is not set 6.601 -# CONFIG_NET_VENDOR_SMC is not set 6.602 -# CONFIG_NET_VENDOR_RACAL is not set 6.603 - 6.604 -# 6.605 -# Tulip family network device support 6.606 -# 6.607 -CONFIG_NET_TULIP=y 6.608 -# CONFIG_DE2104X is not set 6.609 -CONFIG_TULIP=y 6.610 -# CONFIG_TULIP_MWI is not set 6.611 -# CONFIG_TULIP_MMIO is not set 6.612 -# CONFIG_TULIP_NAPI is not set 6.613 -# CONFIG_DE4X5 is not set 6.614 -# CONFIG_WINBOND_840 is not set 6.615 -# CONFIG_DM9102 is not set 6.616 -# CONFIG_AT1700 is not set 6.617 -# CONFIG_DEPCA is not set 6.618 -# CONFIG_HP100 is not set 6.619 -# CONFIG_NET_ISA is not set 6.620 -CONFIG_NET_PCI=y 6.621 -CONFIG_PCNET32=y 6.622 -# CONFIG_AMD8111_ETH is not set 6.623 -# CONFIG_ADAPTEC_STARFIRE is not set 6.624 -# CONFIG_AC3200 is not set 6.625 -# CONFIG_APRICOT is not set 6.626 -# CONFIG_B44 is not set 6.627 -# CONFIG_FORCEDETH is not set 6.628 -# CONFIG_CS89x0 is not set 6.629 -# CONFIG_DGRS is not set 6.630 -# CONFIG_EEPRO100 is not set 6.631 -CONFIG_E100=y 6.632 -# CONFIG_E100_NAPI is not set 6.633 -# CONFIG_FEALNX is not set 6.634 -# CONFIG_NATSEMI is not set 6.635 -# CONFIG_NE2K_PCI is not set 6.636 -# CONFIG_8139CP is not set 6.637 -CONFIG_8139TOO=y 6.638 -CONFIG_8139TOO_PIO=y 6.639 -# CONFIG_8139TOO_TUNE_TWISTER is not set 6.640 -# CONFIG_8139TOO_8129 is not set 6.641 -# CONFIG_8139_OLD_RX_RESET is not set 6.642 -# CONFIG_SIS900 is not set 6.643 -# CONFIG_EPIC100 is not set 6.644 -# CONFIG_SUNDANCE is not set 6.645 -# CONFIG_TLAN is not set 6.646 -CONFIG_VIA_RHINE=y 6.647 -# CONFIG_VIA_RHINE_MMIO is not set 6.648 -# CONFIG_NET_POCKET is not set 6.649 - 6.650 -# 6.651 -# Ethernet (1000 Mbit) 6.652 -# 6.653 -CONFIG_ACENIC=y 6.654 -# CONFIG_ACENIC_OMIT_TIGON_I is not set 6.655 -# CONFIG_DL2K is not set 6.656 -CONFIG_E1000=y 6.657 -# CONFIG_E1000_NAPI is not set 6.658 -# CONFIG_NS83820 is not set 6.659 -# CONFIG_HAMACHI is not set 6.660 -# CONFIG_YELLOWFIN is not set 6.661 -# CONFIG_R8169 is not set 6.662 -# CONFIG_SK98LIN is not set 6.663 -# CONFIG_VIA_VELOCITY is not set 6.664 -CONFIG_TIGON3=y 6.665 - 6.666 -# 6.667 -# Ethernet (10000 Mbit) 6.668 -# 6.669 -# CONFIG_IXGB is not set 6.670 -# CONFIG_S2IO is not set 6.671 - 6.672 -# 6.673 -# Token Ring devices 6.674 -# 6.675 -# CONFIG_TR is not set 6.676 - 6.677 -# 6.678 -# Wireless LAN (non-hamradio) 6.679 -# 6.680 -# CONFIG_NET_RADIO is not set 6.681 - 6.682 -# 6.683 -# Wan interfaces 6.684 -# 6.685 -# CONFIG_WAN is not set 6.686 -# CONFIG_FDDI is not set 6.687 -# CONFIG_HIPPI is not set 6.688 -# CONFIG_PPP is not set 6.689 -# CONFIG_SLIP is not set 6.690 -# CONFIG_NET_FC is not set 6.691 -# CONFIG_SHAPER is not set 6.692 -# CONFIG_NETCONSOLE is not set 6.693 - 6.694 -# 6.695 -# ISDN subsystem 6.696 -# 6.697 -# CONFIG_ISDN is not set 6.698 - 6.699 -# 6.700 -# Telephony Support 6.701 -# 6.702 -# CONFIG_PHONE is not set 6.703 - 6.704 -# 6.705 -# Input device support 6.706 -# 6.707 -CONFIG_INPUT=y 6.708 - 6.709 -# 6.710 -# Userland interfaces 6.711 -# 6.712 -CONFIG_INPUT_MOUSEDEV=y 6.713 -CONFIG_INPUT_MOUSEDEV_PSAUX=y 6.714 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 6.715 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 6.716 -# CONFIG_INPUT_JOYDEV is not set 6.717 -# CONFIG_INPUT_TSDEV is not set 6.718 -# CONFIG_INPUT_EVDEV is not set 6.719 -# CONFIG_INPUT_EVBUG is not set 6.720 - 6.721 -# 6.722 -# Input I/O drivers 6.723 -# 6.724 -# CONFIG_GAMEPORT is not set 6.725 -CONFIG_SOUND_GAMEPORT=y 6.726 -CONFIG_SERIO=y 6.727 -CONFIG_SERIO_I8042=y 6.728 -CONFIG_SERIO_SERPORT=y 6.729 -# CONFIG_SERIO_CT82C710 is not set 6.730 -# CONFIG_SERIO_PCIPS2 is not set 6.731 -# CONFIG_SERIO_RAW is not set 6.732 - 6.733 -# 6.734 -# Input Device Drivers 6.735 -# 6.736 -CONFIG_INPUT_KEYBOARD=y 6.737 -CONFIG_KEYBOARD_ATKBD=y 6.738 -# CONFIG_KEYBOARD_SUNKBD is not set 6.739 -# CONFIG_KEYBOARD_LKKBD is not set 6.740 -# CONFIG_KEYBOARD_XTKBD is not set 6.741 -# CONFIG_KEYBOARD_NEWTON is not set 6.742 -CONFIG_INPUT_MOUSE=y 6.743 -CONFIG_MOUSE_PS2=y 6.744 -# CONFIG_MOUSE_SERIAL is not set 6.745 -# CONFIG_MOUSE_INPORT is not set 6.746 -# CONFIG_MOUSE_LOGIBM is not set 6.747 -# CONFIG_MOUSE_PC110PAD is not set 6.748 -# CONFIG_MOUSE_VSXXXAA is not set 6.749 -# CONFIG_INPUT_JOYSTICK is not set 6.750 -# CONFIG_INPUT_TOUCHSCREEN is not set 6.751 -# CONFIG_INPUT_MISC is not set 6.752 - 6.753 -# 6.754 -# Character devices 6.755 -# 6.756 -CONFIG_VT=y 6.757 -CONFIG_VT_CONSOLE=y 6.758 -CONFIG_HW_CONSOLE=y 6.759 -# CONFIG_SERIAL_NONSTANDARD is not set 6.760 - 6.761 -# 6.762 -# Serial drivers 6.763 -# 6.764 -# CONFIG_SERIAL_8250 is not set 6.765 - 6.766 -# 6.767 -# Non-8250 serial port support 6.768 -# 6.769 -CONFIG_UNIX98_PTYS=y 6.770 -CONFIG_LEGACY_PTYS=y 6.771 -CONFIG_LEGACY_PTY_COUNT=256 6.772 - 6.773 -# 6.774 -# IPMI 6.775 -# 6.776 -# CONFIG_IPMI_HANDLER is not set 6.777 - 6.778 -# 6.779 -# Watchdog Cards 6.780 -# 6.781 -# CONFIG_WATCHDOG is not set 6.782 -# CONFIG_HW_RANDOM is not set 6.783 -# CONFIG_NVRAM is not set 6.784 -# CONFIG_RTC is not set 6.785 -# CONFIG_GEN_RTC is not set 6.786 -# CONFIG_DTLK is not set 6.787 -# CONFIG_R3964 is not set 6.788 -# CONFIG_APPLICOM is not set 6.789 -# CONFIG_SONYPI is not set 6.790 - 6.791 -# 6.792 -# Ftape, the floppy tape device driver 6.793 -# 6.794 -# CONFIG_FTAPE is not set 6.795 -# CONFIG_AGP is not set 6.796 -# CONFIG_DRM is not set 6.797 -# CONFIG_MWAVE is not set 6.798 -# CONFIG_RAW_DRIVER is not set 6.799 -# CONFIG_HANGCHECK_TIMER is not set 6.800 - 6.801 -# 6.802 -# I2C support 6.803 -# 6.804 -# CONFIG_I2C is not set 6.805 - 6.806 -# 6.807 -# Dallas's 1-wire bus 6.808 -# 6.809 -# CONFIG_W1 is not set 6.810 - 6.811 -# 6.812 -# Misc devices 6.813 -# 6.814 -# CONFIG_IBM_ASM is not set 6.815 - 6.816 -# 6.817 -# Multimedia devices 6.818 -# 6.819 -# CONFIG_VIDEO_DEV is not set 6.820 - 6.821 -# 6.822 -# Digital Video Broadcasting Devices 6.823 -# 6.824 -# CONFIG_DVB is not set 6.825 - 6.826 -# 6.827 -# Graphics support 6.828 -# 6.829 -# CONFIG_FB is not set 6.830 -# CONFIG_VIDEO_SELECT is not set 6.831 - 6.832 -# 6.833 -# Console display driver support 6.834 -# 6.835 -CONFIG_VGA_CONSOLE=y 6.836 -# CONFIG_MDA_CONSOLE is not set 6.837 -CONFIG_DUMMY_CONSOLE=y 6.838 - 6.839 -# 6.840 -# Sound 6.841 -# 6.842 -# CONFIG_SOUND is not set 6.843 - 6.844 -# 6.845 -# USB support 6.846 -# 6.847 -# CONFIG_USB is not set 6.848 -CONFIG_USB_ARCH_HAS_HCD=y 6.849 -CONFIG_USB_ARCH_HAS_OHCI=y 6.850 - 6.851 -# 6.852 -# USB Gadget Support 6.853 -# 6.854 -# CONFIG_USB_GADGET is not set 6.855 - 6.856 -# 6.857 -# File systems 6.858 -# 6.859 -CONFIG_EXT2_FS=y 6.860 -# CONFIG_EXT2_FS_XATTR is not set 6.861 -CONFIG_EXT3_FS=y 6.862 -CONFIG_EXT3_FS_XATTR=y 6.863 -# CONFIG_EXT3_FS_POSIX_ACL is not set 6.864 -# CONFIG_EXT3_FS_SECURITY is not set 6.865 -CONFIG_JBD=y 6.866 -# CONFIG_JBD_DEBUG is not set 6.867 -CONFIG_FS_MBCACHE=y 6.868 -CONFIG_REISERFS_FS=y 6.869 -# CONFIG_REISERFS_CHECK is not set 6.870 -# CONFIG_REISERFS_PROC_INFO is not set 6.871 -# CONFIG_REISERFS_FS_XATTR is not set 6.872 -# CONFIG_JFS_FS is not set 6.873 -# CONFIG_XFS_FS is not set 6.874 -# CONFIG_MINIX_FS is not set 6.875 -# CONFIG_ROMFS_FS is not set 6.876 -# CONFIG_QUOTA is not set 6.877 -CONFIG_DNOTIFY=y 6.878 -# CONFIG_AUTOFS_FS is not set 6.879 -# CONFIG_AUTOFS4_FS is not set 6.880 - 6.881 -# 6.882 -# CD-ROM/DVD Filesystems 6.883 -# 6.884 -CONFIG_ISO9660_FS=y 6.885 -CONFIG_JOLIET=y 6.886 -CONFIG_ZISOFS=y 6.887 -CONFIG_ZISOFS_FS=y 6.888 -# CONFIG_UDF_FS is not set 6.889 - 6.890 -# 6.891 -# DOS/FAT/NT Filesystems 6.892 -# 6.893 -CONFIG_FAT_FS=m 6.894 -CONFIG_MSDOS_FS=m 6.895 -CONFIG_VFAT_FS=m 6.896 -CONFIG_FAT_DEFAULT_CODEPAGE=437 6.897 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 6.898 -# CONFIG_NTFS_FS is not set 6.899 - 6.900 -# 6.901 -# Pseudo filesystems 6.902 -# 6.903 -CONFIG_PROC_FS=y 6.904 -CONFIG_PROC_KCORE=y 6.905 -CONFIG_SYSFS=y 6.906 -# CONFIG_DEVFS_FS is not set 6.907 -# CONFIG_DEVPTS_FS_XATTR is not set 6.908 -CONFIG_TMPFS=y 6.909 -# CONFIG_TMPFS_XATTR is not set 6.910 -# CONFIG_HUGETLBFS is not set 6.911 -# CONFIG_HUGETLB_PAGE is not set 6.912 -CONFIG_RAMFS=y 6.913 - 6.914 -# 6.915 -# Miscellaneous filesystems 6.916 -# 6.917 -# CONFIG_ADFS_FS is not set 6.918 -# CONFIG_AFFS_FS is not set 6.919 -# CONFIG_HFS_FS is not set 6.920 -# CONFIG_HFSPLUS_FS is not set 6.921 -# CONFIG_BEFS_FS is not set 6.922 -# CONFIG_BFS_FS is not set 6.923 -# CONFIG_EFS_FS is not set 6.924 -# CONFIG_CRAMFS is not set 6.925 -# CONFIG_VXFS_FS is not set 6.926 -# CONFIG_HPFS_FS is not set 6.927 -# CONFIG_QNX4FS_FS is not set 6.928 -# CONFIG_SYSV_FS is not set 6.929 -# CONFIG_UFS_FS is not set 6.930 - 6.931 -# 6.932 -# Network File Systems 6.933 -# 6.934 -CONFIG_NFS_FS=y 6.935 -CONFIG_NFS_V3=y 6.936 -# CONFIG_NFS_V4 is not set 6.937 -# CONFIG_NFS_DIRECTIO is not set 6.938 -CONFIG_NFSD=m 6.939 -CONFIG_NFSD_V3=y 6.940 -# CONFIG_NFSD_V4 is not set 6.941 -CONFIG_NFSD_TCP=y 6.942 -CONFIG_ROOT_NFS=y 6.943 -CONFIG_LOCKD=y 6.944 -CONFIG_LOCKD_V4=y 6.945 -CONFIG_EXPORTFS=m 6.946 -CONFIG_SUNRPC=y 6.947 -# CONFIG_RPCSEC_GSS_KRB5 is not set 6.948 -# CONFIG_RPCSEC_GSS_SPKM3 is not set 6.949 -# CONFIG_SMB_FS is not set 6.950 -# CONFIG_CIFS is not set 6.951 -# CONFIG_NCP_FS is not set 6.952 -# CONFIG_CODA_FS is not set 6.953 -# CONFIG_AFS_FS is not set 6.954 - 6.955 -# 6.956 -# Partition Types 6.957 -# 6.958 -# CONFIG_PARTITION_ADVANCED is not set 6.959 -CONFIG_MSDOS_PARTITION=y 6.960 - 6.961 -# 6.962 -# Native Language Support 6.963 -# 6.964 -CONFIG_NLS=y 6.965 -CONFIG_NLS_DEFAULT="iso8859-1" 6.966 -CONFIG_NLS_CODEPAGE_437=y 6.967 -# CONFIG_NLS_CODEPAGE_737 is not set 6.968 -# CONFIG_NLS_CODEPAGE_775 is not set 6.969 -# CONFIG_NLS_CODEPAGE_850 is not set 6.970 -# CONFIG_NLS_CODEPAGE_852 is not set 6.971 -# CONFIG_NLS_CODEPAGE_855 is not set 6.972 -# CONFIG_NLS_CODEPAGE_857 is not set 6.973 -# CONFIG_NLS_CODEPAGE_860 is not set 6.974 -# CONFIG_NLS_CODEPAGE_861 is not set 6.975 -# CONFIG_NLS_CODEPAGE_862 is not set 6.976 -# CONFIG_NLS_CODEPAGE_863 is not set 6.977 -# CONFIG_NLS_CODEPAGE_864 is not set 6.978 -# CONFIG_NLS_CODEPAGE_865 is not set 6.979 -# CONFIG_NLS_CODEPAGE_866 is not set 6.980 -# CONFIG_NLS_CODEPAGE_869 is not set 6.981 -# CONFIG_NLS_CODEPAGE_936 is not set 6.982 -# CONFIG_NLS_CODEPAGE_950 is not set 6.983 -# CONFIG_NLS_CODEPAGE_932 is not set 6.984 -# CONFIG_NLS_CODEPAGE_949 is not set 6.985 -# CONFIG_NLS_CODEPAGE_874 is not set 6.986 -# CONFIG_NLS_ISO8859_8 is not set 6.987 -# CONFIG_NLS_CODEPAGE_1250 is not set 6.988 -# CONFIG_NLS_CODEPAGE_1251 is not set 6.989 -# CONFIG_NLS_ASCII is not set 6.990 -CONFIG_NLS_ISO8859_1=y 6.991 -# CONFIG_NLS_ISO8859_2 is not set 6.992 -# CONFIG_NLS_ISO8859_3 is not set 6.993 -# CONFIG_NLS_ISO8859_4 is not set 6.994 -# CONFIG_NLS_ISO8859_5 is not set 6.995 -# CONFIG_NLS_ISO8859_6 is not set 6.996 -# CONFIG_NLS_ISO8859_7 is not set 6.997 -# CONFIG_NLS_ISO8859_9 is not set 6.998 -# CONFIG_NLS_ISO8859_13 is not set 6.999 -# CONFIG_NLS_ISO8859_14 is not set 6.1000 -# CONFIG_NLS_ISO8859_15 is not set 6.1001 -# CONFIG_NLS_KOI8_R is not set 6.1002 -# CONFIG_NLS_KOI8_U is not set 6.1003 -# CONFIG_NLS_UTF8 is not set 6.1004 - 6.1005 -# 6.1006 -# Security options 6.1007 -# 6.1008 -# CONFIG_KEYS is not set 6.1009 -# CONFIG_SECURITY is not set 6.1010 - 6.1011 -# 6.1012 -# Cryptographic options 6.1013 -# 6.1014 -CONFIG_CRYPTO=y 6.1015 -CONFIG_CRYPTO_HMAC=y 6.1016 -# CONFIG_CRYPTO_NULL is not set 6.1017 -# CONFIG_CRYPTO_MD4 is not set 6.1018 -CONFIG_CRYPTO_MD5=m 6.1019 -CONFIG_CRYPTO_SHA1=m 6.1020 -# CONFIG_CRYPTO_SHA256 is not set 6.1021 -# CONFIG_CRYPTO_SHA512 is not set 6.1022 -# CONFIG_CRYPTO_WP512 is not set 6.1023 -CONFIG_CRYPTO_DES=m 6.1024 -# CONFIG_CRYPTO_BLOWFISH is not set 6.1025 -# CONFIG_CRYPTO_TWOFISH is not set 6.1026 -# CONFIG_CRYPTO_SERPENT is not set 6.1027 -# CONFIG_CRYPTO_AES_586 is not set 6.1028 -# CONFIG_CRYPTO_CAST5 is not set 6.1029 -# CONFIG_CRYPTO_CAST6 is not set 6.1030 -# CONFIG_CRYPTO_TEA is not set 6.1031 -# CONFIG_CRYPTO_ARC4 is not set 6.1032 -# CONFIG_CRYPTO_KHAZAD is not set 6.1033 -# CONFIG_CRYPTO_ANUBIS is not set 6.1034 -# CONFIG_CRYPTO_DEFLATE is not set 6.1035 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 6.1036 -CONFIG_CRYPTO_CRC32C=m 6.1037 -# CONFIG_CRYPTO_TEST is not set 6.1038 - 6.1039 -# 6.1040 -# Library routines 6.1041 -# 6.1042 -# CONFIG_CRC_CCITT is not set 6.1043 -CONFIG_CRC32=y 6.1044 -CONFIG_LIBCRC32C=y 6.1045 -CONFIG_ZLIB_INFLATE=y
7.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig Tue Dec 07 19:17:22 2004 +0000 7.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 7.3 @@ -1,510 +0,0 @@ 7.4 -# 7.5 -# Automatically generated make config: don't edit 7.6 -# Linux kernel version: 2.6.10-rc2-xenU 7.7 -# Wed Dec 1 09:22:09 2004 7.8 -# 7.9 -CONFIG_XEN=y 7.10 -CONFIG_ARCH_XEN=y 7.11 -CONFIG_NO_IDLE_HZ=y 7.12 - 7.13 -# 7.14 -# XEN 7.15 -# 7.16 -# CONFIG_XEN_PRIVILEGED_GUEST is not set 7.17 -# CONFIG_XEN_PHYSDEV_ACCESS is not set 7.18 -# CONFIG_XEN_BLKDEV_BACKEND is not set 7.19 -# CONFIG_XEN_NETDEV_BACKEND is not set 7.20 -CONFIG_XEN_BLKDEV_FRONTEND=y 7.21 -CONFIG_XEN_NETDEV_FRONTEND=y 7.22 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 7.23 -CONFIG_XEN_WRITABLE_PAGETABLES=y 7.24 -CONFIG_XEN_SCRUB_PAGES=y 7.25 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 7.26 -CONFIG_X86=y 7.27 -# CONFIG_X86_64 is not set 7.28 - 7.29 -# 7.30 -# Code maturity level options 7.31 -# 7.32 -CONFIG_EXPERIMENTAL=y 7.33 -CONFIG_CLEAN_COMPILE=y 7.34 -CONFIG_BROKEN_ON_SMP=y 7.35 -CONFIG_LOCK_KERNEL=y 7.36 - 7.37 -# 7.38 -# General setup 7.39 -# 7.40 -CONFIG_LOCALVERSION="" 7.41 -CONFIG_SWAP=y 7.42 -CONFIG_SYSVIPC=y 7.43 -# CONFIG_POSIX_MQUEUE is not set 7.44 -# CONFIG_BSD_PROCESS_ACCT is not set 7.45 -CONFIG_SYSCTL=y 7.46 -# CONFIG_AUDIT is not set 7.47 -CONFIG_LOG_BUF_SHIFT=14 7.48 -CONFIG_HOTPLUG=y 7.49 -CONFIG_KOBJECT_UEVENT=y 7.50 -# CONFIG_IKCONFIG is not set 7.51 -# CONFIG_EMBEDDED is not set 7.52 -CONFIG_KALLSYMS=y 7.53 -# CONFIG_KALLSYMS_ALL is not set 7.54 -# CONFIG_KALLSYMS_EXTRA_PASS is not set 7.55 -CONFIG_FUTEX=y 7.56 -CONFIG_EPOLL=y 7.57 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 7.58 -CONFIG_SHMEM=y 7.59 -CONFIG_CC_ALIGN_FUNCTIONS=0 7.60 -CONFIG_CC_ALIGN_LABELS=0 7.61 -CONFIG_CC_ALIGN_LOOPS=0 7.62 -CONFIG_CC_ALIGN_JUMPS=0 7.63 -# CONFIG_TINY_SHMEM is not set 7.64 - 7.65 -# 7.66 -# Loadable module support 7.67 -# 7.68 -CONFIG_MODULES=y 7.69 -CONFIG_MODULE_UNLOAD=y 7.70 -# CONFIG_MODULE_FORCE_UNLOAD is not set 7.71 -CONFIG_OBSOLETE_MODPARM=y 7.72 -# CONFIG_MODVERSIONS is not set 7.73 -# CONFIG_MODULE_SRCVERSION_ALL is not set 7.74 -CONFIG_KMOD=y 7.75 - 7.76 -# 7.77 -# X86 Processor Configuration 7.78 -# 7.79 -CONFIG_XENARCH="i386" 7.80 -CONFIG_MMU=y 7.81 -CONFIG_UID16=y 7.82 -CONFIG_GENERIC_ISA_DMA=y 7.83 -CONFIG_GENERIC_IOMAP=y 7.84 -# CONFIG_M686 is not set 7.85 -# CONFIG_MPENTIUMII is not set 7.86 -# CONFIG_MPENTIUMIII is not set 7.87 -# CONFIG_MPENTIUMM is not set 7.88 -CONFIG_MPENTIUM4=y 7.89 -# CONFIG_MK6 is not set 7.90 -# CONFIG_MK7 is not set 7.91 -# CONFIG_MK8 is not set 7.92 -# CONFIG_MCRUSOE is not set 7.93 -# CONFIG_MCYRIXIII is not set 7.94 -# CONFIG_MVIAC3_2 is not set 7.95 -# CONFIG_X86_GENERIC is not set 7.96 -CONFIG_X86_CMPXCHG=y 7.97 -CONFIG_X86_XADD=y 7.98 -CONFIG_X86_L1_CACHE_SHIFT=7 7.99 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 7.100 -CONFIG_X86_WP_WORKS_OK=y 7.101 -CONFIG_X86_INVLPG=y 7.102 -CONFIG_X86_BSWAP=y 7.103 -CONFIG_X86_POPAD_OK=y 7.104 -CONFIG_X86_GOOD_APIC=y 7.105 -CONFIG_X86_INTEL_USERCOPY=y 7.106 -CONFIG_X86_USE_PPRO_CHECKSUM=y 7.107 -# CONFIG_HPET_TIMER is not set 7.108 -# CONFIG_HPET_EMULATE_RTC is not set 7.109 -# CONFIG_SMP is not set 7.110 -CONFIG_PREEMPT=y 7.111 -CONFIG_X86_CPUID=y 7.112 - 7.113 -# 7.114 -# Firmware Drivers 7.115 -# 7.116 -# CONFIG_EDD is not set 7.117 -CONFIG_NOHIGHMEM=y 7.118 -# CONFIG_HIGHMEM4G is not set 7.119 -CONFIG_HAVE_DEC_LOCK=y 7.120 -# CONFIG_REGPARM is not set 7.121 - 7.122 -# 7.123 -# Kernel hacking 7.124 -# 7.125 -CONFIG_DEBUG_KERNEL=y 7.126 -CONFIG_EARLY_PRINTK=y 7.127 -# CONFIG_DEBUG_STACKOVERFLOW is not set 7.128 -# CONFIG_DEBUG_STACK_USAGE is not set 7.129 -CONFIG_DEBUG_SLAB=y 7.130 -# CONFIG_MAGIC_SYSRQ is not set 7.131 -# CONFIG_DEBUG_SPINLOCK is not set 7.132 -CONFIG_DEBUG_PAGEALLOC=y 7.133 -# CONFIG_DEBUG_INFO is not set 7.134 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 7.135 -# CONFIG_FRAME_POINTER is not set 7.136 -# CONFIG_4KSTACKS is not set 7.137 -CONFIG_GENERIC_HARDIRQS=y 7.138 -CONFIG_GENERIC_IRQ_PROBE=y 7.139 -CONFIG_X86_BIOS_REBOOT=y 7.140 -CONFIG_PC=y 7.141 - 7.142 -# 7.143 -# Executable file formats 7.144 -# 7.145 -CONFIG_BINFMT_ELF=y 7.146 -# CONFIG_BINFMT_AOUT is not set 7.147 -# CONFIG_BINFMT_MISC is not set 7.148 - 7.149 -# 7.150 -# Device Drivers 7.151 -# 7.152 - 7.153 -# 7.154 -# Generic Driver Options 7.155 -# 7.156 -CONFIG_STANDALONE=y 7.157 -CONFIG_PREVENT_FIRMWARE_BUILD=y 7.158 -# CONFIG_FW_LOADER is not set 7.159 -# CONFIG_DEBUG_DRIVER is not set 7.160 - 7.161 -# 7.162 -# Block devices 7.163 -# 7.164 -# CONFIG_BLK_DEV_FD is not set 7.165 -CONFIG_BLK_DEV_LOOP=m 7.166 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 7.167 -CONFIG_BLK_DEV_NBD=m 7.168 -CONFIG_BLK_DEV_RAM=y 7.169 -CONFIG_BLK_DEV_RAM_SIZE=4096 7.170 -CONFIG_BLK_DEV_INITRD=y 7.171 -CONFIG_INITRAMFS_SOURCE="" 7.172 -# CONFIG_LBD is not set 7.173 -# CONFIG_CDROM_PKTCDVD is not set 7.174 - 7.175 -# 7.176 -# IO Schedulers 7.177 -# 7.178 -CONFIG_IOSCHED_NOOP=y 7.179 -CONFIG_IOSCHED_AS=y 7.180 -CONFIG_IOSCHED_DEADLINE=y 7.181 -CONFIG_IOSCHED_CFQ=y 7.182 - 7.183 -# 7.184 -# SCSI device support 7.185 -# 7.186 -CONFIG_SCSI=m 7.187 -CONFIG_SCSI_PROC_FS=y 7.188 - 7.189 -# 7.190 -# SCSI support type (disk, tape, CD-ROM) 7.191 -# 7.192 -CONFIG_BLK_DEV_SD=m 7.193 -# CONFIG_CHR_DEV_ST is not set 7.194 -# CONFIG_CHR_DEV_OSST is not set 7.195 -# CONFIG_BLK_DEV_SR is not set 7.196 -# CONFIG_CHR_DEV_SG is not set 7.197 - 7.198 -# 7.199 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 7.200 -# 7.201 -# CONFIG_SCSI_MULTI_LUN is not set 7.202 -# CONFIG_SCSI_CONSTANTS is not set 7.203 -# CONFIG_SCSI_LOGGING is not set 7.204 - 7.205 -# 7.206 -# SCSI Transport Attributes 7.207 -# 7.208 -# CONFIG_SCSI_SPI_ATTRS is not set 7.209 -# CONFIG_SCSI_FC_ATTRS is not set 7.210 - 7.211 -# 7.212 -# SCSI low-level drivers 7.213 -# 7.214 -# CONFIG_SCSI_SATA is not set 7.215 -# CONFIG_SCSI_QLOGIC_1280_1040 is not set 7.216 -# CONFIG_SCSI_DEBUG is not set 7.217 - 7.218 -# 7.219 -# Multi-device support (RAID and LVM) 7.220 -# 7.221 -# CONFIG_MD is not set 7.222 - 7.223 -# 7.224 -# Networking support 7.225 -# 7.226 -CONFIG_NET=y 7.227 - 7.228 -# 7.229 -# Networking options 7.230 -# 7.231 -CONFIG_PACKET=y 7.232 -# CONFIG_PACKET_MMAP is not set 7.233 -# CONFIG_NETLINK_DEV is not set 7.234 -CONFIG_UNIX=y 7.235 -# CONFIG_NET_KEY is not set 7.236 -CONFIG_INET=y 7.237 -# CONFIG_IP_MULTICAST is not set 7.238 -# CONFIG_IP_ADVANCED_ROUTER is not set 7.239 -CONFIG_IP_PNP=y 7.240 -# CONFIG_IP_PNP_DHCP is not set 7.241 -# CONFIG_IP_PNP_BOOTP is not set 7.242 -# CONFIG_IP_PNP_RARP is not set 7.243 -# CONFIG_NET_IPIP is not set 7.244 -# CONFIG_NET_IPGRE is not set 7.245 -# CONFIG_ARPD is not set 7.246 -# CONFIG_SYN_COOKIES is not set 7.247 -# CONFIG_INET_AH is not set 7.248 -# CONFIG_INET_ESP is not set 7.249 -# CONFIG_INET_IPCOMP is not set 7.250 -# CONFIG_INET_TUNNEL is not set 7.251 -CONFIG_IP_TCPDIAG=y 7.252 -# CONFIG_IP_TCPDIAG_IPV6 is not set 7.253 -# CONFIG_IPV6 is not set 7.254 -# CONFIG_NETFILTER is not set 7.255 - 7.256 -# 7.257 -# SCTP Configuration (EXPERIMENTAL) 7.258 -# 7.259 -# CONFIG_IP_SCTP is not set 7.260 -# CONFIG_ATM is not set 7.261 -# CONFIG_BRIDGE is not set 7.262 -# CONFIG_VLAN_8021Q is not set 7.263 -# CONFIG_DECNET is not set 7.264 -# CONFIG_LLC2 is not set 7.265 -# CONFIG_IPX is not set 7.266 -# CONFIG_ATALK is not set 7.267 -# CONFIG_X25 is not set 7.268 -# CONFIG_LAPB is not set 7.269 -# CONFIG_NET_DIVERT is not set 7.270 -# CONFIG_ECONET is not set 7.271 -# CONFIG_WAN_ROUTER is not set 7.272 - 7.273 -# 7.274 -# QoS and/or fair queueing 7.275 -# 7.276 -# CONFIG_NET_SCHED is not set 7.277 -# CONFIG_NET_CLS_ROUTE is not set 7.278 - 7.279 -# 7.280 -# Network testing 7.281 -# 7.282 -# CONFIG_NET_PKTGEN is not set 7.283 -# CONFIG_NETPOLL is not set 7.284 -# CONFIG_NET_POLL_CONTROLLER is not set 7.285 -# CONFIG_HAMRADIO is not set 7.286 -# CONFIG_IRDA is not set 7.287 -# CONFIG_BT is not set 7.288 -CONFIG_NETDEVICES=y 7.289 -# CONFIG_DUMMY is not set 7.290 -# CONFIG_BONDING is not set 7.291 -# CONFIG_EQUALIZER is not set 7.292 -# CONFIG_TUN is not set 7.293 - 7.294 -# 7.295 -# Ethernet (10 or 100Mbit) 7.296 -# 7.297 -# CONFIG_NET_ETHERNET is not set 7.298 - 7.299 -# 7.300 -# Ethernet (1000 Mbit) 7.301 -# 7.302 - 7.303 -# 7.304 -# Ethernet (10000 Mbit) 7.305 -# 7.306 - 7.307 -# 7.308 -# Token Ring devices 7.309 -# 7.310 - 7.311 -# 7.312 -# Wireless LAN (non-hamradio) 7.313 -# 7.314 -# CONFIG_NET_RADIO is not set 7.315 - 7.316 -# 7.317 -# Wan interfaces 7.318 -# 7.319 -# CONFIG_WAN is not set 7.320 -# CONFIG_PPP is not set 7.321 -# CONFIG_SLIP is not set 7.322 -# CONFIG_SHAPER is not set 7.323 -# CONFIG_NETCONSOLE is not set 7.324 -CONFIG_UNIX98_PTYS=y 7.325 - 7.326 -# 7.327 -# File systems 7.328 -# 7.329 -CONFIG_EXT2_FS=y 7.330 -# CONFIG_EXT2_FS_XATTR is not set 7.331 -CONFIG_EXT3_FS=y 7.332 -CONFIG_EXT3_FS_XATTR=y 7.333 -# CONFIG_EXT3_FS_POSIX_ACL is not set 7.334 -# CONFIG_EXT3_FS_SECURITY is not set 7.335 -CONFIG_JBD=y 7.336 -# CONFIG_JBD_DEBUG is not set 7.337 -CONFIG_FS_MBCACHE=y 7.338 -CONFIG_REISERFS_FS=y 7.339 -# CONFIG_REISERFS_CHECK is not set 7.340 -# CONFIG_REISERFS_PROC_INFO is not set 7.341 -# CONFIG_REISERFS_FS_XATTR is not set 7.342 -# CONFIG_JFS_FS is not set 7.343 -# CONFIG_XFS_FS is not set 7.344 -# CONFIG_MINIX_FS is not set 7.345 -# CONFIG_ROMFS_FS is not set 7.346 -# CONFIG_QUOTA is not set 7.347 -CONFIG_DNOTIFY=y 7.348 -CONFIG_AUTOFS_FS=y 7.349 -CONFIG_AUTOFS4_FS=y 7.350 - 7.351 -# 7.352 -# CD-ROM/DVD Filesystems 7.353 -# 7.354 -CONFIG_ISO9660_FS=y 7.355 -CONFIG_JOLIET=y 7.356 -CONFIG_ZISOFS=y 7.357 -CONFIG_ZISOFS_FS=y 7.358 -# CONFIG_UDF_FS is not set 7.359 - 7.360 -# 7.361 -# DOS/FAT/NT Filesystems 7.362 -# 7.363 -CONFIG_FAT_FS=m 7.364 -CONFIG_MSDOS_FS=m 7.365 -CONFIG_VFAT_FS=m 7.366 -CONFIG_FAT_DEFAULT_CODEPAGE=437 7.367 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 7.368 -# CONFIG_NTFS_FS is not set 7.369 - 7.370 -# 7.371 -# Pseudo filesystems 7.372 -# 7.373 -CONFIG_PROC_FS=y 7.374 -CONFIG_PROC_KCORE=y 7.375 -CONFIG_SYSFS=y 7.376 -# CONFIG_DEVFS_FS is not set 7.377 -CONFIG_DEVPTS_FS_XATTR=y 7.378 -# CONFIG_DEVPTS_FS_SECURITY is not set 7.379 -CONFIG_TMPFS=y 7.380 -# CONFIG_TMPFS_XATTR is not set 7.381 -# CONFIG_HUGETLBFS is not set 7.382 -# CONFIG_HUGETLB_PAGE is not set 7.383 -CONFIG_RAMFS=y 7.384 - 7.385 -# 7.386 -# Miscellaneous filesystems 7.387 -# 7.388 -# CONFIG_ADFS_FS is not set 7.389 -# CONFIG_AFFS_FS is not set 7.390 -# CONFIG_HFS_FS is not set 7.391 -# CONFIG_HFSPLUS_FS is not set 7.392 -# CONFIG_BEFS_FS is not set 7.393 -# CONFIG_BFS_FS is not set 7.394 -# CONFIG_EFS_FS is not set 7.395 -# CONFIG_CRAMFS is not set 7.396 -# CONFIG_VXFS_FS is not set 7.397 -# CONFIG_HPFS_FS is not set 7.398 -# CONFIG_QNX4FS_FS is not set 7.399 -# CONFIG_SYSV_FS is not set 7.400 -# CONFIG_UFS_FS is not set 7.401 - 7.402 -# 7.403 -# Network File Systems 7.404 -# 7.405 -CONFIG_NFS_FS=y 7.406 -CONFIG_NFS_V3=y 7.407 -# CONFIG_NFS_V4 is not set 7.408 -# CONFIG_NFS_DIRECTIO is not set 7.409 -# CONFIG_NFSD is not set 7.410 -CONFIG_ROOT_NFS=y 7.411 -CONFIG_LOCKD=y 7.412 -CONFIG_LOCKD_V4=y 7.413 -# CONFIG_EXPORTFS is not set 7.414 -CONFIG_SUNRPC=y 7.415 -# CONFIG_RPCSEC_GSS_KRB5 is not set 7.416 -# CONFIG_RPCSEC_GSS_SPKM3 is not set 7.417 -# CONFIG_SMB_FS is not set 7.418 -# CONFIG_CIFS is not set 7.419 -# CONFIG_NCP_FS is not set 7.420 -# CONFIG_CODA_FS is not set 7.421 -# CONFIG_AFS_FS is not set 7.422 - 7.423 -# 7.424 -# Partition Types 7.425 -# 7.426 -# CONFIG_PARTITION_ADVANCED is not set 7.427 -CONFIG_MSDOS_PARTITION=y 7.428 - 7.429 -# 7.430 -# Native Language Support 7.431 -# 7.432 -CONFIG_NLS=y 7.433 -CONFIG_NLS_DEFAULT="iso8859-1" 7.434 -CONFIG_NLS_CODEPAGE_437=y 7.435 -# CONFIG_NLS_CODEPAGE_737 is not set 7.436 -# CONFIG_NLS_CODEPAGE_775 is not set 7.437 -# CONFIG_NLS_CODEPAGE_850 is not set 7.438 -# CONFIG_NLS_CODEPAGE_852 is not set 7.439 -# CONFIG_NLS_CODEPAGE_855 is not set 7.440 -# CONFIG_NLS_CODEPAGE_857 is not set 7.441 -# CONFIG_NLS_CODEPAGE_860 is not set 7.442 -# CONFIG_NLS_CODEPAGE_861 is not set 7.443 -# CONFIG_NLS_CODEPAGE_862 is not set 7.444 -# CONFIG_NLS_CODEPAGE_863 is not set 7.445 -# CONFIG_NLS_CODEPAGE_864 is not set 7.446 -# CONFIG_NLS_CODEPAGE_865 is not set 7.447 -# CONFIG_NLS_CODEPAGE_866 is not set 7.448 -# CONFIG_NLS_CODEPAGE_869 is not set 7.449 -# CONFIG_NLS_CODEPAGE_936 is not set 7.450 -# CONFIG_NLS_CODEPAGE_950 is not set 7.451 -# CONFIG_NLS_CODEPAGE_932 is not set 7.452 -# CONFIG_NLS_CODEPAGE_949 is not set 7.453 -# CONFIG_NLS_CODEPAGE_874 is not set 7.454 -# CONFIG_NLS_ISO8859_8 is not set 7.455 -# CONFIG_NLS_CODEPAGE_1250 is not set 7.456 -# CONFIG_NLS_CODEPAGE_1251 is not set 7.457 -# CONFIG_NLS_ASCII is not set 7.458 -CONFIG_NLS_ISO8859_1=y 7.459 -# CONFIG_NLS_ISO8859_2 is not set 7.460 -# CONFIG_NLS_ISO8859_3 is not set 7.461 -# CONFIG_NLS_ISO8859_4 is not set 7.462 -# CONFIG_NLS_ISO8859_5 is not set 7.463 -# CONFIG_NLS_ISO8859_6 is not set 7.464 -# CONFIG_NLS_ISO8859_7 is not set 7.465 -# CONFIG_NLS_ISO8859_9 is not set 7.466 -# CONFIG_NLS_ISO8859_13 is not set 7.467 -# CONFIG_NLS_ISO8859_14 is not set 7.468 -# CONFIG_NLS_ISO8859_15 is not set 7.469 -# CONFIG_NLS_KOI8_R is not set 7.470 -# CONFIG_NLS_KOI8_U is not set 7.471 -# CONFIG_NLS_UTF8 is not set 7.472 - 7.473 -# 7.474 -# Security options 7.475 -# 7.476 -# CONFIG_KEYS is not set 7.477 -# CONFIG_SECURITY is not set 7.478 - 7.479 -# 7.480 -# Cryptographic options 7.481 -# 7.482 -CONFIG_CRYPTO=y 7.483 -# CONFIG_CRYPTO_HMAC is not set 7.484 -# CONFIG_CRYPTO_NULL is not set 7.485 -# CONFIG_CRYPTO_MD4 is not set 7.486 -CONFIG_CRYPTO_MD5=m 7.487 -# CONFIG_CRYPTO_SHA1 is not set 7.488 -# CONFIG_CRYPTO_SHA256 is not set 7.489 -# CONFIG_CRYPTO_SHA512 is not set 7.490 -# CONFIG_CRYPTO_WP512 is not set 7.491 -# CONFIG_CRYPTO_DES is not set 7.492 -# CONFIG_CRYPTO_BLOWFISH is not set 7.493 -# CONFIG_CRYPTO_TWOFISH is not set 7.494 -# CONFIG_CRYPTO_SERPENT is not set 7.495 -# CONFIG_CRYPTO_AES_586 is not set 7.496 -# CONFIG_CRYPTO_CAST5 is not set 7.497 -# CONFIG_CRYPTO_CAST6 is not set 7.498 -# CONFIG_CRYPTO_TEA is not set 7.499 -# CONFIG_CRYPTO_ARC4 is not set 7.500 -# CONFIG_CRYPTO_KHAZAD is not set 7.501 -# CONFIG_CRYPTO_ANUBIS is not set 7.502 -# CONFIG_CRYPTO_DEFLATE is not set 7.503 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 7.504 -CONFIG_CRYPTO_CRC32C=m 7.505 -# CONFIG_CRYPTO_TEST is not set 7.506 - 7.507 -# 7.508 -# Library routines 7.509 -# 7.510 -# CONFIG_CRC_CCITT is not set 7.511 -# CONFIG_CRC32 is not set 7.512 -CONFIG_LIBCRC32C=m 7.513 -CONFIG_ZLIB_INFLATE=y
8.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig Tue Dec 07 19:17:22 2004 +0000 8.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 8.3 @@ -1,956 +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 -menu "X86 Processor Configuration" 8.10 - 8.11 -config XENARCH 8.12 - string 8.13 - default i386 8.14 - 8.15 -config MMU 8.16 - bool 8.17 - default y 8.18 - 8.19 -config SBUS 8.20 - bool 8.21 - 8.22 -config UID16 8.23 - bool 8.24 - default y 8.25 - 8.26 -config GENERIC_ISA_DMA 8.27 - bool 8.28 - default y 8.29 - 8.30 -config GENERIC_IOMAP 8.31 - bool 8.32 - default y 8.33 - 8.34 -choice 8.35 - prompt "Processor family" 8.36 - default M686 8.37 - 8.38 -#config M386 8.39 -# bool "386" 8.40 -# ---help--- 8.41 -# This is the processor type of your CPU. This information is used for 8.42 -# optimizing purposes. In order to compile a kernel that can run on 8.43 -# all x86 CPU types (albeit not optimally fast), you can specify 8.44 -# "386" here. 8.45 -# 8.46 -# The kernel will not necessarily run on earlier architectures than 8.47 -# the one you have chosen, e.g. a Pentium optimized kernel will run on 8.48 -# a PPro, but not necessarily on a i486. 8.49 -# 8.50 -# Here are the settings recommended for greatest speed: 8.51 -# - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 8.52 -# 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels 8.53 -# will run on a 386 class machine. 8.54 -# - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or 8.55 -# SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. 8.56 -# - "586" for generic Pentium CPUs lacking the TSC 8.57 -# (time stamp counter) register. 8.58 -# - "Pentium-Classic" for the Intel Pentium. 8.59 -# - "Pentium-MMX" for the Intel Pentium MMX. 8.60 -# - "Pentium-Pro" for the Intel Pentium Pro. 8.61 -# - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron. 8.62 -# - "Pentium-III" for the Intel Pentium III or Coppermine Celeron. 8.63 -# - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron. 8.64 -# - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). 8.65 -# - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). 8.66 -# - "Crusoe" for the Transmeta Crusoe series. 8.67 -# - "Efficeon" for the Transmeta Efficeon series. 8.68 -# - "Winchip-C6" for original IDT Winchip. 8.69 -# - "Winchip-2" for IDT Winchip 2. 8.70 -# - "Winchip-2A" for IDT Winchips with 3dNow! capabilities. 8.71 -# - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3. 8.72 -# - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above). 8.73 -# 8.74 -# If you don't know what to do, choose "386". 8.75 - 8.76 -#config M486 8.77 -# bool "486" 8.78 -# help 8.79 -# Select this for a 486 series processor, either Intel or one of the 8.80 -# compatible processors from AMD, Cyrix, IBM, or Intel. Includes DX, 8.81 -# DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or 8.82 -# U5S. 8.83 - 8.84 -#config M586 8.85 -# bool "586/K5/5x86/6x86/6x86MX" 8.86 -# help 8.87 -# Select this for an 586 or 686 series processor such as the AMD K5, 8.88 -# the Intel 5x86 or 6x86, or the Intel 6x86MX. This choice does not 8.89 -# assume the RDTSC (Read Time Stamp Counter) instruction. 8.90 - 8.91 -#config M586TSC 8.92 -# bool "Pentium-Classic" 8.93 -# help 8.94 -# Select this for a Pentium Classic processor with the RDTSC (Read 8.95 -# Time Stamp Counter) instruction for benchmarking. 8.96 - 8.97 -#config M586MMX 8.98 -# bool "Pentium-MMX" 8.99 -# help 8.100 -# Select this for a Pentium with the MMX graphics/multimedia 8.101 -# extended instructions. 8.102 - 8.103 -config M686 8.104 - bool "Pentium-Pro" 8.105 - help 8.106 - Select this for Intel Pentium Pro chips. This enables the use of 8.107 - Pentium Pro extended instructions, and disables the init-time guard 8.108 - against the f00f bug found in earlier Pentiums. 8.109 - 8.110 -config MPENTIUMII 8.111 - bool "Pentium-II/Celeron(pre-Coppermine)" 8.112 - help 8.113 - Select this for Intel chips based on the Pentium-II and 8.114 - pre-Coppermine Celeron core. This option enables an unaligned 8.115 - copy optimization, compiles the kernel with optimization flags 8.116 - tailored for the chip, and applies any applicable Pentium Pro 8.117 - optimizations. 8.118 - 8.119 -config MPENTIUMIII 8.120 - bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon" 8.121 - help 8.122 - Select this for Intel chips based on the Pentium-III and 8.123 - Celeron-Coppermine core. This option enables use of some 8.124 - extended prefetch instructions in addition to the Pentium II 8.125 - extensions. 8.126 - 8.127 -config MPENTIUMM 8.128 - bool "Pentium M" 8.129 - help 8.130 - Select this for Intel Pentium M (not Pentium-4 M) 8.131 - notebook chips. 8.132 - 8.133 -config MPENTIUM4 8.134 - bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon" 8.135 - help 8.136 - Select this for Intel Pentium 4 chips. This includes the 8.137 - Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M 8.138 - (not Pentium M) chips. This option enables compile flags 8.139 - optimized for the chip, uses the correct cache shift, and 8.140 - applies any applicable Pentium III optimizations. 8.141 - 8.142 -config MK6 8.143 - bool "K6/K6-II/K6-III" 8.144 - help 8.145 - Select this for an AMD K6-family processor. Enables use of 8.146 - some extended instructions, and passes appropriate optimization 8.147 - flags to GCC. 8.148 - 8.149 -config MK7 8.150 - bool "Athlon/Duron/K7" 8.151 - help 8.152 - Select this for an AMD Athlon K7-family processor. Enables use of 8.153 - some extended instructions, and passes appropriate optimization 8.154 - flags to GCC. 8.155 - 8.156 -config MK8 8.157 - bool "Opteron/Athlon64/Hammer/K8" 8.158 - help 8.159 - Select this for an AMD Opteron or Athlon64 Hammer-family processor. Enables 8.160 - use of some extended instructions, and passes appropriate optimization 8.161 - flags to GCC. 8.162 - 8.163 -config MCRUSOE 8.164 - bool "Crusoe" 8.165 - help 8.166 - Select this for a Transmeta Crusoe processor. Treats the processor 8.167 - like a 586 with TSC, and sets some GCC optimization flags (like a 8.168 - Pentium Pro with no alignment requirements). 8.169 - 8.170 -#config MEFFICEON 8.171 -# bool "Efficeon" 8.172 -# help 8.173 -# Select this for a Transmeta Efficeon processor. 8.174 - 8.175 -#config MWINCHIPC6 8.176 -# bool "Winchip-C6" 8.177 -# help 8.178 -# Select this for an IDT Winchip C6 chip. Linux and GCC 8.179 -# treat this chip as a 586TSC with some extended instructions 8.180 -# and alignment requirements. 8.181 - 8.182 -#config MWINCHIP2 8.183 -# bool "Winchip-2" 8.184 -# help 8.185 -# Select this for an IDT Winchip-2. Linux and GCC 8.186 -# treat this chip as a 586TSC with some extended instructions 8.187 -# and alignment requirements. 8.188 - 8.189 -#config MWINCHIP3D 8.190 -# bool "Winchip-2A/Winchip-3" 8.191 -# help 8.192 -# Select this for an IDT Winchip-2A or 3. Linux and GCC 8.193 -# treat this chip as a 586TSC with some extended instructions 8.194 -# and alignment reqirements. Also enable out of order memory 8.195 -# stores for this CPU, which can increase performance of some 8.196 -# operations. 8.197 - 8.198 -config MCYRIXIII 8.199 - bool "CyrixIII/VIA-C3" 8.200 - help 8.201 - Select this for a Cyrix III or C3 chip. Presently Linux and GCC 8.202 - treat this chip as a generic 586. Whilst the CPU is 686 class, 8.203 - it lacks the cmov extension which gcc assumes is present when 8.204 - generating 686 code. 8.205 - Note that Nehemiah (Model 9) and above will not boot with this 8.206 - kernel due to them lacking the 3DNow! instructions used in earlier 8.207 - incarnations of the CPU. 8.208 - 8.209 -config MVIAC3_2 8.210 - bool "VIA C3-2 (Nehemiah)" 8.211 - help 8.212 - Select this for a VIA C3 "Nehemiah". Selecting this enables usage 8.213 - of SSE and tells gcc to treat the CPU as a 686. 8.214 - Note, this kernel will not boot on older (pre model 9) C3s. 8.215 - 8.216 -endchoice 8.217 - 8.218 -config X86_GENERIC 8.219 - bool "Generic x86 support" 8.220 - help 8.221 - Instead of just including optimizations for the selected 8.222 - x86 variant (e.g. PII, Crusoe or Athlon), include some more 8.223 - generic optimizations as well. This will make the kernel 8.224 - perform better on x86 CPUs other than that selected. 8.225 - 8.226 - This is really intended for distributors who need more 8.227 - generic optimizations. 8.228 - 8.229 -# 8.230 -# Define implied options from the CPU selection here 8.231 -# 8.232 -config X86_CMPXCHG 8.233 - bool 8.234 - depends on !M386 8.235 - default y 8.236 - 8.237 -config X86_XADD 8.238 - bool 8.239 - depends on !M386 8.240 - default y 8.241 - 8.242 -config X86_L1_CACHE_SHIFT 8.243 - int 8.244 - default "7" if MPENTIUM4 || X86_GENERIC 8.245 - default "4" if X86_ELAN || M486 || M386 8.246 - default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 8.247 - default "6" if MK7 || MK8 || MPENTIUMM 8.248 - 8.249 -config RWSEM_GENERIC_SPINLOCK 8.250 - bool 8.251 - depends on M386 8.252 - default y 8.253 - 8.254 -config RWSEM_XCHGADD_ALGORITHM 8.255 - bool 8.256 - depends on !M386 8.257 - default y 8.258 - 8.259 -config X86_PPRO_FENCE 8.260 - bool 8.261 - depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 8.262 - default y 8.263 - 8.264 -config X86_F00F_BUG 8.265 - bool 8.266 - depends on M586MMX || M586TSC || M586 || M486 || M386 8.267 - default y 8.268 - 8.269 -config X86_WP_WORKS_OK 8.270 - bool 8.271 - depends on !M386 8.272 - default y 8.273 - 8.274 -config X86_INVLPG 8.275 - bool 8.276 - depends on !M386 8.277 - default y 8.278 - 8.279 -config X86_BSWAP 8.280 - bool 8.281 - depends on !M386 8.282 - default y 8.283 - 8.284 -config X86_POPAD_OK 8.285 - bool 8.286 - depends on !M386 8.287 - default y 8.288 - 8.289 -config X86_ALIGNMENT_16 8.290 - bool 8.291 - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 8.292 - default y 8.293 - 8.294 -config X86_GOOD_APIC 8.295 - bool 8.296 - depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON 8.297 - default y 8.298 - 8.299 -config X86_INTEL_USERCOPY 8.300 - bool 8.301 - depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON 8.302 - default y 8.303 - 8.304 -config X86_USE_PPRO_CHECKSUM 8.305 - bool 8.306 - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON 8.307 - default y 8.308 - 8.309 -config X86_USE_3DNOW 8.310 - bool 8.311 - depends on MCYRIXIII || MK7 8.312 - default y 8.313 - 8.314 -config X86_OOSTORE 8.315 - bool 8.316 - depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR 8.317 - default y 8.318 - 8.319 -config HPET_TIMER 8.320 - bool 8.321 - default n 8.322 -#config HPET_TIMER 8.323 -# bool "HPET Timer Support" 8.324 -# help 8.325 -# This enables the use of the HPET for the kernel's internal timer. 8.326 -# HPET is the next generation timer replacing legacy 8254s. 8.327 -# You can safely choose Y here. However, HPET will only be 8.328 -# activated if the platform and the BIOS support this feature. 8.329 -# Otherwise the 8254 will be used for timing services. 8.330 -# 8.331 -# Choose N to continue using the legacy 8254 timer. 8.332 - 8.333 -config HPET_EMULATE_RTC 8.334 - def_bool HPET_TIMER && RTC=y 8.335 - 8.336 -config SMP 8.337 - bool 8.338 - default n 8.339 -#config SMP 8.340 -# bool "Symmetric multi-processing support" 8.341 -# ---help--- 8.342 -# This enables support for systems with more than one CPU. If you have 8.343 -# a system with only one CPU, like most personal computers, say N. If 8.344 -# you have a system with more than one CPU, say Y. 8.345 -# 8.346 -# If you say N here, the kernel will run on single and multiprocessor 8.347 -# machines, but will use only one CPU of a multiprocessor machine. If 8.348 -# you say Y here, the kernel will run on many, but not all, 8.349 -# singleprocessor machines. On a singleprocessor machine, the kernel 8.350 -# will run faster if you say N here. 8.351 -# 8.352 -# Note that if you say Y here and choose architecture "586" or 8.353 -# "Pentium" under "Processor family", the kernel will not work on 486 8.354 -# architectures. Similarly, multiprocessor kernels for the "PPro" 8.355 -# architecture may not work on all Pentium based boards. 8.356 -# 8.357 -# People using multiprocessor machines who say Y here should also say 8.358 -# Y to "Enhanced Real Time Clock Support", below. The "Advanced Power 8.359 -# Management" code will be disabled if you say Y here. 8.360 -# 8.361 -# See also the <file:Documentation/smp.txt>, 8.362 -# <file:Documentation/i386/IO-APIC.txt>, 8.363 -# <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at 8.364 -# <http://www.tldp.org/docs.html#howto>. 8.365 -# 8.366 -# If you don't know what to do here, say N. 8.367 - 8.368 -config NR_CPUS 8.369 - int "Maximum number of CPUs (2-255)" 8.370 - range 2 255 8.371 - depends on SMP 8.372 - default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 8.373 - default "8" 8.374 - help 8.375 - This allows you to specify the maximum number of CPUs which this 8.376 - kernel will support. The maximum supported value is 255 and the 8.377 - minimum value which makes sense is 2. 8.378 - 8.379 - This is purely to save memory - each supported CPU adds 8.380 - approximately eight kilobytes to the kernel image. 8.381 - 8.382 -config SCHED_SMT 8.383 - bool "SMT (Hyperthreading) scheduler support" 8.384 - depends on SMP 8.385 - default off 8.386 - help 8.387 - SMT scheduler support improves the CPU scheduler's decision making 8.388 - when dealing with Intel Pentium 4 chips with HyperThreading at a 8.389 - cost of slightly increased overhead in some places. If unsure say 8.390 - N here. 8.391 - 8.392 -config PREEMPT 8.393 - bool "Preemptible Kernel" 8.394 - help 8.395 - This option reduces the latency of the kernel when reacting to 8.396 - real-time or interactive events by allowing a low priority process to 8.397 - be preempted even if it is in kernel mode executing a system call. 8.398 - This allows applications to run more reliably even when the system is 8.399 - under load. 8.400 - 8.401 - Say Y here if you are building a kernel for a desktop, embedded 8.402 - or real-time system. Say N if you are unsure. 8.403 - 8.404 -#config X86_TSC 8.405 -# bool 8.406 -# depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ 8.407 -# default y 8.408 - 8.409 -#config X86_MCE 8.410 -# bool "Machine Check Exception" 8.411 -# depends on !X86_VOYAGER 8.412 -# ---help--- 8.413 -# Machine Check Exception support allows the processor to notify the 8.414 -# kernel if it detects a problem (e.g. overheating, component failure). 8.415 -# The action the kernel takes depends on the severity of the problem, 8.416 -# ranging from a warning message on the console, to halting the machine. 8.417 -# Your processor must be a Pentium or newer to support this - check the 8.418 -# flags in /proc/cpuinfo for mce. Note that some older Pentium systems 8.419 -# have a design flaw which leads to false MCE events - hence MCE is 8.420 -# disabled on all P5 processors, unless explicitly enabled with "mce" 8.421 -# as a boot argument. Similarly, if MCE is built in and creates a 8.422 -# problem on some new non-standard machine, you can boot with "nomce" 8.423 -# to disable it. MCE support simply ignores non-MCE processors like 8.424 -# the 386 and 486, so nearly everyone can say Y here. 8.425 - 8.426 -#config X86_MCE_NONFATAL 8.427 -# tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" 8.428 -# depends on X86_MCE 8.429 -# help 8.430 -# Enabling this feature starts a timer that triggers every 5 seconds which 8.431 -# will look at the machine check registers to see if anything happened. 8.432 -# Non-fatal problems automatically get corrected (but still logged). 8.433 -# Disable this if you don't want to see these messages. 8.434 -# Seeing the messages this option prints out may be indicative of dying hardware, 8.435 -# or out-of-spec (ie, overclocked) hardware. 8.436 -# This option only does something on certain CPUs. 8.437 -# (AMD Athlon/Duron and Intel Pentium 4) 8.438 - 8.439 -#config X86_MCE_P4THERMAL 8.440 -# bool "check for P4 thermal throttling interrupt." 8.441 -# depends on X86_MCE && (X86_UP_APIC || SMP) 8.442 -# help 8.443 -# Enabling this feature will cause a message to be printed when the P4 8.444 -# enters thermal throttling. 8.445 - 8.446 -#config MICROCODE 8.447 -# tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support" 8.448 -# ---help--- 8.449 -# If you say Y here and also to "/dev file system support" in the 8.450 -# 'File systems' section, you will be able to update the microcode on 8.451 -# Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II, 8.452 -# Pentium III, Pentium 4, Xeon etc. You will obviously need the 8.453 -# actual microcode binary data itself which is not shipped with the 8.454 -# Linux kernel. 8.455 -# 8.456 -# For latest news and information on obtaining all the required 8.457 -# ingredients for this driver, check: 8.458 -# <http://www.urbanmyth.org/microcode/>. 8.459 -# 8.460 -# To compile this driver as a module, choose M here: the 8.461 -# module will be called microcode. 8.462 - 8.463 -#config X86_MSR 8.464 -# tristate "/dev/cpu/*/msr - Model-specific register support" 8.465 -# help 8.466 -# This device gives privileged processes access to the x86 8.467 -# Model-Specific Registers (MSRs). It is a character device with 8.468 -# major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. 8.469 -# MSR accesses are directed to a specific CPU on multi-processor 8.470 -# systems. 8.471 - 8.472 -config X86_CPUID 8.473 - tristate "/dev/cpu/*/cpuid - CPU information support" 8.474 - help 8.475 - This device gives processes access to the x86 CPUID instruction to 8.476 - be executed on a specific processor. It is a character device 8.477 - with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 8.478 - /dev/cpu/31/cpuid. 8.479 - 8.480 -source "drivers/firmware/Kconfig" 8.481 - 8.482 -choice 8.483 - prompt "High Memory Support" 8.484 - default NOHIGHMEM 8.485 - 8.486 -config NOHIGHMEM 8.487 - bool "off" 8.488 - ---help--- 8.489 - Linux can use up to 64 Gigabytes of physical memory on x86 systems. 8.490 - However, the address space of 32-bit x86 processors is only 4 8.491 - Gigabytes large. That means that, if you have a large amount of 8.492 - physical memory, not all of it can be "permanently mapped" by the 8.493 - kernel. The physical memory that's not permanently mapped is called 8.494 - "high memory". 8.495 - 8.496 - If you are compiling a kernel which will never run on a machine with 8.497 - more than 1 Gigabyte total physical RAM, answer "off" here (default 8.498 - choice and suitable for most users). This will result in a "3GB/1GB" 8.499 - split: 3GB are mapped so that each process sees a 3GB virtual memory 8.500 - space and the remaining part of the 4GB virtual memory space is used 8.501 - by the kernel to permanently map as much physical memory as 8.502 - possible. 8.503 - 8.504 - If the machine has between 1 and 4 Gigabytes physical RAM, then 8.505 - answer "4GB" here. 8.506 - 8.507 - If more than 4 Gigabytes is used then answer "64GB" here. This 8.508 - selection turns Intel PAE (Physical Address Extension) mode on. 8.509 - PAE implements 3-level paging on IA32 processors. PAE is fully 8.510 - supported by Linux, PAE mode is implemented on all recent Intel 8.511 - processors (Pentium Pro and better). NOTE: If you say "64GB" here, 8.512 - then the kernel will not boot on CPUs that don't support PAE! 8.513 - 8.514 - The actual amount of total physical memory will either be 8.515 - auto detected or can be forced by using a kernel command line option 8.516 - such as "mem=256M". (Try "man bootparam" or see the documentation of 8.517 - your boot loader (lilo or loadlin) about how to pass options to the 8.518 - kernel at boot time.) 8.519 - 8.520 - If unsure, say "off". 8.521 - 8.522 -config HIGHMEM4G 8.523 - bool "4GB" 8.524 - help 8.525 - Select this if you have a 32-bit processor and between 1 and 4 8.526 - gigabytes of physical RAM. 8.527 - 8.528 -#config HIGHMEM64G 8.529 -# bool "64GB" 8.530 -# help 8.531 -# Select this if you have a 32-bit processor and more than 4 8.532 -# gigabytes of physical RAM. 8.533 - 8.534 -endchoice 8.535 - 8.536 -config HIGHMEM 8.537 - bool 8.538 - depends on HIGHMEM64G || HIGHMEM4G 8.539 - default y 8.540 - 8.541 -config X86_PAE 8.542 - bool 8.543 - depends on HIGHMEM64G 8.544 - default y 8.545 - 8.546 -# Common NUMA Features 8.547 -config NUMA 8.548 - bool "Numa Memory Allocation and Scheduler Support" 8.549 - depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI)) 8.550 - default n if X86_PC 8.551 - default y if (X86_NUMAQ || X86_SUMMIT) 8.552 - 8.553 -# Need comments to help the hapless user trying to turn on NUMA support 8.554 -comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" 8.555 - depends on X86_NUMAQ && (!HIGHMEM64G || !SMP) 8.556 - 8.557 -comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 8.558 - depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) 8.559 - 8.560 -config DISCONTIGMEM 8.561 - bool 8.562 - depends on NUMA 8.563 - default y 8.564 - 8.565 -config HAVE_ARCH_BOOTMEM_NODE 8.566 - bool 8.567 - depends on NUMA 8.568 - default y 8.569 - 8.570 -#config HIGHPTE 8.571 -# bool "Allocate 3rd-level pagetables from highmem" 8.572 -# depends on HIGHMEM4G || HIGHMEM64G 8.573 -# help 8.574 -# The VM uses one page table entry for each page of physical memory. 8.575 -# For systems with a lot of RAM, this can be wasteful of precious 8.576 -# low memory. Setting this option will put user-space page table 8.577 -# entries in high memory. 8.578 - 8.579 -config MTRR 8.580 - bool 8.581 - depends on XEN_PRIVILEGED_GUEST 8.582 - default y 8.583 - 8.584 -#config MTRR 8.585 -# bool "MTRR (Memory Type Range Register) support" 8.586 -# ---help--- 8.587 -# On Intel P6 family processors (Pentium Pro, Pentium II and later) 8.588 -# the Memory Type Range Registers (MTRRs) may be used to control 8.589 -# processor access to memory ranges. This is most useful if you have 8.590 -# a video (VGA) card on a PCI or AGP bus. Enabling write-combining 8.591 -# allows bus write transfers to be combined into a larger transfer 8.592 -# before bursting over the PCI/AGP bus. This can increase performance 8.593 -# of image write operations 2.5 times or more. Saying Y here creates a 8.594 -# /proc/mtrr file which may be used to manipulate your processor's 8.595 -# MTRRs. Typically the X server should use this. 8.596 -# 8.597 -# This code has a reasonably generic interface so that similar 8.598 -# control registers on other processors can be easily supported 8.599 -# as well: 8.600 -# 8.601 -# The Cyrix 6x86, 6x86MX and M II processors have Address Range 8.602 -# Registers (ARRs) which provide a similar functionality to MTRRs. For 8.603 -# these, the ARRs are used to emulate the MTRRs. 8.604 -# The AMD K6-2 (stepping 8 and above) and K6-3 processors have two 8.605 -# MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing 8.606 -# write-combining. All of these processors are supported by this code 8.607 -# and it makes sense to say Y here if you have one of them. 8.608 -# 8.609 -# Saying Y here also fixes a problem with buggy SMP BIOSes which only 8.610 -# set the MTRRs for the boot CPU and not for the secondary CPUs. This 8.611 -# can lead to all sorts of problems, so it's good to say Y here. 8.612 -# 8.613 -# You can safely say Y even if your machine doesn't have MTRRs, you'll 8.614 -# just add about 9 KB to your kernel. 8.615 -# 8.616 -# See <file:Documentation/mtrr.txt> for more information. 8.617 - 8.618 -config IRQBALANCE 8.619 - bool "Enable kernel irq balancing" 8.620 - depends on SMP && X86_IO_APIC 8.621 - default y 8.622 - help 8.623 - The default yes will allow the kernel to do irq load balancing. 8.624 - Saying no will keep the kernel from doing irq load balancing. 8.625 - 8.626 -config HAVE_DEC_LOCK 8.627 - bool 8.628 - depends on (SMP || PREEMPT) && X86_CMPXCHG 8.629 - default y 8.630 - 8.631 -# turning this on wastes a bunch of space. 8.632 -# Summit needs it only when NUMA is on 8.633 -config BOOT_IOREMAP 8.634 - bool 8.635 - depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI)) 8.636 - default y 8.637 - 8.638 -config REGPARM 8.639 - bool "Use register arguments (EXPERIMENTAL)" 8.640 - depends on EXPERIMENTAL 8.641 - default n 8.642 - help 8.643 - Compile the kernel with -mregparm=3. This uses an different ABI 8.644 - and passes the first three arguments of a function call in registers. 8.645 - This will probably break binary only modules. 8.646 - 8.647 - This feature is only enabled for gcc-3.0 and later - earlier compilers 8.648 - generate incorrect output with certain kernel constructs when 8.649 - -mregparm=3 is used. 8.650 - 8.651 - 8.652 -if XEN_PHYSDEV_ACCESS 8.653 - 8.654 -menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" 8.655 - 8.656 -config X86_VISWS_APIC 8.657 - bool 8.658 - depends on X86_VISWS 8.659 - default y 8.660 - 8.661 -config X86_LOCAL_APIC 8.662 - bool 8.663 - depends on (X86_VISWS || SMP) && !X86_VOYAGER 8.664 - default y 8.665 - 8.666 -config X86_IO_APIC 8.667 - bool 8.668 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 8.669 - default y 8.670 - 8.671 -config PCI 8.672 - bool "PCI support" if !X86_VISWS 8.673 - depends on !X86_VOYAGER 8.674 - default y if X86_VISWS 8.675 - help 8.676 - Find out whether you have a PCI motherboard. PCI is the name of a 8.677 - bus system, i.e. the way the CPU talks to the other stuff inside 8.678 - your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 8.679 - VESA. If you have PCI, say Y, otherwise N. 8.680 - 8.681 - The PCI-HOWTO, available from 8.682 - <http://www.tldp.org/docs.html#howto>, contains valuable 8.683 - information about which PCI hardware does work under Linux and which 8.684 - doesn't. 8.685 - 8.686 -#choice 8.687 -# prompt "PCI access mode" 8.688 -# depends on PCI && !X86_VISWS 8.689 -# default PCI_GOANY 8.690 -# ---help--- 8.691 -# On PCI systems, the BIOS can be used to detect the PCI devices and 8.692 -# determine their configuration. However, some old PCI motherboards 8.693 -# have BIOS bugs and may crash if this is done. Also, some embedded 8.694 -# PCI-based systems don't have any BIOS at all. Linux can also try to 8.695 -# detect the PCI hardware directly without using the BIOS. 8.696 -# 8.697 -# With this option, you can specify how Linux should detect the 8.698 -# PCI devices. If you choose "BIOS", the BIOS will be used, 8.699 -# if you choose "Direct", the BIOS won't be used, and if you 8.700 -# choose "MMConfig", then PCI Express MMCONFIG will be used. 8.701 -# If you choose "Any", the kernel will try MMCONFIG, then the 8.702 -# direct access method and falls back to the BIOS if that doesn't 8.703 -# work. If unsure, go with the default, which is "Any". 8.704 -# 8.705 -#config PCI_GOBIOS 8.706 -# bool "BIOS" 8.707 -# 8.708 -#config PCI_GOMMCONFIG 8.709 -# bool "MMConfig" 8.710 -# 8.711 -#config PCI_GODIRECT 8.712 -# bool "Direct" 8.713 -# 8.714 -#config PCI_GOANY 8.715 -# bool "Any" 8.716 -# 8.717 -#endchoice 8.718 -# 8.719 -#config PCI_BIOS 8.720 -# bool 8.721 -# depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY) 8.722 -# default y 8.723 -# 8.724 -#config PCI_DIRECT 8.725 -# bool 8.726 -# depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS) 8.727 -# default y 8.728 - 8.729 -config PCI_DIRECT 8.730 - bool 8.731 - depends on PCI 8.732 - default y 8.733 - 8.734 -source "drivers/pci/Kconfig" 8.735 - 8.736 -config ISA 8.737 - bool "ISA support" 8.738 - depends on !(X86_VOYAGER || X86_VISWS) 8.739 - help 8.740 - Find out whether you have ISA slots on your motherboard. ISA is the 8.741 - name of a bus system, i.e. the way the CPU talks to the other stuff 8.742 - inside your box. Other bus systems are PCI, EISA, MicroChannel 8.743 - (MCA) or VESA. ISA is an older system, now being displaced by PCI; 8.744 - newer boards don't support it. If you have ISA, say Y, otherwise N. 8.745 - 8.746 -config EISA 8.747 - bool "EISA support" 8.748 - depends on ISA 8.749 - ---help--- 8.750 - The Extended Industry Standard Architecture (EISA) bus was 8.751 - developed as an open alternative to the IBM MicroChannel bus. 8.752 - 8.753 - The EISA bus provided some of the features of the IBM MicroChannel 8.754 - bus while maintaining backward compatibility with cards made for 8.755 - the older ISA bus. The EISA bus saw limited use between 1988 and 8.756 - 1995 when it was made obsolete by the PCI bus. 8.757 - 8.758 - Say Y here if you are building a kernel for an EISA-based machine. 8.759 - 8.760 - Otherwise, say N. 8.761 - 8.762 -source "drivers/eisa/Kconfig" 8.763 - 8.764 -config MCA 8.765 - bool "MCA support" 8.766 - depends on !(X86_VISWS || X86_VOYAGER) 8.767 - help 8.768 - MicroChannel Architecture is found in some IBM PS/2 machines and 8.769 - laptops. It is a bus system similar to PCI or ISA. See 8.770 - <file:Documentation/mca.txt> (and especially the web page given 8.771 - there) before attempting to build an MCA bus kernel. 8.772 - 8.773 -config MCA 8.774 - depends on X86_VOYAGER 8.775 - default y if X86_VOYAGER 8.776 - 8.777 -source "drivers/mca/Kconfig" 8.778 - 8.779 -config SCx200 8.780 - tristate "NatSemi SCx200 support" 8.781 - depends on !X86_VOYAGER 8.782 - help 8.783 - This provides basic support for the National Semiconductor SCx200 8.784 - processor. Right now this is just a driver for the GPIO pins. 8.785 - 8.786 - If you don't know what to do here, say N. 8.787 - 8.788 - This support is also available as a module. If compiled as a 8.789 - module, it will be called scx200. 8.790 - 8.791 -source "drivers/pcmcia/Kconfig" 8.792 - 8.793 -source "drivers/pci/hotplug/Kconfig" 8.794 - 8.795 -endmenu 8.796 - 8.797 -endif 8.798 - 8.799 -menu "Kernel hacking" 8.800 - 8.801 -config DEBUG_KERNEL 8.802 - bool "Kernel debugging" 8.803 - help 8.804 - Say Y here if you are developing drivers or trying to debug and 8.805 - identify kernel problems. 8.806 - 8.807 -config EARLY_PRINTK 8.808 - bool "Early printk" if EMBEDDED 8.809 - default y 8.810 - help 8.811 - Write kernel log output directly into the VGA buffer or to a serial 8.812 - port. 8.813 - 8.814 - This is useful for kernel debugging when your machine crashes very 8.815 - early before the console code is initialized. For normal operation 8.816 - it is not recommended because it looks ugly and doesn't cooperate 8.817 - with klogd/syslogd or the X server. You should normally N here, 8.818 - unless you want to debug such a crash. 8.819 - 8.820 -config DEBUG_STACKOVERFLOW 8.821 - bool "Check for stack overflows" 8.822 - depends on DEBUG_KERNEL 8.823 - 8.824 -config DEBUG_STACK_USAGE 8.825 - bool "Stack utilization instrumentation" 8.826 - depends on DEBUG_KERNEL 8.827 - help 8.828 - Enables the display of the minimum amount of free stack which each 8.829 - task has ever had available in the sysrq-T and sysrq-P debug output. 8.830 - 8.831 - This option will slow down process creation somewhat. 8.832 - 8.833 -config DEBUG_SLAB 8.834 - bool "Debug memory allocations" 8.835 - depends on DEBUG_KERNEL 8.836 - help 8.837 - Say Y here to have the kernel do limited verification on memory 8.838 - allocation as well as poisoning memory on free to catch use of freed 8.839 - memory. 8.840 - 8.841 -config MAGIC_SYSRQ 8.842 - bool "Magic SysRq key" 8.843 - depends on DEBUG_KERNEL 8.844 - help 8.845 - If you say Y here, you will have some control over the system even 8.846 - if the system crashes for example during kernel debugging (e.g., you 8.847 - will be able to flush the buffer cache to disk, reboot the system 8.848 - immediately or dump some status information). This is accomplished 8.849 - by pressing various keys while holding SysRq (Alt+PrintScreen). It 8.850 - also works on a serial console (on PC hardware at least), if you 8.851 - send a BREAK and then within 5 seconds a command keypress. The 8.852 - keys are documented in <file:Documentation/sysrq.txt>. Don't say Y 8.853 - unless you really know what this hack does. 8.854 - 8.855 -config DEBUG_SPINLOCK 8.856 - bool "Spinlock debugging" 8.857 - depends on DEBUG_KERNEL 8.858 - help 8.859 - Say Y here and build SMP to catch missing spinlock initialization 8.860 - and certain other kinds of spinlock errors commonly made. This is 8.861 - best used in conjunction with the NMI watchdog so that spinlock 8.862 - deadlocks are also debuggable. 8.863 - 8.864 -config DEBUG_PAGEALLOC 8.865 - bool "Page alloc debugging" 8.866 - depends on DEBUG_KERNEL 8.867 - help 8.868 - Unmap pages from the kernel linear mapping after free_pages(). 8.869 - This results in a large slowdown, but helps to find certain types 8.870 - of memory corruptions. 8.871 - 8.872 -config DEBUG_HIGHMEM 8.873 - bool "Highmem debugging" 8.874 - depends on DEBUG_KERNEL && HIGHMEM 8.875 - help 8.876 - This options enables addition error checking for high memory systems. 8.877 - Disable for production systems. 8.878 - 8.879 -config DEBUG_INFO 8.880 - bool "Compile the kernel with debug info" 8.881 - depends on DEBUG_KERNEL 8.882 - help 8.883 - If you say Y here the resulting kernel image will include 8.884 - debugging info resulting in a larger kernel image. 8.885 - Say Y here only if you plan to use gdb to debug the kernel. 8.886 - If you don't debug the kernel, you can say N. 8.887 - 8.888 -config DEBUG_SPINLOCK_SLEEP 8.889 - bool "Sleep-inside-spinlock checking" 8.890 - help 8.891 - If you say Y here, various routines which may sleep will become very 8.892 - noisy if they are called with a spinlock held. 8.893 - 8.894 -config FRAME_POINTER 8.895 - bool "Compile the kernel with frame pointers" 8.896 - help 8.897 - If you say Y here the resulting kernel image will be slightly larger 8.898 - and slower, but it will give very useful debugging information. 8.899 - If you don't debug the kernel, you can say N, but we may not be able 8.900 - to solve problems without frame pointers. 8.901 - 8.902 -config 4KSTACKS 8.903 - bool "Use 4Kb for kernel stacks instead of 8Kb" 8.904 - help 8.905 - If you say Y here the kernel will use a 4Kb stacksize for the 8.906 - kernel stack attached to each process/thread. This facilitates 8.907 - running more threads on a system and also reduces the pressure 8.908 - on the VM subsystem for higher order allocations. This option 8.909 - will also use IRQ stacks to compensate for the reduced stackspace. 8.910 - 8.911 -config X86_FIND_SMP_CONFIG 8.912 - bool 8.913 - depends on X86_LOCAL_APIC || X86_VOYAGER 8.914 - default y 8.915 - 8.916 -config X86_MPPARSE 8.917 - bool 8.918 - depends on X86_LOCAL_APIC && !X86_VISWS 8.919 - default y 8.920 - 8.921 -endmenu 8.922 - 8.923 -# 8.924 -# Use the generic interrupt handling code in kernel/irq/: 8.925 -# 8.926 -config GENERIC_HARDIRQS 8.927 - bool 8.928 - default y 8.929 - 8.930 -config GENERIC_IRQ_PROBE 8.931 - bool 8.932 - default y 8.933 - 8.934 -config X86_SMP 8.935 - bool 8.936 - depends on SMP && !X86_VOYAGER 8.937 - default y 8.938 - 8.939 -config X86_HT 8.940 - bool 8.941 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 8.942 - default y 8.943 - 8.944 -config X86_BIOS_REBOOT 8.945 - bool 8.946 - depends on !(X86_VISWS || X86_VOYAGER) 8.947 - default y 8.948 - 8.949 -config X86_TRAMPOLINE 8.950 - bool 8.951 - depends on X86_SMP || (X86_VOYAGER && SMP) 8.952 - default y 8.953 - 8.954 -config PC 8.955 - bool 8.956 - depends on X86 && !EMBEDDED 8.957 - default y 8.958 - 8.959 -endmenu
9.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile Tue Dec 07 19:17:22 2004 +0000 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,99 +0,0 @@ 9.4 -# 9.5 -# i386/Makefile 9.6 -# 9.7 -# This file is included by the global makefile so that you can add your own 9.8 -# architecture-specific flags and dependencies. Remember to do have actions 9.9 -# for "archclean" cleaning up for this architecture. 9.10 -# 9.11 -# This file is subject to the terms and conditions of the GNU General Public 9.12 -# License. See the file "COPYING" in the main directory of this archive 9.13 -# for more details. 9.14 -# 9.15 -# Copyright (C) 1994 by Linus Torvalds 9.16 -# 9.17 -# 19990713 Artur Skawina <skawina@geocities.com> 9.18 -# Added '-march' and '-mpreferred-stack-boundary' support 9.19 -# 9.20 - 9.21 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 9.22 - 9.23 -LDFLAGS := -m elf_i386 9.24 -LDFLAGS_vmlinux := 9.25 -CHECK := $(CHECK) -D__i386__=1 9.26 - 9.27 -CFLAGS += -pipe -msoft-float 9.28 - 9.29 -# prevent gcc from keeping the stack 16 byte aligned 9.30 -CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,) 9.31 - 9.32 -align := $(cc-option-align) 9.33 -cflags-$(CONFIG_M386) += -march=i386 9.34 -cflags-$(CONFIG_M486) += -march=i486 9.35 -cflags-$(CONFIG_M586) += -march=i586 9.36 -cflags-$(CONFIG_M586TSC) += -march=i586 9.37 -cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586) 9.38 -cflags-$(CONFIG_M686) += -march=i686 9.39 -cflags-$(CONFIG_MPENTIUMII) += $(call cc-option,-march=pentium2,-march=i686) 9.40 -cflags-$(CONFIG_MPENTIUMIII) += $(call cc-option,-march=pentium3,-march=i686) 9.41 -cflags-$(CONFIG_MPENTIUMM) += $(call cc-option,-march=pentium3,-march=i686) 9.42 -cflags-$(CONFIG_MPENTIUM4) += $(call cc-option,-march=pentium4,-march=i686) 9.43 -cflags-$(CONFIG_MK6) += -march=k6 9.44 -# Please note, that patches that add -march=athlon-xp and friends are pointless. 9.45 -# They make zero difference whatsosever to performance at this time. 9.46 -cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4) 9.47 -cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)) 9.48 -cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.49 -cflags-$(CONFIG_MEFFICEON) += $(call cc-option,-march=pentium3,-march=i686) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.50 -cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586) 9.51 -cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586) 9.52 -cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586) 9.53 -cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.54 -cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686) 9.55 - 9.56 -# AMD Elan support 9.57 -cflags-$(CONFIG_X86_ELAN) += -march=i486 9.58 - 9.59 -# -mregparm=3 works ok on gcc-3.0 and later 9.60 -# 9.61 -GCC_VERSION := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) 9.62 -cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) 9.63 - 9.64 -# Disable unit-at-a-time mode, it makes gcc use a lot more stack 9.65 -# due to the lack of sharing of stacklots. 9.66 -CFLAGS += $(call cc-option,-fno-unit-at-a-time,) 9.67 - 9.68 -CFLAGS += $(cflags-y) 9.69 - 9.70 -head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o 9.71 - 9.72 -libs-y += arch/i386/lib/ 9.73 -core-y += arch/xen/i386/kernel/ \ 9.74 - arch/xen/i386/mm/ \ 9.75 - arch/i386/crypto/ 9.76 -# \ 9.77 -# arch/xen/$(mcore-y)/ 9.78 -drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ 9.79 -drivers-$(CONFIG_PCI) += arch/xen/i386/pci/ 9.80 -# must be linked after kernel/ 9.81 -drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ 9.82 -drivers-$(CONFIG_PM) += arch/i386/power/ 9.83 - 9.84 -# for clean 9.85 -obj- += kernel/ mm/ pci/ 9.86 -#obj- += ../../i386/lib/ ../../i386/mm/ 9.87 -#../../i386/$(mcore-y)/ 9.88 -#obj- += ../../i386/pci/ ../../i386/oprofile/ ../../i386/power/ 9.89 - 9.90 -xenflags-y += -Iinclude/asm-xen/asm-i386/mach-xen \ 9.91 - -Iinclude/asm-i386/mach-default 9.92 -CFLAGS += $(xenflags-y) 9.93 -AFLAGS += $(xenflags-y) 9.94 - 9.95 -prepare: include/asm-$(XENARCH)/asm_offsets.h 9.96 -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h 9.97 - 9.98 -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \ 9.99 - include/linux/version.h include/config/MARKER 9.100 - 9.101 -include/asm-$(XENARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s 9.102 - $(call filechk,gen-asm-offsets)
10.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile Tue Dec 07 19:17:22 2004 +0000 10.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 10.3 @@ -1,90 +0,0 @@ 10.4 -# 10.5 -# Makefile for the linux kernel. 10.6 -# 10.7 - 10.8 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 10.9 - 10.10 -CFLAGS += -Iarch/$(XENARCH)/kernel 10.11 - 10.12 -extra-y := head.o init_task.o 10.13 - 10.14 -obj-y := process.o signal.o entry.o traps.o \ 10.15 - time.o ioport.o ldt.o setup.o \ 10.16 - pci-dma.o i386_ksyms.o 10.17 - 10.18 -c-obj-y := semaphore.o irq.o vm86.o \ 10.19 - ptrace.o sys_i386.o \ 10.20 - i387.o dmi_scan.o bootflag.o \ 10.21 - doublefault.o quirks.o 10.22 -s-obj-y := 10.23 - 10.24 -obj-y += cpu/ 10.25 -obj-y += timers/ 10.26 -c-obj-$(CONFIG_ACPI_BOOT) += acpi/ 10.27 -#c-obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o 10.28 -c-obj-$(CONFIG_MCA) += mca.o 10.29 -c-obj-$(CONFIG_X86_MSR) += msr.o 10.30 -c-obj-$(CONFIG_X86_CPUID) += cpuid.o 10.31 -c-obj-$(CONFIG_MICROCODE) += microcode.o 10.32 -c-obj-$(CONFIG_APM) += apm.o 10.33 -c-obj-$(CONFIG_X86_SMP) += smp.o smpboot.o 10.34 -c-obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o 10.35 -c-obj-$(CONFIG_X86_MPPARSE) += mpparse.o 10.36 -c-obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o 10.37 -c-obj-$(CONFIG_X86_IO_APIC) += io_apic.o 10.38 -c-obj-$(CONFIG_X86_NUMAQ) += numaq.o 10.39 -c-obj-$(CONFIG_X86_SUMMIT_NUMA) += summit.o 10.40 -c-obj-$(CONFIG_MODULES) += module.o 10.41 -c-obj-y += sysenter.o 10.42 -obj-y += vsyscall.o 10.43 -c-obj-$(CONFIG_ACPI_SRAT) += srat.o 10.44 -c-obj-$(CONFIG_HPET_TIMER) += time_hpet.o 10.45 -c-obj-$(CONFIG_EFI) += efi.o efi_stub.o 10.46 -c-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 10.47 - 10.48 -EXTRA_AFLAGS := -traditional 10.49 - 10.50 -c-obj-$(CONFIG_SCx200) += scx200.o 10.51 - 10.52 -# vsyscall.o contains the vsyscall DSO images as __initdata. 10.53 -# We must build both images before we can assemble it. 10.54 -# Note: kbuild does not track this dependency due to usage of .incbin 10.55 -$(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so 10.56 -targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) 10.57 - 10.58 -# The DSO images are built using a special linker script. 10.59 -quiet_cmd_syscall = SYSCALL $@ 10.60 - cmd_syscall = $(CC) -nostdlib $(SYSCFLAGS_$(@F)) \ 10.61 - -Wl,-T,$(filter-out FORCE,$^) -o $@ 10.62 - 10.63 -vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 10.64 -SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) 10.65 -SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) 10.66 - 10.67 -$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ 10.68 -$(obj)/vsyscall-%.so: $(obj)/vsyscall.lds $(obj)/vsyscall-%.o FORCE 10.69 - $(call if_changed,syscall) 10.70 - 10.71 -# We also create a special relocatable object that should mirror the symbol 10.72 -# table and layout of the linked DSO. With ld -R we can then refer to 10.73 -# these symbols in the kernel code rather than hand-coded addresses. 10.74 -extra-y += vsyscall-syms.o 10.75 -$(obj)/built-in.o: $(obj)/vsyscall-syms.o 10.76 -$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o 10.77 - 10.78 -SYSCFLAGS_vsyscall-syms.o = -r 10.79 -$(obj)/vsyscall-syms.o: $(obj)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE 10.80 - $(call if_changed,syscall) 10.81 - 10.82 -c-link := init_task.o 10.83 -s-link := vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o 10.84 - 10.85 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): 10.86 - @ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@ 10.87 - 10.88 -$(obj)/vsyscall-int80.S: $(obj)/vsyscall-sigreturn.S 10.89 - 10.90 -obj-y += $(c-obj-y) $(s-obj-y) 10.91 - 10.92 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) 10.93 -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link))
11.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile Tue Dec 07 19:17:22 2004 +0000 11.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 11.3 @@ -1,31 +0,0 @@ 11.4 -# 11.5 -# Makefile for x86-compatible CPU details and quirks 11.6 -# 11.7 - 11.8 -CFLAGS += -Iarch/i386/kernel/cpu 11.9 - 11.10 -obj-y := common.o 11.11 -c-obj-y += proc.o 11.12 - 11.13 -c-obj-y += amd.o 11.14 -c-obj-y += cyrix.o 11.15 -c-obj-y += centaur.o 11.16 -c-obj-y += transmeta.o 11.17 -c-obj-y += intel.o intel_cacheinfo.o 11.18 -c-obj-y += rise.o 11.19 -c-obj-y += nexgen.o 11.20 -c-obj-y += umc.o 11.21 - 11.22 -#obj-$(CONFIG_X86_MCE) += ../../../../i386/kernel/cpu/mcheck/ 11.23 - 11.24 -obj-$(CONFIG_MTRR) += mtrr/ 11.25 -#obj-$(CONFIG_CPU_FREQ) += ../../../../i386/kernel/cpu/cpufreq/ 11.26 - 11.27 -c-link := 11.28 - 11.29 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): 11.30 - @ln -fsn $(srctree)/arch/i386/kernel/cpu/$(notdir $@) $@ 11.31 - 11.32 -obj-y += $(c-obj-y) 11.33 - 11.34 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
12.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c Tue Dec 07 19:17:22 2004 +0000 12.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 12.3 @@ -1,606 +0,0 @@ 12.4 -#include <linux/init.h> 12.5 -#include <linux/string.h> 12.6 -#include <linux/delay.h> 12.7 -#include <linux/smp.h> 12.8 -#include <linux/module.h> 12.9 -#include <linux/percpu.h> 12.10 -#include <asm/semaphore.h> 12.11 -#include <asm/processor.h> 12.12 -#include <asm/i387.h> 12.13 -#include <asm/msr.h> 12.14 -#include <asm/io.h> 12.15 -#include <asm/mmu_context.h> 12.16 -#include <asm-xen/hypervisor.h> 12.17 - 12.18 -#include "cpu.h" 12.19 - 12.20 -DEFINE_PER_CPU(struct desc_struct, cpu_gdt_table[GDT_ENTRIES]); 12.21 -EXPORT_PER_CPU_SYMBOL(cpu_gdt_table); 12.22 - 12.23 -static int cachesize_override __initdata = -1; 12.24 -static int disable_x86_fxsr __initdata = 0; 12.25 -static int disable_x86_serial_nr __initdata = 1; 12.26 - 12.27 -struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; 12.28 - 12.29 -extern void mcheck_init(struct cpuinfo_x86 *c); 12.30 - 12.31 -extern void machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c); 12.32 - 12.33 -extern int disable_pse; 12.34 - 12.35 -static void default_init(struct cpuinfo_x86 * c) 12.36 -{ 12.37 - /* Not much we can do here... */ 12.38 - /* Check if at least it has cpuid */ 12.39 - if (c->cpuid_level == -1) { 12.40 - /* No cpuid. It must be an ancient CPU */ 12.41 - if (c->x86 == 4) 12.42 - strcpy(c->x86_model_id, "486"); 12.43 - else if (c->x86 == 3) 12.44 - strcpy(c->x86_model_id, "386"); 12.45 - } 12.46 -} 12.47 - 12.48 -static struct cpu_dev default_cpu = { 12.49 - .c_init = default_init, 12.50 -}; 12.51 -static struct cpu_dev * this_cpu = &default_cpu; 12.52 - 12.53 -static int __init cachesize_setup(char *str) 12.54 -{ 12.55 - get_option (&str, &cachesize_override); 12.56 - return 1; 12.57 -} 12.58 -__setup("cachesize=", cachesize_setup); 12.59 - 12.60 -int __init get_model_name(struct cpuinfo_x86 *c) 12.61 -{ 12.62 - unsigned int *v; 12.63 - char *p, *q; 12.64 - 12.65 - if (cpuid_eax(0x80000000) < 0x80000004) 12.66 - return 0; 12.67 - 12.68 - v = (unsigned int *) c->x86_model_id; 12.69 - cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); 12.70 - cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); 12.71 - cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); 12.72 - c->x86_model_id[48] = 0; 12.73 - 12.74 - /* Intel chips right-justify this string for some dumb reason; 12.75 - undo that brain damage */ 12.76 - p = q = &c->x86_model_id[0]; 12.77 - while ( *p == ' ' ) 12.78 - p++; 12.79 - if ( p != q ) { 12.80 - while ( *p ) 12.81 - *q++ = *p++; 12.82 - while ( q <= &c->x86_model_id[48] ) 12.83 - *q++ = '\0'; /* Zero-pad the rest */ 12.84 - } 12.85 - 12.86 - return 1; 12.87 -} 12.88 - 12.89 - 12.90 -void __init display_cacheinfo(struct cpuinfo_x86 *c) 12.91 -{ 12.92 - unsigned int n, dummy, ecx, edx, l2size; 12.93 - 12.94 - n = cpuid_eax(0x80000000); 12.95 - 12.96 - if (n >= 0x80000005) { 12.97 - cpuid(0x80000005, &dummy, &dummy, &ecx, &edx); 12.98 - printk(KERN_INFO "CPU: L1 I Cache: %dK (%d bytes/line), D cache %dK (%d bytes/line)\n", 12.99 - edx>>24, edx&0xFF, ecx>>24, ecx&0xFF); 12.100 - c->x86_cache_size=(ecx>>24)+(edx>>24); 12.101 - } 12.102 - 12.103 - if (n < 0x80000006) /* Some chips just has a large L1. */ 12.104 - return; 12.105 - 12.106 - ecx = cpuid_ecx(0x80000006); 12.107 - l2size = ecx >> 16; 12.108 - 12.109 - /* do processor-specific cache resizing */ 12.110 - if (this_cpu->c_size_cache) 12.111 - l2size = this_cpu->c_size_cache(c,l2size); 12.112 - 12.113 - /* Allow user to override all this if necessary. */ 12.114 - if (cachesize_override != -1) 12.115 - l2size = cachesize_override; 12.116 - 12.117 - if ( l2size == 0 ) 12.118 - return; /* Again, no L2 cache is possible */ 12.119 - 12.120 - c->x86_cache_size = l2size; 12.121 - 12.122 - printk(KERN_INFO "CPU: L2 Cache: %dK (%d bytes/line)\n", 12.123 - l2size, ecx & 0xFF); 12.124 -} 12.125 - 12.126 -/* Naming convention should be: <Name> [(<Codename>)] */ 12.127 -/* This table only is used unless init_<vendor>() below doesn't set it; */ 12.128 -/* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */ 12.129 - 12.130 -/* Look up CPU names by table lookup. */ 12.131 -static char __init *table_lookup_model(struct cpuinfo_x86 *c) 12.132 -{ 12.133 - struct cpu_model_info *info; 12.134 - 12.135 - if ( c->x86_model >= 16 ) 12.136 - return NULL; /* Range check */ 12.137 - 12.138 - if (!this_cpu) 12.139 - return NULL; 12.140 - 12.141 - info = this_cpu->c_models; 12.142 - 12.143 - while (info && info->family) { 12.144 - if (info->family == c->x86) 12.145 - return info->model_names[c->x86_model]; 12.146 - info++; 12.147 - } 12.148 - return NULL; /* Not found */ 12.149 -} 12.150 - 12.151 - 12.152 -void __init get_cpu_vendor(struct cpuinfo_x86 *c, int early) 12.153 -{ 12.154 - char *v = c->x86_vendor_id; 12.155 - int i; 12.156 - 12.157 - for (i = 0; i < X86_VENDOR_NUM; i++) { 12.158 - if (cpu_devs[i]) { 12.159 - if (!strcmp(v,cpu_devs[i]->c_ident[0]) || 12.160 - (cpu_devs[i]->c_ident[1] && 12.161 - !strcmp(v,cpu_devs[i]->c_ident[1]))) { 12.162 - c->x86_vendor = i; 12.163 - if (!early) 12.164 - this_cpu = cpu_devs[i]; 12.165 - break; 12.166 - } 12.167 - } 12.168 - } 12.169 -} 12.170 - 12.171 - 12.172 -static int __init x86_fxsr_setup(char * s) 12.173 -{ 12.174 - disable_x86_fxsr = 1; 12.175 - return 1; 12.176 -} 12.177 -__setup("nofxsr", x86_fxsr_setup); 12.178 - 12.179 - 12.180 -/* Standard macro to see if a specific flag is changeable */ 12.181 -static inline int flag_is_changeable_p(u32 flag) 12.182 -{ 12.183 - u32 f1, f2; 12.184 - 12.185 - asm("pushfl\n\t" 12.186 - "pushfl\n\t" 12.187 - "popl %0\n\t" 12.188 - "movl %0,%1\n\t" 12.189 - "xorl %2,%0\n\t" 12.190 - "pushl %0\n\t" 12.191 - "popfl\n\t" 12.192 - "pushfl\n\t" 12.193 - "popl %0\n\t" 12.194 - "popfl\n\t" 12.195 - : "=&r" (f1), "=&r" (f2) 12.196 - : "ir" (flag)); 12.197 - 12.198 - return ((f1^f2) & flag) != 0; 12.199 -} 12.200 - 12.201 - 12.202 -/* Probe for the CPUID instruction */ 12.203 -int __init have_cpuid_p(void) 12.204 -{ 12.205 - return flag_is_changeable_p(X86_EFLAGS_ID); 12.206 -} 12.207 - 12.208 -/* Do minimum CPU detection early. 12.209 - Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment. 12.210 - The others are not touched to avoid unwanted side effects. */ 12.211 -void __init early_cpu_detect(void) 12.212 -{ 12.213 - struct cpuinfo_x86 *c = &boot_cpu_data; 12.214 - 12.215 - c->x86_cache_alignment = 32; 12.216 - 12.217 - if (!have_cpuid_p()) 12.218 - return; 12.219 - 12.220 - /* Get vendor name */ 12.221 - cpuid(0x00000000, &c->cpuid_level, 12.222 - (int *)&c->x86_vendor_id[0], 12.223 - (int *)&c->x86_vendor_id[8], 12.224 - (int *)&c->x86_vendor_id[4]); 12.225 - 12.226 - get_cpu_vendor(c, 1); 12.227 - 12.228 - c->x86 = 4; 12.229 - if (c->cpuid_level >= 0x00000001) { 12.230 - u32 junk, tfms, cap0, misc; 12.231 - cpuid(0x00000001, &tfms, &misc, &junk, &cap0); 12.232 - c->x86 = (tfms >> 8) & 15; 12.233 - c->x86_model = (tfms >> 4) & 15; 12.234 - if (c->x86 == 0xf) { 12.235 - c->x86 += (tfms >> 20) & 0xff; 12.236 - c->x86_model += ((tfms >> 16) & 0xF) << 4; 12.237 - } 12.238 - c->x86_mask = tfms & 15; 12.239 - if (cap0 & (1<<19)) 12.240 - c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8; 12.241 - } 12.242 - 12.243 - early_intel_workaround(c); 12.244 -} 12.245 - 12.246 -void __init generic_identify(struct cpuinfo_x86 * c) 12.247 -{ 12.248 - u32 tfms, xlvl; 12.249 - int junk; 12.250 - 12.251 - if (have_cpuid_p()) { 12.252 - /* Get vendor name */ 12.253 - cpuid(0x00000000, &c->cpuid_level, 12.254 - (int *)&c->x86_vendor_id[0], 12.255 - (int *)&c->x86_vendor_id[8], 12.256 - (int *)&c->x86_vendor_id[4]); 12.257 - 12.258 - get_cpu_vendor(c, 0); 12.259 - /* Initialize the standard set of capabilities */ 12.260 - /* Note that the vendor-specific code below might override */ 12.261 - 12.262 - /* Intel-defined flags: level 0x00000001 */ 12.263 - if ( c->cpuid_level >= 0x00000001 ) { 12.264 - u32 capability, excap; 12.265 - cpuid(0x00000001, &tfms, &junk, &excap, &capability); 12.266 - c->x86_capability[0] = capability; 12.267 - c->x86_capability[4] = excap; 12.268 - c->x86 = (tfms >> 8) & 15; 12.269 - c->x86_model = (tfms >> 4) & 15; 12.270 - if (c->x86 == 0xf) { 12.271 - c->x86 += (tfms >> 20) & 0xff; 12.272 - c->x86_model += ((tfms >> 16) & 0xF) << 4; 12.273 - } 12.274 - c->x86_mask = tfms & 15; 12.275 - } else { 12.276 - /* Have CPUID level 0 only - unheard of */ 12.277 - c->x86 = 4; 12.278 - } 12.279 - 12.280 - /* AMD-defined flags: level 0x80000001 */ 12.281 - xlvl = cpuid_eax(0x80000000); 12.282 - if ( (xlvl & 0xffff0000) == 0x80000000 ) { 12.283 - if ( xlvl >= 0x80000001 ) 12.284 - c->x86_capability[1] = cpuid_edx(0x80000001); 12.285 - if ( xlvl >= 0x80000004 ) 12.286 - get_model_name(c); /* Default name */ 12.287 - } 12.288 - } 12.289 -} 12.290 - 12.291 -static void __init squash_the_stupid_serial_number(struct cpuinfo_x86 *c) 12.292 -{ 12.293 - if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) { 12.294 - /* Disable processor serial number */ 12.295 - unsigned long lo,hi; 12.296 - rdmsr(MSR_IA32_BBL_CR_CTL,lo,hi); 12.297 - lo |= 0x200000; 12.298 - wrmsr(MSR_IA32_BBL_CR_CTL,lo,hi); 12.299 - printk(KERN_NOTICE "CPU serial number disabled.\n"); 12.300 - clear_bit(X86_FEATURE_PN, c->x86_capability); 12.301 - 12.302 - /* Disabling the serial number may affect the cpuid level */ 12.303 - c->cpuid_level = cpuid_eax(0); 12.304 - } 12.305 -} 12.306 - 12.307 -static int __init x86_serial_nr_setup(char *s) 12.308 -{ 12.309 - disable_x86_serial_nr = 0; 12.310 - return 1; 12.311 -} 12.312 -__setup("serialnumber", x86_serial_nr_setup); 12.313 - 12.314 - 12.315 - 12.316 -/* 12.317 - * This does the hard work of actually picking apart the CPU stuff... 12.318 - */ 12.319 -void __init identify_cpu(struct cpuinfo_x86 *c) 12.320 -{ 12.321 - int i; 12.322 - 12.323 - c->loops_per_jiffy = loops_per_jiffy; 12.324 - c->x86_cache_size = -1; 12.325 - c->x86_vendor = X86_VENDOR_UNKNOWN; 12.326 - c->cpuid_level = -1; /* CPUID not detected */ 12.327 - c->x86_model = c->x86_mask = 0; /* So far unknown... */ 12.328 - c->x86_vendor_id[0] = '\0'; /* Unset */ 12.329 - c->x86_model_id[0] = '\0'; /* Unset */ 12.330 - memset(&c->x86_capability, 0, sizeof c->x86_capability); 12.331 - 12.332 - if (!have_cpuid_p()) { 12.333 - /* First of all, decide if this is a 486 or higher */ 12.334 - /* It's a 486 if we can modify the AC flag */ 12.335 - if ( flag_is_changeable_p(X86_EFLAGS_AC) ) 12.336 - c->x86 = 4; 12.337 - else 12.338 - c->x86 = 3; 12.339 - } 12.340 - 12.341 - generic_identify(c); 12.342 - 12.343 - printk(KERN_DEBUG "CPU: After generic identify, caps: %08lx %08lx %08lx %08lx\n", 12.344 - c->x86_capability[0], 12.345 - c->x86_capability[1], 12.346 - c->x86_capability[2], 12.347 - c->x86_capability[3]); 12.348 - 12.349 - if (this_cpu->c_identify) { 12.350 - this_cpu->c_identify(c); 12.351 - 12.352 - printk(KERN_DEBUG "CPU: After vendor identify, caps: %08lx %08lx %08lx %08lx\n", 12.353 - c->x86_capability[0], 12.354 - c->x86_capability[1], 12.355 - c->x86_capability[2], 12.356 - c->x86_capability[3]); 12.357 -} 12.358 - 12.359 - /* 12.360 - * Vendor-specific initialization. In this section we 12.361 - * canonicalize the feature flags, meaning if there are 12.362 - * features a certain CPU supports which CPUID doesn't 12.363 - * tell us, CPUID claiming incorrect flags, or other bugs, 12.364 - * we handle them here. 12.365 - * 12.366 - * At the end of this section, c->x86_capability better 12.367 - * indicate the features this CPU genuinely supports! 12.368 - */ 12.369 - if (this_cpu->c_init) 12.370 - this_cpu->c_init(c); 12.371 - 12.372 - /* Disable the PN if appropriate */ 12.373 - squash_the_stupid_serial_number(c); 12.374 - 12.375 - /* 12.376 - * The vendor-specific functions might have changed features. Now 12.377 - * we do "generic changes." 12.378 - */ 12.379 - 12.380 - /* TSC disabled? */ 12.381 - if ( tsc_disable ) 12.382 - clear_bit(X86_FEATURE_TSC, c->x86_capability); 12.383 - 12.384 - /* FXSR disabled? */ 12.385 - if (disable_x86_fxsr) { 12.386 - clear_bit(X86_FEATURE_FXSR, c->x86_capability); 12.387 - clear_bit(X86_FEATURE_XMM, c->x86_capability); 12.388 - } 12.389 - 12.390 - if (disable_pse) 12.391 - clear_bit(X86_FEATURE_PSE, c->x86_capability); 12.392 - 12.393 - /* If the model name is still unset, do table lookup. */ 12.394 - if ( !c->x86_model_id[0] ) { 12.395 - char *p; 12.396 - p = table_lookup_model(c); 12.397 - if ( p ) 12.398 - strcpy(c->x86_model_id, p); 12.399 - else 12.400 - /* Last resort... */ 12.401 - sprintf(c->x86_model_id, "%02x/%02x", 12.402 - c->x86_vendor, c->x86_model); 12.403 - } 12.404 - 12.405 - machine_specific_modify_cpu_capabilities(c); 12.406 - 12.407 - /* Now the feature flags better reflect actual CPU features! */ 12.408 - 12.409 - printk(KERN_DEBUG "CPU: After all inits, caps: %08lx %08lx %08lx %08lx\n", 12.410 - c->x86_capability[0], 12.411 - c->x86_capability[1], 12.412 - c->x86_capability[2], 12.413 - c->x86_capability[3]); 12.414 - 12.415 - /* 12.416 - * On SMP, boot_cpu_data holds the common feature set between 12.417 - * all CPUs; so make sure that we indicate which features are 12.418 - * common between the CPUs. The first time this routine gets 12.419 - * executed, c == &boot_cpu_data. 12.420 - */ 12.421 - if ( c != &boot_cpu_data ) { 12.422 - /* AND the already accumulated flags with these */ 12.423 - for ( i = 0 ; i < NCAPINTS ; i++ ) 12.424 - boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; 12.425 - } 12.426 - 12.427 - /* Init Machine Check Exception if available. */ 12.428 -#ifdef CONFIG_X86_MCE 12.429 - mcheck_init(c); 12.430 -#endif 12.431 -} 12.432 -/* 12.433 - * Perform early boot up checks for a valid TSC. See arch/i386/kernel/time.c 12.434 - */ 12.435 - 12.436 -void __init dodgy_tsc(void) 12.437 -{ 12.438 - if (( boot_cpu_data.x86_vendor == X86_VENDOR_CYRIX ) || 12.439 - ( boot_cpu_data.x86_vendor == X86_VENDOR_NSC )) 12.440 - cpu_devs[X86_VENDOR_CYRIX]->c_init(&boot_cpu_data); 12.441 -} 12.442 - 12.443 -void __init print_cpu_info(struct cpuinfo_x86 *c) 12.444 -{ 12.445 - char *vendor = NULL; 12.446 - 12.447 - if (c->x86_vendor < X86_VENDOR_NUM) 12.448 - vendor = this_cpu->c_vendor; 12.449 - else if (c->cpuid_level >= 0) 12.450 - vendor = c->x86_vendor_id; 12.451 - 12.452 - if (vendor && strncmp(c->x86_model_id, vendor, strlen(vendor))) 12.453 - printk("%s ", vendor); 12.454 - 12.455 - if (!c->x86_model_id[0]) 12.456 - printk("%d86", c->x86); 12.457 - else 12.458 - printk("%s", c->x86_model_id); 12.459 - 12.460 - if (c->x86_mask || c->cpuid_level >= 0) 12.461 - printk(" stepping %02x\n", c->x86_mask); 12.462 - else 12.463 - printk("\n"); 12.464 -} 12.465 - 12.466 -unsigned long cpu_initialized __initdata = 0; 12.467 - 12.468 -/* This is hacky. :) 12.469 - * We're emulating future behavior. 12.470 - * In the future, the cpu-specific init functions will be called implicitly 12.471 - * via the magic of initcalls. 12.472 - * They will insert themselves into the cpu_devs structure. 12.473 - * Then, when cpu_init() is called, we can just iterate over that array. 12.474 - */ 12.475 - 12.476 -extern int intel_cpu_init(void); 12.477 -extern int cyrix_init_cpu(void); 12.478 -extern int nsc_init_cpu(void); 12.479 -extern int amd_init_cpu(void); 12.480 -extern int centaur_init_cpu(void); 12.481 -extern int transmeta_init_cpu(void); 12.482 -extern int rise_init_cpu(void); 12.483 -extern int nexgen_init_cpu(void); 12.484 -extern int umc_init_cpu(void); 12.485 -void early_cpu_detect(void); 12.486 - 12.487 -void __init early_cpu_init(void) 12.488 -{ 12.489 - intel_cpu_init(); 12.490 - cyrix_init_cpu(); 12.491 - nsc_init_cpu(); 12.492 - amd_init_cpu(); 12.493 - centaur_init_cpu(); 12.494 - transmeta_init_cpu(); 12.495 - rise_init_cpu(); 12.496 - nexgen_init_cpu(); 12.497 - umc_init_cpu(); 12.498 - early_cpu_detect(); 12.499 - 12.500 -#ifdef CONFIG_DEBUG_PAGEALLOC 12.501 - /* pse is not compatible with on-the-fly unmapping, 12.502 - * disable it even if the cpus claim to support it. 12.503 - */ 12.504 - clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability); 12.505 - disable_pse = 1; 12.506 -#endif 12.507 -} 12.508 - 12.509 -void __init cpu_gdt_init(struct Xgt_desc_struct *gdt_descr) 12.510 -{ 12.511 - unsigned long frames[gdt_descr->size >> PAGE_SHIFT]; 12.512 - unsigned long va; 12.513 - int f; 12.514 - 12.515 - for (va = gdt_descr->address, f = 0; 12.516 - va < gdt_descr->address + gdt_descr->size; 12.517 - va += PAGE_SIZE, f++) { 12.518 - frames[f] = virt_to_machine(va) >> PAGE_SHIFT; 12.519 - make_page_readonly((void *)va); 12.520 - } 12.521 - flush_page_update_queue(); 12.522 - if (HYPERVISOR_set_gdt(frames, gdt_descr->size / 8)) 12.523 - BUG(); 12.524 - lgdt_finish(); 12.525 -} 12.526 - 12.527 -/* 12.528 - * cpu_init() initializes state that is per-CPU. Some data is already 12.529 - * initialized (naturally) in the bootstrap process, such as the GDT 12.530 - * and IDT. We reload them nevertheless, this function acts as a 12.531 - * 'CPU state barrier', nothing should get across. 12.532 - */ 12.533 -void __init cpu_init (void) 12.534 -{ 12.535 - int cpu = smp_processor_id(); 12.536 - struct tss_struct * t = &per_cpu(init_tss, cpu); 12.537 - struct thread_struct *thread = ¤t->thread; 12.538 - 12.539 - if (test_and_set_bit(cpu, &cpu_initialized)) { 12.540 - printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); 12.541 - for (;;) local_irq_enable(); 12.542 - } 12.543 - printk(KERN_INFO "Initializing CPU#%d\n", cpu); 12.544 - 12.545 - if (cpu_has_vme || cpu_has_de) 12.546 - clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); 12.547 - if (tsc_disable && cpu_has_tsc) { 12.548 - printk(KERN_NOTICE "Disabling TSC...\n"); 12.549 - /**** FIX-HPA: DOES THIS REALLY BELONG HERE? ****/ 12.550 - clear_bit(X86_FEATURE_TSC, boot_cpu_data.x86_capability); 12.551 - set_in_cr4(X86_CR4_TSD); 12.552 - } 12.553 - 12.554 - /* 12.555 - * Initialize the per-CPU GDT with the boot GDT, 12.556 - * and set up the GDT descriptor: 12.557 - */ 12.558 - if (cpu) { 12.559 - cpu_gdt_descr[cpu].size = GDT_SIZE; 12.560 - cpu_gdt_descr[cpu].address = 0; /* XXXcl alloc page */ 12.561 - BUG(); /* XXXcl SMP */ 12.562 - memcpy((void *)cpu_gdt_descr[cpu].address, 12.563 - (void *)cpu_gdt_descr[0].address, GDT_SIZE); 12.564 - } 12.565 - /* 12.566 - * Set up the per-thread TLS descriptor cache: 12.567 - */ 12.568 - memcpy(thread->tls_array, &get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN], 12.569 - GDT_ENTRY_TLS_ENTRIES * 8); 12.570 - 12.571 - cpu_gdt_init(&cpu_gdt_descr[cpu]); 12.572 - 12.573 - /* 12.574 - * Delete NT 12.575 - */ 12.576 - __asm__("pushfl ; andl $0xffffbfff,(%esp) ; popfl"); 12.577 - 12.578 - /* 12.579 - * Set up and load the per-CPU TSS and LDT 12.580 - */ 12.581 - atomic_inc(&init_mm.mm_count); 12.582 - current->active_mm = &init_mm; 12.583 - if (current->mm) 12.584 - BUG(); 12.585 - enter_lazy_tlb(&init_mm, current); 12.586 - 12.587 - load_esp0(t, thread); 12.588 - 12.589 - load_LDT(&init_mm.context); 12.590 - flush_page_update_queue(); 12.591 - 12.592 - /* Clear %fs and %gs. */ 12.593 - asm volatile ("xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs"); 12.594 - 12.595 - /* Clear all 6 debug registers: */ 12.596 - 12.597 -#define CD(register) HYPERVISOR_set_debugreg(register, 0) 12.598 - 12.599 - CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7); 12.600 - 12.601 -#undef CD 12.602 - 12.603 - /* 12.604 - * Force FPU initialization: 12.605 - */ 12.606 - current_thread_info()->status = 0; 12.607 - current->used_math = 0; 12.608 - mxcsr_feature_mask_init(); 12.609 -}
13.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile Tue Dec 07 19:17:22 2004 +0000 13.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 13.3 @@ -1,16 +0,0 @@ 13.4 -obj-y := main.o 13.5 -c-obj-y := if.o 13.6 - 13.7 -c-link := 13.8 - 13.9 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): $(obj)/mtrr.h 13.10 - @ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/$(notdir $@) $@ 13.11 - 13.12 -$(patsubst %.o,$(obj)/%.c,$(obj-y)): $(obj)/mtrr.h 13.13 - 13.14 -$(obj)/mtrr.h: 13.15 - @ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/mtrr.h $@ 13.16 - 13.17 -obj-y += $(c-obj-y) 13.18 - 13.19 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
14.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c Tue Dec 07 19:17:22 2004 +0000 14.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 14.3 @@ -1,165 +0,0 @@ 14.4 -#include <linux/init.h> 14.5 -#include <linux/proc_fs.h> 14.6 -#include <linux/ctype.h> 14.7 -#include <linux/module.h> 14.8 -#include <linux/seq_file.h> 14.9 -#include <asm/uaccess.h> 14.10 - 14.11 -#include <asm/mtrr.h> 14.12 -#include "mtrr.h" 14.13 - 14.14 -void generic_get_mtrr(unsigned int reg, unsigned long *base, 14.15 - unsigned int *size, mtrr_type * type) 14.16 -{ 14.17 - dom0_op_t op; 14.18 - 14.19 - op.cmd = DOM0_READ_MEMTYPE; 14.20 - op.u.read_memtype.reg = reg; 14.21 - (void)HYPERVISOR_dom0_op(&op); 14.22 - 14.23 - *size = op.u.read_memtype.nr_pfns; 14.24 - *base = op.u.read_memtype.pfn; 14.25 - *type = op.u.read_memtype.type; 14.26 -} 14.27 - 14.28 -struct mtrr_ops generic_mtrr_ops = { 14.29 - .use_intel_if = 1, 14.30 - .get = generic_get_mtrr, 14.31 -}; 14.32 - 14.33 -struct mtrr_ops *mtrr_if = &generic_mtrr_ops; 14.34 -unsigned int num_var_ranges; 14.35 -unsigned int *usage_table; 14.36 - 14.37 -void __init set_num_var_ranges(void) 14.38 -{ 14.39 - dom0_op_t op; 14.40 - 14.41 - for (num_var_ranges = 0; ; num_var_ranges++) { 14.42 - op.cmd = DOM0_READ_MEMTYPE; 14.43 - op.u.read_memtype.reg = num_var_ranges; 14.44 - if (HYPERVISOR_dom0_op(&op) != 0) 14.45 - break; 14.46 - } 14.47 -} 14.48 - 14.49 -static void __init init_table(void) 14.50 -{ 14.51 - int i, max; 14.52 - 14.53 - max = num_var_ranges; 14.54 - if ((usage_table = kmalloc(max * sizeof *usage_table, GFP_KERNEL)) 14.55 - == NULL) { 14.56 - printk(KERN_ERR "mtrr: could not allocate\n"); 14.57 - return; 14.58 - } 14.59 - for (i = 0; i < max; i++) 14.60 - usage_table[i] = 0; 14.61 -} 14.62 - 14.63 -int mtrr_add_page(unsigned long base, unsigned long size, 14.64 - unsigned int type, char increment) 14.65 -{ 14.66 - int error; 14.67 - dom0_op_t op; 14.68 - 14.69 - op.cmd = DOM0_ADD_MEMTYPE; 14.70 - op.u.add_memtype.pfn = base; 14.71 - op.u.add_memtype.nr_pfns = size; 14.72 - op.u.add_memtype.type = type; 14.73 - if ((error = HYPERVISOR_dom0_op(&op))) 14.74 - return error; 14.75 - 14.76 - if (increment) 14.77 - ++usage_table[op.u.add_memtype.reg]; 14.78 - 14.79 - return op.u.add_memtype.reg; 14.80 -} 14.81 - 14.82 -int 14.83 -mtrr_add(unsigned long base, unsigned long size, unsigned int type, 14.84 - char increment) 14.85 -{ 14.86 - if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) { 14.87 - printk(KERN_WARNING "mtrr: size and base must be multiples of 4 kiB\n"); 14.88 - printk(KERN_DEBUG "mtrr: size: 0x%lx base: 0x%lx\n", size, base); 14.89 - return -EINVAL; 14.90 - } 14.91 - return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type, 14.92 - increment); 14.93 -} 14.94 - 14.95 -int mtrr_del_page(int reg, unsigned long base, unsigned long size) 14.96 -{ 14.97 - int i, max; 14.98 - mtrr_type ltype; 14.99 - unsigned long lbase; 14.100 - unsigned int lsize; 14.101 - int error = -EINVAL; 14.102 - dom0_op_t op; 14.103 - 14.104 - max = num_var_ranges; 14.105 - if (reg < 0) { 14.106 - /* Search for existing MTRR */ 14.107 - for (i = 0; i < max; ++i) { 14.108 - mtrr_if->get(i, &lbase, &lsize, <ype); 14.109 - if (lbase == base && lsize == size) { 14.110 - reg = i; 14.111 - break; 14.112 - } 14.113 - } 14.114 - if (reg < 0) { 14.115 - printk(KERN_DEBUG "mtrr: no MTRR for %lx000,%lx000 found\n", base, 14.116 - size); 14.117 - goto out; 14.118 - } 14.119 - } 14.120 - if (usage_table[reg] < 1) { 14.121 - printk(KERN_WARNING "mtrr: reg: %d has count=0\n", reg); 14.122 - goto out; 14.123 - } 14.124 - if (--usage_table[reg] < 1) { 14.125 - op.cmd = DOM0_DEL_MEMTYPE; 14.126 - op.u.del_memtype.handle = 0; 14.127 - op.u.add_memtype.reg = reg; 14.128 - (void)HYPERVISOR_dom0_op(&op); 14.129 - } 14.130 - error = reg; 14.131 - out: 14.132 - return error; 14.133 -} 14.134 - 14.135 -int 14.136 -mtrr_del(int reg, unsigned long base, unsigned long size) 14.137 -{ 14.138 - if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) { 14.139 - printk(KERN_INFO "mtrr: size and base must be multiples of 4 kiB\n"); 14.140 - printk(KERN_DEBUG "mtrr: size: 0x%lx base: 0x%lx\n", size, base); 14.141 - return -EINVAL; 14.142 - } 14.143 - return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT); 14.144 -} 14.145 - 14.146 -EXPORT_SYMBOL(mtrr_add); 14.147 -EXPORT_SYMBOL(mtrr_del); 14.148 - 14.149 -static int __init mtrr_init(void) 14.150 -{ 14.151 - struct cpuinfo_x86 *c = &boot_cpu_data; 14.152 - 14.153 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 14.154 - return -ENODEV; 14.155 - 14.156 - if ((!cpu_has(c, X86_FEATURE_MTRR)) && 14.157 - (!cpu_has(c, X86_FEATURE_K6_MTRR)) && 14.158 - (!cpu_has(c, X86_FEATURE_CYRIX_ARR)) && 14.159 - (!cpu_has(c, X86_FEATURE_CENTAUR_MCR))) 14.160 - return -ENODEV; 14.161 - 14.162 - set_num_var_ranges(); 14.163 - init_table(); 14.164 - 14.165 - return 0; 14.166 -} 14.167 - 14.168 -subsys_initcall(mtrr_init);
15.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S Tue Dec 07 19:17:22 2004 +0000 15.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 15.3 @@ -1,1033 +0,0 @@ 15.4 -/* 15.5 - * linux/arch/i386/entry.S 15.6 - * 15.7 - * Copyright (C) 1991, 1992 Linus Torvalds 15.8 - */ 15.9 - 15.10 -/* 15.11 - * entry.S contains the system-call and fault low-level handling routines. 15.12 - * This also contains the timer-interrupt handler, as well as all interrupts 15.13 - * and faults that can result in a task-switch. 15.14 - * 15.15 - * NOTE: This code handles signal-recognition, which happens every time 15.16 - * after a timer-interrupt and after each system call. 15.17 - * 15.18 - * I changed all the .align's to 4 (16 byte alignment), as that's faster 15.19 - * on a 486. 15.20 - * 15.21 - * Stack layout in 'ret_from_system_call': 15.22 - * ptrace needs to have all regs on the stack. 15.23 - * if the order here is changed, it needs to be 15.24 - * updated in fork.c:copy_process, signal.c:do_signal, 15.25 - * ptrace.c and ptrace.h 15.26 - * 15.27 - * 0(%esp) - %ebx 15.28 - * 4(%esp) - %ecx 15.29 - * 8(%esp) - %edx 15.30 - * C(%esp) - %esi 15.31 - * 10(%esp) - %edi 15.32 - * 14(%esp) - %ebp 15.33 - * 18(%esp) - %eax 15.34 - * 1C(%esp) - %ds 15.35 - * 20(%esp) - %es 15.36 - * 24(%esp) - orig_eax 15.37 - * 28(%esp) - %eip 15.38 - * 2C(%esp) - %cs 15.39 - * 30(%esp) - %eflags 15.40 - * 34(%esp) - %oldesp 15.41 - * 38(%esp) - %oldss 15.42 - * 15.43 - * "current" is in register %ebx during any slow entries. 15.44 - */ 15.45 - 15.46 -#include <linux/config.h> 15.47 -#include <linux/linkage.h> 15.48 -#include <asm/thread_info.h> 15.49 -#include <asm/errno.h> 15.50 -#include <asm/segment.h> 15.51 -#include <asm/smp.h> 15.52 -#include <asm/page.h> 15.53 -#include "irq_vectors.h" 15.54 -#include <asm-xen/xen-public/xen.h> 15.55 - 15.56 -#define nr_syscalls ((syscall_table_size)/4) 15.57 - 15.58 -EBX = 0x00 15.59 -ECX = 0x04 15.60 -EDX = 0x08 15.61 -ESI = 0x0C 15.62 -EDI = 0x10 15.63 -EBP = 0x14 15.64 -EAX = 0x18 15.65 -DS = 0x1C 15.66 -ES = 0x20 15.67 -ORIG_EAX = 0x24 15.68 -EIP = 0x28 15.69 -CS = 0x2C 15.70 -EVENT_MASK = 0x2E 15.71 -EFLAGS = 0x30 15.72 -OLDESP = 0x34 15.73 -OLDSS = 0x38 15.74 - 15.75 -CF_MASK = 0x00000001 15.76 -TF_MASK = 0x00000100 15.77 -IF_MASK = 0x00000200 15.78 -DF_MASK = 0x00000400 15.79 -NT_MASK = 0x00004000 15.80 -VM_MASK = 0x00020000 15.81 - 15.82 -/* Offsets into shared_info_t. */ 15.83 -#define evtchn_upcall_pending /* 0 */ 15.84 -#define evtchn_upcall_mask 1 15.85 - 15.86 -#define XEN_GET_VCPU_INFO(reg) movl HYPERVISOR_shared_info,reg 15.87 -#define XEN_BLOCK_EVENTS(reg) movb $1,evtchn_upcall_mask(reg) 15.88 -#define XEN_UNBLOCK_EVENTS(reg) movb $0,evtchn_upcall_mask(reg) 15.89 -#define XEN_SAVE_UPCALL_MASK(reg,tmp,off) \ 15.90 - movb evtchn_upcall_mask(reg), tmp; \ 15.91 - movb tmp, off(%esp) 15.92 - 15.93 -#define XEN_TEST_PENDING(reg) testb $0xFF,evtchn_upcall_pending(reg) 15.94 - 15.95 -#ifdef CONFIG_PREEMPT 15.96 -#define preempt_stop XEN_BLOCK_EVENTS(%esi) 15.97 -#else 15.98 -#define preempt_stop 15.99 -#define resume_kernel restore_all 15.100 -#endif 15.101 - 15.102 -#define SAVE_ALL_NO_EVENTMASK \ 15.103 - cld; \ 15.104 - pushl %es; \ 15.105 - pushl %ds; \ 15.106 - pushl %eax; \ 15.107 - pushl %ebp; \ 15.108 - pushl %edi; \ 15.109 - pushl %esi; \ 15.110 - pushl %edx; \ 15.111 - pushl %ecx; \ 15.112 - pushl %ebx; \ 15.113 - movl $(__USER_DS), %edx; \ 15.114 - movl %edx, %ds; \ 15.115 - movl %edx, %es; 15.116 - 15.117 -#define SAVE_ALL \ 15.118 - SAVE_ALL_NO_EVENTMASK; \ 15.119 - XEN_GET_VCPU_INFO(%esi); \ 15.120 - XEN_SAVE_UPCALL_MASK(%esi,%dl,EVENT_MASK) 15.121 - 15.122 -#define RESTORE_INT_REGS \ 15.123 - popl %ebx; \ 15.124 - popl %ecx; \ 15.125 - popl %edx; \ 15.126 - popl %esi; \ 15.127 - popl %edi; \ 15.128 - popl %ebp; \ 15.129 - popl %eax 15.130 - 15.131 -#define RESTORE_REGS \ 15.132 - RESTORE_INT_REGS; \ 15.133 -1: popl %ds; \ 15.134 -2: popl %es; \ 15.135 -.section .fixup,"ax"; \ 15.136 -3: movl $0,(%esp); \ 15.137 - jmp 1b; \ 15.138 -4: movl $0,(%esp); \ 15.139 - jmp 2b; \ 15.140 -.previous; \ 15.141 -.section __ex_table,"a";\ 15.142 - .align 4; \ 15.143 - .long 1b,3b; \ 15.144 - .long 2b,4b; \ 15.145 -.previous 15.146 - 15.147 - 15.148 -#define RESTORE_ALL \ 15.149 - RESTORE_REGS \ 15.150 - addl $4, %esp; \ 15.151 -1: iret; \ 15.152 -.section .fixup,"ax"; \ 15.153 -2: movl $(__USER_DS), %edx; \ 15.154 - movl %edx, %ds; \ 15.155 - movl %edx, %es; \ 15.156 - movl $11,%eax; \ 15.157 - call do_exit; \ 15.158 -.previous; \ 15.159 -.section __ex_table,"a";\ 15.160 - .align 4; \ 15.161 - .long 1b,2b; \ 15.162 -.previous 15.163 - 15.164 - 15.165 -ENTRY(ret_from_fork) 15.166 - pushl %eax 15.167 - call schedule_tail 15.168 - GET_THREAD_INFO(%ebp) 15.169 - popl %eax 15.170 - XEN_GET_VCPU_INFO(%esi) 15.171 - jmp syscall_exit 15.172 - 15.173 -/* 15.174 - * Return to user mode is not as complex as all this looks, 15.175 - * but we want the default path for a system call return to 15.176 - * go as quickly as possible which is why some of this is 15.177 - * less clear than it otherwise should be. 15.178 - */ 15.179 - 15.180 - # userspace resumption stub bypassing syscall exit tracing 15.181 - ALIGN 15.182 -ret_from_exception: 15.183 - preempt_stop 15.184 -ret_from_intr: 15.185 - GET_THREAD_INFO(%ebp) 15.186 - movl EFLAGS(%esp), %eax # mix EFLAGS and CS 15.187 - movb CS(%esp), %al 15.188 - testl $(VM_MASK | 2), %eax 15.189 - jz resume_kernel # returning to kernel or vm86-space 15.190 -ENTRY(resume_userspace) 15.191 - XEN_GET_VCPU_INFO(%esi) 15.192 - XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt 15.193 - # setting need_resched or sigpending 15.194 - # between sampling and the iret 15.195 - movl TI_flags(%ebp), %ecx 15.196 - andl $_TIF_WORK_MASK, %ecx # is there any work to be done on 15.197 - # int/exception return? 15.198 - jne work_pending 15.199 - jmp restore_all 15.200 - 15.201 -#ifdef CONFIG_PREEMPT 15.202 -ENTRY(resume_kernel) 15.203 - XEN_GET_VCPU_INFO(%esi) 15.204 - cmpl $0,TI_preempt_count(%ebp) # non-zero preempt_count ? 15.205 - jnz restore_all 15.206 -need_resched: 15.207 - movl TI_flags(%ebp), %ecx # need_resched set ? 15.208 - testb $_TIF_NEED_RESCHED, %cl 15.209 - jz restore_all 15.210 - testb $0xFF,EVENT_MASK(%esp) # interrupts off (exception path) ? 15.211 - jnz restore_all 15.212 - movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp) 15.213 - XEN_UNBLOCK_EVENTS(%esi) 15.214 - call schedule 15.215 - XEN_BLOCK_EVENTS(%esi) 15.216 - movl $0,TI_preempt_count(%ebp) 15.217 - jmp need_resched 15.218 -#endif 15.219 - 15.220 -/* SYSENTER_RETURN points to after the "sysenter" instruction in 15.221 - the vsyscall page. See vsyscall-sysentry.S, which defines the symbol. */ 15.222 - 15.223 - # sysenter call handler stub 15.224 -ENTRY(sysenter_entry) 15.225 - movl TSS_sysenter_esp0(%esp),%esp 15.226 -sysenter_past_esp: 15.227 - sti 15.228 - pushl $(__USER_DS) 15.229 - pushl %ebp 15.230 - pushfl 15.231 - pushl $(__USER_CS) 15.232 - pushl $SYSENTER_RETURN 15.233 - 15.234 -/* 15.235 - * Load the potential sixth argument from user stack. 15.236 - * Careful about security. 15.237 - */ 15.238 - cmpl $__PAGE_OFFSET-3,%ebp 15.239 - jae syscall_fault 15.240 -1: movl (%ebp),%ebp 15.241 -.section __ex_table,"a" 15.242 - .align 4 15.243 - .long 1b,syscall_fault 15.244 -.previous 15.245 - 15.246 - pushl %eax 15.247 - SAVE_ALL 15.248 - GET_THREAD_INFO(%ebp) 15.249 - 15.250 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 15.251 - jnz syscall_trace_entry 15.252 - cmpl $(nr_syscalls), %eax 15.253 - jae syscall_badsys 15.254 - call *sys_call_table(,%eax,4) 15.255 - movl %eax,EAX(%esp) 15.256 - cli 15.257 - movl TI_flags(%ebp), %ecx 15.258 - testw $_TIF_ALLWORK_MASK, %cx 15.259 - jne syscall_exit_work 15.260 -/* if something modifies registers it must also disable sysexit */ 15.261 - movl EIP(%esp), %edx 15.262 - movl OLDESP(%esp), %ecx 15.263 - sti 15.264 - sysexit 15.265 - 15.266 - 15.267 - # system call handler stub 15.268 -ENTRY(system_call) 15.269 - pushl %eax # save orig_eax 15.270 - SAVE_ALL 15.271 - GET_THREAD_INFO(%ebp) 15.272 - # system call tracing in operation 15.273 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 15.274 - jnz syscall_trace_entry 15.275 - cmpl $(nr_syscalls), %eax 15.276 - jae syscall_badsys 15.277 -syscall_call: 15.278 - call *sys_call_table(,%eax,4) 15.279 - movl %eax,EAX(%esp) # store the return value 15.280 -syscall_exit: 15.281 - XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt 15.282 - # setting need_resched or sigpending 15.283 - # between sampling and the iret 15.284 - movl TI_flags(%ebp), %ecx 15.285 - testw $_TIF_ALLWORK_MASK, %cx # current->work 15.286 - jne syscall_exit_work 15.287 -restore_all: 15.288 - testl $VM_MASK, EFLAGS(%esp) 15.289 - jnz resume_vm86 15.290 - movb EVENT_MASK(%esp), %al 15.291 - notb %al # %al == ~saved_mask 15.292 - andb evtchn_upcall_mask(%esi),%al 15.293 - andb $1,%al # %al == mask & ~saved_mask 15.294 - jnz restore_all_enable_events # != 0 => reenable event delivery 15.295 - RESTORE_ALL 15.296 - 15.297 -resume_vm86: 15.298 - XEN_UNBLOCK_EVENTS(%esi) 15.299 - RESTORE_REGS 15.300 - movl %eax,(%esp) 15.301 - movl $__HYPERVISOR_switch_vm86,%eax 15.302 - int $0x82 15.303 - ud2 15.304 - 15.305 - # perform work that needs to be done immediately before resumption 15.306 - ALIGN 15.307 -work_pending: 15.308 - testb $_TIF_NEED_RESCHED, %cl 15.309 - jz work_notifysig 15.310 -work_resched: 15.311 - call schedule 15.312 - XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt 15.313 - # setting need_resched or sigpending 15.314 - # between sampling and the iret 15.315 - movl TI_flags(%ebp), %ecx 15.316 - andl $_TIF_WORK_MASK, %ecx # is there any work to be done other 15.317 - # than syscall tracing? 15.318 - jz restore_all 15.319 - testb $_TIF_NEED_RESCHED, %cl 15.320 - jnz work_resched 15.321 - 15.322 -work_notifysig: # deal with pending signals and 15.323 - # notify-resume requests 15.324 - testl $VM_MASK, EFLAGS(%esp) 15.325 - movl %esp, %eax 15.326 - jne work_notifysig_v86 # returning to kernel-space or 15.327 - # vm86-space 15.328 - xorl %edx, %edx 15.329 - call do_notify_resume 15.330 - jmp restore_all 15.331 - 15.332 - ALIGN 15.333 -work_notifysig_v86: 15.334 - pushl %ecx # save ti_flags for do_notify_resume 15.335 - call save_v86_state # %eax contains pt_regs pointer 15.336 - popl %ecx 15.337 - movl %eax, %esp 15.338 - xorl %edx, %edx 15.339 - call do_notify_resume 15.340 - jmp restore_all 15.341 - 15.342 - # perform syscall exit tracing 15.343 - ALIGN 15.344 -syscall_trace_entry: 15.345 - movl $-ENOSYS,EAX(%esp) 15.346 - movl %esp, %eax 15.347 - xorl %edx,%edx 15.348 - call do_syscall_trace 15.349 - movl ORIG_EAX(%esp), %eax 15.350 - cmpl $(nr_syscalls), %eax 15.351 - jnae syscall_call 15.352 - jmp syscall_exit 15.353 - 15.354 - # perform syscall exit tracing 15.355 - ALIGN 15.356 -syscall_exit_work: 15.357 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl 15.358 - jz work_pending 15.359 - XEN_UNBLOCK_EVENTS(%esi) # could let do_syscall_trace() call 15.360 - # schedule() instead 15.361 - movl %esp, %eax 15.362 - movl $1, %edx 15.363 - call do_syscall_trace 15.364 - jmp resume_userspace 15.365 - 15.366 - ALIGN 15.367 -syscall_fault: 15.368 - pushl %eax # save orig_eax 15.369 - SAVE_ALL 15.370 - GET_THREAD_INFO(%ebp) 15.371 - movl $-EFAULT,EAX(%esp) 15.372 - jmp resume_userspace 15.373 - 15.374 - ALIGN 15.375 -syscall_badsys: 15.376 - movl $-ENOSYS,EAX(%esp) 15.377 - jmp resume_userspace 15.378 - 15.379 -#if 0 /* XEN */ 15.380 -/* 15.381 - * Build the entry stubs and pointer table with 15.382 - * some assembler magic. 15.383 - */ 15.384 -.data 15.385 -ENTRY(interrupt) 15.386 -.text 15.387 - 15.388 -vector=0 15.389 -ENTRY(irq_entries_start) 15.390 -.rept NR_IRQS 15.391 - ALIGN 15.392 -1: pushl $vector-256 15.393 - jmp common_interrupt 15.394 -.data 15.395 - .long 1b 15.396 -.text 15.397 -vector=vector+1 15.398 -.endr 15.399 - 15.400 - ALIGN 15.401 -common_interrupt: 15.402 - SAVE_ALL 15.403 - movl %esp,%eax 15.404 - call do_IRQ 15.405 - jmp ret_from_intr 15.406 - 15.407 -#define BUILD_INTERRUPT(name, nr) \ 15.408 -ENTRY(name) \ 15.409 - pushl $nr-256; \ 15.410 - SAVE_ALL \ 15.411 - movl %esp,%eax; \ 15.412 - call smp_/**/name; \ 15.413 - jmp ret_from_intr; 15.414 - 15.415 -/* The include is where all of the SMP etc. interrupts come from */ 15.416 -#include "entry_arch.h" 15.417 -#endif /* XEN */ 15.418 - 15.419 -ENTRY(divide_error) 15.420 - pushl $0 # no error code 15.421 - pushl $do_divide_error 15.422 - ALIGN 15.423 -error_code: 15.424 - pushl %ds 15.425 - pushl %eax 15.426 - xorl %eax, %eax 15.427 - pushl %ebp 15.428 - pushl %edi 15.429 - pushl %esi 15.430 - pushl %edx 15.431 - decl %eax # eax = -1 15.432 - pushl %ecx 15.433 - pushl %ebx 15.434 - cld 15.435 - movl %es, %ecx 15.436 - movl ES(%esp), %edi # get the function address 15.437 - movl ORIG_EAX(%esp), %edx # get the error code 15.438 - movl %eax, ORIG_EAX(%esp) 15.439 - movl %ecx, ES(%esp) 15.440 - movl $(__USER_DS), %ecx 15.441 - movl %ecx, %ds 15.442 - movl %ecx, %es 15.443 - movl %esp,%eax # pt_regs pointer 15.444 - XEN_GET_VCPU_INFO(%esi) 15.445 - XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK) 15.446 - call *%edi 15.447 - jmp ret_from_exception 15.448 - 15.449 -# A note on the "critical region" in our callback handler. 15.450 -# We want to avoid stacking callback handlers due to events occurring 15.451 -# during handling of the last event. To do this, we keep events disabled 15.452 -# until we've done all processing. HOWEVER, we must enable events before 15.453 -# popping the stack frame (can't be done atomically) and so it would still 15.454 -# be possible to get enough handler activations to overflow the stack. 15.455 -# Although unlikely, bugs of that kind are hard to track down, so we'd 15.456 -# like to avoid the possibility. 15.457 -# So, on entry to the handler we detect whether we interrupted an 15.458 -# existing activation in its critical region -- if so, we pop the current 15.459 -# activation and restart the handler using the previous one. 15.460 -ENTRY(hypervisor_callback) 15.461 - pushl %eax 15.462 - SAVE_ALL_NO_EVENTMASK 15.463 - movl EIP(%esp),%eax 15.464 - cmpl $scrit,%eax 15.465 - jb 11f 15.466 - cmpl $ecrit,%eax 15.467 - jb critical_region_fixup 15.468 -11: XEN_GET_VCPU_INFO(%esi) 15.469 - movb $0, EVENT_MASK(%esp) 15.470 - push %esp 15.471 - call evtchn_do_upcall 15.472 - add $4,%esp 15.473 - jmp ret_from_intr 15.474 - 15.475 - ALIGN 15.476 -restore_all_enable_events: 15.477 - XEN_UNBLOCK_EVENTS(%esi) 15.478 -scrit: /**** START OF CRITICAL REGION ****/ 15.479 - XEN_TEST_PENDING(%esi) 15.480 - jnz 14f # process more events if necessary... 15.481 - RESTORE_ALL 15.482 -14: XEN_BLOCK_EVENTS(%esi) 15.483 - jmp 11b 15.484 -ecrit: /**** END OF CRITICAL REGION ****/ 15.485 -# [How we do the fixup]. We want to merge the current stack frame with the 15.486 -# just-interrupted frame. How we do this depends on where in the critical 15.487 -# region the interrupted handler was executing, and so how many saved 15.488 -# registers are in each frame. We do this quickly using the lookup table 15.489 -# 'critical_fixup_table'. For each byte offset in the critical region, it 15.490 -# provides the number of bytes which have already been popped from the 15.491 -# interrupted stack frame. 15.492 -critical_region_fixup: 15.493 - addl $critical_fixup_table-scrit,%eax 15.494 - movzbl (%eax),%eax # %eax contains num bytes popped 15.495 - mov %esp,%esi 15.496 - add %eax,%esi # %esi points at end of src region 15.497 - mov %esp,%edi 15.498 - add $0x34,%edi # %edi points at end of dst region 15.499 - mov %eax,%ecx 15.500 - shr $2,%ecx # convert words to bytes 15.501 - je 16f # skip loop if nothing to copy 15.502 -15: subl $4,%esi # pre-decrementing copy loop 15.503 - subl $4,%edi 15.504 - movl (%esi),%eax 15.505 - movl %eax,(%edi) 15.506 - loop 15b 15.507 -16: movl %edi,%esp # final %edi is top of merged stack 15.508 - jmp 11b 15.509 - 15.510 -critical_fixup_table: 15.511 - .byte 0x00,0x00,0x00 # testb $0xff,(%esi) = XEN_TEST_PENDING 15.512 - .byte 0x00,0x00 # jnz 14f 15.513 - .byte 0x00 # pop %ebx 15.514 - .byte 0x04 # pop %ecx 15.515 - .byte 0x08 # pop %edx 15.516 - .byte 0x0c # pop %esi 15.517 - .byte 0x10 # pop %edi 15.518 - .byte 0x14 # pop %ebp 15.519 - .byte 0x18 # pop %eax 15.520 - .byte 0x1c # pop %ds 15.521 - .byte 0x20 # pop %es 15.522 - .byte 0x24,0x24,0x24 # add $4,%esp 15.523 - .byte 0x28 # iret 15.524 - .byte 0x00,0x00,0x00,0x00 # movb $1,1(%esi) 15.525 - .byte 0x00,0x00 # jmp 11b 15.526 - 15.527 -# Hypervisor uses this for application faults while it executes. 15.528 -ENTRY(failsafe_callback) 15.529 -1: popl %ds 15.530 -2: popl %es 15.531 -3: popl %fs 15.532 -4: popl %gs 15.533 - subl $4,%esp 15.534 - SAVE_ALL 15.535 - jmp ret_from_exception 15.536 -.section .fixup,"ax"; \ 15.537 -6: movl $0,(%esp); \ 15.538 - jmp 1b; \ 15.539 -7: movl $0,(%esp); \ 15.540 - jmp 2b; \ 15.541 -8: movl $0,(%esp); \ 15.542 - jmp 3b; \ 15.543 -9: movl $0,(%esp); \ 15.544 - jmp 4b; \ 15.545 -.previous; \ 15.546 -.section __ex_table,"a";\ 15.547 - .align 4; \ 15.548 - .long 1b,6b; \ 15.549 - .long 2b,7b; \ 15.550 - .long 3b,8b; \ 15.551 - .long 4b,9b; \ 15.552 -.previous 15.553 - 15.554 -ENTRY(coprocessor_error) 15.555 - pushl $0 15.556 - pushl $do_coprocessor_error 15.557 - jmp error_code 15.558 - 15.559 -ENTRY(simd_coprocessor_error) 15.560 - pushl $0 15.561 - pushl $do_simd_coprocessor_error 15.562 - jmp error_code 15.563 - 15.564 -ENTRY(device_not_available) 15.565 - pushl $-1 # mark this as an int 15.566 - SAVE_ALL 15.567 - preempt_stop 15.568 - call math_state_restore 15.569 - jmp ret_from_exception 15.570 - 15.571 -/* 15.572 - * Debug traps and NMI can happen at the one SYSENTER instruction 15.573 - * that sets up the real kernel stack. Check here, since we can't 15.574 - * allow the wrong stack to be used. 15.575 - * 15.576 - * "TSS_sysenter_esp0+12" is because the NMI/debug handler will have 15.577 - * already pushed 3 words if it hits on the sysenter instruction: 15.578 - * eflags, cs and eip. 15.579 - * 15.580 - * We just load the right stack, and push the three (known) values 15.581 - * by hand onto the new stack - while updating the return eip past 15.582 - * the instruction that would have done it for sysenter. 15.583 - */ 15.584 -#define FIX_STACK(offset, ok, label) \ 15.585 - cmpw $__KERNEL_CS,4(%esp); \ 15.586 - jne ok; \ 15.587 -label: \ 15.588 - movl TSS_sysenter_esp0+offset(%esp),%esp; \ 15.589 - pushfl; \ 15.590 - pushl $__KERNEL_CS; \ 15.591 - pushl $sysenter_past_esp 15.592 - 15.593 -ENTRY(debug) 15.594 - cmpl $sysenter_entry,(%esp) 15.595 - jne debug_stack_correct 15.596 - FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn) 15.597 -debug_stack_correct: 15.598 - pushl $-1 # mark this as an int 15.599 - SAVE_ALL 15.600 - xorl %edx,%edx # error code 0 15.601 - movl %esp,%eax # pt_regs pointer 15.602 - call do_debug 15.603 - testl %eax,%eax 15.604 - jnz restore_all 15.605 - jmp ret_from_exception 15.606 - 15.607 -#if 0 /* XEN */ 15.608 -/* 15.609 - * NMI is doubly nasty. It can happen _while_ we're handling 15.610 - * a debug fault, and the debug fault hasn't yet been able to 15.611 - * clear up the stack. So we first check whether we got an 15.612 - * NMI on the sysenter entry path, but after that we need to 15.613 - * check whether we got an NMI on the debug path where the debug 15.614 - * fault happened on the sysenter path. 15.615 - */ 15.616 -ENTRY(nmi) 15.617 - cmpl $sysenter_entry,(%esp) 15.618 - je nmi_stack_fixup 15.619 - pushl %eax 15.620 - movl %esp,%eax 15.621 - /* Do not access memory above the end of our stack page, 15.622 - * it might not exist. 15.623 - */ 15.624 - andl $(THREAD_SIZE-1),%eax 15.625 - cmpl $(THREAD_SIZE-20),%eax 15.626 - popl %eax 15.627 - jae nmi_stack_correct 15.628 - cmpl $sysenter_entry,12(%esp) 15.629 - je nmi_debug_stack_check 15.630 -nmi_stack_correct: 15.631 - pushl %eax 15.632 - SAVE_ALL 15.633 - xorl %edx,%edx # zero error code 15.634 - movl %esp,%eax # pt_regs pointer 15.635 - call do_nmi 15.636 - RESTORE_ALL 15.637 - 15.638 -nmi_stack_fixup: 15.639 - FIX_STACK(12,nmi_stack_correct, 1) 15.640 - jmp nmi_stack_correct 15.641 -nmi_debug_stack_check: 15.642 - cmpw $__KERNEL_CS,16(%esp) 15.643 - jne nmi_stack_correct 15.644 - cmpl $debug - 1,(%esp) 15.645 - jle nmi_stack_correct 15.646 - cmpl $debug_esp_fix_insn,(%esp) 15.647 - jle nmi_debug_stack_fixup 15.648 -nmi_debug_stack_fixup: 15.649 - FIX_STACK(24,nmi_stack_correct, 1) 15.650 - jmp nmi_stack_correct 15.651 -#endif /* XEN */ 15.652 - 15.653 -ENTRY(int3) 15.654 - pushl $-1 # mark this as an int 15.655 - SAVE_ALL 15.656 - xorl %edx,%edx # zero error code 15.657 - movl %esp,%eax # pt_regs pointer 15.658 - call do_int3 15.659 - testl %eax,%eax 15.660 - jnz restore_all 15.661 - jmp ret_from_exception 15.662 - 15.663 -ENTRY(overflow) 15.664 - pushl $0 15.665 - pushl $do_overflow 15.666 - jmp error_code 15.667 - 15.668 -ENTRY(bounds) 15.669 - pushl $0 15.670 - pushl $do_bounds 15.671 - jmp error_code 15.672 - 15.673 -ENTRY(invalid_op) 15.674 - pushl $0 15.675 - pushl $do_invalid_op 15.676 - jmp error_code 15.677 - 15.678 -ENTRY(coprocessor_segment_overrun) 15.679 - pushl $0 15.680 - pushl $do_coprocessor_segment_overrun 15.681 - jmp error_code 15.682 - 15.683 -ENTRY(invalid_TSS) 15.684 - pushl $do_invalid_TSS 15.685 - jmp error_code 15.686 - 15.687 -ENTRY(segment_not_present) 15.688 - pushl $do_segment_not_present 15.689 - jmp error_code 15.690 - 15.691 -ENTRY(stack_segment) 15.692 - pushl $do_stack_segment 15.693 - jmp error_code 15.694 - 15.695 -ENTRY(general_protection) 15.696 - pushl $do_general_protection 15.697 - jmp error_code 15.698 - 15.699 -ENTRY(alignment_check) 15.700 - pushl $do_alignment_check 15.701 - jmp error_code 15.702 - 15.703 -# This handler is special, because it gets an extra value on its stack, 15.704 -# which is the linear faulting address. 15.705 -# fastcall register usage: %eax = pt_regs, %edx = error code, 15.706 -# %ecx = fault address 15.707 -ENTRY(page_fault) 15.708 - pushl %ds 15.709 - pushl %eax 15.710 - xorl %eax, %eax 15.711 - pushl %ebp 15.712 - pushl %edi 15.713 - pushl %esi 15.714 - pushl %edx 15.715 - decl %eax /* eax = -1 */ 15.716 - pushl %ecx 15.717 - pushl %ebx 15.718 - cld 15.719 - movl %es,%edi 15.720 - movl ES(%esp), %ecx /* get the faulting address */ 15.721 - movl ORIG_EAX(%esp), %edx /* get the error code */ 15.722 - movl %eax, ORIG_EAX(%esp) 15.723 - movl %edi, ES(%esp) 15.724 - movl $(__KERNEL_DS),%eax 15.725 - movl %eax, %ds 15.726 - movl %eax, %es 15.727 - movl %esp,%eax /* pt_regs pointer */ 15.728 - XEN_GET_VCPU_INFO(%esi) 15.729 - XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK) 15.730 - call do_page_fault 15.731 - jmp ret_from_exception 15.732 - 15.733 -#ifdef CONFIG_X86_MCE 15.734 -ENTRY(machine_check) 15.735 - pushl $0 15.736 - pushl machine_check_vector 15.737 - jmp error_code 15.738 -#endif 15.739 - 15.740 -ENTRY(fixup_4gb_segment) 15.741 - pushl $do_fixup_4gb_segment 15.742 - jmp error_code 15.743 - 15.744 -.data 15.745 -ENTRY(sys_call_table) 15.746 - .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */ 15.747 - .long sys_exit 15.748 - .long sys_fork 15.749 - .long sys_read 15.750 - .long sys_write 15.751 - .long sys_open /* 5 */ 15.752 - .long sys_close 15.753 - .long sys_waitpid 15.754 - .long sys_creat 15.755 - .long sys_link 15.756 - .long sys_unlink /* 10 */ 15.757 - .long sys_execve 15.758 - .long sys_chdir 15.759 - .long sys_time 15.760 - .long sys_mknod 15.761 - .long sys_chmod /* 15 */ 15.762 - .long sys_lchown16 15.763 - .long sys_ni_syscall /* old break syscall holder */ 15.764 - .long sys_stat 15.765 - .long sys_lseek 15.766 - .long sys_getpid /* 20 */ 15.767 - .long sys_mount 15.768 - .long sys_oldumount 15.769 - .long sys_setuid16 15.770 - .long sys_getuid16 15.771 - .long sys_stime /* 25 */ 15.772 - .long sys_ptrace 15.773 - .long sys_alarm 15.774 - .long sys_fstat 15.775 - .long sys_pause 15.776 - .long sys_utime /* 30 */ 15.777 - .long sys_ni_syscall /* old stty syscall holder */ 15.778 - .long sys_ni_syscall /* old gtty syscall holder */ 15.779 - .long sys_access 15.780 - .long sys_nice 15.781 - .long sys_ni_syscall /* 35 - old ftime syscall holder */ 15.782 - .long sys_sync 15.783 - .long sys_kill 15.784 - .long sys_rename 15.785 - .long sys_mkdir 15.786 - .long sys_rmdir /* 40 */ 15.787 - .long sys_dup 15.788 - .long sys_pipe 15.789 - .long sys_times 15.790 - .long sys_ni_syscall /* old prof syscall holder */ 15.791 - .long sys_brk /* 45 */ 15.792 - .long sys_setgid16 15.793 - .long sys_getgid16 15.794 - .long sys_signal 15.795 - .long sys_geteuid16 15.796 - .long sys_getegid16 /* 50 */ 15.797 - .long sys_acct 15.798 - .long sys_umount /* recycled never used phys() */ 15.799 - .long sys_ni_syscall /* old lock syscall holder */ 15.800 - .long sys_ioctl 15.801 - .long sys_fcntl /* 55 */ 15.802 - .long sys_ni_syscall /* old mpx syscall holder */ 15.803 - .long sys_setpgid 15.804 - .long sys_ni_syscall /* old ulimit syscall holder */ 15.805 - .long sys_olduname 15.806 - .long sys_umask /* 60 */ 15.807 - .long sys_chroot 15.808 - .long sys_ustat 15.809 - .long sys_dup2 15.810 - .long sys_getppid 15.811 - .long sys_getpgrp /* 65 */ 15.812 - .long sys_setsid 15.813 - .long sys_sigaction 15.814 - .long sys_sgetmask 15.815 - .long sys_ssetmask 15.816 - .long sys_setreuid16 /* 70 */ 15.817 - .long sys_setregid16 15.818 - .long sys_sigsuspend 15.819 - .long sys_sigpending 15.820 - .long sys_sethostname 15.821 - .long sys_setrlimit /* 75 */ 15.822 - .long sys_old_getrlimit 15.823 - .long sys_getrusage 15.824 - .long sys_gettimeofday 15.825 - .long sys_settimeofday 15.826 - .long sys_getgroups16 /* 80 */ 15.827 - .long sys_setgroups16 15.828 - .long old_select 15.829 - .long sys_symlink 15.830 - .long sys_lstat 15.831 - .long sys_readlink /* 85 */ 15.832 - .long sys_uselib 15.833 - .long sys_swapon 15.834 - .long sys_reboot 15.835 - .long old_readdir 15.836 - .long old_mmap /* 90 */ 15.837 - .long sys_munmap 15.838 - .long sys_truncate 15.839 - .long sys_ftruncate 15.840 - .long sys_fchmod 15.841 - .long sys_fchown16 /* 95 */ 15.842 - .long sys_getpriority 15.843 - .long sys_setpriority 15.844 - .long sys_ni_syscall /* old profil syscall holder */ 15.845 - .long sys_statfs 15.846 - .long sys_fstatfs /* 100 */ 15.847 - .long sys_ioperm 15.848 - .long sys_socketcall 15.849 - .long sys_syslog 15.850 - .long sys_setitimer 15.851 - .long sys_getitimer /* 105 */ 15.852 - .long sys_newstat 15.853 - .long sys_newlstat 15.854 - .long sys_newfstat 15.855 - .long sys_uname 15.856 - .long sys_iopl /* 110 */ 15.857 - .long sys_vhangup 15.858 - .long sys_ni_syscall /* old "idle" system call */ 15.859 - .long sys_vm86old 15.860 - .long sys_wait4 15.861 - .long sys_swapoff /* 115 */ 15.862 - .long sys_sysinfo 15.863 - .long sys_ipc 15.864 - .long sys_fsync 15.865 - .long sys_sigreturn 15.866 - .long sys_clone /* 120 */ 15.867 - .long sys_setdomainname 15.868 - .long sys_newuname 15.869 - .long sys_modify_ldt 15.870 - .long sys_adjtimex 15.871 - .long sys_mprotect /* 125 */ 15.872 - .long sys_sigprocmask 15.873 - .long sys_ni_syscall /* old "create_module" */ 15.874 - .long sys_init_module 15.875 - .long sys_delete_module 15.876 - .long sys_ni_syscall /* 130: old "get_kernel_syms" */ 15.877 - .long sys_quotactl 15.878 - .long sys_getpgid 15.879 - .long sys_fchdir 15.880 - .long sys_bdflush 15.881 - .long sys_sysfs /* 135 */ 15.882 - .long sys_personality 15.883 - .long sys_ni_syscall /* reserved for afs_syscall */ 15.884 - .long sys_setfsuid16 15.885 - .long sys_setfsgid16 15.886 - .long sys_llseek /* 140 */ 15.887 - .long sys_getdents 15.888 - .long sys_select 15.889 - .long sys_flock 15.890 - .long sys_msync 15.891 - .long sys_readv /* 145 */ 15.892 - .long sys_writev 15.893 - .long sys_getsid 15.894 - .long sys_fdatasync 15.895 - .long sys_sysctl 15.896 - .long sys_mlock /* 150 */ 15.897 - .long sys_munlock 15.898 - .long sys_mlockall 15.899 - .long sys_munlockall 15.900 - .long sys_sched_setparam 15.901 - .long sys_sched_getparam /* 155 */ 15.902 - .long sys_sched_setscheduler 15.903 - .long sys_sched_getscheduler 15.904 - .long sys_sched_yield 15.905 - .long sys_sched_get_priority_max 15.906 - .long sys_sched_get_priority_min /* 160 */ 15.907 - .long sys_sched_rr_get_interval 15.908 - .long sys_nanosleep 15.909 - .long sys_mremap 15.910 - .long sys_setresuid16 15.911 - .long sys_getresuid16 /* 165 */ 15.912 - .long sys_vm86 15.913 - .long sys_ni_syscall /* Old sys_query_module */ 15.914 - .long sys_poll 15.915 - .long sys_nfsservctl 15.916 - .long sys_setresgid16 /* 170 */ 15.917 - .long sys_getresgid16 15.918 - .long sys_prctl 15.919 - .long sys_rt_sigreturn 15.920 - .long sys_rt_sigaction 15.921 - .long sys_rt_sigprocmask /* 175 */ 15.922 - .long sys_rt_sigpending 15.923 - .long sys_rt_sigtimedwait 15.924 - .long sys_rt_sigqueueinfo 15.925 - .long sys_rt_sigsuspend 15.926 - .long sys_pread64 /* 180 */ 15.927 - .long sys_pwrite64 15.928 - .long sys_chown16 15.929 - .long sys_getcwd 15.930 - .long sys_capget 15.931 - .long sys_capset /* 185 */ 15.932 - .long sys_sigaltstack 15.933 - .long sys_sendfile 15.934 - .long sys_ni_syscall /* reserved for streams1 */ 15.935 - .long sys_ni_syscall /* reserved for streams2 */ 15.936 - .long sys_vfork /* 190 */ 15.937 - .long sys_getrlimit 15.938 - .long sys_mmap2 15.939 - .long sys_truncate64 15.940 - .long sys_ftruncate64 15.941 - .long sys_stat64 /* 195 */ 15.942 - .long sys_lstat64 15.943 - .long sys_fstat64 15.944 - .long sys_lchown 15.945 - .long sys_getuid 15.946 - .long sys_getgid /* 200 */ 15.947 - .long sys_geteuid 15.948 - .long sys_getegid 15.949 - .long sys_setreuid 15.950 - .long sys_setregid 15.951 - .long sys_getgroups /* 205 */ 15.952 - .long sys_setgroups 15.953 - .long sys_fchown 15.954 - .long sys_setresuid 15.955 - .long sys_getresuid 15.956 - .long sys_setresgid /* 210 */ 15.957 - .long sys_getresgid 15.958 - .long sys_chown 15.959 - .long sys_setuid 15.960 - .long sys_setgid 15.961 - .long sys_setfsuid /* 215 */ 15.962 - .long sys_setfsgid 15.963 - .long sys_pivot_root 15.964 - .long sys_mincore 15.965 - .long sys_madvise 15.966 - .long sys_getdents64 /* 220 */ 15.967 - .long sys_fcntl64 15.968 - .long sys_ni_syscall /* reserved for TUX */ 15.969 - .long sys_ni_syscall 15.970 - .long sys_gettid 15.971 - .long sys_readahead /* 225 */ 15.972 - .long sys_setxattr 15.973 - .long sys_lsetxattr 15.974 - .long sys_fsetxattr 15.975 - .long sys_getxattr 15.976 - .long sys_lgetxattr /* 230 */ 15.977 - .long sys_fgetxattr 15.978 - .long sys_listxattr 15.979 - .long sys_llistxattr 15.980 - .long sys_flistxattr 15.981 - .long sys_removexattr /* 235 */ 15.982 - .long sys_lremovexattr 15.983 - .long sys_fremovexattr 15.984 - .long sys_tkill 15.985 - .long sys_sendfile64 15.986 - .long sys_futex /* 240 */ 15.987 - .long sys_sched_setaffinity 15.988 - .long sys_sched_getaffinity 15.989 - .long sys_set_thread_area 15.990 - .long sys_get_thread_area 15.991 - .long sys_io_setup /* 245 */ 15.992 - .long sys_io_destroy 15.993 - .long sys_io_getevents 15.994 - .long sys_io_submit 15.995 - .long sys_io_cancel 15.996 - .long sys_fadvise64 /* 250 */ 15.997 - .long sys_ni_syscall 15.998 - .long sys_exit_group 15.999 - .long sys_lookup_dcookie 15.1000 - .long sys_epoll_create 15.1001 - .long sys_epoll_ctl /* 255 */ 15.1002 - .long sys_epoll_wait 15.1003 - .long sys_remap_file_pages 15.1004 - .long sys_set_tid_address 15.1005 - .long sys_timer_create 15.1006 - .long sys_timer_settime /* 260 */ 15.1007 - .long sys_timer_gettime 15.1008 - .long sys_timer_getoverrun 15.1009 - .long sys_timer_delete 15.1010 - .long sys_clock_settime 15.1011 - .long sys_clock_gettime /* 265 */ 15.1012 - .long sys_clock_getres 15.1013 - .long sys_clock_nanosleep 15.1014 - .long sys_statfs64 15.1015 - .long sys_fstatfs64 15.1016 - .long sys_tgkill /* 270 */ 15.1017 - .long sys_utimes 15.1018 - .long sys_fadvise64_64 15.1019 - .long sys_ni_syscall /* sys_vserver */ 15.1020 - .long sys_mbind 15.1021 - .long sys_get_mempolicy 15.1022 - .long sys_set_mempolicy 15.1023 - .long sys_mq_open 15.1024 - .long sys_mq_unlink 15.1025 - .long sys_mq_timedsend 15.1026 - .long sys_mq_timedreceive /* 280 */ 15.1027 - .long sys_mq_notify 15.1028 - .long sys_mq_getsetattr 15.1029 - .long sys_ni_syscall /* reserved for kexec */ 15.1030 - .long sys_waitid 15.1031 - .long sys_ni_syscall /* 285 */ /* available */ 15.1032 - .long sys_add_key 15.1033 - .long sys_request_key 15.1034 - .long sys_keyctl 15.1035 - 15.1036 -syscall_table_size=(.-sys_call_table)
16.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S Tue Dec 07 19:17:22 2004 +0000 16.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 16.3 @@ -1,167 +0,0 @@ 16.4 - 16.5 -#include <linux/config.h> 16.6 - 16.7 -.section __xen_guest 16.8 - .ascii "GUEST_OS=linux,GUEST_VER=2.6,XEN_VER=2.0,VIRT_BASE=0xC0000000" 16.9 - .ascii ",LOADER=generic" 16.10 - .ascii ",PT_MODE_WRITABLE" 16.11 - .byte 0 16.12 - 16.13 -.text 16.14 -#include <linux/threads.h> 16.15 -#include <linux/linkage.h> 16.16 -#include <asm/segment.h> 16.17 -#include <asm/thread_info.h> 16.18 -#include <asm/asm_offsets.h> 16.19 -#include <asm-xen/xen-public/arch-x86_32.h> 16.20 - 16.21 -/* 16.22 - * References to members of the new_cpu_data structure. 16.23 - */ 16.24 - 16.25 -#define X86 new_cpu_data+CPUINFO_x86 16.26 -#define X86_VENDOR new_cpu_data+CPUINFO_x86_vendor 16.27 -#define X86_MODEL new_cpu_data+CPUINFO_x86_model 16.28 -#define X86_MASK new_cpu_data+CPUINFO_x86_mask 16.29 -#define X86_HARD_MATH new_cpu_data+CPUINFO_hard_math 16.30 -#define X86_CPUID new_cpu_data+CPUINFO_cpuid_level 16.31 -#define X86_CAPABILITY new_cpu_data+CPUINFO_x86_capability 16.32 -#define X86_VENDOR_ID new_cpu_data+CPUINFO_x86_vendor_id 16.33 - 16.34 -ENTRY(startup_32) 16.35 - cld 16.36 - 16.37 - /* Set up the stack pointer */ 16.38 - lss stack_start,%esp 16.39 - 16.40 - /* Copy the necessary stuff from xen_start_info structure. */ 16.41 - mov $xen_start_info_union,%edi 16.42 - mov $128,%ecx 16.43 - rep movsl 16.44 - 16.45 -checkCPUtype: 16.46 - 16.47 - /* get vendor info */ 16.48 - xorl %eax,%eax # call CPUID with 0 -> return vendor ID 16.49 - cpuid 16.50 - movl %eax,X86_CPUID # save CPUID level 16.51 - movl %ebx,X86_VENDOR_ID # lo 4 chars 16.52 - movl %edx,X86_VENDOR_ID+4 # next 4 chars 16.53 - movl %ecx,X86_VENDOR_ID+8 # last 4 chars 16.54 - 16.55 - movl $1,%eax # Use the CPUID instruction to get CPU type 16.56 - cpuid 16.57 - movb %al,%cl # save reg for future use 16.58 - andb $0x0f,%ah # mask processor family 16.59 - movb %ah,X86 16.60 - andb $0xf0,%al # mask model 16.61 - shrb $4,%al 16.62 - movb %al,X86_MODEL 16.63 - andb $0x0f,%cl # mask mask revision 16.64 - movb %cl,X86_MASK 16.65 - movl %edx,X86_CAPABILITY 16.66 - 16.67 - xorl %eax,%eax # Clear FS/GS and LDT 16.68 - movl %eax,%fs 16.69 - movl %eax,%gs 16.70 - cld # gcc2 wants the direction flag cleared at all times 16.71 - 16.72 - call start_kernel 16.73 -L6: 16.74 - jmp L6 # main should never return here, but 16.75 - # just in case, we know what happens. 16.76 - 16.77 -ENTRY(lgdt_finish) 16.78 - movl $(__KERNEL_DS),%eax # reload all the segment registers 16.79 - movw %ax,%ss # after changing gdt. 16.80 - 16.81 - movl $(__USER_DS),%eax # DS/ES contains default USER segment 16.82 - movw %ax,%ds 16.83 - movw %ax,%es 16.84 - 16.85 - popl %eax # reload CS by intersegment return 16.86 - pushl $(__KERNEL_CS) 16.87 - pushl %eax 16.88 - lret 16.89 - 16.90 -ENTRY(stack_start) 16.91 - .long init_thread_union+THREAD_SIZE 16.92 - .long __BOOT_DS 16.93 - 16.94 -.globl idt_descr 16.95 -.globl cpu_gdt_descr 16.96 - 16.97 - ALIGN 16.98 - .word 0 # 32-bit align idt_desc.address 16.99 -idt_descr: 16.100 - .word IDT_ENTRIES*8-1 # idt contains 256 entries 16.101 - .long idt_table 16.102 - 16.103 -# boot GDT descriptor (later on used by CPU#0): 16.104 - .word 0 # 32 bit align gdt_desc.address 16.105 -cpu_gdt_descr: 16.106 - .word GDT_SIZE 16.107 - .long cpu_gdt_table 16.108 - 16.109 - .fill NR_CPUS-1,8,0 # space for the other GDT descriptors 16.110 - 16.111 -.org 0x1000 16.112 -ENTRY(empty_zero_page) 16.113 - 16.114 -.org 0x2000 16.115 -ENTRY(swapper_pg_dir) 16.116 - 16.117 -.org 0x3000 16.118 -ENTRY(cpu_gdt_table) 16.119 - .quad 0x0000000000000000 /* NULL descriptor */ 16.120 - .quad 0x0000000000000000 /* 0x0b reserved */ 16.121 - .quad 0x0000000000000000 /* 0x13 reserved */ 16.122 - .quad 0x0000000000000000 /* 0x1b reserved */ 16.123 - .quad 0x0000000000000000 /* 0x20 unused */ 16.124 - .quad 0x0000000000000000 /* 0x28 unused */ 16.125 - .quad 0x0000000000000000 /* 0x33 TLS entry 1 */ 16.126 - .quad 0x0000000000000000 /* 0x3b TLS entry 2 */ 16.127 - .quad 0x0000000000000000 /* 0x43 TLS entry 3 */ 16.128 - .quad 0x0000000000000000 /* 0x4b reserved */ 16.129 - .quad 0x0000000000000000 /* 0x53 reserved */ 16.130 - .quad 0x0000000000000000 /* 0x5b reserved */ 16.131 - 16.132 - .quad 0x00cfbb000000c3ff /* 0x60 kernel 4GB code at 0x00000000 */ 16.133 - .quad 0x00cfb3000000c3ff /* 0x68 kernel 4GB data at 0x00000000 */ 16.134 - .quad 0x00cffb000000c3ff /* 0x73 user 4GB code at 0x00000000 */ 16.135 - .quad 0x00cff3000000c3ff /* 0x7b user 4GB data at 0x00000000 */ 16.136 - 16.137 - .quad 0x0000000000000000 /* 0x80 TSS descriptor */ 16.138 - .quad 0x0000000000000000 /* 0x88 LDT descriptor */ 16.139 - 16.140 - /* Segments used for calling PnP BIOS */ 16.141 - .quad 0x0000000000000000 /* 0x90 32-bit code */ 16.142 - .quad 0x0000000000000000 /* 0x98 16-bit code */ 16.143 - .quad 0x0000000000000000 /* 0xa0 16-bit data */ 16.144 - .quad 0x0000000000000000 /* 0xa8 16-bit data */ 16.145 - .quad 0x0000000000000000 /* 0xb0 16-bit data */ 16.146 - /* 16.147 - * The APM segments have byte granularity and their bases 16.148 - * and limits are set at run time. 16.149 - */ 16.150 - .quad 0x0000000000000000 /* 0xb8 APM CS code */ 16.151 - .quad 0x0000000000000000 /* 0xc0 APM CS 16 code (16 bit) */ 16.152 - .quad 0x0000000000000000 /* 0xc8 APM DS data */ 16.153 - 16.154 - .quad 0x0000000000000000 /* 0xd0 - unused */ 16.155 - .quad 0x0000000000000000 /* 0xd8 - unused */ 16.156 - .quad 0x0000000000000000 /* 0xe0 - unused */ 16.157 - .quad 0x0000000000000000 /* 0xe8 - unused */ 16.158 - .quad 0x0000000000000000 /* 0xf0 - unused */ 16.159 - .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */ 16.160 - .fill GDT_ENTRIES-32,8,0 16.161 - 16.162 -.org 0x4000 16.163 -ENTRY(default_ldt) 16.164 - 16.165 -.org 0x5000 16.166 -/* 16.167 - * Real beginning of normal "text" segment 16.168 - */ 16.169 -ENTRY(stext) 16.170 -ENTRY(_stext)
17.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c Tue Dec 07 19:17:22 2004 +0000 17.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 17.3 @@ -1,196 +0,0 @@ 17.4 -#include <linux/config.h> 17.5 -#include <linux/module.h> 17.6 -#include <linux/smp.h> 17.7 -#include <linux/user.h> 17.8 -#include <linux/elfcore.h> 17.9 -#include <linux/mca.h> 17.10 -#include <linux/sched.h> 17.11 -#include <linux/in6.h> 17.12 -#include <linux/interrupt.h> 17.13 -#include <linux/smp_lock.h> 17.14 -#include <linux/pm.h> 17.15 -#include <linux/pci.h> 17.16 -#include <linux/apm_bios.h> 17.17 -#include <linux/kernel.h> 17.18 -#include <linux/string.h> 17.19 -#include <linux/tty.h> 17.20 -#include <linux/highmem.h> 17.21 -#include <linux/time.h> 17.22 - 17.23 -#include <asm/semaphore.h> 17.24 -#include <asm/processor.h> 17.25 -#include <asm/i387.h> 17.26 -#include <asm/uaccess.h> 17.27 -#include <asm/checksum.h> 17.28 -#include <asm/io.h> 17.29 -#include <asm/delay.h> 17.30 -#include <asm/irq.h> 17.31 -#include <asm/mmx.h> 17.32 -#include <asm/desc.h> 17.33 -#include <asm/pgtable.h> 17.34 -#include <asm/tlbflush.h> 17.35 -#include <asm/nmi.h> 17.36 -#include <asm/ist.h> 17.37 -#include <asm/kdebug.h> 17.38 - 17.39 -extern void dump_thread(struct pt_regs *, struct user *); 17.40 -extern spinlock_t rtc_lock; 17.41 - 17.42 -/* This is definitely a GPL-only symbol */ 17.43 -EXPORT_SYMBOL_GPL(cpu_gdt_table); 17.44 - 17.45 -#if defined(CONFIG_APM_MODULE) 17.46 -extern void machine_real_restart(unsigned char *, int); 17.47 -EXPORT_SYMBOL(machine_real_restart); 17.48 -extern void default_idle(void); 17.49 -EXPORT_SYMBOL(default_idle); 17.50 -#endif 17.51 - 17.52 -#ifdef CONFIG_SMP 17.53 -extern void FASTCALL( __write_lock_failed(rwlock_t *rw)); 17.54 -extern void FASTCALL( __read_lock_failed(rwlock_t *rw)); 17.55 -#endif 17.56 - 17.57 -#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE) 17.58 -extern struct drive_info_struct drive_info; 17.59 -EXPORT_SYMBOL(drive_info); 17.60 -#endif 17.61 - 17.62 -extern unsigned long cpu_khz; 17.63 -extern unsigned long get_cmos_time(void); 17.64 - 17.65 -/* platform dependent support */ 17.66 -EXPORT_SYMBOL(boot_cpu_data); 17.67 -EXPORT_SYMBOL(MCA_bus); 17.68 -#ifdef CONFIG_DISCONTIGMEM 17.69 -EXPORT_SYMBOL(node_data); 17.70 -EXPORT_SYMBOL(physnode_map); 17.71 -#endif 17.72 -#ifdef CONFIG_X86_NUMAQ 17.73 -EXPORT_SYMBOL(xquad_portio); 17.74 -#endif 17.75 -EXPORT_SYMBOL(dump_thread); 17.76 -EXPORT_SYMBOL(dump_fpu); 17.77 -EXPORT_SYMBOL_GPL(kernel_fpu_begin); 17.78 -EXPORT_SYMBOL(__ioremap); 17.79 -EXPORT_SYMBOL(ioremap_nocache); 17.80 -EXPORT_SYMBOL(iounmap); 17.81 -EXPORT_SYMBOL(probe_irq_mask); 17.82 -EXPORT_SYMBOL(kernel_thread); 17.83 -EXPORT_SYMBOL(pm_idle); 17.84 -#ifdef CONFIG_APM 17.85 -EXPORT_SYMBOL(pm_power_off); 17.86 -#endif 17.87 -EXPORT_SYMBOL(get_cmos_time); 17.88 -EXPORT_SYMBOL(cpu_khz); 17.89 -EXPORT_SYMBOL(apm_info); 17.90 - 17.91 -EXPORT_SYMBOL(__down_failed); 17.92 -EXPORT_SYMBOL(__down_failed_interruptible); 17.93 -EXPORT_SYMBOL(__down_failed_trylock); 17.94 -EXPORT_SYMBOL(__up_wakeup); 17.95 -/* Networking helper routines. */ 17.96 -EXPORT_SYMBOL(csum_partial_copy_generic); 17.97 -/* Delay loops */ 17.98 -EXPORT_SYMBOL(__ndelay); 17.99 -EXPORT_SYMBOL(__udelay); 17.100 -EXPORT_SYMBOL(__delay); 17.101 -EXPORT_SYMBOL(__const_udelay); 17.102 - 17.103 -EXPORT_SYMBOL(__get_user_1); 17.104 -EXPORT_SYMBOL(__get_user_2); 17.105 -EXPORT_SYMBOL(__get_user_4); 17.106 - 17.107 -EXPORT_SYMBOL(strpbrk); 17.108 -EXPORT_SYMBOL(strstr); 17.109 - 17.110 -EXPORT_SYMBOL(strncpy_from_user); 17.111 -EXPORT_SYMBOL(__strncpy_from_user); 17.112 -EXPORT_SYMBOL(clear_user); 17.113 -EXPORT_SYMBOL(__clear_user); 17.114 -EXPORT_SYMBOL(__copy_from_user_ll); 17.115 -EXPORT_SYMBOL(__copy_to_user_ll); 17.116 -EXPORT_SYMBOL(strnlen_user); 17.117 - 17.118 -EXPORT_SYMBOL(dma_alloc_coherent); 17.119 -EXPORT_SYMBOL(dma_free_coherent); 17.120 - 17.121 -#ifdef CONFIG_PCI 17.122 -EXPORT_SYMBOL(pcibios_penalize_isa_irq); 17.123 -EXPORT_SYMBOL(pci_mem_start); 17.124 -#endif 17.125 - 17.126 -#ifdef CONFIG_PCI_BIOS 17.127 -EXPORT_SYMBOL(pcibios_set_irq_routing); 17.128 -EXPORT_SYMBOL(pcibios_get_irq_routing_table); 17.129 -#endif 17.130 - 17.131 -#ifdef CONFIG_X86_USE_3DNOW 17.132 -EXPORT_SYMBOL(_mmx_memcpy); 17.133 -EXPORT_SYMBOL(mmx_clear_page); 17.134 -EXPORT_SYMBOL(mmx_copy_page); 17.135 -#endif 17.136 - 17.137 -#ifdef CONFIG_X86_HT 17.138 -EXPORT_SYMBOL(smp_num_siblings); 17.139 -EXPORT_SYMBOL(cpu_sibling_map); 17.140 -#endif 17.141 - 17.142 -#ifdef CONFIG_SMP 17.143 -EXPORT_SYMBOL(cpu_data); 17.144 -EXPORT_SYMBOL(cpu_online_map); 17.145 -EXPORT_SYMBOL(cpu_callout_map); 17.146 -EXPORT_SYMBOL(__write_lock_failed); 17.147 -EXPORT_SYMBOL(__read_lock_failed); 17.148 - 17.149 -/* Global SMP stuff */ 17.150 -EXPORT_SYMBOL(smp_call_function); 17.151 - 17.152 -/* TLB flushing */ 17.153 -EXPORT_SYMBOL(flush_tlb_page); 17.154 -EXPORT_SYMBOL_GPL(flush_tlb_all); 17.155 -#endif 17.156 - 17.157 -#ifdef CONFIG_X86_IO_APIC 17.158 -EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector); 17.159 -#endif 17.160 - 17.161 -#ifdef CONFIG_MCA 17.162 -EXPORT_SYMBOL(machine_id); 17.163 -#endif 17.164 - 17.165 -#ifdef CONFIG_VT 17.166 -EXPORT_SYMBOL(screen_info); 17.167 -#endif 17.168 - 17.169 -EXPORT_SYMBOL(get_wchan); 17.170 - 17.171 -EXPORT_SYMBOL(rtc_lock); 17.172 - 17.173 -EXPORT_SYMBOL_GPL(set_nmi_callback); 17.174 -EXPORT_SYMBOL_GPL(unset_nmi_callback); 17.175 - 17.176 -#undef memcmp 17.177 -extern int memcmp(const void *,const void *,__kernel_size_t); 17.178 -EXPORT_SYMBOL(memcmp); 17.179 - 17.180 -EXPORT_SYMBOL(register_die_notifier); 17.181 -#ifdef CONFIG_HAVE_DEC_LOCK 17.182 -EXPORT_SYMBOL(_atomic_dec_and_lock); 17.183 -#endif 17.184 - 17.185 -EXPORT_SYMBOL(__PAGE_KERNEL); 17.186 - 17.187 -#ifdef CONFIG_HIGHMEM 17.188 -EXPORT_SYMBOL(kmap); 17.189 -EXPORT_SYMBOL(kunmap); 17.190 -EXPORT_SYMBOL(kmap_atomic); 17.191 -EXPORT_SYMBOL(kunmap_atomic); 17.192 -EXPORT_SYMBOL(kmap_atomic_to_page); 17.193 -#endif 17.194 - 17.195 -#if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) 17.196 -EXPORT_SYMBOL(ist_info); 17.197 -#endif 17.198 - 17.199 -EXPORT_SYMBOL(csum_partial);
18.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c Tue Dec 07 19:17:22 2004 +0000 18.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 18.3 @@ -1,51 +0,0 @@ 18.4 -#include <linux/sched.h> 18.5 -#include <linux/kernel.h> 18.6 -#include <linux/errno.h> 18.7 -#include <linux/types.h> 18.8 -#include <linux/ioport.h> 18.9 -#include <linux/mm.h> 18.10 -#include <linux/smp.h> 18.11 -#include <linux/smp_lock.h> 18.12 -#include <linux/stddef.h> 18.13 -#include <linux/slab.h> 18.14 -#include <asm-xen/xen-public/dom0_ops.h> 18.15 - 18.16 -asmlinkage long sys_iopl(unsigned int new_io_pl) 18.17 -{ 18.18 - unsigned int old_io_pl = current->thread.io_pl; 18.19 - dom0_op_t op; 18.20 - 18.21 - if (new_io_pl > 3) 18.22 - return -EINVAL; 18.23 - 18.24 - /* Need "raw I/O" privileges for direct port access. */ 18.25 - if ((new_io_pl > old_io_pl) && !capable(CAP_SYS_RAWIO)) 18.26 - return -EPERM; 18.27 - 18.28 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 18.29 - return -EPERM; 18.30 - 18.31 - /* Maintain OS privileges even if user attempts to relinquish them. */ 18.32 - if (new_io_pl == 0) 18.33 - new_io_pl = 1; 18.34 - 18.35 - /* Change our version of the privilege levels. */ 18.36 - current->thread.io_pl = new_io_pl; 18.37 - 18.38 - /* Force the change at ring 0. */ 18.39 - op.cmd = DOM0_IOPL; 18.40 - op.u.iopl.domain = DOMID_SELF; 18.41 - op.u.iopl.iopl = new_io_pl; 18.42 - HYPERVISOR_dom0_op(&op); 18.43 - 18.44 - return 0; 18.45 -} 18.46 - 18.47 -asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on) 18.48 -{ 18.49 -#if 0 18.50 - printk(KERN_INFO "ioperm not fully supported - %s\n", 18.51 - turn_on ? "set iopl to 3" : "ignore resource release"); 18.52 -#endif 18.53 - return turn_on ? sys_iopl(3) : 0; 18.54 -}
19.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c Tue Dec 07 19:17:22 2004 +0000 19.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 19.3 @@ -1,270 +0,0 @@ 19.4 -/* 19.5 - * linux/kernel/ldt.c 19.6 - * 19.7 - * Copyright (C) 1992 Krishna Balasubramanian and Linus Torvalds 19.8 - * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com> 19.9 - */ 19.10 - 19.11 -#include <linux/errno.h> 19.12 -#include <linux/sched.h> 19.13 -#include <linux/string.h> 19.14 -#include <linux/mm.h> 19.15 -#include <linux/smp.h> 19.16 -#include <linux/smp_lock.h> 19.17 -#include <linux/vmalloc.h> 19.18 -#include <linux/slab.h> 19.19 - 19.20 -#include <asm/uaccess.h> 19.21 -#include <asm/system.h> 19.22 -#include <asm/ldt.h> 19.23 -#include <asm/desc.h> 19.24 - 19.25 -#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ 19.26 -static void flush_ldt(void *null) 19.27 -{ 19.28 - if (current->active_mm) { 19.29 - load_LDT(¤t->active_mm->context); 19.30 - flush_page_update_queue(); 19.31 - } 19.32 -} 19.33 -#endif 19.34 - 19.35 -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) 19.36 -{ 19.37 - void *oldldt; 19.38 - void *newldt; 19.39 - int oldsize; 19.40 - 19.41 - if (mincount <= pc->size) 19.42 - return 0; 19.43 - oldsize = pc->size; 19.44 - mincount = (mincount+511)&(~511); 19.45 - if (mincount*LDT_ENTRY_SIZE > PAGE_SIZE) 19.46 - newldt = vmalloc(mincount*LDT_ENTRY_SIZE); 19.47 - else 19.48 - newldt = kmalloc(mincount*LDT_ENTRY_SIZE, GFP_KERNEL); 19.49 - 19.50 - if (!newldt) 19.51 - return -ENOMEM; 19.52 - 19.53 - if (oldsize) 19.54 - memcpy(newldt, pc->ldt, oldsize*LDT_ENTRY_SIZE); 19.55 - oldldt = pc->ldt; 19.56 - memset(newldt+oldsize*LDT_ENTRY_SIZE, 0, (mincount-oldsize)*LDT_ENTRY_SIZE); 19.57 - pc->ldt = newldt; 19.58 - wmb(); 19.59 - pc->size = mincount; 19.60 - wmb(); 19.61 - 19.62 - if (reload) { 19.63 -#ifdef CONFIG_SMP 19.64 - cpumask_t mask; 19.65 - preempt_disable(); 19.66 -#endif 19.67 - make_pages_readonly(pc->ldt, (pc->size * LDT_ENTRY_SIZE) / 19.68 - PAGE_SIZE); 19.69 - load_LDT(pc); 19.70 - flush_page_update_queue(); 19.71 -#ifdef CONFIG_SMP 19.72 - mask = cpumask_of_cpu(smp_processor_id()); 19.73 - if (!cpus_equal(current->mm->cpu_vm_mask, mask)) 19.74 - smp_call_function(flush_ldt, NULL, 1, 1); 19.75 - preempt_enable(); 19.76 -#endif 19.77 - } 19.78 - if (oldsize) { 19.79 - make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) / 19.80 - PAGE_SIZE); 19.81 - flush_page_update_queue(); 19.82 - if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE) 19.83 - vfree(oldldt); 19.84 - else 19.85 - kfree(oldldt); 19.86 - } 19.87 - return 0; 19.88 -} 19.89 - 19.90 -static inline int copy_ldt(mm_context_t *new, mm_context_t *old) 19.91 -{ 19.92 - int err = alloc_ldt(new, old->size, 0); 19.93 - if (err < 0) 19.94 - return err; 19.95 - memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE); 19.96 - make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) / 19.97 - PAGE_SIZE); 19.98 - flush_page_update_queue(); 19.99 - return 0; 19.100 -} 19.101 - 19.102 -/* 19.103 - * we do not have to muck with descriptors here, that is 19.104 - * done in switch_mm() as needed. 19.105 - */ 19.106 -int init_new_context(struct task_struct *tsk, struct mm_struct *mm) 19.107 -{ 19.108 - struct mm_struct * old_mm; 19.109 - int retval = 0; 19.110 - 19.111 - init_MUTEX(&mm->context.sem); 19.112 - mm->context.size = 0; 19.113 - old_mm = current->mm; 19.114 - if (old_mm && old_mm->context.size > 0) { 19.115 - down(&old_mm->context.sem); 19.116 - retval = copy_ldt(&mm->context, &old_mm->context); 19.117 - up(&old_mm->context.sem); 19.118 - } 19.119 - return retval; 19.120 -} 19.121 - 19.122 -/* 19.123 - * No need to lock the MM as we are the last user 19.124 - */ 19.125 -void destroy_context(struct mm_struct *mm) 19.126 -{ 19.127 - if (mm->context.size) { 19.128 - if (mm == current->active_mm) 19.129 - clear_LDT(); 19.130 - make_pages_writable(mm->context.ldt, 19.131 - (mm->context.size * LDT_ENTRY_SIZE) / 19.132 - PAGE_SIZE); 19.133 - flush_page_update_queue(); 19.134 - if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE) 19.135 - vfree(mm->context.ldt); 19.136 - else 19.137 - kfree(mm->context.ldt); 19.138 - mm->context.size = 0; 19.139 - } 19.140 -} 19.141 - 19.142 -static int read_ldt(void __user * ptr, unsigned long bytecount) 19.143 -{ 19.144 - int err; 19.145 - unsigned long size; 19.146 - struct mm_struct * mm = current->mm; 19.147 - 19.148 - if (!mm->context.size) 19.149 - return 0; 19.150 - if (bytecount > LDT_ENTRY_SIZE*LDT_ENTRIES) 19.151 - bytecount = LDT_ENTRY_SIZE*LDT_ENTRIES; 19.152 - 19.153 - down(&mm->context.sem); 19.154 - size = mm->context.size*LDT_ENTRY_SIZE; 19.155 - if (size > bytecount) 19.156 - size = bytecount; 19.157 - 19.158 - err = 0; 19.159 - if (copy_to_user(ptr, mm->context.ldt, size)) 19.160 - err = -EFAULT; 19.161 - up(&mm->context.sem); 19.162 - if (err < 0) 19.163 - goto error_return; 19.164 - if (size != bytecount) { 19.165 - /* zero-fill the rest */ 19.166 - if (clear_user(ptr+size, bytecount-size) != 0) { 19.167 - err = -EFAULT; 19.168 - goto error_return; 19.169 - } 19.170 - } 19.171 - return bytecount; 19.172 -error_return: 19.173 - return err; 19.174 -} 19.175 - 19.176 -static int read_default_ldt(void __user * ptr, unsigned long bytecount) 19.177 -{ 19.178 - int err; 19.179 - unsigned long size; 19.180 - void *address; 19.181 - 19.182 - err = 0; 19.183 - address = &default_ldt[0]; 19.184 - size = 5*sizeof(struct desc_struct); 19.185 - if (size > bytecount) 19.186 - size = bytecount; 19.187 - 19.188 - err = size; 19.189 - if (copy_to_user(ptr, address, size)) 19.190 - err = -EFAULT; 19.191 - 19.192 - return err; 19.193 -} 19.194 - 19.195 -static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode) 19.196 -{ 19.197 - struct mm_struct * mm = current->mm; 19.198 - __u32 entry_1, entry_2, *lp; 19.199 - unsigned long mach_lp; 19.200 - int error; 19.201 - struct user_desc ldt_info; 19.202 - 19.203 - error = -EINVAL; 19.204 - if (bytecount != sizeof(ldt_info)) 19.205 - goto out; 19.206 - error = -EFAULT; 19.207 - if (copy_from_user(&ldt_info, ptr, sizeof(ldt_info))) 19.208 - goto out; 19.209 - 19.210 - error = -EINVAL; 19.211 - if (ldt_info.entry_number >= LDT_ENTRIES) 19.212 - goto out; 19.213 - if (ldt_info.contents == 3) { 19.214 - if (oldmode) 19.215 - goto out; 19.216 - if (ldt_info.seg_not_present == 0) 19.217 - goto out; 19.218 - } 19.219 - 19.220 - down(&mm->context.sem); 19.221 - if (ldt_info.entry_number >= mm->context.size) { 19.222 - error = alloc_ldt(¤t->mm->context, ldt_info.entry_number+1, 1); 19.223 - if (error < 0) 19.224 - goto out_unlock; 19.225 - } 19.226 - 19.227 - lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->context.ldt); 19.228 - mach_lp = arbitrary_virt_to_machine(lp); 19.229 - 19.230 - /* Allow LDTs to be cleared by the user. */ 19.231 - if (ldt_info.base_addr == 0 && ldt_info.limit == 0) { 19.232 - if (oldmode || LDT_empty(&ldt_info)) { 19.233 - entry_1 = 0; 19.234 - entry_2 = 0; 19.235 - goto install; 19.236 - } 19.237 - } 19.238 - 19.239 - entry_1 = LDT_entry_a(&ldt_info); 19.240 - entry_2 = LDT_entry_b(&ldt_info); 19.241 - if (oldmode) 19.242 - entry_2 &= ~(1 << 20); 19.243 - 19.244 - /* Install the new entry ... */ 19.245 -install: 19.246 - error = HYPERVISOR_update_descriptor(mach_lp, entry_1, entry_2); 19.247 - 19.248 -out_unlock: 19.249 - up(&mm->context.sem); 19.250 -out: 19.251 - return error; 19.252 -} 19.253 - 19.254 -asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) 19.255 -{ 19.256 - int ret = -ENOSYS; 19.257 - 19.258 - switch (func) { 19.259 - case 0: 19.260 - ret = read_ldt(ptr, bytecount); 19.261 - break; 19.262 - case 1: 19.263 - ret = write_ldt(ptr, bytecount, 1); 19.264 - break; 19.265 - case 2: 19.266 - ret = read_default_ldt(ptr, bytecount); 19.267 - break; 19.268 - case 0x11: 19.269 - ret = write_ldt(ptr, bytecount, 0); 19.270 - break; 19.271 - } 19.272 - return ret; 19.273 -}
20.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c Tue Dec 07 19:17:22 2004 +0000 20.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 20.3 @@ -1,232 +0,0 @@ 20.4 -/* 20.5 - * Dynamic DMA mapping support. 20.6 - * 20.7 - * On i386 there is no hardware dynamic DMA address translation, 20.8 - * so consistent alloc/free are merely page allocation/freeing. 20.9 - * The rest of the dynamic DMA mapping interface is implemented 20.10 - * in asm/pci.h. 20.11 - */ 20.12 - 20.13 -#include <linux/types.h> 20.14 -#include <linux/mm.h> 20.15 -#include <linux/string.h> 20.16 -#include <linux/pci.h> 20.17 -#include <linux/version.h> 20.18 -#include <asm/io.h> 20.19 -#include <asm-xen/balloon.h> 20.20 - 20.21 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 20.22 -#define pte_offset_kernel pte_offset 20.23 -#endif 20.24 - 20.25 -struct dma_coherent_mem { 20.26 - void *virt_base; 20.27 - u32 device_base; 20.28 - int size; 20.29 - int flags; 20.30 - unsigned long *bitmap; 20.31 -}; 20.32 - 20.33 -static void 20.34 -xen_contig_memory(unsigned long vstart, unsigned int order) 20.35 -{ 20.36 - /* 20.37 - * Ensure multi-page extents are contiguous in machine memory. 20.38 - * This code could be cleaned up some, and the number of 20.39 - * hypercalls reduced. 20.40 - */ 20.41 - pgd_t *pgd; 20.42 - pmd_t *pmd; 20.43 - pte_t *pte; 20.44 - unsigned long pfn, i, flags; 20.45 - 20.46 - scrub_pages(vstart, 1 << order); 20.47 - 20.48 - balloon_lock(flags); 20.49 - 20.50 - /* 1. Zap current PTEs, giving away the underlying pages. */ 20.51 - for (i = 0; i < (1<<order); i++) { 20.52 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 20.53 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 20.54 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 20.55 - pfn = pte->pte_low >> PAGE_SHIFT; 20.56 - queue_l1_entry_update(pte, 0); 20.57 - phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 20.58 - INVALID_P2M_ENTRY; 20.59 - flush_page_update_queue(); 20.60 - if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation, 20.61 - &pfn, 1, 0) != 1) BUG(); 20.62 - } 20.63 - /* 2. Get a new contiguous memory extent. */ 20.64 - if (HYPERVISOR_dom_mem_op(MEMOP_increase_reservation, 20.65 - &pfn, 1, order) != 1) BUG(); 20.66 - /* 3. Map the new extent in place of old pages. */ 20.67 - for (i = 0; i < (1<<order); i++) { 20.68 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 20.69 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 20.70 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 20.71 - queue_l1_entry_update( 20.72 - pte, ((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL); 20.73 - queue_machphys_update( 20.74 - pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i); 20.75 - phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 20.76 - pfn+i; 20.77 - } 20.78 - /* Flush updates through and flush the TLB. */ 20.79 - xen_tlb_flush(); 20.80 - 20.81 - balloon_unlock(flags); 20.82 -} 20.83 - 20.84 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 20.85 -void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, 20.86 - dma_addr_t *dma_handle) 20.87 -#else 20.88 -void *dma_alloc_coherent(struct device *dev, size_t size, 20.89 - dma_addr_t *dma_handle, int gfp) 20.90 -#endif 20.91 -{ 20.92 - void *ret; 20.93 - unsigned int order = get_order(size); 20.94 - unsigned long vstart; 20.95 - 20.96 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 20.97 - int gfp = GFP_ATOMIC; 20.98 - 20.99 - if (hwdev == NULL || ((u32)hwdev->dma_mask < 0xffffffff)) 20.100 - gfp |= GFP_DMA; 20.101 -#else 20.102 - struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; 20.103 - 20.104 - /* ignore region specifiers */ 20.105 - gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); 20.106 - 20.107 - if (mem) { 20.108 - int page = bitmap_find_free_region(mem->bitmap, mem->size, 20.109 - order); 20.110 - if (page >= 0) { 20.111 - *dma_handle = mem->device_base + (page << PAGE_SHIFT); 20.112 - ret = mem->virt_base + (page << PAGE_SHIFT); 20.113 - memset(ret, 0, size); 20.114 - return ret; 20.115 - } 20.116 - if (mem->flags & DMA_MEMORY_EXCLUSIVE) 20.117 - return NULL; 20.118 - } 20.119 - 20.120 - if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) 20.121 - gfp |= GFP_DMA; 20.122 -#endif 20.123 - 20.124 - vstart = __get_free_pages(gfp, order); 20.125 - ret = (void *)vstart; 20.126 - if (ret == NULL) 20.127 - return ret; 20.128 - 20.129 - xen_contig_memory(vstart, order); 20.130 - 20.131 - memset(ret, 0, size); 20.132 - *dma_handle = virt_to_bus(ret); 20.133 - 20.134 - return ret; 20.135 -} 20.136 - 20.137 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 20.138 -void pci_free_consistent(struct pci_dev *hwdev, size_t size, 20.139 - void *vaddr, dma_addr_t dma_handle) 20.140 -{ 20.141 - free_pages((unsigned long)vaddr, get_order(size)); 20.142 -} 20.143 -#else 20.144 - 20.145 -void dma_free_coherent(struct device *dev, size_t size, 20.146 - void *vaddr, dma_addr_t dma_handle) 20.147 -{ 20.148 - struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; 20.149 - int order = get_order(size); 20.150 - 20.151 - if (mem && vaddr >= mem->virt_base && vaddr < (mem->virt_base + (mem->size << PAGE_SHIFT))) { 20.152 - int page = (vaddr - mem->virt_base) >> PAGE_SHIFT; 20.153 - 20.154 - bitmap_release_region(mem->bitmap, page, order); 20.155 - } else 20.156 - free_pages((unsigned long)vaddr, order); 20.157 -} 20.158 - 20.159 -int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, 20.160 - dma_addr_t device_addr, size_t size, int flags) 20.161 -{ 20.162 - void __iomem *mem_base; 20.163 - int pages = size >> PAGE_SHIFT; 20.164 - int bitmap_size = (pages + 31)/32; 20.165 - 20.166 - if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0) 20.167 - goto out; 20.168 - if (!size) 20.169 - goto out; 20.170 - if (dev->dma_mem) 20.171 - goto out; 20.172 - 20.173 - /* FIXME: this routine just ignores DMA_MEMORY_INCLUDES_CHILDREN */ 20.174 - 20.175 - mem_base = ioremap(bus_addr, size); 20.176 - if (!mem_base) 20.177 - goto out; 20.178 - 20.179 - dev->dma_mem = kmalloc(GFP_KERNEL, sizeof(struct dma_coherent_mem)); 20.180 - if (!dev->dma_mem) 20.181 - goto out; 20.182 - memset(dev->dma_mem, 0, sizeof(struct dma_coherent_mem)); 20.183 - dev->dma_mem->bitmap = kmalloc(GFP_KERNEL, bitmap_size); 20.184 - if (!dev->dma_mem->bitmap) 20.185 - goto free1_out; 20.186 - memset(dev->dma_mem->bitmap, 0, bitmap_size); 20.187 - 20.188 - dev->dma_mem->virt_base = mem_base; 20.189 - dev->dma_mem->device_base = device_addr; 20.190 - dev->dma_mem->size = pages; 20.191 - dev->dma_mem->flags = flags; 20.192 - 20.193 - if (flags & DMA_MEMORY_MAP) 20.194 - return DMA_MEMORY_MAP; 20.195 - 20.196 - return DMA_MEMORY_IO; 20.197 - 20.198 - free1_out: 20.199 - kfree(dev->dma_mem->bitmap); 20.200 - out: 20.201 - return 0; 20.202 -} 20.203 -EXPORT_SYMBOL(dma_declare_coherent_memory); 20.204 - 20.205 -void dma_release_declared_memory(struct device *dev) 20.206 -{ 20.207 - struct dma_coherent_mem *mem = dev->dma_mem; 20.208 - 20.209 - if(!mem) 20.210 - return; 20.211 - dev->dma_mem = NULL; 20.212 - kfree(mem->bitmap); 20.213 - kfree(mem); 20.214 -} 20.215 -EXPORT_SYMBOL(dma_release_declared_memory); 20.216 - 20.217 -void *dma_mark_declared_memory_occupied(struct device *dev, 20.218 - dma_addr_t device_addr, size_t size) 20.219 -{ 20.220 - struct dma_coherent_mem *mem = dev->dma_mem; 20.221 - int pages = (size + (device_addr & ~PAGE_MASK) + PAGE_SIZE - 1) >> PAGE_SHIFT; 20.222 - int pos, err; 20.223 - 20.224 - if (!mem) 20.225 - return ERR_PTR(-EINVAL); 20.226 - 20.227 - pos = (device_addr - mem->device_base) >> PAGE_SHIFT; 20.228 - err = bitmap_allocate_region(mem->bitmap, pos, get_order(pages)); 20.229 - if (err != 0) 20.230 - return ERR_PTR(err); 20.231 - return mem->virt_base + (pos << PAGE_SHIFT); 20.232 -} 20.233 -EXPORT_SYMBOL(dma_mark_declared_memory_occupied); 20.234 - 20.235 -#endif
21.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c Tue Dec 07 19:17:22 2004 +0000 21.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 21.3 @@ -1,777 +0,0 @@ 21.4 -/* 21.5 - * linux/arch/i386/kernel/process.c 21.6 - * 21.7 - * Copyright (C) 1995 Linus Torvalds 21.8 - * 21.9 - * Pentium III FXSR, SSE support 21.10 - * Gareth Hughes <gareth@valinux.com>, May 2000 21.11 - */ 21.12 - 21.13 -/* 21.14 - * This file handles the architecture-dependent parts of process handling.. 21.15 - */ 21.16 - 21.17 -#include <stdarg.h> 21.18 - 21.19 -#include <linux/errno.h> 21.20 -#include <linux/sched.h> 21.21 -#include <linux/fs.h> 21.22 -#include <linux/kernel.h> 21.23 -#include <linux/mm.h> 21.24 -#include <linux/elfcore.h> 21.25 -#include <linux/smp.h> 21.26 -#include <linux/smp_lock.h> 21.27 -#include <linux/stddef.h> 21.28 -#include <linux/slab.h> 21.29 -#include <linux/vmalloc.h> 21.30 -#include <linux/user.h> 21.31 -#include <linux/a.out.h> 21.32 -#include <linux/interrupt.h> 21.33 -#include <linux/config.h> 21.34 -#include <linux/utsname.h> 21.35 -#include <linux/delay.h> 21.36 -#include <linux/reboot.h> 21.37 -#include <linux/init.h> 21.38 -#include <linux/mc146818rtc.h> 21.39 -#include <linux/module.h> 21.40 -#include <linux/kallsyms.h> 21.41 -#include <linux/ptrace.h> 21.42 - 21.43 -#include <asm/uaccess.h> 21.44 -#include <asm/pgtable.h> 21.45 -#include <asm/system.h> 21.46 -#include <asm/io.h> 21.47 -#include <asm/ldt.h> 21.48 -#include <asm/processor.h> 21.49 -#include <asm/i387.h> 21.50 -#include <asm/irq.h> 21.51 -#include <asm/desc.h> 21.52 -#include <asm-xen/multicall.h> 21.53 -#include <asm-xen/xen-public/dom0_ops.h> 21.54 -#ifdef CONFIG_MATH_EMULATION 21.55 -#include <asm/math_emu.h> 21.56 -#endif 21.57 - 21.58 -#include <linux/irq.h> 21.59 -#include <linux/err.h> 21.60 - 21.61 -asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); 21.62 - 21.63 -int hlt_counter; 21.64 - 21.65 -unsigned long boot_option_idle_override = 0; 21.66 -EXPORT_SYMBOL(boot_option_idle_override); 21.67 - 21.68 -/* 21.69 - * Return saved PC of a blocked thread. 21.70 - */ 21.71 -unsigned long thread_saved_pc(struct task_struct *tsk) 21.72 -{ 21.73 - return ((unsigned long *)tsk->thread.esp)[3]; 21.74 -} 21.75 - 21.76 -/* 21.77 - * Powermanagement idle function, if any.. 21.78 - */ 21.79 -void (*pm_idle)(void); 21.80 - 21.81 -void disable_hlt(void) 21.82 -{ 21.83 - hlt_counter++; 21.84 -} 21.85 - 21.86 -EXPORT_SYMBOL(disable_hlt); 21.87 - 21.88 -void enable_hlt(void) 21.89 -{ 21.90 - hlt_counter--; 21.91 -} 21.92 - 21.93 -EXPORT_SYMBOL(enable_hlt); 21.94 - 21.95 -/* XXX XEN doesn't use default_idle(), poll_idle(). Use xen_idle() instead. */ 21.96 -extern int set_timeout_timer(void); 21.97 -void xen_idle(void) 21.98 -{ 21.99 - int cpu = smp_processor_id(); 21.100 - 21.101 - local_irq_disable(); 21.102 - 21.103 - if (rcu_pending(cpu)) 21.104 - rcu_check_callbacks(cpu, 0); 21.105 - 21.106 - if (need_resched()) { 21.107 - local_irq_enable(); 21.108 - } else if (set_timeout_timer() == 0) { 21.109 - /* NB. Blocking reenable events in a race-free manner. */ 21.110 - HYPERVISOR_block(); 21.111 - } else { 21.112 - local_irq_enable(); 21.113 - HYPERVISOR_yield(); 21.114 - } 21.115 -} 21.116 - 21.117 -/* 21.118 - * The idle thread. There's no useful work to be 21.119 - * done, so just try to conserve power and have a 21.120 - * low exit latency (ie sit in a loop waiting for 21.121 - * somebody to say that they'd like to reschedule) 21.122 - */ 21.123 -void cpu_idle (void) 21.124 -{ 21.125 - /* endless idle loop with no priority at all */ 21.126 - while (1) { 21.127 - while (!need_resched()) { 21.128 - /* 21.129 - * Mark this as an RCU critical section so that 21.130 - * synchronize_kernel() in the unload path waits 21.131 - * for our completion. 21.132 - */ 21.133 - rcu_read_lock(); 21.134 - irq_stat[smp_processor_id()].idle_timestamp = jiffies; 21.135 - xen_idle(); 21.136 - rcu_read_unlock(); 21.137 - } 21.138 - schedule(); 21.139 - } 21.140 -} 21.141 - 21.142 -/* XXX XEN doesn't use mwait_idle(), select_idle_routine(), idle_setup(). */ 21.143 -/* Always use xen_idle() instead. */ 21.144 -void __init select_idle_routine(const struct cpuinfo_x86 *c) {} 21.145 - 21.146 -void show_regs(struct pt_regs * regs) 21.147 -{ 21.148 - printk("\n"); 21.149 - printk("Pid: %d, comm: %20s\n", current->pid, current->comm); 21.150 - printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id()); 21.151 - print_symbol("EIP is at %s\n", regs->eip); 21.152 - 21.153 - if (regs->xcs & 2) 21.154 - printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); 21.155 - printk(" EFLAGS: %08lx %s (%s)\n", 21.156 - regs->eflags, print_tainted(),UTS_RELEASE); 21.157 - printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", 21.158 - regs->eax,regs->ebx,regs->ecx,regs->edx); 21.159 - printk("ESI: %08lx EDI: %08lx EBP: %08lx", 21.160 - regs->esi, regs->edi, regs->ebp); 21.161 - printk(" DS: %04x ES: %04x\n", 21.162 - 0xffff & regs->xds,0xffff & regs->xes); 21.163 - 21.164 - show_trace(NULL, ®s->esp); 21.165 -} 21.166 - 21.167 -/* 21.168 - * This gets run with %ebx containing the 21.169 - * function to call, and %edx containing 21.170 - * the "args". 21.171 - */ 21.172 -extern void kernel_thread_helper(void); 21.173 -__asm__(".section .text\n" 21.174 - ".align 4\n" 21.175 - "kernel_thread_helper:\n\t" 21.176 - "movl %edx,%eax\n\t" 21.177 - "pushl %edx\n\t" 21.178 - "call *%ebx\n\t" 21.179 - "pushl %eax\n\t" 21.180 - "call do_exit\n" 21.181 - ".previous"); 21.182 - 21.183 -/* 21.184 - * Create a kernel thread 21.185 - */ 21.186 -int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) 21.187 -{ 21.188 - struct pt_regs regs; 21.189 - 21.190 - memset(®s, 0, sizeof(regs)); 21.191 - 21.192 - regs.ebx = (unsigned long) fn; 21.193 - regs.edx = (unsigned long) arg; 21.194 - 21.195 - regs.xds = __USER_DS; 21.196 - regs.xes = __USER_DS; 21.197 - regs.orig_eax = -1; 21.198 - regs.eip = (unsigned long) kernel_thread_helper; 21.199 - regs.xcs = __KERNEL_CS; 21.200 - regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; 21.201 - 21.202 - /* Ok, create the new process.. */ 21.203 - return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); 21.204 -} 21.205 - 21.206 -/* 21.207 - * Free current thread data structures etc.. 21.208 - */ 21.209 -void exit_thread(void) 21.210 -{ 21.211 - struct task_struct *tsk = current; 21.212 - struct thread_struct *t = &tsk->thread; 21.213 - 21.214 - /* The process may have allocated an io port bitmap... nuke it. */ 21.215 - if (unlikely(NULL != t->io_bitmap_ptr)) { 21.216 - int cpu = get_cpu(); 21.217 - struct tss_struct *tss = &per_cpu(init_tss, cpu); 21.218 - 21.219 - kfree(t->io_bitmap_ptr); 21.220 - t->io_bitmap_ptr = NULL; 21.221 - /* 21.222 - * Careful, clear this in the TSS too: 21.223 - */ 21.224 - memset(tss->io_bitmap, 0xff, tss->io_bitmap_max); 21.225 - t->io_bitmap_max = 0; 21.226 - tss->io_bitmap_owner = NULL; 21.227 - tss->io_bitmap_max = 0; 21.228 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 21.229 - put_cpu(); 21.230 - } 21.231 -} 21.232 - 21.233 -void flush_thread(void) 21.234 -{ 21.235 - struct task_struct *tsk = current; 21.236 - 21.237 - memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8); 21.238 - memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); 21.239 - /* 21.240 - * Forget coprocessor state.. 21.241 - */ 21.242 - clear_fpu(tsk); 21.243 - tsk->used_math = 0; 21.244 -} 21.245 - 21.246 -void release_thread(struct task_struct *dead_task) 21.247 -{ 21.248 - if (dead_task->mm) { 21.249 - // temporary debugging check 21.250 - if (dead_task->mm->context.size) { 21.251 - printk("WARNING: dead process %8s still has LDT? <%p/%d>\n", 21.252 - dead_task->comm, 21.253 - dead_task->mm->context.ldt, 21.254 - dead_task->mm->context.size); 21.255 - BUG(); 21.256 - } 21.257 - } 21.258 - 21.259 - release_vm86_irqs(dead_task); 21.260 -} 21.261 - 21.262 -/* 21.263 - * This gets called before we allocate a new thread and copy 21.264 - * the current task into it. 21.265 - */ 21.266 -void prepare_to_copy(struct task_struct *tsk) 21.267 -{ 21.268 - unlazy_fpu(tsk); 21.269 -} 21.270 - 21.271 -int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, 21.272 - unsigned long unused, 21.273 - struct task_struct * p, struct pt_regs * regs) 21.274 -{ 21.275 - struct pt_regs * childregs; 21.276 - struct task_struct *tsk; 21.277 - int err; 21.278 - unsigned long eflags; 21.279 - 21.280 - childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; 21.281 - *childregs = *regs; 21.282 - childregs->eax = 0; 21.283 - childregs->esp = esp; 21.284 - 21.285 - p->thread.esp = (unsigned long) childregs; 21.286 - p->thread.esp0 = (unsigned long) (childregs+1); 21.287 - 21.288 - p->thread.eip = (unsigned long) ret_from_fork; 21.289 - 21.290 - savesegment(fs,p->thread.fs); 21.291 - savesegment(gs,p->thread.gs); 21.292 - 21.293 - tsk = current; 21.294 - if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) { 21.295 - p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); 21.296 - if (!p->thread.io_bitmap_ptr) { 21.297 - p->thread.io_bitmap_max = 0; 21.298 - return -ENOMEM; 21.299 - } 21.300 - memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, 21.301 - IO_BITMAP_BYTES); 21.302 - } 21.303 - 21.304 - /* 21.305 - * Set a new TLS for the child thread? 21.306 - */ 21.307 - if (clone_flags & CLONE_SETTLS) { 21.308 - struct desc_struct *desc; 21.309 - struct user_desc info; 21.310 - int idx; 21.311 - 21.312 - err = -EFAULT; 21.313 - if (copy_from_user(&info, (void __user *)childregs->esi, sizeof(info))) 21.314 - goto out; 21.315 - err = -EINVAL; 21.316 - if (LDT_empty(&info)) 21.317 - goto out; 21.318 - 21.319 - idx = info.entry_number; 21.320 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 21.321 - goto out; 21.322 - 21.323 - desc = p->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 21.324 - desc->a = LDT_entry_a(&info); 21.325 - desc->b = LDT_entry_b(&info); 21.326 - } 21.327 - 21.328 - 21.329 - __asm__ __volatile__ ( "pushfl; popl %0" : "=r" (eflags) : ); 21.330 - p->thread.io_pl = (eflags >> 12) & 3; 21.331 - 21.332 - err = 0; 21.333 - out: 21.334 - if (err && p->thread.io_bitmap_ptr) { 21.335 - kfree(p->thread.io_bitmap_ptr); 21.336 - p->thread.io_bitmap_max = 0; 21.337 - } 21.338 - return err; 21.339 -} 21.340 - 21.341 -/* 21.342 - * fill in the user structure for a core dump.. 21.343 - */ 21.344 -void dump_thread(struct pt_regs * regs, struct user * dump) 21.345 -{ 21.346 - int i; 21.347 - 21.348 -/* changed the size calculations - should hopefully work better. lbt */ 21.349 - dump->magic = CMAGIC; 21.350 - dump->start_code = 0; 21.351 - dump->start_stack = regs->esp & ~(PAGE_SIZE - 1); 21.352 - dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT; 21.353 - dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT; 21.354 - dump->u_dsize -= dump->u_tsize; 21.355 - dump->u_ssize = 0; 21.356 - for (i = 0; i < 8; i++) 21.357 - dump->u_debugreg[i] = current->thread.debugreg[i]; 21.358 - 21.359 - if (dump->start_stack < TASK_SIZE) 21.360 - dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT; 21.361 - 21.362 - dump->regs.ebx = regs->ebx; 21.363 - dump->regs.ecx = regs->ecx; 21.364 - dump->regs.edx = regs->edx; 21.365 - dump->regs.esi = regs->esi; 21.366 - dump->regs.edi = regs->edi; 21.367 - dump->regs.ebp = regs->ebp; 21.368 - dump->regs.eax = regs->eax; 21.369 - dump->regs.ds = regs->xds; 21.370 - dump->regs.es = regs->xes; 21.371 - savesegment(fs,dump->regs.fs); 21.372 - savesegment(gs,dump->regs.gs); 21.373 - dump->regs.orig_eax = regs->orig_eax; 21.374 - dump->regs.eip = regs->eip; 21.375 - dump->regs.cs = regs->xcs; 21.376 - dump->regs.eflags = regs->eflags; 21.377 - dump->regs.esp = regs->esp; 21.378 - dump->regs.ss = regs->xss; 21.379 - 21.380 - dump->u_fpvalid = dump_fpu (regs, &dump->i387); 21.381 -} 21.382 - 21.383 -/* 21.384 - * Capture the user space registers if the task is not running (in user space) 21.385 - */ 21.386 -int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) 21.387 -{ 21.388 - struct pt_regs ptregs; 21.389 - 21.390 - ptregs = *(struct pt_regs *) 21.391 - ((unsigned long)tsk->thread_info+THREAD_SIZE - sizeof(ptregs)); 21.392 - ptregs.xcs &= 0xffff; 21.393 - ptregs.xds &= 0xffff; 21.394 - ptregs.xes &= 0xffff; 21.395 - ptregs.xss &= 0xffff; 21.396 - 21.397 - elf_core_copy_regs(regs, &ptregs); 21.398 - 21.399 - boot_option_idle_override = 1; 21.400 - return 1; 21.401 -} 21.402 - 21.403 -static inline void 21.404 -handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss) 21.405 -{ 21.406 - if (!next->io_bitmap_ptr) { 21.407 - /* 21.408 - * Disable the bitmap via an invalid offset. We still cache 21.409 - * the previous bitmap owner and the IO bitmap contents: 21.410 - */ 21.411 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 21.412 - return; 21.413 - } 21.414 - if (likely(next == tss->io_bitmap_owner)) { 21.415 - /* 21.416 - * Previous owner of the bitmap (hence the bitmap content) 21.417 - * matches the next task, we dont have to do anything but 21.418 - * to set a valid offset in the TSS: 21.419 - */ 21.420 - tss->io_bitmap_base = IO_BITMAP_OFFSET; 21.421 - return; 21.422 - } 21.423 - /* 21.424 - * Lazy TSS's I/O bitmap copy. We set an invalid offset here 21.425 - * and we let the task to get a GPF in case an I/O instruction 21.426 - * is performed. The handler of the GPF will verify that the 21.427 - * faulting task has a valid I/O bitmap and, it true, does the 21.428 - * real copy and restart the instruction. This will save us 21.429 - * redundant copies when the currently switched task does not 21.430 - * perform any I/O during its timeslice. 21.431 - */ 21.432 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET_LAZY; 21.433 -} 21.434 -/* 21.435 - * This special macro can be used to load a debugging register 21.436 - */ 21.437 -#define loaddebug(thread,register) \ 21.438 - HYPERVISOR_set_debugreg((register), \ 21.439 - (thread->debugreg[register])) 21.440 - 21.441 -/* 21.442 - * switch_to(x,yn) should switch tasks from x to y. 21.443 - * 21.444 - * We fsave/fwait so that an exception goes off at the right time 21.445 - * (as a call from the fsave or fwait in effect) rather than to 21.446 - * the wrong process. Lazy FP saving no longer makes any sense 21.447 - * with modern CPU's, and this simplifies a lot of things (SMP 21.448 - * and UP become the same). 21.449 - * 21.450 - * NOTE! We used to use the x86 hardware context switching. The 21.451 - * reason for not using it any more becomes apparent when you 21.452 - * try to recover gracefully from saved state that is no longer 21.453 - * valid (stale segment register values in particular). With the 21.454 - * hardware task-switch, there is no way to fix up bad state in 21.455 - * a reasonable manner. 21.456 - * 21.457 - * The fact that Intel documents the hardware task-switching to 21.458 - * be slow is a fairly red herring - this code is not noticeably 21.459 - * faster. However, there _is_ some room for improvement here, 21.460 - * so the performance issues may eventually be a valid point. 21.461 - * More important, however, is the fact that this allows us much 21.462 - * more flexibility. 21.463 - * 21.464 - * The return value (in %eax) will be the "prev" task after 21.465 - * the task-switch, and shows up in ret_from_fork in entry.S, 21.466 - * for example. 21.467 - */ 21.468 -struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 21.469 -{ 21.470 - struct thread_struct *prev = &prev_p->thread, 21.471 - *next = &next_p->thread; 21.472 - int cpu = smp_processor_id(); 21.473 - struct tss_struct *tss = &per_cpu(init_tss, cpu); 21.474 - dom0_op_t op; 21.475 - 21.476 - /* NB. No need to disable interrupts as already done in sched.c */ 21.477 - /* __cli(); */ 21.478 - 21.479 - /* 21.480 - * Save away %fs and %gs. No need to save %es and %ds, as 21.481 - * those are always kernel segments while inside the kernel. 21.482 - */ 21.483 - asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs)); 21.484 - asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs)); 21.485 - 21.486 - /* 21.487 - * We clobber FS and GS here so that we avoid a GPF when 21.488 - * restoring previous task's FS/GS values in Xen when the LDT 21.489 - * is switched. If we don't do this then we can end up 21.490 - * erroneously re-flushing the page-update queue when we 21.491 - * 'execute_multicall_list'. 21.492 - */ 21.493 - __asm__ __volatile__ ( 21.494 - "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs" : : : 21.495 - "eax" ); 21.496 - 21.497 - MULTICALL_flush_page_update_queue(); 21.498 - 21.499 - /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 21.500 - 21.501 - /* 21.502 - * This is basically '__unlazy_fpu', except that we queue a 21.503 - * multicall to indicate FPU task switch, rather than 21.504 - * synchronously trapping to Xen. 21.505 - */ 21.506 - if (prev_p->thread_info->status & TS_USEDFPU) { 21.507 - save_init_fpu(prev_p); 21.508 - queue_multicall0(__HYPERVISOR_fpu_taskswitch); 21.509 - } 21.510 - 21.511 - /* 21.512 - * Reload esp0, LDT and the page table pointer: 21.513 - * This is load_esp0(tss, next) with a multicall. 21.514 - */ 21.515 - tss->esp0 = next->esp0; 21.516 - /* This can only happen when SEP is enabled, no need to test 21.517 - * "SEP"arately */ 21.518 - if (unlikely(tss->ss1 != next->sysenter_cs)) { 21.519 - tss->ss1 = next->sysenter_cs; 21.520 - wrmsr(MSR_IA32_SYSENTER_CS, next->sysenter_cs, 0); 21.521 - } 21.522 - queue_multicall2(__HYPERVISOR_stack_switch, tss->ss0, tss->esp0); 21.523 - 21.524 - /* 21.525 - * Load the per-thread Thread-Local Storage descriptor. 21.526 - * This is load_TLS(next, cpu) with multicalls. 21.527 - */ 21.528 -#define C(i) do { \ 21.529 - if (unlikely(next->tls_array[i].a != prev->tls_array[i].a || \ 21.530 - next->tls_array[i].b != prev->tls_array[i].b)) \ 21.531 - queue_multicall3(__HYPERVISOR_update_descriptor, \ 21.532 - virt_to_machine(&get_cpu_gdt_table(cpu) \ 21.533 - [GDT_ENTRY_TLS_MIN + i]), \ 21.534 - ((u32 *)&next->tls_array[i])[0], \ 21.535 - ((u32 *)&next->tls_array[i])[1]); \ 21.536 -} while (0) 21.537 - C(0); C(1); C(2); 21.538 -#undef C 21.539 - 21.540 - if (xen_start_info.flags & SIF_PRIVILEGED) { 21.541 - op.cmd = DOM0_IOPL; 21.542 - op.u.iopl.domain = DOMID_SELF; 21.543 - op.u.iopl.iopl = next->io_pl; 21.544 - op.interface_version = DOM0_INTERFACE_VERSION; 21.545 - queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op); 21.546 - } 21.547 - 21.548 - /* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */ 21.549 - execute_multicall_list(); 21.550 - /* __sti(); */ 21.551 - 21.552 - /* 21.553 - * Restore %fs and %gs if needed. 21.554 - */ 21.555 - if (unlikely(prev->fs | prev->gs | next->fs | next->gs)) { 21.556 - loadsegment(fs, next->fs); 21.557 - loadsegment(gs, next->gs); 21.558 - } 21.559 - 21.560 - /* 21.561 - * Now maybe reload the debug registers 21.562 - */ 21.563 - if (unlikely(next->debugreg[7])) { 21.564 - loaddebug(next, 0); 21.565 - loaddebug(next, 1); 21.566 - loaddebug(next, 2); 21.567 - loaddebug(next, 3); 21.568 - /* no 4 and 5 */ 21.569 - loaddebug(next, 6); 21.570 - loaddebug(next, 7); 21.571 - } 21.572 - 21.573 - if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) 21.574 - handle_io_bitmap(next, tss); 21.575 - 21.576 - return prev_p; 21.577 -} 21.578 - 21.579 -asmlinkage int sys_fork(struct pt_regs regs) 21.580 -{ 21.581 - return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 21.582 -} 21.583 - 21.584 -asmlinkage int sys_clone(struct pt_regs regs) 21.585 -{ 21.586 - unsigned long clone_flags; 21.587 - unsigned long newsp; 21.588 - int __user *parent_tidptr, *child_tidptr; 21.589 - 21.590 - clone_flags = regs.ebx; 21.591 - newsp = regs.ecx; 21.592 - parent_tidptr = (int __user *)regs.edx; 21.593 - child_tidptr = (int __user *)regs.edi; 21.594 - if (!newsp) 21.595 - newsp = regs.esp; 21.596 - return do_fork(clone_flags, newsp, ®s, 0, parent_tidptr, child_tidptr); 21.597 -} 21.598 - 21.599 -/* 21.600 - * This is trivial, and on the face of it looks like it 21.601 - * could equally well be done in user mode. 21.602 - * 21.603 - * Not so, for quite unobvious reasons - register pressure. 21.604 - * In user mode vfork() cannot have a stack frame, and if 21.605 - * done by calling the "clone()" system call directly, you 21.606 - * do not have enough call-clobbered registers to hold all 21.607 - * the information you need. 21.608 - */ 21.609 -asmlinkage int sys_vfork(struct pt_regs regs) 21.610 -{ 21.611 - return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 21.612 -} 21.613 - 21.614 -/* 21.615 - * sys_execve() executes a new program. 21.616 - */ 21.617 -asmlinkage int sys_execve(struct pt_regs regs) 21.618 -{ 21.619 - int error; 21.620 - char * filename; 21.621 - 21.622 - filename = getname((char __user *) regs.ebx); 21.623 - error = PTR_ERR(filename); 21.624 - if (IS_ERR(filename)) 21.625 - goto out; 21.626 - error = do_execve(filename, 21.627 - (char __user * __user *) regs.ecx, 21.628 - (char __user * __user *) regs.edx, 21.629 - ®s); 21.630 - if (error == 0) { 21.631 - task_lock(current); 21.632 - current->ptrace &= ~PT_DTRACE; 21.633 - task_unlock(current); 21.634 - /* Make sure we don't return using sysenter.. */ 21.635 - set_thread_flag(TIF_IRET); 21.636 - } 21.637 - putname(filename); 21.638 -out: 21.639 - return error; 21.640 -} 21.641 - 21.642 -#define top_esp (THREAD_SIZE - sizeof(unsigned long)) 21.643 -#define top_ebp (THREAD_SIZE - 2*sizeof(unsigned long)) 21.644 - 21.645 -unsigned long get_wchan(struct task_struct *p) 21.646 -{ 21.647 - unsigned long ebp, esp, eip; 21.648 - unsigned long stack_page; 21.649 - int count = 0; 21.650 - if (!p || p == current || p->state == TASK_RUNNING) 21.651 - return 0; 21.652 - stack_page = (unsigned long)p->thread_info; 21.653 - esp = p->thread.esp; 21.654 - if (!stack_page || esp < stack_page || esp > top_esp+stack_page) 21.655 - return 0; 21.656 - /* include/asm-i386/system.h:switch_to() pushes ebp last. */ 21.657 - ebp = *(unsigned long *) esp; 21.658 - do { 21.659 - if (ebp < stack_page || ebp > top_ebp+stack_page) 21.660 - return 0; 21.661 - eip = *(unsigned long *) (ebp+4); 21.662 - if (!in_sched_functions(eip)) 21.663 - return eip; 21.664 - ebp = *(unsigned long *) ebp; 21.665 - } while (count++ < 16); 21.666 - return 0; 21.667 -} 21.668 - 21.669 -/* 21.670 - * sys_alloc_thread_area: get a yet unused TLS descriptor index. 21.671 - */ 21.672 -static int get_free_idx(void) 21.673 -{ 21.674 - struct thread_struct *t = ¤t->thread; 21.675 - int idx; 21.676 - 21.677 - for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++) 21.678 - if (desc_empty(t->tls_array + idx)) 21.679 - return idx + GDT_ENTRY_TLS_MIN; 21.680 - return -ESRCH; 21.681 -} 21.682 - 21.683 -/* 21.684 - * Set a given TLS descriptor: 21.685 - */ 21.686 -asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) 21.687 -{ 21.688 - struct thread_struct *t = ¤t->thread; 21.689 - struct user_desc info; 21.690 - struct desc_struct *desc; 21.691 - int cpu, idx; 21.692 - 21.693 - if (copy_from_user(&info, u_info, sizeof(info))) 21.694 - return -EFAULT; 21.695 - idx = info.entry_number; 21.696 - 21.697 - /* 21.698 - * index -1 means the kernel should try to find and 21.699 - * allocate an empty descriptor: 21.700 - */ 21.701 - if (idx == -1) { 21.702 - idx = get_free_idx(); 21.703 - if (idx < 0) 21.704 - return idx; 21.705 - if (put_user(idx, &u_info->entry_number)) 21.706 - return -EFAULT; 21.707 - } 21.708 - 21.709 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 21.710 - return -EINVAL; 21.711 - 21.712 - desc = t->tls_array + idx - GDT_ENTRY_TLS_MIN; 21.713 - 21.714 - /* 21.715 - * We must not get preempted while modifying the TLS. 21.716 - */ 21.717 - cpu = get_cpu(); 21.718 - 21.719 - if (LDT_empty(&info)) { 21.720 - desc->a = 0; 21.721 - desc->b = 0; 21.722 - } else { 21.723 - desc->a = LDT_entry_a(&info); 21.724 - desc->b = LDT_entry_b(&info); 21.725 - } 21.726 - load_TLS(t, cpu); 21.727 - 21.728 - put_cpu(); 21.729 - 21.730 - return 0; 21.731 -} 21.732 - 21.733 -/* 21.734 - * Get the current Thread-Local Storage area: 21.735 - */ 21.736 - 21.737 -#define GET_BASE(desc) ( \ 21.738 - (((desc)->a >> 16) & 0x0000ffff) | \ 21.739 - (((desc)->b << 16) & 0x00ff0000) | \ 21.740 - ( (desc)->b & 0xff000000) ) 21.741 - 21.742 -#define GET_LIMIT(desc) ( \ 21.743 - ((desc)->a & 0x0ffff) | \ 21.744 - ((desc)->b & 0xf0000) ) 21.745 - 21.746 -#define GET_32BIT(desc) (((desc)->b >> 22) & 1) 21.747 -#define GET_CONTENTS(desc) (((desc)->b >> 10) & 3) 21.748 -#define GET_WRITABLE(desc) (((desc)->b >> 9) & 1) 21.749 -#define GET_LIMIT_PAGES(desc) (((desc)->b >> 23) & 1) 21.750 -#define GET_PRESENT(desc) (((desc)->b >> 15) & 1) 21.751 -#define GET_USEABLE(desc) (((desc)->b >> 20) & 1) 21.752 - 21.753 -asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) 21.754 -{ 21.755 - struct user_desc info; 21.756 - struct desc_struct *desc; 21.757 - int idx; 21.758 - 21.759 - if (get_user(idx, &u_info->entry_number)) 21.760 - return -EFAULT; 21.761 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 21.762 - return -EINVAL; 21.763 - 21.764 - desc = current->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 21.765 - 21.766 - info.entry_number = idx; 21.767 - info.base_addr = GET_BASE(desc); 21.768 - info.limit = GET_LIMIT(desc); 21.769 - info.seg_32bit = GET_32BIT(desc); 21.770 - info.contents = GET_CONTENTS(desc); 21.771 - info.read_exec_only = !GET_WRITABLE(desc); 21.772 - info.limit_in_pages = GET_LIMIT_PAGES(desc); 21.773 - info.seg_not_present = !GET_PRESENT(desc); 21.774 - info.useable = GET_USEABLE(desc); 21.775 - 21.776 - if (copy_to_user(u_info, &info, sizeof(info))) 21.777 - return -EFAULT; 21.778 - return 0; 21.779 -} 21.780 -
22.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c Tue Dec 07 19:17:22 2004 +0000 22.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 22.3 @@ -1,1542 +0,0 @@ 22.4 -/* 22.5 - * linux/arch/i386/kernel/setup.c 22.6 - * 22.7 - * Copyright (C) 1995 Linus Torvalds 22.8 - * 22.9 - * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999 22.10 - * 22.11 - * Memory region support 22.12 - * David Parsons <orc@pell.chi.il.us>, July-August 1999 22.13 - * 22.14 - * Added E820 sanitization routine (removes overlapping memory regions); 22.15 - * Brian Moyle <bmoyle@mvista.com>, February 2001 22.16 - * 22.17 - * Moved CPU detection code to cpu/${cpu}.c 22.18 - * Patrick Mochel <mochel@osdl.org>, March 2002 22.19 - * 22.20 - * Provisions for empty E820 memory regions (reported by certain BIOSes). 22.21 - * Alex Achenbach <xela@slit.de>, December 2002. 22.22 - * 22.23 - */ 22.24 - 22.25 -/* 22.26 - * This file handles the architecture-dependent parts of initialization 22.27 - */ 22.28 - 22.29 -#include <linux/sched.h> 22.30 -#include <linux/mm.h> 22.31 -#include <linux/tty.h> 22.32 -#include <linux/ioport.h> 22.33 -#include <linux/acpi.h> 22.34 -#include <linux/apm_bios.h> 22.35 -#include <linux/initrd.h> 22.36 -#include <linux/bootmem.h> 22.37 -#include <linux/seq_file.h> 22.38 -#include <linux/console.h> 22.39 -#include <linux/root_dev.h> 22.40 -#include <linux/highmem.h> 22.41 -#include <linux/module.h> 22.42 -#include <linux/efi.h> 22.43 -#include <linux/init.h> 22.44 -#include <linux/edd.h> 22.45 -#include <video/edid.h> 22.46 -#include <asm/e820.h> 22.47 -#include <asm/mpspec.h> 22.48 -#include <asm/setup.h> 22.49 -#include <asm/arch_hooks.h> 22.50 -#include <asm/sections.h> 22.51 -#include <asm/io_apic.h> 22.52 -#include <asm/ist.h> 22.53 -#include <asm/io.h> 22.54 -#include <asm-xen/hypervisor.h> 22.55 -#include "setup_arch_pre.h" 22.56 -#include <bios_ebda.h> 22.57 - 22.58 -/* Allows setting of maximum possible memory size */ 22.59 -static unsigned long xen_override_max_pfn; 22.60 - 22.61 -int disable_pse __initdata = 0; 22.62 - 22.63 -/* 22.64 - * Machine setup.. 22.65 - */ 22.66 - 22.67 -#ifdef CONFIG_EFI 22.68 -int efi_enabled = 0; 22.69 -EXPORT_SYMBOL(efi_enabled); 22.70 -#endif 22.71 - 22.72 -/* cpu data as detected by the assembly code in head.S */ 22.73 -struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 22.74 -/* common cpu data for all cpus */ 22.75 -struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 22.76 - 22.77 -unsigned long mmu_cr4_features; 22.78 -EXPORT_SYMBOL_GPL(mmu_cr4_features); 22.79 - 22.80 -#ifdef CONFIG_ACPI_INTERPRETER 22.81 - int acpi_disabled = 0; 22.82 -#else 22.83 - int acpi_disabled = 1; 22.84 -#endif 22.85 -EXPORT_SYMBOL(acpi_disabled); 22.86 - 22.87 -#ifdef CONFIG_ACPI_BOOT 22.88 -int __initdata acpi_force = 0; 22.89 -extern acpi_interrupt_flags acpi_sci_flags; 22.90 -#endif 22.91 - 22.92 -int MCA_bus; 22.93 -/* for MCA, but anyone else can use it if they want */ 22.94 -unsigned int machine_id; 22.95 -unsigned int machine_submodel_id; 22.96 -unsigned int BIOS_revision; 22.97 -unsigned int mca_pentium_flag; 22.98 - 22.99 -/* For PCI or other memory-mapped resources */ 22.100 -unsigned long pci_mem_start = 0x10000000; 22.101 - 22.102 -/* user-defined highmem size */ 22.103 -static unsigned int highmem_pages = -1; 22.104 - 22.105 -/* 22.106 - * Setup options 22.107 - */ 22.108 -struct drive_info_struct { char dummy[32]; } drive_info; 22.109 -struct screen_info screen_info; 22.110 -struct apm_info apm_info; 22.111 -struct sys_desc_table_struct { 22.112 - unsigned short length; 22.113 - unsigned char table[0]; 22.114 -}; 22.115 -struct edid_info edid_info; 22.116 -struct ist_info ist_info; 22.117 -struct e820map e820; 22.118 - 22.119 -unsigned char aux_device_present; 22.120 - 22.121 -extern void early_cpu_init(void); 22.122 -extern void dmi_scan_machine(void); 22.123 -extern void generic_apic_probe(char *); 22.124 -extern int root_mountflags; 22.125 - 22.126 -unsigned long saved_videomode; 22.127 - 22.128 -#define RAMDISK_IMAGE_START_MASK 0x07FF 22.129 -#define RAMDISK_PROMPT_FLAG 0x8000 22.130 -#define RAMDISK_LOAD_FLAG 0x4000 22.131 - 22.132 -static char command_line[COMMAND_LINE_SIZE]; 22.133 - 22.134 -unsigned char __initdata boot_params[PARAM_SIZE]; 22.135 - 22.136 -static struct resource data_resource = { 22.137 - .name = "Kernel data", 22.138 - .start = 0, 22.139 - .end = 0, 22.140 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 22.141 -}; 22.142 - 22.143 -static struct resource code_resource = { 22.144 - .name = "Kernel code", 22.145 - .start = 0, 22.146 - .end = 0, 22.147 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 22.148 -}; 22.149 - 22.150 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 22.151 -static struct resource system_rom_resource = { 22.152 - .name = "System ROM", 22.153 - .start = 0xf0000, 22.154 - .end = 0xfffff, 22.155 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.156 -}; 22.157 - 22.158 -static struct resource extension_rom_resource = { 22.159 - .name = "Extension ROM", 22.160 - .start = 0xe0000, 22.161 - .end = 0xeffff, 22.162 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.163 -}; 22.164 - 22.165 -static struct resource adapter_rom_resources[] = { { 22.166 - .name = "Adapter ROM", 22.167 - .start = 0xc8000, 22.168 - .end = 0, 22.169 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.170 -}, { 22.171 - .name = "Adapter ROM", 22.172 - .start = 0, 22.173 - .end = 0, 22.174 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.175 -}, { 22.176 - .name = "Adapter ROM", 22.177 - .start = 0, 22.178 - .end = 0, 22.179 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.180 -}, { 22.181 - .name = "Adapter ROM", 22.182 - .start = 0, 22.183 - .end = 0, 22.184 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.185 -}, { 22.186 - .name = "Adapter ROM", 22.187 - .start = 0, 22.188 - .end = 0, 22.189 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.190 -}, { 22.191 - .name = "Adapter ROM", 22.192 - .start = 0, 22.193 - .end = 0, 22.194 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.195 -} }; 22.196 - 22.197 -#define ADAPTER_ROM_RESOURCES \ 22.198 - (sizeof adapter_rom_resources / sizeof adapter_rom_resources[0]) 22.199 - 22.200 -static struct resource video_rom_resource = { 22.201 - .name = "Video ROM", 22.202 - .start = 0xc0000, 22.203 - .end = 0xc7fff, 22.204 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 22.205 -}; 22.206 -#endif 22.207 - 22.208 -static struct resource video_ram_resource = { 22.209 - .name = "Video RAM area", 22.210 - .start = 0xa0000, 22.211 - .end = 0xbffff, 22.212 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 22.213 -}; 22.214 - 22.215 -static struct resource standard_io_resources[] = { { 22.216 - .name = "dma1", 22.217 - .start = 0x0000, 22.218 - .end = 0x001f, 22.219 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.220 -}, { 22.221 - .name = "pic1", 22.222 - .start = 0x0020, 22.223 - .end = 0x0021, 22.224 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.225 -}, { 22.226 - .name = "timer0", 22.227 - .start = 0x0040, 22.228 - .end = 0x0043, 22.229 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.230 -}, { 22.231 - .name = "timer1", 22.232 - .start = 0x0050, 22.233 - .end = 0x0053, 22.234 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.235 -}, { 22.236 - .name = "keyboard", 22.237 - .start = 0x0060, 22.238 - .end = 0x006f, 22.239 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.240 -}, { 22.241 - .name = "dma page reg", 22.242 - .start = 0x0080, 22.243 - .end = 0x008f, 22.244 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.245 -}, { 22.246 - .name = "pic2", 22.247 - .start = 0x00a0, 22.248 - .end = 0x00a1, 22.249 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.250 -}, { 22.251 - .name = "dma2", 22.252 - .start = 0x00c0, 22.253 - .end = 0x00df, 22.254 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.255 -}, { 22.256 - .name = "fpu", 22.257 - .start = 0x00f0, 22.258 - .end = 0x00ff, 22.259 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 22.260 -} }; 22.261 - 22.262 -#define STANDARD_IO_RESOURCES \ 22.263 - (sizeof standard_io_resources / sizeof standard_io_resources[0]) 22.264 - 22.265 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 22.266 -#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) 22.267 - 22.268 -static int __init romchecksum(unsigned char *rom, unsigned long length) 22.269 -{ 22.270 - unsigned char *p, sum = 0; 22.271 - 22.272 - for (p = rom; p < rom + length; p++) 22.273 - sum += *p; 22.274 - return sum == 0; 22.275 -} 22.276 - 22.277 -static void __init probe_roms(void) 22.278 -{ 22.279 - unsigned long start, length, upper; 22.280 - unsigned char *rom; 22.281 - int i; 22.282 - 22.283 - /* video rom */ 22.284 - upper = adapter_rom_resources[0].start; 22.285 - for (start = video_rom_resource.start; start < upper; start += 2048) { 22.286 - rom = isa_bus_to_virt(start); 22.287 - if (!romsignature(rom)) 22.288 - continue; 22.289 - 22.290 - video_rom_resource.start = start; 22.291 - 22.292 - /* 0 < length <= 0x7f * 512, historically */ 22.293 - length = rom[2] * 512; 22.294 - 22.295 - /* if checksum okay, trust length byte */ 22.296 - if (length && romchecksum(rom, length)) 22.297 - video_rom_resource.end = start + length - 1; 22.298 - 22.299 - request_resource(&iomem_resource, &video_rom_resource); 22.300 - break; 22.301 - } 22.302 - 22.303 - start = (video_rom_resource.end + 1 + 2047) & ~2047UL; 22.304 - if (start < upper) 22.305 - start = upper; 22.306 - 22.307 - /* system rom */ 22.308 - request_resource(&iomem_resource, &system_rom_resource); 22.309 - upper = system_rom_resource.start; 22.310 - 22.311 - /* check for extension rom (ignore length byte!) */ 22.312 - rom = isa_bus_to_virt(extension_rom_resource.start); 22.313 - if (romsignature(rom)) { 22.314 - length = extension_rom_resource.end - extension_rom_resource.start + 1; 22.315 - if (romchecksum(rom, length)) { 22.316 - request_resource(&iomem_resource, &extension_rom_resource); 22.317 - upper = extension_rom_resource.start; 22.318 - } 22.319 - } 22.320 - 22.321 - /* check for adapter roms on 2k boundaries */ 22.322 - for (i = 0; i < ADAPTER_ROM_RESOURCES && start < upper; start += 2048) { 22.323 - rom = isa_bus_to_virt(start); 22.324 - if (!romsignature(rom)) 22.325 - continue; 22.326 - 22.327 - /* 0 < length <= 0x7f * 512, historically */ 22.328 - length = rom[2] * 512; 22.329 - 22.330 - /* but accept any length that fits if checksum okay */ 22.331 - if (!length || start + length > upper || !romchecksum(rom, length)) 22.332 - continue; 22.333 - 22.334 - adapter_rom_resources[i].start = start; 22.335 - adapter_rom_resources[i].end = start + length - 1; 22.336 - request_resource(&iomem_resource, &adapter_rom_resources[i]); 22.337 - 22.338 - start = adapter_rom_resources[i++].end & ~2047UL; 22.339 - } 22.340 -} 22.341 -#endif 22.342 - 22.343 -/* 22.344 - * Point at the empty zero page to start with. We map the real shared_info 22.345 - * page as soon as fixmap is up and running. 22.346 - */ 22.347 -shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; 22.348 -EXPORT_SYMBOL(HYPERVISOR_shared_info); 22.349 - 22.350 -unsigned long *phys_to_machine_mapping, *pfn_to_mfn_frame_list; 22.351 -EXPORT_SYMBOL(phys_to_machine_mapping); 22.352 - 22.353 -multicall_entry_t multicall_list[8]; 22.354 -int nr_multicall_ents = 0; 22.355 - 22.356 -/* Raw start-of-day parameters from the hypervisor. */ 22.357 -union xen_start_info_union xen_start_info_union; 22.358 - 22.359 -static void __init limit_regions(unsigned long long size) 22.360 -{ 22.361 - unsigned long long current_addr = 0; 22.362 - int i; 22.363 - 22.364 - if (efi_enabled) { 22.365 - for (i = 0; i < memmap.nr_map; i++) { 22.366 - current_addr = memmap.map[i].phys_addr + 22.367 - (memmap.map[i].num_pages << 12); 22.368 - if (memmap.map[i].type == EFI_CONVENTIONAL_MEMORY) { 22.369 - if (current_addr >= size) { 22.370 - memmap.map[i].num_pages -= 22.371 - (((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT); 22.372 - memmap.nr_map = i + 1; 22.373 - return; 22.374 - } 22.375 - } 22.376 - } 22.377 - } 22.378 - for (i = 0; i < e820.nr_map; i++) { 22.379 - if (e820.map[i].type == E820_RAM) { 22.380 - current_addr = e820.map[i].addr + e820.map[i].size; 22.381 - if (current_addr >= size) { 22.382 - e820.map[i].size -= current_addr-size; 22.383 - e820.nr_map = i + 1; 22.384 - return; 22.385 - } 22.386 - } 22.387 - } 22.388 -} 22.389 - 22.390 -static void __init add_memory_region(unsigned long long start, 22.391 - unsigned long long size, int type) 22.392 -{ 22.393 - int x; 22.394 - 22.395 - if (!efi_enabled) { 22.396 - x = e820.nr_map; 22.397 - 22.398 - if (x == E820MAX) { 22.399 - printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); 22.400 - return; 22.401 - } 22.402 - 22.403 - e820.map[x].addr = start; 22.404 - e820.map[x].size = size; 22.405 - e820.map[x].type = type; 22.406 - e820.nr_map++; 22.407 - } 22.408 -} /* add_memory_region */ 22.409 - 22.410 -#define E820_DEBUG 1 22.411 - 22.412 -static void __init print_memory_map(char *who) 22.413 -{ 22.414 - int i; 22.415 - 22.416 - for (i = 0; i < e820.nr_map; i++) { 22.417 - printk(" %s: %016Lx - %016Lx ", who, 22.418 - e820.map[i].addr, 22.419 - e820.map[i].addr + e820.map[i].size); 22.420 - switch (e820.map[i].type) { 22.421 - case E820_RAM: printk("(usable)\n"); 22.422 - break; 22.423 - case E820_RESERVED: 22.424 - printk("(reserved)\n"); 22.425 - break; 22.426 - case E820_ACPI: 22.427 - printk("(ACPI data)\n"); 22.428 - break; 22.429 - case E820_NVS: 22.430 - printk("(ACPI NVS)\n"); 22.431 - break; 22.432 - default: printk("type %lu\n", e820.map[i].type); 22.433 - break; 22.434 - } 22.435 - } 22.436 -} 22.437 - 22.438 -#if 0 22.439 -/* 22.440 - * Sanitize the BIOS e820 map. 22.441 - * 22.442 - * Some e820 responses include overlapping entries. The following 22.443 - * replaces the original e820 map with a new one, removing overlaps. 22.444 - * 22.445 - */ 22.446 -struct change_member { 22.447 - struct e820entry *pbios; /* pointer to original bios entry */ 22.448 - unsigned long long addr; /* address for this change point */ 22.449 -}; 22.450 -struct change_member change_point_list[2*E820MAX] __initdata; 22.451 -struct change_member *change_point[2*E820MAX] __initdata; 22.452 -struct e820entry *overlap_list[E820MAX] __initdata; 22.453 -struct e820entry new_bios[E820MAX] __initdata; 22.454 - 22.455 -static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map) 22.456 -{ 22.457 - struct change_member *change_tmp; 22.458 - unsigned long current_type, last_type; 22.459 - unsigned long long last_addr; 22.460 - int chgidx, still_changing; 22.461 - int overlap_entries; 22.462 - int new_bios_entry; 22.463 - int old_nr, new_nr, chg_nr; 22.464 - int i; 22.465 - 22.466 - /* 22.467 - Visually we're performing the following (1,2,3,4 = memory types)... 22.468 - 22.469 - Sample memory map (w/overlaps): 22.470 - ____22__________________ 22.471 - ______________________4_ 22.472 - ____1111________________ 22.473 - _44_____________________ 22.474 - 11111111________________ 22.475 - ____________________33__ 22.476 - ___________44___________ 22.477 - __________33333_________ 22.478 - ______________22________ 22.479 - ___________________2222_ 22.480 - _________111111111______ 22.481 - _____________________11_ 22.482 - _________________4______ 22.483 - 22.484 - Sanitized equivalent (no overlap): 22.485 - 1_______________________ 22.486 - _44_____________________ 22.487 - ___1____________________ 22.488 - ____22__________________ 22.489 - ______11________________ 22.490 - _________1______________ 22.491 - __________3_____________ 22.492 - ___________44___________ 22.493 - _____________33_________ 22.494 - _______________2________ 22.495 - ________________1_______ 22.496 - _________________4______ 22.497 - ___________________2____ 22.498 - ____________________33__ 22.499 - ______________________4_ 22.500 - */ 22.501 - 22.502 - /* if there's only one memory region, don't bother */ 22.503 - if (*pnr_map < 2) 22.504 - return -1; 22.505 - 22.506 - old_nr = *pnr_map; 22.507 - 22.508 - /* bail out if we find any unreasonable addresses in bios map */ 22.509 - for (i=0; i<old_nr; i++) 22.510 - if (biosmap[i].addr + biosmap[i].size < biosmap[i].addr) 22.511 - return -1; 22.512 - 22.513 - /* create pointers for initial change-point information (for sorting) */ 22.514 - for (i=0; i < 2*old_nr; i++) 22.515 - change_point[i] = &change_point_list[i]; 22.516 - 22.517 - /* record all known change-points (starting and ending addresses), 22.518 - omitting those that are for empty memory regions */ 22.519 - chgidx = 0; 22.520 - for (i=0; i < old_nr; i++) { 22.521 - if (biosmap[i].size != 0) { 22.522 - change_point[chgidx]->addr = biosmap[i].addr; 22.523 - change_point[chgidx++]->pbios = &biosmap[i]; 22.524 - change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size; 22.525 - change_point[chgidx++]->pbios = &biosmap[i]; 22.526 - } 22.527 - } 22.528 - chg_nr = chgidx; /* true number of change-points */ 22.529 - 22.530 - /* sort change-point list by memory addresses (low -> high) */ 22.531 - still_changing = 1; 22.532 - while (still_changing) { 22.533 - still_changing = 0; 22.534 - for (i=1; i < chg_nr; i++) { 22.535 - /* if <current_addr> > <last_addr>, swap */ 22.536 - /* or, if current=<start_addr> & last=<end_addr>, swap */ 22.537 - if ((change_point[i]->addr < change_point[i-1]->addr) || 22.538 - ((change_point[i]->addr == change_point[i-1]->addr) && 22.539 - (change_point[i]->addr == change_point[i]->pbios->addr) && 22.540 - (change_point[i-1]->addr != change_point[i-1]->pbios->addr)) 22.541 - ) 22.542 - { 22.543 - change_tmp = change_point[i]; 22.544 - change_point[i] = change_point[i-1]; 22.545 - change_point[i-1] = change_tmp; 22.546 - still_changing=1; 22.547 - } 22.548 - } 22.549 - } 22.550 - 22.551 - /* create a new bios memory map, removing overlaps */ 22.552 - overlap_entries=0; /* number of entries in the overlap table */ 22.553 - new_bios_entry=0; /* index for creating new bios map entries */ 22.554 - last_type = 0; /* start with undefined memory type */ 22.555 - last_addr = 0; /* start with 0 as last starting address */ 22.556 - /* loop through change-points, determining affect on the new bios map */ 22.557 - for (chgidx=0; chgidx < chg_nr; chgidx++) 22.558 - { 22.559 - /* keep track of all overlapping bios entries */ 22.560 - if (change_point[chgidx]->addr == change_point[chgidx]->pbios->addr) 22.561 - { 22.562 - /* add map entry to overlap list (> 1 entry implies an overlap) */ 22.563 - overlap_list[overlap_entries++]=change_point[chgidx]->pbios; 22.564 - } 22.565 - else 22.566 - { 22.567 - /* remove entry from list (order independent, so swap with last) */ 22.568 - for (i=0; i<overlap_entries; i++) 22.569 - { 22.570 - if (overlap_list[i] == change_point[chgidx]->pbios) 22.571 - overlap_list[i] = overlap_list[overlap_entries-1]; 22.572 - } 22.573 - overlap_entries--; 22.574 - } 22.575 - /* if there are overlapping entries, decide which "type" to use */ 22.576 - /* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */ 22.577 - current_type = 0; 22.578 - for (i=0; i<overlap_entries; i++) 22.579 - if (overlap_list[i]->type > current_type) 22.580 - current_type = overlap_list[i]->type; 22.581 - /* continue building up new bios map based on this information */ 22.582 - if (current_type != last_type) { 22.583 - if (last_type != 0) { 22.584 - new_bios[new_bios_entry].size = 22.585 - change_point[chgidx]->addr - last_addr; 22.586 - /* move forward only if the new size was non-zero */ 22.587 - if (new_bios[new_bios_entry].size != 0) 22.588 - if (++new_bios_entry >= E820MAX) 22.589 - break; /* no more space left for new bios entries */ 22.590 - } 22.591 - if (current_type != 0) { 22.592 - new_bios[new_bios_entry].addr = change_point[chgidx]->addr; 22.593 - new_bios[new_bios_entry].type = current_type; 22.594 - last_addr=change_point[chgidx]->addr; 22.595 - } 22.596 - last_type = current_type; 22.597 - } 22.598 - } 22.599 - new_nr = new_bios_entry; /* retain count for new bios entries */ 22.600 - 22.601 - /* copy new bios mapping into original location */ 22.602 - memcpy(biosmap, new_bios, new_nr*sizeof(struct e820entry)); 22.603 - *pnr_map = new_nr; 22.604 - 22.605 - return 0; 22.606 -} 22.607 - 22.608 -/* 22.609 - * Copy the BIOS e820 map into a safe place. 22.610 - * 22.611 - * Sanity-check it while we're at it.. 22.612 - * 22.613 - * If we're lucky and live on a modern system, the setup code 22.614 - * will have given us a memory map that we can use to properly 22.615 - * set up memory. If we aren't, we'll fake a memory map. 22.616 - * 22.617 - * We check to see that the memory map contains at least 2 elements 22.618 - * before we'll use it, because the detection code in setup.S may 22.619 - * not be perfect and most every PC known to man has two memory 22.620 - * regions: one from 0 to 640k, and one from 1mb up. (The IBM 22.621 - * thinkpad 560x, for example, does not cooperate with the memory 22.622 - * detection code.) 22.623 - */ 22.624 -static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) 22.625 -{ 22.626 - /* Only one memory region (or negative)? Ignore it */ 22.627 - if (nr_map < 2) 22.628 - return -1; 22.629 - 22.630 - do { 22.631 - unsigned long long start = biosmap->addr; 22.632 - unsigned long long size = biosmap->size; 22.633 - unsigned long long end = start + size; 22.634 - unsigned long type = biosmap->type; 22.635 - 22.636 - /* Overflow in 64 bits? Ignore the memory map. */ 22.637 - if (start > end) 22.638 - return -1; 22.639 - 22.640 - /* 22.641 - * Some BIOSes claim RAM in the 640k - 1M region. 22.642 - * Not right. Fix it up. 22.643 - */ 22.644 - if (type == E820_RAM) { 22.645 - if (start < 0x100000ULL && end > 0xA0000ULL) { 22.646 - if (start < 0xA0000ULL) 22.647 - add_memory_region(start, 0xA0000ULL-start, type); 22.648 - if (end <= 0x100000ULL) 22.649 - continue; 22.650 - start = 0x100000ULL; 22.651 - size = end - start; 22.652 - } 22.653 - } 22.654 - add_memory_region(start, size, type); 22.655 - } while (biosmap++,--nr_map); 22.656 - return 0; 22.657 -} 22.658 -#endif 22.659 - 22.660 -#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) 22.661 -struct edd edd; 22.662 -#ifdef CONFIG_EDD_MODULE 22.663 -EXPORT_SYMBOL(edd); 22.664 -#endif 22.665 -/** 22.666 - * copy_edd() - Copy the BIOS EDD information 22.667 - * from boot_params into a safe place. 22.668 - * 22.669 - */ 22.670 -static inline void copy_edd(void) 22.671 -{ 22.672 - memcpy(edd.mbr_signature, EDD_MBR_SIGNATURE, sizeof(edd.mbr_signature)); 22.673 - memcpy(edd.edd_info, EDD_BUF, sizeof(edd.edd_info)); 22.674 - edd.mbr_signature_nr = EDD_MBR_SIG_NR; 22.675 - edd.edd_info_nr = EDD_NR; 22.676 -} 22.677 -#else 22.678 -static inline void copy_edd(void) 22.679 -{ 22.680 -} 22.681 -#endif 22.682 - 22.683 -/* 22.684 - * Do NOT EVER look at the BIOS memory size location. 22.685 - * It does not work on many machines. 22.686 - */ 22.687 -#define LOWMEMSIZE() (0x9f000) 22.688 - 22.689 -static void __init parse_cmdline_early (char ** cmdline_p) 22.690 -{ 22.691 - char c = ' ', *to = command_line, *from = saved_command_line; 22.692 - int len = 0; 22.693 - int userdef = 0; 22.694 - 22.695 - memcpy(saved_command_line, xen_start_info.cmd_line, MAX_CMDLINE); 22.696 - /* Save unparsed command line copy for /proc/cmdline */ 22.697 - saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 22.698 - 22.699 - for (;;) { 22.700 - /* 22.701 - * "mem=nopentium" disables the 4MB page tables. 22.702 - * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM 22.703 - * to <mem>, overriding the bios size. 22.704 - * "memmap=XXX[KkmM]@XXX[KkmM]" defines a memory region from 22.705 - * <start> to <start>+<mem>, overriding the bios size. 22.706 - * 22.707 - * HPA tells me bootloaders need to parse mem=, so no new 22.708 - * option should be mem= [also see Documentation/i386/boot.txt] 22.709 - */ 22.710 - if (c == ' ' && !memcmp(from, "mem=", 4)) { 22.711 - if (to != command_line) 22.712 - to--; 22.713 - if (!memcmp(from+4, "nopentium", 9)) { 22.714 - from += 9+4; 22.715 - clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability); 22.716 - disable_pse = 1; 22.717 - } else { 22.718 - /* If the user specifies memory size, we 22.719 - * limit the BIOS-provided memory map to 22.720 - * that size. exactmap can be used to specify 22.721 - * the exact map. mem=number can be used to 22.722 - * trim the existing memory map. 22.723 - */ 22.724 - unsigned long long mem_size; 22.725 - 22.726 - mem_size = memparse(from+4, &from); 22.727 -#if 0 22.728 - limit_regions(mem_size); 22.729 - userdef=1; 22.730 -#else 22.731 - xen_override_max_pfn = 22.732 - (unsigned long)(mem_size>>PAGE_SHIFT); 22.733 -#endif 22.734 - } 22.735 - } 22.736 - 22.737 - if (c == ' ' && !memcmp(from, "memmap=", 7)) { 22.738 - if (to != command_line) 22.739 - to--; 22.740 - if (!memcmp(from+7, "exactmap", 8)) { 22.741 - from += 8+7; 22.742 - e820.nr_map = 0; 22.743 - userdef = 1; 22.744 - } else { 22.745 - /* If the user specifies memory size, we 22.746 - * limit the BIOS-provided memory map to 22.747 - * that size. exactmap can be used to specify 22.748 - * the exact map. mem=number can be used to 22.749 - * trim the existing memory map. 22.750 - */ 22.751 - unsigned long long start_at, mem_size; 22.752 - 22.753 - mem_size = memparse(from+7, &from); 22.754 - if (*from == '@') { 22.755 - start_at = memparse(from+1, &from); 22.756 - add_memory_region(start_at, mem_size, E820_RAM); 22.757 - } else if (*from == '#') { 22.758 - start_at = memparse(from+1, &from); 22.759 - add_memory_region(start_at, mem_size, E820_ACPI); 22.760 - } else if (*from == '$') { 22.761 - start_at = memparse(from+1, &from); 22.762 - add_memory_region(start_at, mem_size, E820_RESERVED); 22.763 - } else { 22.764 - limit_regions(mem_size); 22.765 - userdef=1; 22.766 - } 22.767 - } 22.768 - } 22.769 - 22.770 -#ifdef CONFIG_X86_SMP 22.771 - /* 22.772 - * If the BIOS enumerates physical processors before logical, 22.773 - * maxcpus=N at enumeration-time can be used to disable HT. 22.774 - */ 22.775 - else if (!memcmp(from, "maxcpus=", 8)) { 22.776 - extern unsigned int maxcpus; 22.777 - 22.778 - maxcpus = simple_strtoul(from + 8, NULL, 0); 22.779 - } 22.780 -#endif 22.781 - 22.782 -#ifdef CONFIG_ACPI_BOOT 22.783 - /* "acpi=off" disables both ACPI table parsing and interpreter */ 22.784 - else if (!memcmp(from, "acpi=off", 8)) { 22.785 - disable_acpi(); 22.786 - } 22.787 - 22.788 - /* acpi=force to over-ride black-list */ 22.789 - else if (!memcmp(from, "acpi=force", 10)) { 22.790 - acpi_force = 1; 22.791 - acpi_ht = 1; 22.792 - acpi_disabled = 0; 22.793 - } 22.794 - 22.795 - /* acpi=strict disables out-of-spec workarounds */ 22.796 - else if (!memcmp(from, "acpi=strict", 11)) { 22.797 - acpi_strict = 1; 22.798 - } 22.799 - 22.800 - /* Limit ACPI just to boot-time to enable HT */ 22.801 - else if (!memcmp(from, "acpi=ht", 7)) { 22.802 - if (!acpi_force) 22.803 - disable_acpi(); 22.804 - acpi_ht = 1; 22.805 - } 22.806 - 22.807 - /* "pci=noacpi" disable ACPI IRQ routing and PCI scan */ 22.808 - else if (!memcmp(from, "pci=noacpi", 10)) { 22.809 - acpi_disable_pci(); 22.810 - } 22.811 - /* "acpi=noirq" disables ACPI interrupt routing */ 22.812 - else if (!memcmp(from, "acpi=noirq", 10)) { 22.813 - acpi_noirq_set(); 22.814 - } 22.815 - 22.816 - else if (!memcmp(from, "acpi_sci=edge", 13)) 22.817 - acpi_sci_flags.trigger = 1; 22.818 - 22.819 - else if (!memcmp(from, "acpi_sci=level", 14)) 22.820 - acpi_sci_flags.trigger = 3; 22.821 - 22.822 - else if (!memcmp(from, "acpi_sci=high", 13)) 22.823 - acpi_sci_flags.polarity = 1; 22.824 - 22.825 - else if (!memcmp(from, "acpi_sci=low", 12)) 22.826 - acpi_sci_flags.polarity = 3; 22.827 - 22.828 -#ifdef CONFIG_X86_IO_APIC 22.829 - else if (!memcmp(from, "acpi_skip_timer_override", 24)) 22.830 - acpi_skip_timer_override = 1; 22.831 -#endif 22.832 - 22.833 -#ifdef CONFIG_X86_LOCAL_APIC 22.834 - /* disable IO-APIC */ 22.835 - else if (!memcmp(from, "noapic", 6)) 22.836 - disable_ioapic_setup(); 22.837 -#endif /* CONFIG_X86_LOCAL_APIC */ 22.838 -#endif /* CONFIG_ACPI_BOOT */ 22.839 - 22.840 - /* 22.841 - * highmem=size forces highmem to be exactly 'size' bytes. 22.842 - * This works even on boxes that have no highmem otherwise. 22.843 - * This also works to reduce highmem size on bigger boxes. 22.844 - */ 22.845 - if (c == ' ' && !memcmp(from, "highmem=", 8)) 22.846 - highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT; 22.847 - 22.848 - /* 22.849 - * vmalloc=size forces the vmalloc area to be exactly 'size' 22.850 - * bytes. This can be used to increase (or decrease) the 22.851 - * vmalloc area - the default is 128m. 22.852 - */ 22.853 - if (c == ' ' && !memcmp(from, "vmalloc=", 8)) 22.854 - __VMALLOC_RESERVE = memparse(from+8, &from); 22.855 - 22.856 - c = *(from++); 22.857 - if (!c) 22.858 - break; 22.859 - if (COMMAND_LINE_SIZE <= ++len) 22.860 - break; 22.861 - *(to++) = c; 22.862 - } 22.863 - *to = '\0'; 22.864 - *cmdline_p = command_line; 22.865 - if (userdef) { 22.866 - printk(KERN_INFO "user-defined physical RAM map:\n"); 22.867 - print_memory_map("user"); 22.868 - } 22.869 -} 22.870 - 22.871 -#if 0 /* !XEN */ 22.872 -/* 22.873 - * Callback for efi_memory_walk. 22.874 - */ 22.875 -static int __init 22.876 -efi_find_max_pfn(unsigned long start, unsigned long end, void *arg) 22.877 -{ 22.878 - unsigned long *max_pfn = arg, pfn; 22.879 - 22.880 - if (start < end) { 22.881 - pfn = PFN_UP(end -1); 22.882 - if (pfn > *max_pfn) 22.883 - *max_pfn = pfn; 22.884 - } 22.885 - return 0; 22.886 -} 22.887 - 22.888 -/* 22.889 - * Find the highest page frame number we have available 22.890 - */ 22.891 -void __init find_max_pfn(void) 22.892 -{ 22.893 - int i; 22.894 - 22.895 - max_pfn = 0; 22.896 - if (efi_enabled) { 22.897 - efi_memmap_walk(efi_find_max_pfn, &max_pfn); 22.898 - return; 22.899 - } 22.900 - 22.901 - for (i = 0; i < e820.nr_map; i++) { 22.902 - unsigned long start, end; 22.903 - /* RAM? */ 22.904 - if (e820.map[i].type != E820_RAM) 22.905 - continue; 22.906 - start = PFN_UP(e820.map[i].addr); 22.907 - end = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 22.908 - if (start >= end) 22.909 - continue; 22.910 - if (end > max_pfn) 22.911 - max_pfn = end; 22.912 - } 22.913 -} 22.914 -#else 22.915 -/* We don't use the fake e820 because we need to respond to user override. */ 22.916 -void __init find_max_pfn(void) 22.917 -{ 22.918 - if ( xen_override_max_pfn < xen_start_info.nr_pages ) 22.919 - xen_override_max_pfn = xen_start_info.nr_pages; 22.920 - max_pfn = xen_override_max_pfn; 22.921 -} 22.922 -#endif /* XEN */ 22.923 - 22.924 -/* 22.925 - * Determine low and high memory ranges: 22.926 - */ 22.927 -unsigned long __init find_max_low_pfn(void) 22.928 -{ 22.929 - unsigned long max_low_pfn; 22.930 - 22.931 - max_low_pfn = max_pfn; 22.932 - if (max_low_pfn > MAXMEM_PFN) { 22.933 - if (highmem_pages == -1) 22.934 - highmem_pages = max_pfn - MAXMEM_PFN; 22.935 - if (highmem_pages + MAXMEM_PFN < max_pfn) 22.936 - max_pfn = MAXMEM_PFN + highmem_pages; 22.937 - if (highmem_pages + MAXMEM_PFN > max_pfn) { 22.938 - printk("only %luMB highmem pages available, ignoring highmem size of %uMB.\n", pages_to_mb(max_pfn - MAXMEM_PFN), pages_to_mb(highmem_pages)); 22.939 - highmem_pages = 0; 22.940 - } 22.941 - max_low_pfn = MAXMEM_PFN; 22.942 -#ifndef CONFIG_HIGHMEM 22.943 - /* Maximum memory usable is what is directly addressable */ 22.944 - printk(KERN_WARNING "Warning only %ldMB will be used.\n", 22.945 - MAXMEM>>20); 22.946 - if (max_pfn > MAX_NONPAE_PFN) 22.947 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 22.948 - else 22.949 - printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n"); 22.950 - max_pfn = MAXMEM_PFN; 22.951 -#else /* !CONFIG_HIGHMEM */ 22.952 -#ifndef CONFIG_X86_PAE 22.953 - if (max_pfn > MAX_NONPAE_PFN) { 22.954 - max_pfn = MAX_NONPAE_PFN; 22.955 - printk(KERN_WARNING "Warning only 4GB will be used.\n"); 22.956 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 22.957 - } 22.958 -#endif /* !CONFIG_X86_PAE */ 22.959 -#endif /* !CONFIG_HIGHMEM */ 22.960 - } else { 22.961 - if (highmem_pages == -1) 22.962 - highmem_pages = 0; 22.963 -#ifdef CONFIG_HIGHMEM 22.964 - if (highmem_pages >= max_pfn) { 22.965 - printk(KERN_ERR "highmem size specified (%uMB) is bigger than pages available (%luMB)!.\n", pages_to_mb(highmem_pages), pages_to_mb(max_pfn)); 22.966 - highmem_pages = 0; 22.967 - } 22.968 - if (highmem_pages) { 22.969 - if (max_low_pfn-highmem_pages < 64*1024*1024/PAGE_SIZE){ 22.970 - printk(KERN_ERR "highmem size %uMB results in smaller than 64MB lowmem, ignoring it.\n", pages_to_mb(highmem_pages)); 22.971 - highmem_pages = 0; 22.972 - } 22.973 - max_low_pfn -= highmem_pages; 22.974 - } 22.975 -#else 22.976 - if (highmem_pages) 22.977 - printk(KERN_ERR "ignoring highmem size on non-highmem kernel!\n"); 22.978 -#endif 22.979 - } 22.980 - return max_low_pfn; 22.981 -} 22.982 - 22.983 -#ifndef CONFIG_DISCONTIGMEM 22.984 - 22.985 -/* 22.986 - * Free all available memory for boot time allocation. Used 22.987 - * as a callback function by efi_memory_walk() 22.988 - */ 22.989 - 22.990 -static int __init 22.991 -free_available_memory(unsigned long start, unsigned long end, void *arg) 22.992 -{ 22.993 - /* check max_low_pfn */ 22.994 - if (start >= ((max_low_pfn + 1) << PAGE_SHIFT)) 22.995 - return 0; 22.996 - if (end >= ((max_low_pfn + 1) << PAGE_SHIFT)) 22.997 - end = (max_low_pfn + 1) << PAGE_SHIFT; 22.998 - if (start < end) 22.999 - free_bootmem(start, end - start); 22.1000 - 22.1001 - return 0; 22.1002 -} 22.1003 -/* 22.1004 - * Register fully available low RAM pages with the bootmem allocator. 22.1005 - */ 22.1006 -static void __init register_bootmem_low_pages(unsigned long max_low_pfn) 22.1007 -{ 22.1008 - int i; 22.1009 - 22.1010 - if (efi_enabled) { 22.1011 - efi_memmap_walk(free_available_memory, NULL); 22.1012 - return; 22.1013 - } 22.1014 - for (i = 0; i < e820.nr_map; i++) { 22.1015 - unsigned long curr_pfn, last_pfn, size; 22.1016 - /* 22.1017 - * Reserve usable low memory 22.1018 - */ 22.1019 - if (e820.map[i].type != E820_RAM) 22.1020 - continue; 22.1021 - /* 22.1022 - * We are rounding up the start address of usable memory: 22.1023 - */ 22.1024 - curr_pfn = PFN_UP(e820.map[i].addr); 22.1025 - if (curr_pfn >= max_low_pfn) 22.1026 - continue; 22.1027 - /* 22.1028 - * ... and at the end of the usable range downwards: 22.1029 - */ 22.1030 - last_pfn = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 22.1031 - 22.1032 - if (last_pfn > max_low_pfn) 22.1033 - last_pfn = max_low_pfn; 22.1034 - 22.1035 - /* 22.1036 - * .. finally, did all the rounding and playing 22.1037 - * around just make the area go away? 22.1038 - */ 22.1039 - if (last_pfn <= curr_pfn) 22.1040 - continue; 22.1041 - 22.1042 - size = last_pfn - curr_pfn; 22.1043 - free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size)); 22.1044 - } 22.1045 -} 22.1046 - 22.1047 -/* 22.1048 - * workaround for Dell systems that neglect to reserve EBDA 22.1049 - */ 22.1050 -static void __init reserve_ebda_region(void) 22.1051 -{ 22.1052 - unsigned int addr; 22.1053 - addr = get_bios_ebda(); 22.1054 - if (addr) 22.1055 - reserve_bootmem(addr, PAGE_SIZE); 22.1056 -} 22.1057 - 22.1058 -static unsigned long __init setup_memory(void) 22.1059 -{ 22.1060 - unsigned long bootmap_size, start_pfn, max_low_pfn; 22.1061 - 22.1062 - /* 22.1063 - * partially used pages are not usable - thus 22.1064 - * we are rounding upwards: 22.1065 - */ 22.1066 - start_pfn = PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames; 22.1067 - 22.1068 - find_max_pfn(); 22.1069 - 22.1070 - max_low_pfn = find_max_low_pfn(); 22.1071 - 22.1072 -#ifdef CONFIG_HIGHMEM 22.1073 - highstart_pfn = highend_pfn = max_pfn; 22.1074 - if (max_pfn > max_low_pfn) { 22.1075 - highstart_pfn = max_low_pfn; 22.1076 - } 22.1077 - printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", 22.1078 - pages_to_mb(highend_pfn - highstart_pfn)); 22.1079 -#endif 22.1080 - printk(KERN_NOTICE "%ldMB LOWMEM available.\n", 22.1081 - pages_to_mb(max_low_pfn)); 22.1082 - /* 22.1083 - * Initialize the boot-time allocator (with low memory only): 22.1084 - */ 22.1085 - bootmap_size = init_bootmem(start_pfn, max_low_pfn); 22.1086 - 22.1087 - register_bootmem_low_pages(max_low_pfn); 22.1088 - 22.1089 - /* 22.1090 - * Reserve the bootmem bitmap itself as well. We do this in two 22.1091 - * steps (first step was init_bootmem()) because this catches 22.1092 - * the (very unlikely) case of us accidentally initializing the 22.1093 - * bootmem allocator with an invalid RAM area. 22.1094 - */ 22.1095 - reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(start_pfn) + 22.1096 - bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY)); 22.1097 - 22.1098 - /* reserve EBDA region, it's a 4K region */ 22.1099 - reserve_ebda_region(); 22.1100 - 22.1101 - /* could be an AMD 768MPX chipset. Reserve a page before VGA to prevent 22.1102 - PCI prefetch into it (errata #56). Usually the page is reserved anyways, 22.1103 - unless you have no PS/2 mouse plugged in. */ 22.1104 - if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && 22.1105 - boot_cpu_data.x86 == 6) 22.1106 - reserve_bootmem(0xa0000 - 4096, 4096); 22.1107 - 22.1108 -#ifdef CONFIG_SMP 22.1109 - /* 22.1110 - * But first pinch a few for the stack/trampoline stuff 22.1111 - * FIXME: Don't need the extra page at 4K, but need to fix 22.1112 - * trampoline before removing it. (see the GDT stuff) 22.1113 - */ 22.1114 - reserve_bootmem(PAGE_SIZE, PAGE_SIZE); 22.1115 -#endif 22.1116 -#ifdef CONFIG_ACPI_SLEEP 22.1117 - /* 22.1118 - * Reserve low memory region for sleep support. 22.1119 - */ 22.1120 - acpi_reserve_bootmem(); 22.1121 -#endif 22.1122 -#ifdef CONFIG_X86_FIND_SMP_CONFIG 22.1123 - /* 22.1124 - * Find and reserve possible boot-time SMP configuration: 22.1125 - */ 22.1126 - find_smp_config(); 22.1127 -#endif 22.1128 - 22.1129 -#ifdef CONFIG_BLK_DEV_INITRD 22.1130 - if (xen_start_info.mod_start) { 22.1131 - if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 22.1132 - /*reserve_bootmem(INITRD_START, INITRD_SIZE);*/ 22.1133 - initrd_start = INITRD_START + PAGE_OFFSET; 22.1134 - initrd_end = initrd_start+INITRD_SIZE; 22.1135 - initrd_below_start_ok = 1; 22.1136 - } 22.1137 - else { 22.1138 - printk(KERN_ERR "initrd extends beyond end of memory " 22.1139 - "(0x%08lx > 0x%08lx)\ndisabling initrd\n", 22.1140 - INITRD_START + INITRD_SIZE, 22.1141 - max_low_pfn << PAGE_SHIFT); 22.1142 - initrd_start = 0; 22.1143 - } 22.1144 - } 22.1145 -#endif 22.1146 - 22.1147 - phys_to_machine_mapping = (unsigned long *)xen_start_info.mfn_list; 22.1148 - 22.1149 - return max_low_pfn; 22.1150 -} 22.1151 -#else 22.1152 -extern unsigned long setup_memory(void); 22.1153 -#endif /* !CONFIG_DISCONTIGMEM */ 22.1154 - 22.1155 -/* 22.1156 - * Request address space for all standard RAM and ROM resources 22.1157 - * and also for regions reported as reserved by the e820. 22.1158 - */ 22.1159 -static void __init 22.1160 -legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource) 22.1161 -{ 22.1162 - int i; 22.1163 - 22.1164 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 22.1165 - probe_roms(); 22.1166 -#endif 22.1167 - for (i = 0; i < e820.nr_map; i++) { 22.1168 - struct resource *res; 22.1169 - if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) 22.1170 - continue; 22.1171 - res = alloc_bootmem_low(sizeof(struct resource)); 22.1172 - switch (e820.map[i].type) { 22.1173 - case E820_RAM: res->name = "System RAM"; break; 22.1174 - case E820_ACPI: res->name = "ACPI Tables"; break; 22.1175 - case E820_NVS: res->name = "ACPI Non-volatile Storage"; break; 22.1176 - default: res->name = "reserved"; 22.1177 - } 22.1178 - res->start = e820.map[i].addr; 22.1179 - res->end = res->start + e820.map[i].size - 1; 22.1180 - res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; 22.1181 - request_resource(&iomem_resource, res); 22.1182 - if (e820.map[i].type == E820_RAM) { 22.1183 - /* 22.1184 - * We don't know which RAM region contains kernel data, 22.1185 - * so we try it repeatedly and let the resource manager 22.1186 - * test it. 22.1187 - */ 22.1188 - request_resource(res, code_resource); 22.1189 - request_resource(res, data_resource); 22.1190 - } 22.1191 - } 22.1192 -} 22.1193 - 22.1194 -/* 22.1195 - * Request address space for all standard resources 22.1196 - */ 22.1197 -static void __init register_memory(unsigned long max_low_pfn) 22.1198 -{ 22.1199 - unsigned long low_mem_size; 22.1200 - int i; 22.1201 - 22.1202 - if (efi_enabled) 22.1203 - efi_initialize_iomem_resources(&code_resource, &data_resource); 22.1204 - else 22.1205 - legacy_init_iomem_resources(&code_resource, &data_resource); 22.1206 - 22.1207 - /* EFI systems may still have VGA */ 22.1208 - request_resource(&iomem_resource, &video_ram_resource); 22.1209 - 22.1210 - /* request I/O space for devices used on all i[345]86 PCs */ 22.1211 - for (i = 0; i < STANDARD_IO_RESOURCES; i++) 22.1212 - request_resource(&ioport_resource, &standard_io_resources[i]); 22.1213 - 22.1214 - /* Tell the PCI layer not to allocate too close to the RAM area.. */ 22.1215 - low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff; 22.1216 - if (low_mem_size > pci_mem_start) 22.1217 - pci_mem_start = low_mem_size; 22.1218 -} 22.1219 - 22.1220 -/* Use inline assembly to define this because the nops are defined 22.1221 - as inline assembly strings in the include files and we cannot 22.1222 - get them easily into strings. */ 22.1223 -asm("\t.data\nintelnops: " 22.1224 - GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 22.1225 - GENERIC_NOP7 GENERIC_NOP8); 22.1226 -asm("\t.data\nk8nops: " 22.1227 - K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 22.1228 - K8_NOP7 K8_NOP8); 22.1229 -asm("\t.data\nk7nops: " 22.1230 - K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 22.1231 - K7_NOP7 K7_NOP8); 22.1232 - 22.1233 -extern unsigned char intelnops[], k8nops[], k7nops[]; 22.1234 -static unsigned char *intel_nops[ASM_NOP_MAX+1] = { 22.1235 - NULL, 22.1236 - intelnops, 22.1237 - intelnops + 1, 22.1238 - intelnops + 1 + 2, 22.1239 - intelnops + 1 + 2 + 3, 22.1240 - intelnops + 1 + 2 + 3 + 4, 22.1241 - intelnops + 1 + 2 + 3 + 4 + 5, 22.1242 - intelnops + 1 + 2 + 3 + 4 + 5 + 6, 22.1243 - intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 22.1244 -}; 22.1245 -static unsigned char *k8_nops[ASM_NOP_MAX+1] = { 22.1246 - NULL, 22.1247 - k8nops, 22.1248 - k8nops + 1, 22.1249 - k8nops + 1 + 2, 22.1250 - k8nops + 1 + 2 + 3, 22.1251 - k8nops + 1 + 2 + 3 + 4, 22.1252 - k8nops + 1 + 2 + 3 + 4 + 5, 22.1253 - k8nops + 1 + 2 + 3 + 4 + 5 + 6, 22.1254 - k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 22.1255 -}; 22.1256 -static unsigned char *k7_nops[ASM_NOP_MAX+1] = { 22.1257 - NULL, 22.1258 - k7nops, 22.1259 - k7nops + 1, 22.1260 - k7nops + 1 + 2, 22.1261 - k7nops + 1 + 2 + 3, 22.1262 - k7nops + 1 + 2 + 3 + 4, 22.1263 - k7nops + 1 + 2 + 3 + 4 + 5, 22.1264 - k7nops + 1 + 2 + 3 + 4 + 5 + 6, 22.1265 - k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 22.1266 -}; 22.1267 -static struct nop { 22.1268 - int cpuid; 22.1269 - unsigned char **noptable; 22.1270 -} noptypes[] = { 22.1271 - { X86_FEATURE_K8, k8_nops }, 22.1272 - { X86_FEATURE_K7, k7_nops }, 22.1273 - { -1, NULL } 22.1274 -}; 22.1275 - 22.1276 -/* Replace instructions with better alternatives for this CPU type. 22.1277 - 22.1278 - This runs before SMP is initialized to avoid SMP problems with 22.1279 - self modifying code. This implies that assymetric systems where 22.1280 - APs have less capabilities than the boot processor are not handled. 22.1281 - In this case boot with "noreplacement". */ 22.1282 -void apply_alternatives(void *start, void *end) 22.1283 -{ 22.1284 - struct alt_instr *a; 22.1285 - int diff, i, k; 22.1286 - unsigned char **noptable = intel_nops; 22.1287 - for (i = 0; noptypes[i].cpuid >= 0; i++) { 22.1288 - if (boot_cpu_has(noptypes[i].cpuid)) { 22.1289 - noptable = noptypes[i].noptable; 22.1290 - break; 22.1291 - } 22.1292 - } 22.1293 - for (a = start; (void *)a < end; a++) { 22.1294 - if (!boot_cpu_has(a->cpuid)) 22.1295 - continue; 22.1296 - BUG_ON(a->replacementlen > a->instrlen); 22.1297 - memcpy(a->instr, a->replacement, a->replacementlen); 22.1298 - diff = a->instrlen - a->replacementlen; 22.1299 - /* Pad the rest with nops */ 22.1300 - for (i = a->replacementlen; diff > 0; diff -= k, i += k) { 22.1301 - k = diff; 22.1302 - if (k > ASM_NOP_MAX) 22.1303 - k = ASM_NOP_MAX; 22.1304 - memcpy(a->instr + i, noptable[k], k); 22.1305 - } 22.1306 - } 22.1307 -} 22.1308 - 22.1309 -static int no_replacement __initdata = 0; 22.1310 - 22.1311 -void __init alternative_instructions(void) 22.1312 -{ 22.1313 - extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; 22.1314 - if (no_replacement) 22.1315 - return; 22.1316 - apply_alternatives(__alt_instructions, __alt_instructions_end); 22.1317 -} 22.1318 - 22.1319 -static int __init noreplacement_setup(char *s) 22.1320 -{ 22.1321 - no_replacement = 1; 22.1322 - return 0; 22.1323 -} 22.1324 - 22.1325 -__setup("noreplacement", noreplacement_setup); 22.1326 - 22.1327 -static char * __init machine_specific_memory_setup(void); 22.1328 - 22.1329 -/* 22.1330 - * Determine if we were loaded by an EFI loader. If so, then we have also been 22.1331 - * passed the efi memmap, systab, etc., so we should use these data structures 22.1332 - * for initialization. Note, the efi init code path is determined by the 22.1333 - * global efi_enabled. This allows the same kernel image to be used on existing 22.1334 - * systems (with a traditional BIOS) as well as on EFI systems. 22.1335 - */ 22.1336 -void __init setup_arch(char **cmdline_p) 22.1337 -{ 22.1338 - int i,j; 22.1339 - 22.1340 - unsigned long max_low_pfn; 22.1341 - 22.1342 - /* Force a quick death if the kernel panics. */ 22.1343 - extern int panic_timeout; 22.1344 - if ( panic_timeout == 0 ) 22.1345 - panic_timeout = 1; 22.1346 - 22.1347 - HYPERVISOR_vm_assist(VMASST_CMD_enable, 22.1348 - VMASST_TYPE_4gb_segments); 22.1349 - 22.1350 - memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data)); 22.1351 - early_cpu_init(); 22.1352 - 22.1353 - /* 22.1354 - * FIXME: This isn't an official loader_type right 22.1355 - * now but does currently work with elilo. 22.1356 - * If we were configured as an EFI kernel, check to make 22.1357 - * sure that we were loaded correctly from elilo and that 22.1358 - * the system table is valid. If not, then initialize normally. 22.1359 - */ 22.1360 -#ifdef CONFIG_EFI 22.1361 - if ((LOADER_TYPE == 0x50) && EFI_SYSTAB) 22.1362 - efi_enabled = 1; 22.1363 -#endif 22.1364 - 22.1365 - ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); /*old_decode_dev(ORIG_ROOT_DEV);*/ 22.1366 - drive_info = DRIVE_INFO; 22.1367 - screen_info = SCREEN_INFO; 22.1368 - edid_info = EDID_INFO; 22.1369 - apm_info.bios = APM_BIOS_INFO; 22.1370 - ist_info = IST_INFO; 22.1371 - saved_videomode = VIDEO_MODE; 22.1372 - if( SYS_DESC_TABLE.length != 0 ) { 22.1373 - MCA_bus = SYS_DESC_TABLE.table[3] &0x2; 22.1374 - machine_id = SYS_DESC_TABLE.table[0]; 22.1375 - machine_submodel_id = SYS_DESC_TABLE.table[1]; 22.1376 - BIOS_revision = SYS_DESC_TABLE.table[2]; 22.1377 - } 22.1378 - aux_device_present = AUX_DEVICE_INFO; 22.1379 - 22.1380 -#ifdef CONFIG_XEN_PHYSDEV_ACCESS 22.1381 - /* This is drawn from a dump from vgacon:startup in standard Linux. */ 22.1382 - screen_info.orig_video_mode = 3; 22.1383 - screen_info.orig_video_isVGA = 1; 22.1384 - screen_info.orig_video_lines = 25; 22.1385 - screen_info.orig_video_cols = 80; 22.1386 - screen_info.orig_video_ega_bx = 3; 22.1387 - screen_info.orig_video_points = 16; 22.1388 -#endif 22.1389 - 22.1390 -#ifdef CONFIG_BLK_DEV_RAM 22.1391 - rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; 22.1392 - rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0); 22.1393 - rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0); 22.1394 -#endif 22.1395 - ARCH_SETUP 22.1396 - if (efi_enabled) 22.1397 - efi_init(); 22.1398 - else { 22.1399 - printk(KERN_INFO "BIOS-provided physical RAM map:\n"); 22.1400 - print_memory_map(machine_specific_memory_setup()); 22.1401 - } 22.1402 - 22.1403 - copy_edd(); 22.1404 - 22.1405 - if (!MOUNT_ROOT_RDONLY) 22.1406 - root_mountflags &= ~MS_RDONLY; 22.1407 - init_mm.start_code = (unsigned long) _text; 22.1408 - init_mm.end_code = (unsigned long) _etext; 22.1409 - init_mm.end_data = (unsigned long) _edata; 22.1410 - init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT; 22.1411 - 22.1412 - /* XEN: This is nonsense: kernel may not even be contiguous in RAM. */ 22.1413 - /*code_resource.start = virt_to_phys(_text);*/ 22.1414 - /*code_resource.end = virt_to_phys(_etext)-1;*/ 22.1415 - /*data_resource.start = virt_to_phys(_etext);*/ 22.1416 - /*data_resource.end = virt_to_phys(_edata)-1;*/ 22.1417 - 22.1418 - parse_cmdline_early(cmdline_p); 22.1419 - 22.1420 - max_low_pfn = setup_memory(); 22.1421 - 22.1422 - /* 22.1423 - * NOTE: before this point _nobody_ is allowed to allocate 22.1424 - * any memory using the bootmem allocator. Although the 22.1425 - * alloctor is now initialised only the first 8Mb of the kernel 22.1426 - * virtual address space has been mapped. All allocations before 22.1427 - * paging_init() has completed must use the alloc_bootmem_low_pages() 22.1428 - * variant (which allocates DMA'able memory) and care must be taken 22.1429 - * not to exceed the 8Mb limit. 22.1430 - */ 22.1431 - 22.1432 -#ifdef CONFIG_SMP 22.1433 - smp_alloc_memory(); /* AP processor realmode stacks in low memory*/ 22.1434 -#endif 22.1435 - paging_init(); 22.1436 - 22.1437 - /* Make sure we have a large enough P->M table. */ 22.1438 - if (max_pfn > xen_start_info.nr_pages) { 22.1439 - phys_to_machine_mapping = alloc_bootmem_low_pages( 22.1440 - max_pfn * sizeof(unsigned long)); 22.1441 - memset(phys_to_machine_mapping, ~0, 22.1442 - max_pfn * sizeof(unsigned long)); 22.1443 - memcpy(phys_to_machine_mapping, 22.1444 - (unsigned long *)xen_start_info.mfn_list, 22.1445 - xen_start_info.nr_pages * sizeof(unsigned long)); 22.1446 - free_bootmem( 22.1447 - __pa(xen_start_info.mfn_list), 22.1448 - PFN_PHYS(PFN_UP(xen_start_info.nr_pages * 22.1449 - sizeof(unsigned long)))); 22.1450 - } 22.1451 - 22.1452 - pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE); 22.1453 - for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ ) 22.1454 - { 22.1455 - pfn_to_mfn_frame_list[j] = 22.1456 - virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT; 22.1457 - } 22.1458 - HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list = 22.1459 - virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT; 22.1460 - 22.1461 - 22.1462 - /* 22.1463 - * NOTE: at this point the bootmem allocator is fully available. 22.1464 - */ 22.1465 - 22.1466 -#ifdef CONFIG_EARLY_PRINTK 22.1467 - { 22.1468 - char *s = strstr(*cmdline_p, "earlyprintk="); 22.1469 - if (s) { 22.1470 - extern void setup_early_printk(char *); 22.1471 - 22.1472 - setup_early_printk(s); 22.1473 - printk("early console enabled\n"); 22.1474 - } 22.1475 - } 22.1476 -#endif 22.1477 - 22.1478 - 22.1479 - dmi_scan_machine(); 22.1480 - 22.1481 -#ifdef CONFIG_X86_GENERICARCH 22.1482 - generic_apic_probe(*cmdline_p); 22.1483 -#endif 22.1484 - if (efi_enabled) 22.1485 - efi_map_memmap(); 22.1486 - 22.1487 - /* 22.1488 - * Parse the ACPI tables for possible boot-time SMP configuration. 22.1489 - */ 22.1490 - acpi_boot_init(); 22.1491 - 22.1492 -#ifdef CONFIG_X86_LOCAL_APIC 22.1493 - if (smp_found_config) 22.1494 - get_smp_config(); 22.1495 -#endif 22.1496 - 22.1497 - register_memory(max_low_pfn); 22.1498 - 22.1499 - /* If we are a privileged guest OS then we should request IO privs. */ 22.1500 - if (xen_start_info.flags & SIF_PRIVILEGED) { 22.1501 - dom0_op_t op; 22.1502 - op.cmd = DOM0_IOPL; 22.1503 - op.u.iopl.domain = DOMID_SELF; 22.1504 - op.u.iopl.iopl = 1; 22.1505 - if (HYPERVISOR_dom0_op(&op) != 0) 22.1506 - panic("Unable to obtain IOPL, despite SIF_PRIVILEGED"); 22.1507 - current->thread.io_pl = 1; 22.1508 - } 22.1509 - 22.1510 - if (xen_start_info.flags & SIF_INITDOMAIN) { 22.1511 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 22.1512 - panic("Xen granted us console access " 22.1513 - "but not privileged status"); 22.1514 - 22.1515 -#ifdef CONFIG_VT 22.1516 -#if defined(CONFIG_VGA_CONSOLE) 22.1517 - if (!efi_enabled || 22.1518 - (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) 22.1519 - conswitchp = &vga_con; 22.1520 -#elif defined(CONFIG_DUMMY_CONSOLE) 22.1521 - conswitchp = &dummy_con; 22.1522 -#endif 22.1523 -#endif 22.1524 - } else { 22.1525 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 22.1526 - extern const struct consw xennull_con; 22.1527 - extern int console_use_vt; 22.1528 -#if defined(CONFIG_VGA_CONSOLE) 22.1529 - /* disable VGA driver */ 22.1530 - ORIG_VIDEO_ISVGA = VIDEO_TYPE_VLFB; 22.1531 -#endif 22.1532 - conswitchp = &xennull_con; 22.1533 - console_use_vt = 0; 22.1534 -#endif 22.1535 - } 22.1536 -} 22.1537 - 22.1538 -#include "setup_arch_post.h" 22.1539 -/* 22.1540 - * Local Variables: 22.1541 - * mode:c 22.1542 - * c-file-style:"k&r" 22.1543 - * c-basic-offset:8 22.1544 - * End: 22.1545 - */
23.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c Tue Dec 07 19:17:22 2004 +0000 23.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 23.3 @@ -1,649 +0,0 @@ 23.4 -/* 23.5 - * linux/arch/i386/kernel/signal.c 23.6 - * 23.7 - * Copyright (C) 1991, 1992 Linus Torvalds 23.8 - * 23.9 - * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson 23.10 - * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes 23.11 - */ 23.12 - 23.13 -#include <linux/sched.h> 23.14 -#include <linux/mm.h> 23.15 -#include <linux/smp.h> 23.16 -#include <linux/smp_lock.h> 23.17 -#include <linux/kernel.h> 23.18 -#include <linux/signal.h> 23.19 -#include <linux/errno.h> 23.20 -#include <linux/wait.h> 23.21 -#include <linux/unistd.h> 23.22 -#include <linux/stddef.h> 23.23 -#include <linux/personality.h> 23.24 -#include <linux/suspend.h> 23.25 -#include <linux/ptrace.h> 23.26 -#include <linux/elf.h> 23.27 -#include <asm/processor.h> 23.28 -#include <asm/ucontext.h> 23.29 -#include <asm/uaccess.h> 23.30 -#include <asm/i387.h> 23.31 -#include "sigframe.h" 23.32 - 23.33 -#define DEBUG_SIG 0 23.34 - 23.35 -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 23.36 - 23.37 -/* 23.38 - * Atomically swap in the new signal mask, and wait for a signal. 23.39 - */ 23.40 -asmlinkage int 23.41 -sys_sigsuspend(int history0, int history1, old_sigset_t mask) 23.42 -{ 23.43 - struct pt_regs * regs = (struct pt_regs *) &history0; 23.44 - sigset_t saveset; 23.45 - 23.46 - mask &= _BLOCKABLE; 23.47 - spin_lock_irq(¤t->sighand->siglock); 23.48 - saveset = current->blocked; 23.49 - siginitset(¤t->blocked, mask); 23.50 - recalc_sigpending(); 23.51 - spin_unlock_irq(¤t->sighand->siglock); 23.52 - 23.53 - regs->eax = -EINTR; 23.54 - while (1) { 23.55 - current->state = TASK_INTERRUPTIBLE; 23.56 - schedule(); 23.57 - if (do_signal(regs, &saveset)) 23.58 - return -EINTR; 23.59 - } 23.60 -} 23.61 - 23.62 -asmlinkage int 23.63 -sys_rt_sigsuspend(struct pt_regs regs) 23.64 -{ 23.65 - sigset_t saveset, newset; 23.66 - 23.67 - /* XXX: Don't preclude handling different sized sigset_t's. */ 23.68 - if (regs.ecx != sizeof(sigset_t)) 23.69 - return -EINVAL; 23.70 - 23.71 - if (copy_from_user(&newset, (sigset_t __user *)regs.ebx, sizeof(newset))) 23.72 - return -EFAULT; 23.73 - sigdelsetmask(&newset, ~_BLOCKABLE); 23.74 - 23.75 - spin_lock_irq(¤t->sighand->siglock); 23.76 - saveset = current->blocked; 23.77 - current->blocked = newset; 23.78 - recalc_sigpending(); 23.79 - spin_unlock_irq(¤t->sighand->siglock); 23.80 - 23.81 - regs.eax = -EINTR; 23.82 - while (1) { 23.83 - current->state = TASK_INTERRUPTIBLE; 23.84 - schedule(); 23.85 - if (do_signal(®s, &saveset)) 23.86 - return -EINTR; 23.87 - } 23.88 -} 23.89 - 23.90 -asmlinkage int 23.91 -sys_sigaction(int sig, const struct old_sigaction __user *act, 23.92 - struct old_sigaction __user *oact) 23.93 -{ 23.94 - struct k_sigaction new_ka, old_ka; 23.95 - int ret; 23.96 - 23.97 - if (act) { 23.98 - old_sigset_t mask; 23.99 - if (verify_area(VERIFY_READ, act, sizeof(*act)) || 23.100 - __get_user(new_ka.sa.sa_handler, &act->sa_handler) || 23.101 - __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) 23.102 - return -EFAULT; 23.103 - __get_user(new_ka.sa.sa_flags, &act->sa_flags); 23.104 - __get_user(mask, &act->sa_mask); 23.105 - siginitset(&new_ka.sa.sa_mask, mask); 23.106 - } 23.107 - 23.108 - ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); 23.109 - 23.110 - if (!ret && oact) { 23.111 - if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || 23.112 - __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || 23.113 - __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) 23.114 - return -EFAULT; 23.115 - __put_user(old_ka.sa.sa_flags, &oact->sa_flags); 23.116 - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); 23.117 - } 23.118 - 23.119 - return ret; 23.120 -} 23.121 - 23.122 -asmlinkage int 23.123 -sys_sigaltstack(unsigned long ebx) 23.124 -{ 23.125 - /* This is needed to make gcc realize it doesn't own the "struct pt_regs" */ 23.126 - struct pt_regs *regs = (struct pt_regs *)&ebx; 23.127 - const stack_t __user *uss = (const stack_t __user *)ebx; 23.128 - stack_t __user *uoss = (stack_t __user *)regs->ecx; 23.129 - 23.130 - return do_sigaltstack(uss, uoss, regs->esp); 23.131 -} 23.132 - 23.133 - 23.134 -/* 23.135 - * Do a signal return; undo the signal stack. 23.136 - */ 23.137 - 23.138 -static int 23.139 -restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax) 23.140 -{ 23.141 - unsigned int err = 0; 23.142 - 23.143 - /* Always make any pending restarted system calls return -EINTR */ 23.144 - current_thread_info()->restart_block.fn = do_no_restart_syscall; 23.145 - 23.146 -#define COPY(x) err |= __get_user(regs->x, &sc->x) 23.147 - 23.148 -#define COPY_SEG(seg) \ 23.149 - { unsigned short tmp; \ 23.150 - err |= __get_user(tmp, &sc->seg); \ 23.151 - regs->x##seg = tmp; } 23.152 - 23.153 -#define COPY_SEG_STRICT(seg) \ 23.154 - { unsigned short tmp; \ 23.155 - err |= __get_user(tmp, &sc->seg); \ 23.156 - regs->x##seg = tmp|3; } 23.157 - 23.158 -#define GET_SEG(seg) \ 23.159 - { unsigned short tmp; \ 23.160 - err |= __get_user(tmp, &sc->seg); \ 23.161 - loadsegment(seg,tmp); } 23.162 - 23.163 -#define FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | X86_EFLAGS_DF | \ 23.164 - X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \ 23.165 - X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF) 23.166 - 23.167 - GET_SEG(gs); 23.168 - GET_SEG(fs); 23.169 - COPY_SEG(es); 23.170 - COPY_SEG(ds); 23.171 - COPY(edi); 23.172 - COPY(esi); 23.173 - COPY(ebp); 23.174 - COPY(esp); 23.175 - COPY(ebx); 23.176 - COPY(edx); 23.177 - COPY(ecx); 23.178 - COPY(eip); 23.179 - COPY_SEG_STRICT(cs); 23.180 - COPY_SEG_STRICT(ss); 23.181 - 23.182 - { 23.183 - unsigned int tmpflags; 23.184 - err |= __get_user(tmpflags, &sc->eflags); 23.185 - regs->eflags = (regs->eflags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS); 23.186 - regs->orig_eax = -1; /* disable syscall checks */ 23.187 - } 23.188 - 23.189 - { 23.190 - struct _fpstate __user * buf; 23.191 - err |= __get_user(buf, &sc->fpstate); 23.192 - if (buf) { 23.193 - if (verify_area(VERIFY_READ, buf, sizeof(*buf))) 23.194 - goto badframe; 23.195 - err |= restore_i387(buf); 23.196 - } 23.197 - } 23.198 - 23.199 - err |= __get_user(*peax, &sc->eax); 23.200 - return err; 23.201 - 23.202 -badframe: 23.203 - return 1; 23.204 -} 23.205 - 23.206 -asmlinkage int sys_sigreturn(unsigned long __unused) 23.207 -{ 23.208 - struct pt_regs *regs = (struct pt_regs *) &__unused; 23.209 - struct sigframe __user *frame = (struct sigframe __user *)(regs->esp - 8); 23.210 - sigset_t set; 23.211 - int eax; 23.212 - 23.213 - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) 23.214 - goto badframe; 23.215 - if (__get_user(set.sig[0], &frame->sc.oldmask) 23.216 - || (_NSIG_WORDS > 1 23.217 - && __copy_from_user(&set.sig[1], &frame->extramask, 23.218 - sizeof(frame->extramask)))) 23.219 - goto badframe; 23.220 - 23.221 - sigdelsetmask(&set, ~_BLOCKABLE); 23.222 - spin_lock_irq(¤t->sighand->siglock); 23.223 - current->blocked = set; 23.224 - recalc_sigpending(); 23.225 - spin_unlock_irq(¤t->sighand->siglock); 23.226 - 23.227 - if (restore_sigcontext(regs, &frame->sc, &eax)) 23.228 - goto badframe; 23.229 - return eax; 23.230 - 23.231 -badframe: 23.232 - force_sig(SIGSEGV, current); 23.233 - return 0; 23.234 -} 23.235 - 23.236 -asmlinkage int sys_rt_sigreturn(unsigned long __unused) 23.237 -{ 23.238 - struct pt_regs *regs = (struct pt_regs *) &__unused; 23.239 - struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(regs->esp - 4); 23.240 - sigset_t set; 23.241 - int eax; 23.242 - 23.243 - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) 23.244 - goto badframe; 23.245 - if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) 23.246 - goto badframe; 23.247 - 23.248 - sigdelsetmask(&set, ~_BLOCKABLE); 23.249 - spin_lock_irq(¤t->sighand->siglock); 23.250 - current->blocked = set; 23.251 - recalc_sigpending(); 23.252 - spin_unlock_irq(¤t->sighand->siglock); 23.253 - 23.254 - if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &eax)) 23.255 - goto badframe; 23.256 - 23.257 - if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->esp) == -EFAULT) 23.258 - goto badframe; 23.259 - 23.260 - return eax; 23.261 - 23.262 -badframe: 23.263 - force_sig(SIGSEGV, current); 23.264 - return 0; 23.265 -} 23.266 - 23.267 -/* 23.268 - * Set up a signal frame. 23.269 - */ 23.270 - 23.271 -static int 23.272 -setup_sigcontext(struct sigcontext __user *sc, struct _fpstate __user *fpstate, 23.273 - struct pt_regs *regs, unsigned long mask) 23.274 -{ 23.275 - int tmp, err = 0; 23.276 - unsigned long eflags; 23.277 - 23.278 - tmp = 0; 23.279 - __asm__("movl %%gs,%0" : "=r"(tmp): "0"(tmp)); 23.280 - err |= __put_user(tmp, (unsigned int __user *)&sc->gs); 23.281 - __asm__("movl %%fs,%0" : "=r"(tmp): "0"(tmp)); 23.282 - err |= __put_user(tmp, (unsigned int __user *)&sc->fs); 23.283 - 23.284 - err |= __put_user(regs->xes, (unsigned int __user *)&sc->es); 23.285 - err |= __put_user(regs->xds, (unsigned int __user *)&sc->ds); 23.286 - err |= __put_user(regs->edi, &sc->edi); 23.287 - err |= __put_user(regs->esi, &sc->esi); 23.288 - err |= __put_user(regs->ebp, &sc->ebp); 23.289 - err |= __put_user(regs->esp, &sc->esp); 23.290 - err |= __put_user(regs->ebx, &sc->ebx); 23.291 - err |= __put_user(regs->edx, &sc->edx); 23.292 - err |= __put_user(regs->ecx, &sc->ecx); 23.293 - err |= __put_user(regs->eax, &sc->eax); 23.294 - err |= __put_user(current->thread.trap_no, &sc->trapno); 23.295 - err |= __put_user(current->thread.error_code, &sc->err); 23.296 - err |= __put_user(regs->eip, &sc->eip); 23.297 - err |= __put_user(regs->xcs, (unsigned int __user *)&sc->cs); 23.298 - eflags = regs->eflags; 23.299 - if (current->ptrace & PT_PTRACED) { 23.300 - eflags &= ~TF_MASK; 23.301 - } 23.302 - err |= __put_user(eflags, &sc->eflags); 23.303 - err |= __put_user(regs->esp, &sc->esp_at_signal); 23.304 - err |= __put_user(regs->xss, (unsigned int __user *)&sc->ss); 23.305 - 23.306 - tmp = save_i387(fpstate); 23.307 - if (tmp < 0) 23.308 - err = 1; 23.309 - else 23.310 - err |= __put_user(tmp ? fpstate : NULL, &sc->fpstate); 23.311 - 23.312 - /* non-iBCS2 extensions.. */ 23.313 - err |= __put_user(mask, &sc->oldmask); 23.314 - err |= __put_user(current->thread.cr2, &sc->cr2); 23.315 - 23.316 - return err; 23.317 -} 23.318 - 23.319 -/* 23.320 - * Determine which stack to use.. 23.321 - */ 23.322 -static inline void __user * 23.323 -get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) 23.324 -{ 23.325 - unsigned long esp; 23.326 - 23.327 - /* Default to using normal stack */ 23.328 - esp = regs->esp; 23.329 - 23.330 - /* This is the X/Open sanctioned signal stack switching. */ 23.331 - if (ka->sa.sa_flags & SA_ONSTACK) { 23.332 - if (sas_ss_flags(esp) == 0) 23.333 - esp = current->sas_ss_sp + current->sas_ss_size; 23.334 - } 23.335 - 23.336 - /* This is the legacy signal stack switching. */ 23.337 - else if ((regs->xss & 0xffff) != __USER_DS && 23.338 - !(ka->sa.sa_flags & SA_RESTORER) && 23.339 - ka->sa.sa_restorer) { 23.340 - esp = (unsigned long) ka->sa.sa_restorer; 23.341 - } 23.342 - 23.343 - return (void __user *)((esp - frame_size) & -8ul); 23.344 -} 23.345 - 23.346 -/* These symbols are defined with the addresses in the vsyscall page. 23.347 - See vsyscall-sigreturn.S. */ 23.348 -extern void __user __kernel_sigreturn; 23.349 -extern void __user __kernel_rt_sigreturn; 23.350 - 23.351 -static void setup_frame(int sig, struct k_sigaction *ka, 23.352 - sigset_t *set, struct pt_regs * regs) 23.353 -{ 23.354 - void __user *restorer; 23.355 - struct sigframe __user *frame; 23.356 - int err = 0; 23.357 - int usig; 23.358 - 23.359 - frame = get_sigframe(ka, regs, sizeof(*frame)); 23.360 - 23.361 - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 23.362 - goto give_sigsegv; 23.363 - 23.364 - usig = current_thread_info()->exec_domain 23.365 - && current_thread_info()->exec_domain->signal_invmap 23.366 - && sig < 32 23.367 - ? current_thread_info()->exec_domain->signal_invmap[sig] 23.368 - : sig; 23.369 - 23.370 - err |= __put_user(usig, &frame->sig); 23.371 - if (err) 23.372 - goto give_sigsegv; 23.373 - 23.374 - err |= setup_sigcontext(&frame->sc, &frame->fpstate, regs, set->sig[0]); 23.375 - if (err) 23.376 - goto give_sigsegv; 23.377 - 23.378 - if (_NSIG_WORDS > 1) { 23.379 - err |= __copy_to_user(&frame->extramask, &set->sig[1], 23.380 - sizeof(frame->extramask)); 23.381 - } 23.382 - if (err) 23.383 - goto give_sigsegv; 23.384 - 23.385 - restorer = &__kernel_sigreturn; 23.386 - if (ka->sa.sa_flags & SA_RESTORER) 23.387 - restorer = ka->sa.sa_restorer; 23.388 - 23.389 - /* Set up to return from userspace. */ 23.390 - err |= __put_user(restorer, &frame->pretcode); 23.391 - 23.392 - /* 23.393 - * This is popl %eax ; movl $,%eax ; int $0x80 23.394 - * 23.395 - * WE DO NOT USE IT ANY MORE! It's only left here for historical 23.396 - * reasons and because gdb uses it as a signature to notice 23.397 - * signal handler stack frames. 23.398 - */ 23.399 - err |= __put_user(0xb858, (short __user *)(frame->retcode+0)); 23.400 - err |= __put_user(__NR_sigreturn, (int __user *)(frame->retcode+2)); 23.401 - err |= __put_user(0x80cd, (short __user *)(frame->retcode+6)); 23.402 - 23.403 - if (err) 23.404 - goto give_sigsegv; 23.405 - 23.406 - /* Set up registers for signal handler */ 23.407 - regs->esp = (unsigned long) frame; 23.408 - regs->eip = (unsigned long) ka->sa.sa_handler; 23.409 - regs->eax = (unsigned long) sig; 23.410 - regs->edx = (unsigned long) 0; 23.411 - regs->ecx = (unsigned long) 0; 23.412 - 23.413 - set_fs(USER_DS); 23.414 - regs->xds = __USER_DS; 23.415 - regs->xes = __USER_DS; 23.416 - regs->xss = __USER_DS; 23.417 - regs->xcs = __USER_CS; 23.418 - if (regs->eflags & TF_MASK) { 23.419 - if ((current->ptrace & (PT_PTRACED | PT_DTRACE)) == (PT_PTRACED | PT_DTRACE)) { 23.420 - ptrace_notify(SIGTRAP); 23.421 - } else { 23.422 - regs->eflags &= ~TF_MASK; 23.423 - } 23.424 - } 23.425 - 23.426 -#if DEBUG_SIG 23.427 - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", 23.428 - current->comm, current->pid, frame, regs->eip, frame->pretcode); 23.429 -#endif 23.430 - 23.431 - return; 23.432 - 23.433 -give_sigsegv: 23.434 - force_sigsegv(sig, current); 23.435 -} 23.436 - 23.437 -static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, 23.438 - sigset_t *set, struct pt_regs * regs) 23.439 -{ 23.440 - void __user *restorer; 23.441 - struct rt_sigframe __user *frame; 23.442 - int err = 0; 23.443 - int usig; 23.444 - 23.445 - frame = get_sigframe(ka, regs, sizeof(*frame)); 23.446 - 23.447 - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 23.448 - goto give_sigsegv; 23.449 - 23.450 - usig = current_thread_info()->exec_domain 23.451 - && current_thread_info()->exec_domain->signal_invmap 23.452 - && sig < 32 23.453 - ? current_thread_info()->exec_domain->signal_invmap[sig] 23.454 - : sig; 23.455 - 23.456 - err |= __put_user(usig, &frame->sig); 23.457 - err |= __put_user(&frame->info, &frame->pinfo); 23.458 - err |= __put_user(&frame->uc, &frame->puc); 23.459 - err |= copy_siginfo_to_user(&frame->info, info); 23.460 - if (err) 23.461 - goto give_sigsegv; 23.462 - 23.463 - /* Create the ucontext. */ 23.464 - err |= __put_user(0, &frame->uc.uc_flags); 23.465 - err |= __put_user(0, &frame->uc.uc_link); 23.466 - err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); 23.467 - err |= __put_user(sas_ss_flags(regs->esp), 23.468 - &frame->uc.uc_stack.ss_flags); 23.469 - err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); 23.470 - err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->fpstate, 23.471 - regs, set->sig[0]); 23.472 - err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 23.473 - if (err) 23.474 - goto give_sigsegv; 23.475 - 23.476 - /* Set up to return from userspace. */ 23.477 - restorer = &__kernel_rt_sigreturn; 23.478 - if (ka->sa.sa_flags & SA_RESTORER) 23.479 - restorer = ka->sa.sa_restorer; 23.480 - err |= __put_user(restorer, &frame->pretcode); 23.481 - 23.482 - /* 23.483 - * This is movl $,%eax ; int $0x80 23.484 - * 23.485 - * WE DO NOT USE IT ANY MORE! It's only left here for historical 23.486 - * reasons and because gdb uses it as a signature to notice 23.487 - * signal handler stack frames. 23.488 - */ 23.489 - err |= __put_user(0xb8, (char __user *)(frame->retcode+0)); 23.490 - err |= __put_user(__NR_rt_sigreturn, (int __user *)(frame->retcode+1)); 23.491 - err |= __put_user(0x80cd, (short __user *)(frame->retcode+5)); 23.492 - 23.493 - if (err) 23.494 - goto give_sigsegv; 23.495 - 23.496 - /* Set up registers for signal handler */ 23.497 - regs->esp = (unsigned long) frame; 23.498 - regs->eip = (unsigned long) ka->sa.sa_handler; 23.499 - regs->eax = (unsigned long) usig; 23.500 - regs->edx = (unsigned long) &frame->info; 23.501 - regs->ecx = (unsigned long) &frame->uc; 23.502 - 23.503 - set_fs(USER_DS); 23.504 - regs->xds = __USER_DS; 23.505 - regs->xes = __USER_DS; 23.506 - regs->xss = __USER_DS; 23.507 - regs->xcs = __USER_CS; 23.508 - if (regs->eflags & TF_MASK) { 23.509 - if (current->ptrace & PT_PTRACED) { 23.510 - ptrace_notify(SIGTRAP); 23.511 - } else { 23.512 - regs->eflags &= ~TF_MASK; 23.513 - } 23.514 - } 23.515 - 23.516 -#if DEBUG_SIG 23.517 - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", 23.518 - current->comm, current->pid, frame, regs->eip, frame->pretcode); 23.519 -#endif 23.520 - 23.521 - return; 23.522 - 23.523 -give_sigsegv: 23.524 - force_sigsegv(sig, current); 23.525 -} 23.526 - 23.527 -/* 23.528 - * OK, we're invoking a handler 23.529 - */ 23.530 - 23.531 -static void 23.532 -handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, 23.533 - sigset_t *oldset, struct pt_regs * regs) 23.534 -{ 23.535 - /* Are we from a system call? */ 23.536 - if (regs->orig_eax >= 0) { 23.537 - /* If so, check system call restarting.. */ 23.538 - switch (regs->eax) { 23.539 - case -ERESTART_RESTARTBLOCK: 23.540 - case -ERESTARTNOHAND: 23.541 - regs->eax = -EINTR; 23.542 - break; 23.543 - 23.544 - case -ERESTARTSYS: 23.545 - if (!(ka->sa.sa_flags & SA_RESTART)) { 23.546 - regs->eax = -EINTR; 23.547 - break; 23.548 - } 23.549 - /* fallthrough */ 23.550 - case -ERESTARTNOINTR: 23.551 - regs->eax = regs->orig_eax; 23.552 - regs->eip -= 2; 23.553 - } 23.554 - } 23.555 - 23.556 - /* Set up the stack frame */ 23.557 - if (ka->sa.sa_flags & SA_SIGINFO) 23.558 - setup_rt_frame(sig, ka, info, oldset, regs); 23.559 - else 23.560 - setup_frame(sig, ka, oldset, regs); 23.561 - 23.562 - if (!(ka->sa.sa_flags & SA_NODEFER)) { 23.563 - spin_lock_irq(¤t->sighand->siglock); 23.564 - sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); 23.565 - sigaddset(¤t->blocked,sig); 23.566 - recalc_sigpending(); 23.567 - spin_unlock_irq(¤t->sighand->siglock); 23.568 - } 23.569 -} 23.570 - 23.571 -/* 23.572 - * Note that 'init' is a special process: it doesn't get signals it doesn't 23.573 - * want to handle. Thus you cannot kill init even with a SIGKILL even by 23.574 - * mistake. 23.575 - */ 23.576 -int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset) 23.577 -{ 23.578 - siginfo_t info; 23.579 - int signr; 23.580 - struct k_sigaction ka; 23.581 - 23.582 - /* 23.583 - * We want the common case to go fast, which 23.584 - * is why we may in certain cases get here from 23.585 - * kernel mode. Just return without doing anything 23.586 - * if so. 23.587 - */ 23.588 - if ((regs->xcs & 2) != 2) 23.589 - return 1; 23.590 - 23.591 - if (current->flags & PF_FREEZE) { 23.592 - refrigerator(0); 23.593 - goto no_signal; 23.594 - } 23.595 - 23.596 - if (!oldset) 23.597 - oldset = ¤t->blocked; 23.598 - 23.599 - signr = get_signal_to_deliver(&info, &ka, regs, NULL); 23.600 - if (signr > 0) { 23.601 - /* Reenable any watchpoints before delivering the 23.602 - * signal to user space. The processor register will 23.603 - * have been cleared if the watchpoint triggered 23.604 - * inside the kernel. 23.605 - */ 23.606 - if (unlikely(current->thread.debugreg[7])) { 23.607 - HYPERVISOR_set_debugreg(7, 23.608 - current->thread.debugreg[7]); 23.609 - } 23.610 - 23.611 - /* Whee! Actually deliver the signal. */ 23.612 - handle_signal(signr, &info, &ka, oldset, regs); 23.613 - return 1; 23.614 - } 23.615 - 23.616 - no_signal: 23.617 - /* Did we come from a system call? */ 23.618 - if (regs->orig_eax >= 0) { 23.619 - /* Restart the system call - no handlers present */ 23.620 - if (regs->eax == -ERESTARTNOHAND || 23.621 - regs->eax == -ERESTARTSYS || 23.622 - regs->eax == -ERESTARTNOINTR) { 23.623 - regs->eax = regs->orig_eax; 23.624 - regs->eip -= 2; 23.625 - } 23.626 - if (regs->eax == -ERESTART_RESTARTBLOCK){ 23.627 - regs->eax = __NR_restart_syscall; 23.628 - regs->eip -= 2; 23.629 - } 23.630 - } 23.631 - return 0; 23.632 -} 23.633 - 23.634 -/* 23.635 - * notification of userspace execution resumption 23.636 - * - triggered by current->work.notify_resume 23.637 - */ 23.638 -__attribute__((regparm(3))) 23.639 -void do_notify_resume(struct pt_regs *regs, sigset_t *oldset, 23.640 - __u32 thread_info_flags) 23.641 -{ 23.642 - /* Pending single-step? */ 23.643 - if (thread_info_flags & _TIF_SINGLESTEP) { 23.644 - regs->eflags |= TF_MASK; 23.645 - clear_thread_flag(TIF_SINGLESTEP); 23.646 - } 23.647 - /* deal with pending signal delivery */ 23.648 - if (thread_info_flags & _TIF_SIGPENDING) 23.649 - do_signal(regs,oldset); 23.650 - 23.651 - clear_thread_flag(TIF_IRET); 23.652 -}
24.1 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c Tue Dec 07 19:17:22 2004 +0000 24.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 24.3 @@ -1,733 +0,0 @@ 24.4 -/* 24.5 - * linux/arch/i386/kernel/time.c 24.6 - * 24.7 - * Copyright (C) 1991, 1992, 1995 Linus Torvalds 24.8 - * 24.9 - * This file contains the PC-specific time handling details: 24.10 - * reading the RTC at bootup, etc.. 24.11 - * 1994-07-02 Alan Modra 24.12 - * fixed set_rtc_mmss, fixed time.year for >= 2000, new mktime 24.13 - * 1995-03-26 Markus Kuhn 24.14 - * fixed 500 ms bug at call to set_rtc_mmss, fixed DS12887 24.15 - * precision CMOS clock update 24.16 - * 1996-05-03 Ingo Molnar 24.17 - * fixed time warps in do_[slow|fast]_gettimeoffset() 24.18 - * 1997-09-10 Updated NTP code according to technical memorandum Jan '96 24.19 - * "A Kernel Model for Precision Timekeeping" by Dave Mills 24.20 - * 1998-09-05 (Various) 24.21 - * More robust do_fast_gettimeoffset() algorithm implemented 24.22 - * (works with APM, Cyrix 6x86MX and Centaur C6), 24.23 - * monotonic gettimeofday() with fast_get_timeoffset(), 24.24 - * drift-proof precision TSC calibration on boot 24.25 - * (C. Scott Ananian <cananian@alumni.princeton.edu>, Andrew D. 24.26 - * Balsa <andrebalsa@altern.org>, Philip Gladstone <philip@raptor.com>; 24.27 - * ported from 2.0.35 Jumbo-9 by Michael Krause <m.krause@tu-harburg.de>). 24.28 - * 1998-12-16 Andrea Arcangeli 24.29 - * Fixed Jumbo-9 code in 2.1.131: do_gettimeofday was missing 1 jiffy 24.30 - * because was not accounting lost_ticks. 24.31 - * 1998-12-24 Copyright (C) 1998 Andrea Arcangeli 24.32 - * Fixed a xtime SMP race (we need the xtime_lock rw spinlock to 24.33 - * serialize accesses to xtime/lost_ticks). 24.34 - */ 24.35 - 24.36 -#include <linux/errno.h> 24.37 -#include <linux/sched.h> 24.38 -#include <linux/kernel.h> 24.39 -#include <linux/param.h> 24.40 -#include <linux/string.h> 24.41 -#include <linux/mm.h> 24.42 -#include <linux/interrupt.h> 24.43 -#include <linux/time.h> 24.44 -#include <linux/delay.h> 24.45 -#include <linux/init.h> 24.46 -#include <linux/smp.h> 24.47 -#include <linux/module.h> 24.48 -#include <linux/sysdev.h> 24.49 -#include <linux/bcd.h> 24.50 -#include <linux/efi.h> 24.51 -#include <linux/sysctl.h> 24.52 - 24.53 -#include <asm/io.h> 24.54 -#include <asm/smp.h> 24.55 -#include <asm/irq.h> 24.56 -#include <asm/msr.h> 24.57 -#include <asm/delay.h> 24.58 -#include <asm/mpspec.h> 24.59 -#include <asm/uaccess.h> 24.60 -#include <asm/processor.h> 24.61 -#include <asm/timer.h> 24.62 - 24.63 -#include "mach_time.h" 24.64 - 24.65 -#include <linux/timex.h> 24.66 -#include <linux/config.h> 24.67 - 24.68 -#include <asm/hpet.h> 24.69 - 24.70 -#include <asm/arch_hooks.h> 24.71 - 24.72 -#include "io_ports.h" 24.73 - 24.74 -extern spinlock_t i8259A_lock; 24.75 -int pit_latch_buggy; /* extern */ 24.76 - 24.77 -u64 jiffies_64 = INITIAL_JIFFIES; 24.78 - 24.79 -EXPORT_SYMBOL(jiffies_64); 24.80 - 24.81 -unsigned long cpu_khz; /* Detected as we calibrate the TSC */ 24.82 - 24.83 -extern unsigned long wall_jiffies; 24.84 - 24.85 -spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; 24.86 - 24.87 -spinlock_t i8253_lock = SPIN_LOCK_UNLOCKED; 24.88 -EXPORT_SYMBOL(i8253_lock); 24.89 - 24.90 -extern struct init_timer_opts __initdata timer_tsc_init; 24.91 -extern struct timer_opts timer_tsc; 24.92 -struct timer_opts *cur_timer = &timer_tsc; 24.93 - 24.94 -/* These are peridically updated in shared_info, and then copied here. */ 24.95 -u32 shadow_tsc_stamp; 24.96 -u64 shadow_system_time; 24.97 -static u32 shadow_time_version; 24.98 -static struct timeval shadow_tv; 24.99 -extern u64 processed_system_time; 24.100 - 24.101 -/* 24.102 - * We use this to ensure that gettimeofday() is monotonically increasing. We 24.103 - * only break this guarantee if the wall clock jumps backwards "a long way". 24.104 - */ 24.105 -static struct timeval last_seen_tv = {0,0}; 24.106 - 24.107 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 24.108 -/* Periodically propagate synchronised time base to the RTC and to Xen. */ 24.109 -static long last_rtc_update, last_update_to_xen; 24.110 -#endif 24.111 - 24.112 -/* Periodically take synchronised time base from Xen, if we need it. */ 24.113 -static long last_update_from_xen; /* UTC seconds when last read Xen clock. */ 24.114 - 24.115 -/* Keep track of last time we did processing/updating of jiffies and xtime. */ 24.116 -u64 processed_system_time; /* System time (ns) at last processing. */ 24.117 - 24.118 -#define NS_PER_TICK (1000000000ULL/HZ) 24.119 - 24.120 -#define HANDLE_USEC_UNDERFLOW(_tv) do { \ 24.121 - while ((_tv).tv_usec < 0) { \ 24.122 - (_tv).tv_usec += USEC_PER_SEC; \ 24.123 - (_tv).tv_sec--; \ 24.124 - } \ 24.125 -} while (0) 24.126 -#define HANDLE_USEC_OVERFLOW(_tv) do { \ 24.127 - while ((_tv).tv_usec >= USEC_PER_SEC) { \ 24.128 - (_tv).tv_usec -= USEC_PER_SEC; \ 24.129 - (_tv).tv_sec++; \ 24.130 - } \ 24.131 -} while (0) 24.132 -static inline void __normalize_time(time_t *sec, s64 *nsec) 24.133 -{ 24.134 - while (*nsec >= NSEC_PER_SEC) { 24.135 - (*nsec) -= NSEC_PER_SEC; 24.136 - (*sec)++; 24.137 - } 24.138 - while (*nsec < 0) { 24.139 - (*nsec) += NSEC_PER_SEC; 24.140 - (*sec)--; 24.141 - } 24.142 -} 24.143 - 24.144 -/* Does this guest OS track Xen time, or set its wall clock independently? */ 24.145 -static int independent_wallclock = 0; 24.146 -static int __init __independent_wallclock(char *str) 24.147 -{ 24.148 - independent_wallclock = 1; 24.149 - return 1; 24.150 -} 24.151 -__setup("independent_wallclock", __independent_wallclock); 24.152 -#define INDEPENDENT_WALLCLOCK() \ 24.153 - (independent_wallclock || (xen_start_info.flags & SIF_INITDOMAIN)) 24.154 - 24.155 -/* 24.156 - * Reads a consistent set of time-base values from Xen, into a shadow data 24.157 - * area. Must be called with the xtime_lock held for writing. 24.158 - */ 24.159 -static void __get_time_values_from_xen(void) 24.160 -{ 24.161 - shared_info_t *s = HYPERVISOR_shared_info; 24.162 - 24.163 - do { 24.164 - shadow_time_version = s->time_version2; 24.165 - rmb(); 24.166 - shadow_tv.tv_sec = s->wc_sec; 24.167 - shadow_tv.tv_usec = s->wc_usec; 24.168 - shadow_tsc_stamp = (u32)s->tsc_timestamp; 24.169 - shadow_system_time = s->system_time; 24.170 - rmb(); 24.171 - } 24.172 - while (shadow_time_version != s->time_version1); 24.173 - 24.174 - cur_timer->mark_offset(); 24.175 -} 24.176 - 24.177 -#define TIME_VALUES_UP_TO_DATE \ 24.178 - ({ rmb(); (shadow_time_version == HYPERVISOR_shared_info->time_version2); }) 24.179 - 24.180 -/* 24.181 - * This version of gettimeofday has microsecond resolution 24.182 - * and better than microsecond precision on fast x86 machines with TSC. 24.183 - */ 24.184 -void do_gettimeofday(struct timeval *tv) 24.185 -{ 24.186 - unsigned long seq; 24.187 - unsigned long usec, sec; 24.188 - unsigned long max_ntp_tick; 24.189 - unsigned long flags; 24.190 - s64 nsec; 24.191 - 24.192 - do { 24.193 - unsigned long lost; 24.194 - 24.195 - seq = read_seqbegin(&xtime_lock); 24.196 - 24.197 - usec = cur_timer->get_offset(); 24.198 - lost = jiffies - wall_jiffies; 24.199 - 24.200 - /* 24.201 - * If time_adjust is negative then NTP is slowing the clock 24.202 - * so make sure not to go into next possible interval. 24.203 - * Better to lose some accuracy than have time go backwards.. 24.204 - */ 24.205 - if (unlikely(time_adjust < 0)) { 24.206 - max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj; 24.207 - usec = min(usec, max_ntp_tick); 24.208 - 24.209 - if (lost) 24.210 - usec += lost * max_ntp_tick; 24.211 - } 24.212 - else if (unlikely(lost)) 24.213 - usec += lost * (USEC_PER_SEC / HZ); 24.214 - 24.215 - sec = xtime.tv_sec; 24.216 - usec += (xtime.tv_nsec / NSEC_PER_USEC); 24.217 - 24.218 - nsec = shadow_system_time - processed_system_time; 24.219 - __normalize_time(&sec, &nsec); 24.220 - usec += (long)nsec / NSEC_PER_USEC; 24.221 - 24.222 - if (unlikely(!TIME_VALUES_UP_TO_DATE)) { 24.223 - /* 24.224 - * We may have blocked for a long time, 24.225 - * rendering our calculations invalid 24.226 - * (e.g. the time delta may have 24.227 - * overflowed). Detect that and recalculate 24.228 - * with fresh values. 24.229 - */ 24.230 - write_seqlock_irqsave(&xtime_lock, flags); 24.231 - __get_time_values_from_xen(); 24.232 - write_sequnlock_irqrestore(&xtime_lock, flags); 24.233 - continue; 24.234 - } 24.235 - } while (read_seqretry(&xtime_lock, seq)); 24.236 - 24.237 - while (usec >= USEC_PER_SEC) { 24.238 - usec -= USEC_PER_SEC; 24.239 - sec++; 24.240 - } 24.241 - 24.242 - /* Ensure that time-of-day is monotonically increasing. */ 24.243 - if ((sec < last_seen_tv.tv_sec) || 24.244 - ((sec == last_seen_tv.tv_sec) && (usec < last_seen_tv.tv_usec))) { 24.245 - sec = last_seen_tv.tv_sec; 24.246 - usec = last_seen_tv.tv_usec; 24.247 - } else { 24.248 - last_seen_tv.tv_sec = sec; 24.249 - last_seen_tv.tv_usec = usec; 24.250 - } 24.251 - 24.252 - tv->tv_sec = sec; 24.253 - tv->tv_usec = usec; 24.254 -} 24.255 - 24.256 -EXPORT_SYMBOL(do_gettimeofday); 24.257 - 24.258 -int do_settimeofday(struct timespec *tv) 24.259 -{ 24.260 - time_t wtm_sec, sec = tv->tv_sec; 24.261 - long wtm_nsec; 24.262 - s64 nsec; 24.263 - struct timespec xentime; 24.264 - 24.265 - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) 24.266 - return -EINVAL; 24.267 - 24.268 - if (!INDEPENDENT_WALLCLOCK()) 24.269 - return 0; /* Silent failure? */ 24.270 - 24.271 - write_seqlock_irq(&xtime_lock); 24.272 - 24.273 - /* 24.274 - * Ensure we don't get blocked for a long time so that our time delta 24.275 - * overflows. If that were to happen then our shadow time values would 24.276 - * be stale, so we can retry with fresh ones. 24.277 - */ 24.278 - again: 24.279 - nsec = (s64)tv->tv_nsec - 24.280 - ((s64)cur_timer->get_offset() * (s64)NSEC_PER_USEC); 24.281 - if (unlikely(!TIME_VALUES_UP_TO_DATE)) { 24.282 - __get_time_values_from_xen(); 24.283 - goto again; 24.284 - } 24.285 - 24.286 - __normalize_time(&sec, &nsec); 24.287 - set_normalized_timespec(&xentime, sec, nsec); 24.288 - 24.289 - /* 24.290 - * This is revolting. We need to set "xtime" correctly. However, the 24.291 - * value in this location is the value at the most recent update of 24.292 - * wall time. Discover what correction gettimeofday() would have 24.293 - * made, and then undo it! 24.294 - */ 24.295 - nsec -= (jiffies - wall_jiffies) * TICK_NSEC; 24.296 - 24.297 - nsec -= (shadow_system_time - processed_system_time); 24.298 - 24.299 - __normalize_time(&sec, &nsec); 24.300 - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 24.301 - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 24.302 - 24.303 - set_normalized_timespec(&xtime, sec, nsec); 24.304 - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 24.305 - 24.306 - time_adjust = 0; /* stop active adjtime() */ 24.307 - time_status |= STA_UNSYNC; 24.308 - time_maxerror = NTP_PHASE_LIMIT; 24.309 - time_esterror = NTP_PHASE_LIMIT; 24.310 - 24.311 - /* Reset all our running time counts. They make no sense now. */ 24.312 - last_seen_tv.tv_sec = 0; 24.313 - last_update_from_xen = 0; 24.314 - 24.315 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 24.316 - if (xen_start_info.flags & SIF_INITDOMAIN) { 24.317 - dom0_op_t op; 24.318 - last_rtc_update = last_update_to_xen = 0; 24.319 - op.cmd = DOM0_SETTIME; 24.320 - op.u.settime.secs = xentime.tv_sec; 24.321 - op.u.settime.usecs = xentime.tv_nsec / NSEC_PER_USEC; 24.322 - op.u.settime.system_time = shadow_system_time; 24.323 - write_sequnlock_irq(&xtime_lock); 24.324 - HYPERVISOR_dom0_op(&op); 24.325 - } else 24.326 -#endif 24.327 - write_sequnlock_irq(&xtime_lock); 24.328 - 24.329 - clock_was_set(); 24.330 - return 0; 24.331 -} 24.332 - 24.333 -EXPORT_SYMBOL(do_settimeofday); 24.334 - 24.335 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 24.336 -static int set_rtc_mmss(unsigned long nowtime) 24.337 -{ 24.338 - int retval; 24.339 - 24.340 - /* gets recalled with irq locally disabled */ 24.341 - spin_lock(&rtc_lock); 24.342 - if (efi_enabled) 24.343 - retval = efi_set_rtc_mmss(nowtime); 24.344 - else 24.345 - retval = mach_set_rtc_mmss(nowtime); 24.346 - spin_unlock(&rtc_lock); 24.347 - 24.348 - return retval; 24.349 -} 24.350 -#endif 24.351 - 24.352 -/* monotonic_clock(): returns # of nanoseconds passed since time_init() 24.353 - * Note: This function is required to return accurate 24.354 - * time even in the absence of multiple timer ticks. 24.355 - */ 24.356 -unsigned long long monotonic_clock(void) 24.357 -{ 24.358 - return cur_timer->monotonic_clock(); 24.359 -} 24.360 -EXPORT_SYMBOL(monotonic_clock); 24.361 - 24.362 -#if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER) 24.363 -unsigned long profile_pc(struct pt_regs *regs) 24.364 -{ 24.365 - unsigned long pc = instruction_pointer(regs); 24.366 - 24.367 - if (in_lock_functions(pc)) 24.368 - return *(unsigned long *)(regs->ebp + 4); 24.369 - 24.370 - return pc; 24.371 -} 24.372 -EXPORT_SYMBOL(profile_pc); 24.373 -#endif 24.374 - 24.375 -/* 24.376 - * timer_interrupt() needs to keep up the real-time clock, 24.377 - * as well as call the "do_timer()" routine every clocktick 24.378 - */ 24.379 -static inline void do_timer_interrupt(int irq, void *dev_id, 24.380 - struct pt_regs *regs) 24.381 -{ 24.382 - time_t wtm_sec, sec; 24.383 - s64 delta, nsec; 24.384 - long sec_diff, wtm_nsec; 24.385 - 24.386 - do { 24.387 - __get_time_values_from_xen(); 24.388 - 24.389 - delta = (s64)(shadow_system_time + 24.390 - ((s64)cur_timer->get_offset() * 24.391 - (s64)NSEC_PER_USEC) - 24.392 - processed_system_time); 24.393 - } 24.394 - while (!TIME_VALUES_UP_TO_DATE); 24.395 - 24.396 - if (unlikely(delta < 0)) { 24.397 - printk("Timer ISR: Time went backwards: %lld %lld %lld %lld\n", 24.398 - delta, shadow_system_time, 24.399 - ((s64)cur_timer->get_offset() * (s64)NSEC_PER_USEC), 24.400 - processed_system_time); 24.401 - return; 24.402 - } 24.403 - 24.404 - /* Process elapsed jiffies since last call. */ 24.405 - while (delta >= NS_PER_TICK) { 24.406 - delta -= NS_PER_TICK; 24.407 - processed_system_time += NS_PER_TICK; 24.408 - do_timer(regs); 24.409 -#ifndef CONFIG_SMP 24.410 - update_process_times(user_mode(regs)); 24.411 -#endif 24.412 - if (regs) 24.413 - profile_tick(CPU_PROFILING, regs); 24.414 - } 24.415 - 24.416 - /* 24.417 - * Take synchronised time from Xen once a minute if we're not 24.418 - * synchronised ourselves, and we haven't chosen to keep an independent 24.419 - * time base. 24.420 - */ 24.421 - if (!INDEPENDENT_WALLCLOCK() && 24.422 - ((time_status & STA_UNSYNC) != 0) && 24.423 - (xtime.tv_sec > (last_update_from_xen + 60))) { 24.424 - /* Adjust shadow for jiffies that haven't updated xtime yet. */ 24.425 - shadow_tv.tv_usec -= 24.426 - (jiffies - wall_jiffies) * (USEC_PER_SEC / HZ); 24.427 - HANDLE_USEC_UNDERFLOW(shadow_tv); 24.428 - 24.429 - /* 24.430 - * Reset our running time counts if they are invalidated by 24.431 - * a warp backwards of more than 500ms. 24.432 - */ 24.433 - sec_diff = xtime.tv_sec - shadow_tv.tv_sec; 24.434 - if (unlikely(abs(sec_diff) > 1) || 24.435 - unlikely(((sec_diff * USEC_PER_SEC) + 24.436 - (xtime.tv_nsec / NSEC_PER_USEC) - 24.437 - shadow_tv.tv_usec) > 500000)) { 24.438 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 24.439 - last_rtc_update = last_update_to_xen = 0; 24.440 -#endif 24.441 - last_seen_tv.tv_sec = 0; 24.442 - } 24.443 - 24.444 - /* Update our unsynchronised xtime appropriately. */ 24.445 - sec = shadow_tv.tv_sec; 24.446 - nsec = shadow_tv.tv_usec * NSEC_PER_USEC; 24.447 - 24.448 - __normalize_time(&sec, &nsec); 24.449 - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 24.450 - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 24.451 - 24.452 - set_normalized_timespec(&xtime, sec, nsec); 24.453 - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 24.454 - 24.455 - last_update_from_xen = sec; 24.456 - } 24.457 - 24.458 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 24.459 - if (!(xen_start_info.flags & SIF_INITDOMAIN)) 24.460 - return; 24.461 - 24.462 - /* Send synchronised time to Xen approximately every minute. */ 24.463 - if (((time_status & STA_UNSYNC) == 0) && 24.464 - (xtime.tv_sec > (last_update_to_xen + 60))) { 24.465 - dom0_op_t op; 24.466 - struct timeval tv; 24.467 - 24.468 - tv.tv_sec = xtime.tv_sec; 24.469 - tv.tv_usec = xtime.tv_nsec / NSEC_PER_USEC; 24.470 - tv.tv_usec += (jiffies - wall_jiffies) * (USEC_PER_SEC/HZ); 24.471 - HANDLE_USEC_OVERFLOW(tv); 24.472 - 24.473 - op.cmd = DOM0_SETTIME; 24.474 - op.u.settime.secs = tv.tv_sec; 24.475 - op.u.settime.usecs = tv.tv_usec; 24.476 - op.u.settime.system_time = shadow_system_time; 24.477 - HYPERVISOR_dom0_op(&op); 24.478 - 24.479 - last_update_to_xen = xtime.tv_sec; 24.480 - } 24.481 - 24.482 - /* 24.483 - * If we have an externally synchronized Linux clock, then update 24.484 - * CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be 24.485 - * called as close as possible to 500 ms before the new second starts. 24.486 - */ 24.487 - if ((time_status & STA_UNSYNC) == 0 && 24.488 - xtime.tv_sec > last_rtc_update + 660 && 24.489 - (xtime.tv_nsec / 1000) 24.490 - >= USEC_AFTER - ((unsigned) TICK_SIZE) / 2 && 24.491 - (xtime.tv_nsec / 1000) 24.492 - <= USEC_BEFORE + ((unsigned) TICK_SIZE) / 2) { 24.493 - /* horrible...FIXME */ 24.494 - if (efi_enabled) { 24.495 - if (efi_set_rtc_mmss(xtime.tv_sec) == 0) 24.496 - last_rtc_update = xtime.tv_sec; 24.497 - else 24.498 - last_rtc_update = xtime.tv_sec - 600; 24.499 - } else if (set_rtc_mmss(xtime.tv_sec) == 0) 24.500 - last_rtc_update = xtime.tv_sec; 24.501 - else 24.502 - last_rtc_update = xtime.tv_sec - 600; /* do it again in 60 s */ 24.503 - } 24.504 -#endif 24.505 -} 24.506 - 24.507 -/* 24.508 - * This is the same as the above, except we _also_ save the current 24.509 - * Time Stamp Counter value at the time of the timer interrupt, so that 24.510 - * we later on can estimate the time of day more exactly. 24.511 - */ 24.512 -irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 24.513 -{ 24.514 - /* 24.515 - * Here we are in the timer irq handler. We just have irqs locally 24.516 - * disabled but we don't know if the timer_bh is running on the other 24.517 - * CPU. We need to avoid to SMP race with it. NOTE: we don' t need 24.518 - * the irq version of write_lock because as just said we have irq 24.519 - * locally disabled. -arca 24.520 - */ 24.521 - write_seqlock(&xtime_lock); 24.522 - do_timer_interrupt(irq, NULL, regs); 24.523 - write_sequnlock(&xtime_lock); 24.524 - return IRQ_HANDLED; 24.525 -} 24.526 - 24.527 -/* not static: needed by APM */ 24.528 -unsigned long get_cmos_time(void) 24.529 -{ 24.530 - unsigned long retval; 24.531 - 24.532 - spin_lock(&rtc_lock); 24.533 - 24.534 - if (efi_enabled) 24.535 - retval = efi_get_time(); 24.536 - else 24.537 - retval = mach_get_cmos_time(); 24.538 - 24.539 - spin_unlock(&rtc_lock); 24.540 - 24.541 - return retval; 24.542 -} 24.543 - 24.544 -static long clock_cmos_diff, sleep_start; 24.545 - 24.546 -static int timer_suspend(struct sys_device *dev, u32 state) 24.547 -{ 24.548 - /* 24.549 - * Estimate time zone so that set_time can update the clock 24.550 - */ 24.551 - clock_cmos_diff = -get_cmos_time(); 24.552 - clock_cmos_diff += get_seconds(); 24.553 - sleep_start = get_cmos_time(); 24.554 - return 0; 24.555 -} 24.556 - 24.557 -static int timer_resume(struct sys_device *dev) 24.558 -{ 24.559 - unsigned long flags; 24.560 - unsigned long sec; 24.561 - unsigned long sleep_length; 24.562 - 24.563 -#ifdef CONFIG_HPET_TIMER 24.564 - if (is_hpet_enabled()) 24.565 - hpet_reenable(); 24.566 -#endif 24.567 - sec = get_cmos_time() + clock_cmos_diff; 24.568 - sleep_length = get_cmos_time() - sleep_start; 24.569 - write_seqlock_irqsave(&xtime_lock, flags); 24.570 - xtime.tv_sec = sec; 24.571 - xtime.tv_nsec = 0; 24.572 - write_sequnlock_irqrestore(&xtime_lock, flags); 24.573 - jiffies += sleep_length * HZ; 24.574 - return 0; 24.575 -} 24.576 - 24.577 -static struct sysdev_class timer_sysclass = { 24.578 - .resume = timer_resume, 24.579 - .suspend = timer_suspend, 24.580 - set_kset_name("timer"), 24.581 -}; 24.582 - 24.583 - 24.584 -/* XXX this driverfs stuff should probably go elsewhere later -john */ 24.585 -static struct sys_device device_timer = { 24.586 - .id = 0, 24.587 - .cls = &timer_sysclass, 24.588 -}; 24.589 - 24.590 -static int time_init_device(void) 24.591 -{ 24.592 - int error = sysdev_class_register(&timer_sysclass); 24.593 - if (!error) 24.594 - error = sysdev_register(&device_timer); 24.595 - return error; 24.596 -} 24.597 - 24.598 -device_initcall(time_init_device); 24.599 - 24.600 -#ifdef CONFIG_HPET_TIMER 24.601 -extern void (*late_time_init)(void); 24.602 -/* Duplicate of time_init() below, with hpet_enable part added */ 24.603 -void __init hpet_time_init(void) 24.604 -{ 24.605 - xtime.tv_sec = get_cmos_time(); 24.606 - wall_to_monotonic.tv_sec = -xtime.tv_sec; 24.607 - xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); 24.608 - wall_to_monotonic.tv_nsec = -xtime.tv_nsec; 24.609 - 24.610 - if (hpet_enable() >= 0) { 24.611 - printk("Using HPET for base-timer\n"); 24.612 - } 24.613 - 24.614 - cur_timer = select_timer(); 24.615 - printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); 24.616 - 24.617 - time_init_hook(); 24.618 -} 24.619 -#endif 24.620 - 24.621 -/* Dynamically-mapped IRQ. */ 24.622 -static int TIMER_IRQ; 24.623 - 24.624 -static struct irqaction irq_timer = { 24.625 - timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", 24.626 - NULL, NULL 24.627 -}; 24.628 - 24.629 -void __init time_init(void) 24.630 -{ 24.631 -#ifdef CONFIG_HPET_TIMER 24.632 - if (is_hpet_capable()) { 24.633 - /* 24.634 - * HPET initialization needs to do memory-mapped io. So, let 24.635 - * us do a late initialization after mem_init(). 24.636 - */ 24.637 - late_time_init = hpet_time_init; 24.638 - return; 24.639 - } 24.640 -#endif 24.641 - __get_time_values_from_xen(); 24.642 - xtime.tv_sec = shadow_tv.tv_sec; 24.643 - wall_to_monotonic.tv_sec = -xtime.tv_sec; 24.644 - xtime.tv_nsec = shadow_tv.tv_usec * NSEC_PER_USEC; 24.645 - wall_to_monotonic.tv_nsec = -xtime.tv_nsec; 24.646 - processed_system_time = shadow_system_time; 24.647