direct-io.hg
changeset 4088:cff0d3baf599
bitkeeper revision 1.1159.258.42 (4230e421NhFkCppVay5rDH0tzHn2bQ)
Merge firebug.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-2.0-testing.bk
into firebug.cl.cam.ac.uk:/local/scratch/cl349/xen-2.0-testing.bk-2.6.11
Merge firebug.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-2.0-testing.bk
into firebug.cl.cam.ac.uk:/local/scratch/cl349/xen-2.0-testing.bk-2.6.11
author | cl349@firebug.cl.cam.ac.uk |
---|---|
date | Fri Mar 11 00:19:45 2005 +0000 (2005-03-11) |
parents | b8af04b0a34c 38b5ede19a45 |
children | 962d8ce831c9 |
files | .rootkeys linux-2.6.10-xen-sparse/arch/xen/Kconfig linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.10-xen-sparse/arch/xen/Makefile linux-2.6.10-xen-sparse/arch/xen/boot/Makefile linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig linux-2.6.10-xen-sparse/arch/xen/i386/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/microcode.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.10-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.10-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.10-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.10-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.10-xen-sparse/arch/xen/kernel/Makefile linux-2.6.10-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.10-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.10-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.10-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.10-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.10-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.10-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.10-xen-sparse/drivers/Makefile linux-2.6.10-xen-sparse/drivers/char/mem.c linux-2.6.10-xen-sparse/drivers/char/tty_io.c linux-2.6.10-xen-sparse/drivers/xen/Makefile linux-2.6.10-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.10-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.10-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.10-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.10-xen-sparse/drivers/xen/blkback/common.h linux-2.6.10-xen-sparse/drivers/xen/blkback/control.c linux-2.6.10-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.10-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.10-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.10-xen-sparse/drivers/xen/console/Makefile linux-2.6.10-xen-sparse/drivers/xen/console/console.c linux-2.6.10-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.10-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.10-xen-sparse/drivers/xen/netback/Makefile linux-2.6.10-xen-sparse/drivers/xen/netback/common.h linux-2.6.10-xen-sparse/drivers/xen/netback/control.c linux-2.6.10-xen-sparse/drivers/xen/netback/interface.c linux-2.6.10-xen-sparse/drivers/xen/netback/netback.c linux-2.6.10-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.10-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.10-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.10-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.10-xen-sparse/include/asm-generic/pgtable.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.10-xen-sparse/include/asm-xen/balloon.h linux-2.6.10-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.10-xen-sparse/include/asm-xen/evtchn.h linux-2.6.10-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.10-xen-sparse/include/asm-xen/gnttab.h linux-2.6.10-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.10-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.10-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.10-xen-sparse/include/asm-xen/multicall.h linux-2.6.10-xen-sparse/include/asm-xen/queues.h linux-2.6.10-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.10-xen-sparse/include/linux/gfp.h linux-2.6.10-xen-sparse/include/linux/irq.h linux-2.6.10-xen-sparse/include/linux/skbuff.h linux-2.6.10-xen-sparse/kernel/irq/manage.c linux-2.6.10-xen-sparse/mkbuildtree linux-2.6.10-xen-sparse/mm/memory.c linux-2.6.10-xen-sparse/mm/page_alloc.c linux-2.6.10-xen-sparse/net/core/skbuff.c linux-2.6.11-xen-sparse/arch/xen/Kconfig linux-2.6.11-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.11-xen-sparse/arch/xen/Makefile linux-2.6.11-xen-sparse/arch/xen/boot/Makefile linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig linux-2.6.11-xen-sparse/arch/xen/i386/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/microcode.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.11-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.11-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.11-xen-sparse/arch/xen/kernel/Makefile linux-2.6.11-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.11-xen-sparse/arch/xen/kernel/devmem.c linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.11-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.11-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.11-xen-sparse/drivers/Makefile linux-2.6.11-xen-sparse/drivers/char/mem.c linux-2.6.11-xen-sparse/drivers/char/tty_io.c linux-2.6.11-xen-sparse/drivers/xen/Makefile linux-2.6.11-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.11-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.11-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.11-xen-sparse/drivers/xen/blkback/common.h linux-2.6.11-xen-sparse/drivers/xen/blkback/control.c linux-2.6.11-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.11-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.11-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.11-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.11-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.11-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.11-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.11-xen-sparse/drivers/xen/console/Makefile linux-2.6.11-xen-sparse/drivers/xen/console/console.c linux-2.6.11-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.11-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.11-xen-sparse/drivers/xen/netback/Makefile linux-2.6.11-xen-sparse/drivers/xen/netback/common.h linux-2.6.11-xen-sparse/drivers/xen/netback/control.c linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c linux-2.6.11-xen-sparse/drivers/xen/netback/netback.c linux-2.6.11-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.11-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.11-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.11-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.11-xen-sparse/include/asm-generic/pgtable.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/floppy.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.11-xen-sparse/include/asm-xen/balloon.h linux-2.6.11-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.11-xen-sparse/include/asm-xen/evtchn.h linux-2.6.11-xen-sparse/include/asm-xen/foreign_page.h linux-2.6.11-xen-sparse/include/asm-xen/gnttab.h linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.11-xen-sparse/include/asm-xen/linux-public/privcmd.h linux-2.6.11-xen-sparse/include/asm-xen/linux-public/suspend.h linux-2.6.11-xen-sparse/include/asm-xen/multicall.h linux-2.6.11-xen-sparse/include/asm-xen/queues.h linux-2.6.11-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.11-xen-sparse/include/linux/gfp.h linux-2.6.11-xen-sparse/include/linux/irq.h linux-2.6.11-xen-sparse/kernel/irq/manage.c linux-2.6.11-xen-sparse/mkbuildtree linux-2.6.11-xen-sparse/mm/memory.c linux-2.6.11-xen-sparse/mm/page_alloc.c |
line diff
1.1 --- a/.rootkeys Thu Mar 10 18:09:19 2005 +0000 1.2 +++ b/.rootkeys Fri Mar 11 00:19:45 2005 +0000 1.3 @@ -128,135 +128,133 @@ 409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4 1.4 3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.29-xen-sparse/mm/swapfile.c 1.5 41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.29-xen-sparse/mm/vmalloc.c 1.6 41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.29-xen-sparse/net/core/skbuff.c 1.7 -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-xen-sparse/arch/xen/Kconfig 1.8 -40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers 1.9 -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-xen-sparse/arch/xen/Makefile 1.10 -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.10-xen-sparse/arch/xen/boot/Makefile 1.11 -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig 1.12 -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig 1.13 -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig 1.14 -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.10-xen-sparse/arch/xen/i386/Makefile 1.15 -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile 1.16 -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.17 -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.18 -41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile 1.19 -41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c 1.20 -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/entry.S 1.21 -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S 1.22 -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.23 -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ioport.c 1.24 -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c 1.25 -41d54a76YMCA67S8J-TBT3J62Wx6yA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/microcode.c 1.26 -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.27 -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c 1.28 -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c 1.29 -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c 1.30 -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/time.c 1.31 -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.32 -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.10-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.33 -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/traps.c 1.34 -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.35 -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.10-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.36 -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.10-xen-sparse/arch/xen/i386/mm/Makefile 1.37 -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c 1.38 -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.10-xen-sparse/arch/xen/i386/mm/highmem.c 1.39 -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.40 -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c 1.41 -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.10-xen-sparse/arch/xen/i386/mm/ioremap.c 1.42 -413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.10-xen-sparse/arch/xen/i386/mm/pageattr.c 1.43 -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c 1.44 -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.10-xen-sparse/arch/xen/i386/pci/Makefile 1.45 -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.10-xen-sparse/arch/xen/i386/pci/direct.c 1.46 -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.10-xen-sparse/arch/xen/i386/pci/irq.c 1.47 -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.10-xen-sparse/arch/xen/kernel/Makefile 1.48 -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.10-xen-sparse/arch/xen/kernel/ctrl_if.c 1.49 -41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.10-xen-sparse/arch/xen/kernel/devmem.c 1.50 -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.10-xen-sparse/arch/xen/kernel/evtchn.c 1.51 -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c 1.52 -412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.10-xen-sparse/arch/xen/kernel/gnttab.c 1.53 -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.10-xen-sparse/arch/xen/kernel/reboot.c 1.54 -414c113396tK1HTVeUalm3u-1DF16g linux-2.6.10-xen-sparse/arch/xen/kernel/skbuff.c 1.55 -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.10-xen-sparse/arch/xen/kernel/xen_proc.c 1.56 -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.10-xen-sparse/drivers/Makefile 1.57 -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.10-xen-sparse/drivers/char/mem.c 1.58 -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.10-xen-sparse/drivers/char/tty_io.c 1.59 -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.10-xen-sparse/drivers/xen/Makefile 1.60 -41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.10-xen-sparse/drivers/xen/balloon/Makefile 1.61 -3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.10-xen-sparse/drivers/xen/balloon/balloon.c 1.62 -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.10-xen-sparse/drivers/xen/blkback/Makefile 1.63 -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.10-xen-sparse/drivers/xen/blkback/blkback.c 1.64 -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.10-xen-sparse/drivers/xen/blkback/common.h 1.65 -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.10-xen-sparse/drivers/xen/blkback/control.c 1.66 -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.10-xen-sparse/drivers/xen/blkback/interface.c 1.67 -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.10-xen-sparse/drivers/xen/blkback/vbd.c 1.68 -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.10-xen-sparse/drivers/xen/blkfront/Kconfig 1.69 -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.10-xen-sparse/drivers/xen/blkfront/Makefile 1.70 -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c 1.71 -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h 1.72 -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c 1.73 -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.10-xen-sparse/drivers/xen/console/Makefile 1.74 -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.10-xen-sparse/drivers/xen/console/console.c 1.75 -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.10-xen-sparse/drivers/xen/evtchn/Makefile 1.76 -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.10-xen-sparse/drivers/xen/evtchn/evtchn.c 1.77 -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.10-xen-sparse/drivers/xen/netback/Makefile 1.78 -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.10-xen-sparse/drivers/xen/netback/common.h 1.79 -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.10-xen-sparse/drivers/xen/netback/control.c 1.80 -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.10-xen-sparse/drivers/xen/netback/interface.c 1.81 -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.10-xen-sparse/drivers/xen/netback/netback.c 1.82 -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.10-xen-sparse/drivers/xen/netfront/Kconfig 1.83 -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.10-xen-sparse/drivers/xen/netfront/Makefile 1.84 -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c 1.85 -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.10-xen-sparse/drivers/xen/privcmd/Makefile 1.86 -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.10-xen-sparse/drivers/xen/privcmd/privcmd.c 1.87 -412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.10-xen-sparse/include/asm-generic/pgtable.h 1.88 -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/desc.h 1.89 -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.90 -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.91 -41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/floppy.h 1.92 -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.93 -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/io.h 1.94 -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.95 -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.96 -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.97 -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.98 -40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/msr.h 1.99 -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/page.h 1.100 -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/param.h 1.101 -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pci.h 1.102 -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.103 -412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.104 -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.105 -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.106 -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/processor.h 1.107 -412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.108 -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/segment.h 1.109 -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/setup.h 1.110 -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.111 -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/system.h 1.112 -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.113 -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/vga.h 1.114 -40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/xor.h 1.115 -41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.10-xen-sparse/include/asm-xen/balloon.h 1.116 -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.10-xen-sparse/include/asm-xen/ctrl_if.h 1.117 -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.10-xen-sparse/include/asm-xen/evtchn.h 1.118 -419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.10-xen-sparse/include/asm-xen/foreign_page.h 1.119 -412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.10-xen-sparse/include/asm-xen/gnttab.h 1.120 -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.10-xen-sparse/include/asm-xen/hypervisor.h 1.121 -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.10-xen-sparse/include/asm-xen/linux-public/privcmd.h 1.122 -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.10-xen-sparse/include/asm-xen/linux-public/suspend.h 1.123 -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.10-xen-sparse/include/asm-xen/multicall.h 1.124 -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.10-xen-sparse/include/asm-xen/queues.h 1.125 -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.10-xen-sparse/include/asm-xen/xen_proc.h 1.126 -419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.10-xen-sparse/include/linux/gfp.h 1.127 42305f545Vc5SLCUewZ2-n-P9JJhEQ linux-2.6.10-xen-sparse/include/linux/highmem.h 1.128 -419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.10-xen-sparse/include/linux/irq.h 1.129 -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.10-xen-sparse/include/linux/skbuff.h 1.130 -419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.10-xen-sparse/kernel/irq/manage.c 1.131 -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.10-xen-sparse/mkbuildtree 1.132 42305f54Q6xJ1bXcQJlCQq1m-e2C8g linux-2.6.10-xen-sparse/mm/highmem.c 1.133 -412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.10-xen-sparse/mm/memory.c 1.134 -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-xen-sparse/mm/page_alloc.c 1.135 -41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-xen-sparse/net/core/skbuff.c 1.136 +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.11-xen-sparse/arch/xen/Kconfig 1.137 +40f56237utH41NPukqHksuNf29IC9A linux-2.6.11-xen-sparse/arch/xen/Kconfig.drivers 1.138 +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.11-xen-sparse/arch/xen/Makefile 1.139 +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.11-xen-sparse/arch/xen/boot/Makefile 1.140 +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig 1.141 +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig 1.142 +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig 1.143 +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.11-xen-sparse/arch/xen/i386/Makefile 1.144 +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.11-xen-sparse/arch/xen/i386/kernel/Makefile 1.145 +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.146 +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.147 +41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile 1.148 +41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c 1.149 +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/entry.S 1.150 +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S 1.151 +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.152 +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ioport.c 1.153 +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c 1.154 +41d54a76YMCA67S8J-TBT3J62Wx6yA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/microcode.c 1.155 +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.156 +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c 1.157 +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c 1.158 +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/signal.c 1.159 +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c 1.160 +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.161 +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.11-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.162 +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c 1.163 +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.164 +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.11-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.165 +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.11-xen-sparse/arch/xen/i386/mm/Makefile 1.166 +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c 1.167 +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.11-xen-sparse/arch/xen/i386/mm/highmem.c 1.168 +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.11-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.169 +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c 1.170 +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.11-xen-sparse/arch/xen/i386/mm/ioremap.c 1.171 +413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.11-xen-sparse/arch/xen/i386/mm/pageattr.c 1.172 +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c 1.173 +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile 1.174 +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.11-xen-sparse/arch/xen/i386/pci/direct.c 1.175 +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c 1.176 +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.11-xen-sparse/arch/xen/kernel/Makefile 1.177 +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.11-xen-sparse/arch/xen/kernel/ctrl_if.c 1.178 +41ab6fa06JdF7jxUsuDcjN3UhuIAxg linux-2.6.11-xen-sparse/arch/xen/kernel/devmem.c 1.179 +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c 1.180 +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c 1.181 +412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c 1.182 +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c 1.183 +414c113396tK1HTVeUalm3u-1DF16g linux-2.6.11-xen-sparse/arch/xen/kernel/skbuff.c 1.184 +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.11-xen-sparse/arch/xen/kernel/xen_proc.c 1.185 +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.11-xen-sparse/drivers/Makefile 1.186 +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.11-xen-sparse/drivers/char/mem.c 1.187 +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.11-xen-sparse/drivers/char/tty_io.c 1.188 +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.11-xen-sparse/drivers/xen/Makefile 1.189 +41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.11-xen-sparse/drivers/xen/balloon/Makefile 1.190 +3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.11-xen-sparse/drivers/xen/balloon/balloon.c 1.191 +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.11-xen-sparse/drivers/xen/blkback/Makefile 1.192 +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c 1.193 +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.11-xen-sparse/drivers/xen/blkback/common.h 1.194 +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.11-xen-sparse/drivers/xen/blkback/control.c 1.195 +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.11-xen-sparse/drivers/xen/blkback/interface.c 1.196 +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.11-xen-sparse/drivers/xen/blkback/vbd.c 1.197 +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.11-xen-sparse/drivers/xen/blkfront/Kconfig 1.198 +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.11-xen-sparse/drivers/xen/blkfront/Makefile 1.199 +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.11-xen-sparse/drivers/xen/blkfront/blkfront.c 1.200 +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.11-xen-sparse/drivers/xen/blkfront/block.h 1.201 +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.11-xen-sparse/drivers/xen/blkfront/vbd.c 1.202 +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.11-xen-sparse/drivers/xen/console/Makefile 1.203 +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.11-xen-sparse/drivers/xen/console/console.c 1.204 +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.11-xen-sparse/drivers/xen/evtchn/Makefile 1.205 +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.11-xen-sparse/drivers/xen/evtchn/evtchn.c 1.206 +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.11-xen-sparse/drivers/xen/netback/Makefile 1.207 +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.11-xen-sparse/drivers/xen/netback/common.h 1.208 +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.11-xen-sparse/drivers/xen/netback/control.c 1.209 +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c 1.210 +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.11-xen-sparse/drivers/xen/netback/netback.c 1.211 +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.11-xen-sparse/drivers/xen/netfront/Kconfig 1.212 +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.11-xen-sparse/drivers/xen/netfront/Makefile 1.213 +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.11-xen-sparse/drivers/xen/netfront/netfront.c 1.214 +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.11-xen-sparse/drivers/xen/privcmd/Makefile 1.215 +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c 1.216 +412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.11-xen-sparse/include/asm-generic/pgtable.h 1.217 +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/desc.h 1.218 +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.219 +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.220 +41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/floppy.h 1.221 +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.222 +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io.h 1.223 +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.224 +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.225 +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.226 +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.227 +40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/msr.h 1.228 +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/page.h 1.229 +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/param.h 1.230 +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pci.h 1.231 +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.232 +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.233 +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.234 +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.235 +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/processor.h 1.236 +412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.237 +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/segment.h 1.238 +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/setup.h 1.239 +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.240 +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/system.h 1.241 +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.242 +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/vga.h 1.243 +40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/xor.h 1.244 +41af4017PDMuSmMWtSRU5UC9Vylw5g linux-2.6.11-xen-sparse/include/asm-xen/balloon.h 1.245 +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.11-xen-sparse/include/asm-xen/ctrl_if.h 1.246 +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.11-xen-sparse/include/asm-xen/evtchn.h 1.247 +419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.11-xen-sparse/include/asm-xen/foreign_page.h 1.248 +412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.11-xen-sparse/include/asm-xen/gnttab.h 1.249 +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h 1.250 +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.11-xen-sparse/include/asm-xen/linux-public/privcmd.h 1.251 +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.11-xen-sparse/include/asm-xen/linux-public/suspend.h 1.252 +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.11-xen-sparse/include/asm-xen/multicall.h 1.253 +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.11-xen-sparse/include/asm-xen/queues.h 1.254 +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.11-xen-sparse/include/asm-xen/xen_proc.h 1.255 +419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.11-xen-sparse/include/linux/gfp.h 1.256 +419dfc609zbti8rqL60tL2dHXQ_rvQ linux-2.6.11-xen-sparse/include/linux/irq.h 1.257 +419dfc6awx7w88wk6cG9P3mPidX6LQ linux-2.6.11-xen-sparse/kernel/irq/manage.c 1.258 +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.11-xen-sparse/mkbuildtree 1.259 +412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.11-xen-sparse/mm/memory.c 1.260 +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.11-xen-sparse/mm/page_alloc.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-xen-sparse/arch/xen/Kconfig Thu Mar 10 18:09:19 2005 +0000 2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 2.3 @@ -1,152 +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 XEN_PRIVILEGED_GUEST 2.39 - help 2.40 - Assume access is available to physical hardware devices 2.41 - (e.g., hard drives, network cards). This allows you to configure 2.42 - such devices and also includes some low-level support that is 2.43 - otherwise not compiled into the kernel. 2.44 - 2.45 -config XEN_BLKDEV_BACKEND 2.46 - bool "Block-device backend driver" 2.47 - depends on XEN_PHYSDEV_ACCESS 2.48 - default y 2.49 - help 2.50 - The block-device backend driver allows the kernel to export its 2.51 - block devices to other guests via a high-performance shared-memory 2.52 - interface. 2.53 - 2.54 -config XEN_NETDEV_BACKEND 2.55 - bool "Network-device backend driver" 2.56 - depends on XEN_PHYSDEV_ACCESS 2.57 - default y 2.58 - help 2.59 - The network-device backend driver allows the kernel to export its 2.60 - network devices to other guests via a high-performance shared-memory 2.61 - interface. 2.62 - 2.63 -config XEN_BLKDEV_FRONTEND 2.64 - bool "Block-device frontend driver" 2.65 - default y 2.66 - help 2.67 - The block-device frontend driver allows the kernel to access block 2.68 - devices mounted within another guest OS. Unless you are building a 2.69 - dedicated device-driver domain, or your master control domain 2.70 - (domain 0), then you almost certainly want to say Y here. 2.71 - 2.72 -config XEN_NETDEV_FRONTEND 2.73 - bool "Network-device frontend driver" 2.74 - default y 2.75 - help 2.76 - The network-device frontend driver allows the kernel to access 2.77 - network interfaces within another guest OS. Unless you are building a 2.78 - dedicated device-driver domain, or your master control domain 2.79 - (domain 0), then you almost certainly want to say Y here. 2.80 - 2.81 -config XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER 2.82 - bool "Pipelined transmitter (DANGEROUS)" 2.83 - depends on XEN_NETDEV_FRONTEND 2.84 - default n 2.85 - help 2.86 - The driver will assume that the backend is pipelining packets for 2.87 - transmission: whenever packets are pending in the remote backend, 2.88 - the driver will not send asynchronous notifications when it queues 2.89 - additional packets for transmission. 2.90 - If the backend is a dumb domain, such as a transparent Ethernet 2.91 - bridge with no local IP interface, it is safe to say Y here to get 2.92 - slightly lower network overhead. 2.93 - If the backend has a local IP interface; or may be doing smart things 2.94 - like reassembling packets to perform firewall filtering; or if you 2.95 - are unsure; or if you experience network hangs when this option is 2.96 - enabled; then you must say N here. 2.97 - 2.98 -config XEN_WRITABLE_PAGETABLES 2.99 - bool 2.100 - default y 2.101 - 2.102 -config XEN_SCRUB_PAGES 2.103 - bool "Scrub memory before freeing it to Xen" 2.104 - default y 2.105 - help 2.106 - Erase memory contents before freeing it back to Xen's global 2.107 - pool. This ensures that any secrets contained within that 2.108 - memory (e.g., private keys) cannot be found by other guests that 2.109 - may be running on the machine. Most people will want to say Y here. 2.110 - If security is not a concern then you may increase performance by 2.111 - saying N. 2.112 - 2.113 -choice 2.114 - prompt "Processor Type" 2.115 - default X86 2.116 - 2.117 -config X86 2.118 - bool "X86" 2.119 - help 2.120 - Choose this option if your computer is a X86 architecture. 2.121 - 2.122 -config X86_64 2.123 - bool "X86_64" 2.124 - help 2.125 - Choose this option if your computer is a X86 architecture. 2.126 - 2.127 -endchoice 2.128 - 2.129 -endmenu 2.130 - 2.131 -config HAVE_ARCH_DEV_ALLOC_SKB 2.132 - bool 2.133 - default y 2.134 - 2.135 -source "init/Kconfig" 2.136 - 2.137 -if X86 2.138 -source "arch/xen/i386/Kconfig" 2.139 -endif 2.140 - 2.141 -menu "Executable file formats" 2.142 - 2.143 -source "fs/Kconfig.binfmt" 2.144 - 2.145 -endmenu 2.146 - 2.147 -source "arch/xen/Kconfig.drivers" 2.148 - 2.149 -source "fs/Kconfig" 2.150 - 2.151 -source "security/Kconfig" 2.152 - 2.153 -source "crypto/Kconfig" 2.154 - 2.155 -source "lib/Kconfig"
3.1 --- a/linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/Makefile Thu Mar 10 18:09:19 2005 +0000 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,70 +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 - 4.61 -archclean: 4.62 - @if [ -e arch/xen/arch ]; then $(MAKE) $(clean)=arch/xen/arch; fi; 4.63 - @rm -f arch/xen/arch include/.asm-ignore include/asm-xen/asm 4.64 - @rm -f vmlinux-stripped vmlinuz 4.65 - 4.66 -define archhelp 4.67 - echo '* vmlinuz - Compressed kernel image' 4.68 - echo ' install - Install kernel image and config file' 4.69 -endef 4.70 - 4.71 -ifneq ($(XENARCH),) 4.72 -include $(srctree)/arch/xen/$(XENARCH)/Makefile 4.73 -endif
5.1 --- a/linux-2.6.10-xen-sparse/arch/xen/boot/Makefile Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/configs/xen0_defconfig Thu Mar 10 18:09:19 2005 +0000 6.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 6.3 @@ -1,1078 +0,0 @@ 6.4 -# 6.5 -# Automatically generated make config: don't edit 6.6 -# Linux kernel version: 2.6.10-xen0 6.7 -# Mon Feb 21 13:46:38 2005 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_BLKDEV_TAP_BE is not set 6.20 -CONFIG_XEN_NETDEV_BACKEND=y 6.21 -CONFIG_XEN_BLKDEV_FRONTEND=y 6.22 -CONFIG_XEN_NETDEV_FRONTEND=y 6.23 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 6.24 -# CONFIG_XEN_BLKDEV_TAP is not set 6.25 -CONFIG_XEN_WRITABLE_PAGETABLES=y 6.26 -CONFIG_XEN_SCRUB_PAGES=y 6.27 -CONFIG_X86=y 6.28 -# CONFIG_X86_64 is not set 6.29 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 6.30 - 6.31 -# 6.32 -# Code maturity level options 6.33 -# 6.34 -CONFIG_EXPERIMENTAL=y 6.35 -# CONFIG_CLEAN_COMPILE is not set 6.36 -CONFIG_BROKEN=y 6.37 -CONFIG_BROKEN_ON_SMP=y 6.38 -CONFIG_LOCK_KERNEL=y 6.39 - 6.40 -# 6.41 -# General setup 6.42 -# 6.43 -CONFIG_LOCALVERSION="" 6.44 -CONFIG_SWAP=y 6.45 -CONFIG_SYSVIPC=y 6.46 -# CONFIG_POSIX_MQUEUE is not set 6.47 -# CONFIG_BSD_PROCESS_ACCT is not set 6.48 -CONFIG_SYSCTL=y 6.49 -# CONFIG_AUDIT is not set 6.50 -CONFIG_LOG_BUF_SHIFT=14 6.51 -CONFIG_HOTPLUG=y 6.52 -CONFIG_KOBJECT_UEVENT=y 6.53 -# CONFIG_IKCONFIG is not set 6.54 -# CONFIG_EMBEDDED is not set 6.55 -CONFIG_KALLSYMS=y 6.56 -# CONFIG_KALLSYMS_EXTRA_PASS is not set 6.57 -CONFIG_FUTEX=y 6.58 -CONFIG_EPOLL=y 6.59 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 6.60 -CONFIG_SHMEM=y 6.61 -CONFIG_CC_ALIGN_FUNCTIONS=0 6.62 -CONFIG_CC_ALIGN_LABELS=0 6.63 -CONFIG_CC_ALIGN_LOOPS=0 6.64 -CONFIG_CC_ALIGN_JUMPS=0 6.65 -# CONFIG_TINY_SHMEM is not set 6.66 - 6.67 -# 6.68 -# Loadable module support 6.69 -# 6.70 -CONFIG_MODULES=y 6.71 -CONFIG_MODULE_UNLOAD=y 6.72 -# CONFIG_MODULE_FORCE_UNLOAD is not set 6.73 -CONFIG_OBSOLETE_MODPARM=y 6.74 -# CONFIG_MODVERSIONS is not set 6.75 -# CONFIG_MODULE_SRCVERSION_ALL is not set 6.76 -CONFIG_KMOD=y 6.77 - 6.78 -# 6.79 -# X86 Processor Configuration 6.80 -# 6.81 -CONFIG_XENARCH="i386" 6.82 -CONFIG_MMU=y 6.83 -CONFIG_UID16=y 6.84 -CONFIG_GENERIC_ISA_DMA=y 6.85 -CONFIG_GENERIC_IOMAP=y 6.86 -# CONFIG_M386 is not set 6.87 -# CONFIG_M486 is not set 6.88 -# CONFIG_M586 is not set 6.89 -# CONFIG_M586TSC is not set 6.90 -# CONFIG_M586MMX is not set 6.91 -# CONFIG_M686 is not set 6.92 -# CONFIG_MPENTIUMII is not set 6.93 -# CONFIG_MPENTIUMIII is not set 6.94 -# CONFIG_MPENTIUMM is not set 6.95 -CONFIG_MPENTIUM4=y 6.96 -# CONFIG_MK6 is not set 6.97 -# CONFIG_MK7 is not set 6.98 -# CONFIG_MK8 is not set 6.99 -# CONFIG_MCRUSOE is not set 6.100 -# CONFIG_MEFFICEON is not set 6.101 -# CONFIG_MWINCHIPC6 is not set 6.102 -# CONFIG_MWINCHIP2 is not set 6.103 -# CONFIG_MWINCHIP3D is not set 6.104 -# CONFIG_MCYRIXIII is not set 6.105 -# CONFIG_MVIAC3_2 is not set 6.106 -# CONFIG_X86_GENERIC is not set 6.107 -CONFIG_X86_CMPXCHG=y 6.108 -CONFIG_X86_XADD=y 6.109 -CONFIG_X86_L1_CACHE_SHIFT=7 6.110 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 6.111 -CONFIG_X86_WP_WORKS_OK=y 6.112 -CONFIG_X86_INVLPG=y 6.113 -CONFIG_X86_BSWAP=y 6.114 -CONFIG_X86_POPAD_OK=y 6.115 -CONFIG_X86_GOOD_APIC=y 6.116 -CONFIG_X86_INTEL_USERCOPY=y 6.117 -CONFIG_X86_USE_PPRO_CHECKSUM=y 6.118 -# CONFIG_HPET_TIMER is not set 6.119 -# CONFIG_HPET_EMULATE_RTC is not set 6.120 -# CONFIG_SMP is not set 6.121 -CONFIG_PREEMPT=y 6.122 -CONFIG_MICROCODE=y 6.123 -CONFIG_X86_CPUID=y 6.124 - 6.125 -# 6.126 -# Firmware Drivers 6.127 -# 6.128 -# CONFIG_EDD is not set 6.129 -CONFIG_NOHIGHMEM=y 6.130 -# CONFIG_HIGHMEM4G is not set 6.131 -CONFIG_MTRR=y 6.132 -CONFIG_HAVE_DEC_LOCK=y 6.133 -# CONFIG_REGPARM is not set 6.134 - 6.135 -# 6.136 -# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 6.137 -# 6.138 -CONFIG_PCI=y 6.139 -CONFIG_PCI_DIRECT=y 6.140 -CONFIG_PCI_LEGACY_PROC=y 6.141 -# CONFIG_PCI_NAMES is not set 6.142 -CONFIG_ISA=y 6.143 -# CONFIG_EISA is not set 6.144 -# CONFIG_MCA is not set 6.145 -# CONFIG_SCx200 is not set 6.146 - 6.147 -# 6.148 -# PCCARD (PCMCIA/CardBus) support 6.149 -# 6.150 -# CONFIG_PCCARD is not set 6.151 - 6.152 -# 6.153 -# PC-card bridges 6.154 -# 6.155 -CONFIG_PCMCIA_PROBE=y 6.156 - 6.157 -# 6.158 -# PCI Hotplug Support 6.159 -# 6.160 -# CONFIG_HOTPLUG_PCI is not set 6.161 - 6.162 -# 6.163 -# Kernel hacking 6.164 -# 6.165 -# CONFIG_DEBUG_KERNEL is not set 6.166 -CONFIG_EARLY_PRINTK=y 6.167 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 6.168 -# CONFIG_FRAME_POINTER is not set 6.169 -# CONFIG_4KSTACKS is not set 6.170 -CONFIG_GENERIC_HARDIRQS=y 6.171 -CONFIG_GENERIC_IRQ_PROBE=y 6.172 -CONFIG_X86_BIOS_REBOOT=y 6.173 -CONFIG_PC=y 6.174 - 6.175 -# 6.176 -# Executable file formats 6.177 -# 6.178 -CONFIG_BINFMT_ELF=y 6.179 -# CONFIG_BINFMT_AOUT is not set 6.180 -# CONFIG_BINFMT_MISC is not set 6.181 - 6.182 -# 6.183 -# Device Drivers 6.184 -# 6.185 - 6.186 -# 6.187 -# Generic Driver Options 6.188 -# 6.189 -# CONFIG_STANDALONE is not set 6.190 -CONFIG_PREVENT_FIRMWARE_BUILD=y 6.191 -# CONFIG_FW_LOADER is not set 6.192 - 6.193 -# 6.194 -# Memory Technology Devices (MTD) 6.195 -# 6.196 -# CONFIG_MTD is not set 6.197 - 6.198 -# 6.199 -# Parallel port support 6.200 -# 6.201 -# CONFIG_PARPORT is not set 6.202 - 6.203 -# 6.204 -# Plug and Play support 6.205 -# 6.206 -# CONFIG_PNP is not set 6.207 - 6.208 -# 6.209 -# Block devices 6.210 -# 6.211 -CONFIG_BLK_DEV_FD=y 6.212 -# CONFIG_BLK_DEV_XD is not set 6.213 -# CONFIG_BLK_CPQ_DA is not set 6.214 -CONFIG_BLK_CPQ_CISS_DA=y 6.215 -# CONFIG_CISS_SCSI_TAPE is not set 6.216 -# CONFIG_BLK_DEV_DAC960 is not set 6.217 -# CONFIG_BLK_DEV_UMEM is not set 6.218 -CONFIG_BLK_DEV_LOOP=y 6.219 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 6.220 -# CONFIG_BLK_DEV_NBD is not set 6.221 -# CONFIG_BLK_DEV_SX8 is not set 6.222 -CONFIG_BLK_DEV_RAM=y 6.223 -CONFIG_BLK_DEV_RAM_COUNT=16 6.224 -CONFIG_BLK_DEV_RAM_SIZE=4096 6.225 -CONFIG_BLK_DEV_INITRD=y 6.226 -CONFIG_INITRAMFS_SOURCE="" 6.227 -# CONFIG_LBD is not set 6.228 -# CONFIG_CDROM_PKTCDVD is not set 6.229 - 6.230 -# 6.231 -# IO Schedulers 6.232 -# 6.233 -CONFIG_IOSCHED_NOOP=y 6.234 -CONFIG_IOSCHED_AS=y 6.235 -CONFIG_IOSCHED_DEADLINE=y 6.236 -CONFIG_IOSCHED_CFQ=y 6.237 - 6.238 -# 6.239 -# ATA/ATAPI/MFM/RLL support 6.240 -# 6.241 -CONFIG_IDE=y 6.242 -CONFIG_BLK_DEV_IDE=y 6.243 - 6.244 -# 6.245 -# Please see Documentation/ide.txt for help/info on IDE drives 6.246 -# 6.247 -# CONFIG_BLK_DEV_IDE_SATA is not set 6.248 -# CONFIG_BLK_DEV_HD_IDE is not set 6.249 -CONFIG_BLK_DEV_IDEDISK=y 6.250 -# CONFIG_IDEDISK_MULTI_MODE is not set 6.251 -CONFIG_BLK_DEV_IDECD=y 6.252 -# CONFIG_BLK_DEV_IDETAPE is not set 6.253 -# CONFIG_BLK_DEV_IDEFLOPPY is not set 6.254 -# CONFIG_BLK_DEV_IDESCSI is not set 6.255 -# CONFIG_IDE_TASK_IOCTL is not set 6.256 - 6.257 -# 6.258 -# IDE chipset support/bugfixes 6.259 -# 6.260 -CONFIG_IDE_GENERIC=y 6.261 -# CONFIG_BLK_DEV_CMD640 is not set 6.262 -CONFIG_BLK_DEV_IDEPCI=y 6.263 -# CONFIG_IDEPCI_SHARE_IRQ is not set 6.264 -# CONFIG_BLK_DEV_OFFBOARD is not set 6.265 -CONFIG_BLK_DEV_GENERIC=y 6.266 -# CONFIG_BLK_DEV_OPTI621 is not set 6.267 -# CONFIG_BLK_DEV_RZ1000 is not set 6.268 -CONFIG_BLK_DEV_IDEDMA_PCI=y 6.269 -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 6.270 -CONFIG_IDEDMA_PCI_AUTO=y 6.271 -# CONFIG_IDEDMA_ONLYDISK is not set 6.272 -# CONFIG_BLK_DEV_AEC62XX is not set 6.273 -# CONFIG_BLK_DEV_ALI15X3 is not set 6.274 -# CONFIG_BLK_DEV_AMD74XX is not set 6.275 -# CONFIG_BLK_DEV_ATIIXP is not set 6.276 -# CONFIG_BLK_DEV_CMD64X is not set 6.277 -# CONFIG_BLK_DEV_TRIFLEX is not set 6.278 -# CONFIG_BLK_DEV_CY82C693 is not set 6.279 -# CONFIG_BLK_DEV_CS5520 is not set 6.280 -# CONFIG_BLK_DEV_CS5530 is not set 6.281 -# CONFIG_BLK_DEV_HPT34X is not set 6.282 -# CONFIG_BLK_DEV_HPT366 is not set 6.283 -# CONFIG_BLK_DEV_SC1200 is not set 6.284 -CONFIG_BLK_DEV_PIIX=y 6.285 -# CONFIG_BLK_DEV_NS87415 is not set 6.286 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set 6.287 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set 6.288 -CONFIG_BLK_DEV_SVWKS=y 6.289 -# CONFIG_BLK_DEV_SIIMAGE is not set 6.290 -# CONFIG_BLK_DEV_SIS5513 is not set 6.291 -# CONFIG_BLK_DEV_SLC90E66 is not set 6.292 -# CONFIG_BLK_DEV_TRM290 is not set 6.293 -# CONFIG_BLK_DEV_VIA82CXXX is not set 6.294 -# CONFIG_IDE_ARM is not set 6.295 -# CONFIG_IDE_CHIPSETS is not set 6.296 -CONFIG_BLK_DEV_IDEDMA=y 6.297 -# CONFIG_IDEDMA_IVB is not set 6.298 -CONFIG_IDEDMA_AUTO=y 6.299 -# CONFIG_BLK_DEV_HD is not set 6.300 - 6.301 -# 6.302 -# SCSI device support 6.303 -# 6.304 -CONFIG_SCSI=y 6.305 -CONFIG_SCSI_PROC_FS=y 6.306 - 6.307 -# 6.308 -# SCSI support type (disk, tape, CD-ROM) 6.309 -# 6.310 -CONFIG_BLK_DEV_SD=y 6.311 -# CONFIG_CHR_DEV_ST is not set 6.312 -# CONFIG_CHR_DEV_OSST is not set 6.313 -# CONFIG_BLK_DEV_SR is not set 6.314 -# CONFIG_CHR_DEV_SG is not set 6.315 - 6.316 -# 6.317 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 6.318 -# 6.319 -# CONFIG_SCSI_MULTI_LUN is not set 6.320 -# CONFIG_SCSI_CONSTANTS is not set 6.321 -# CONFIG_SCSI_LOGGING is not set 6.322 - 6.323 -# 6.324 -# SCSI Transport Attributes 6.325 -# 6.326 -# CONFIG_SCSI_SPI_ATTRS is not set 6.327 -# CONFIG_SCSI_FC_ATTRS is not set 6.328 - 6.329 -# 6.330 -# SCSI low-level drivers 6.331 -# 6.332 -CONFIG_BLK_DEV_3W_XXXX_RAID=y 6.333 -# CONFIG_SCSI_3W_9XXX is not set 6.334 -# CONFIG_SCSI_7000FASST is not set 6.335 -# CONFIG_SCSI_ACARD is not set 6.336 -# CONFIG_SCSI_AHA152X is not set 6.337 -# CONFIG_SCSI_AHA1542 is not set 6.338 -CONFIG_SCSI_AACRAID=y 6.339 -CONFIG_SCSI_AIC7XXX=y 6.340 -CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 6.341 -CONFIG_AIC7XXX_RESET_DELAY_MS=15000 6.342 -CONFIG_AIC7XXX_DEBUG_ENABLE=y 6.343 -CONFIG_AIC7XXX_DEBUG_MASK=0 6.344 -CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 6.345 -# CONFIG_SCSI_AIC7XXX_OLD is not set 6.346 -CONFIG_SCSI_AIC79XX=y 6.347 -CONFIG_AIC79XX_CMDS_PER_DEVICE=32 6.348 -CONFIG_AIC79XX_RESET_DELAY_MS=15000 6.349 -# CONFIG_AIC79XX_ENABLE_RD_STRM is not set 6.350 -CONFIG_AIC79XX_DEBUG_ENABLE=y 6.351 -CONFIG_AIC79XX_DEBUG_MASK=0 6.352 -CONFIG_AIC79XX_REG_PRETTY_PRINT=y 6.353 -# CONFIG_SCSI_DPT_I2O is not set 6.354 -# CONFIG_SCSI_ADVANSYS is not set 6.355 -# CONFIG_SCSI_IN2000 is not set 6.356 -# CONFIG_MEGARAID_NEWGEN is not set 6.357 -# CONFIG_MEGARAID_LEGACY is not set 6.358 -CONFIG_SCSI_SATA=y 6.359 -# CONFIG_SCSI_SATA_AHCI is not set 6.360 -# CONFIG_SCSI_SATA_SVW is not set 6.361 -CONFIG_SCSI_ATA_PIIX=y 6.362 -# CONFIG_SCSI_SATA_NV is not set 6.363 -CONFIG_SCSI_SATA_PROMISE=y 6.364 -CONFIG_SCSI_SATA_SX4=y 6.365 -CONFIG_SCSI_SATA_SIL=y 6.366 -# CONFIG_SCSI_SATA_SIS is not set 6.367 -# CONFIG_SCSI_SATA_ULI is not set 6.368 -# CONFIG_SCSI_SATA_VIA is not set 6.369 -# CONFIG_SCSI_SATA_VITESSE is not set 6.370 -CONFIG_SCSI_BUSLOGIC=y 6.371 -# CONFIG_SCSI_OMIT_FLASHPOINT is not set 6.372 -# CONFIG_SCSI_CPQFCTS is not set 6.373 -# CONFIG_SCSI_DMX3191D is not set 6.374 -# CONFIG_SCSI_DTC3280 is not set 6.375 -# CONFIG_SCSI_EATA is not set 6.376 -# CONFIG_SCSI_EATA_PIO is not set 6.377 -# CONFIG_SCSI_FUTURE_DOMAIN is not set 6.378 -# CONFIG_SCSI_GDTH is not set 6.379 -# CONFIG_SCSI_GENERIC_NCR5380 is not set 6.380 -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 6.381 -# CONFIG_SCSI_IPS is not set 6.382 -# CONFIG_SCSI_INITIO is not set 6.383 -# CONFIG_SCSI_INIA100 is not set 6.384 -# CONFIG_SCSI_NCR53C406A is not set 6.385 -# CONFIG_SCSI_SYM53C8XX_2 is not set 6.386 -# CONFIG_SCSI_IPR is not set 6.387 -# CONFIG_SCSI_PAS16 is not set 6.388 -# CONFIG_SCSI_PCI2000 is not set 6.389 -# CONFIG_SCSI_PCI2220I is not set 6.390 -# CONFIG_SCSI_PSI240I is not set 6.391 -# CONFIG_SCSI_QLOGIC_FAS is not set 6.392 -# CONFIG_SCSI_QLOGIC_ISP is not set 6.393 -# CONFIG_SCSI_QLOGIC_FC is not set 6.394 -# CONFIG_SCSI_QLOGIC_1280 is not set 6.395 -CONFIG_SCSI_QLA2XXX=y 6.396 -# CONFIG_SCSI_QLA21XX is not set 6.397 -# CONFIG_SCSI_QLA22XX is not set 6.398 -# CONFIG_SCSI_QLA2300 is not set 6.399 -# CONFIG_SCSI_QLA2322 is not set 6.400 -# CONFIG_SCSI_QLA6312 is not set 6.401 -# CONFIG_SCSI_QLA6322 is not set 6.402 -# CONFIG_SCSI_SEAGATE is not set 6.403 -# CONFIG_SCSI_SYM53C416 is not set 6.404 -# CONFIG_SCSI_DC395x is not set 6.405 -# CONFIG_SCSI_DC390T is not set 6.406 -# CONFIG_SCSI_T128 is not set 6.407 -# CONFIG_SCSI_U14_34F is not set 6.408 -# CONFIG_SCSI_ULTRASTOR is not set 6.409 -# CONFIG_SCSI_NSP32 is not set 6.410 -# CONFIG_SCSI_DEBUG is not set 6.411 - 6.412 -# 6.413 -# Old CD-ROM drivers (not SCSI, not IDE) 6.414 -# 6.415 -# CONFIG_CD_NO_IDESCSI is not set 6.416 - 6.417 -# 6.418 -# Multi-device support (RAID and LVM) 6.419 -# 6.420 -CONFIG_MD=y 6.421 -CONFIG_BLK_DEV_MD=y 6.422 -# CONFIG_MD_LINEAR is not set 6.423 -CONFIG_MD_RAID0=y 6.424 -CONFIG_MD_RAID1=y 6.425 -# CONFIG_MD_RAID10 is not set 6.426 -CONFIG_MD_RAID5=y 6.427 -# CONFIG_MD_RAID6 is not set 6.428 -# CONFIG_MD_MULTIPATH is not set 6.429 -# CONFIG_MD_FAULTY is not set 6.430 -CONFIG_BLK_DEV_DM=y 6.431 -# CONFIG_DM_CRYPT is not set 6.432 -CONFIG_DM_SNAPSHOT=y 6.433 -CONFIG_DM_MIRROR=y 6.434 -# CONFIG_DM_ZERO is not set 6.435 - 6.436 -# 6.437 -# Fusion MPT device support 6.438 -# 6.439 -# CONFIG_FUSION is not set 6.440 - 6.441 -# 6.442 -# IEEE 1394 (FireWire) support 6.443 -# 6.444 -# CONFIG_IEEE1394 is not set 6.445 - 6.446 -# 6.447 -# I2O device support 6.448 -# 6.449 -# CONFIG_I2O is not set 6.450 - 6.451 -# 6.452 -# Networking support 6.453 -# 6.454 -CONFIG_NET=y 6.455 - 6.456 -# 6.457 -# Networking options 6.458 -# 6.459 -CONFIG_PACKET=y 6.460 -# CONFIG_PACKET_MMAP is not set 6.461 -# CONFIG_NETLINK_DEV is not set 6.462 -CONFIG_UNIX=y 6.463 -# CONFIG_NET_KEY is not set 6.464 -CONFIG_INET=y 6.465 -# CONFIG_IP_MULTICAST is not set 6.466 -# CONFIG_IP_ADVANCED_ROUTER is not set 6.467 -CONFIG_IP_PNP=y 6.468 -CONFIG_IP_PNP_DHCP=y 6.469 -# CONFIG_IP_PNP_BOOTP is not set 6.470 -# CONFIG_IP_PNP_RARP is not set 6.471 -# CONFIG_NET_IPIP is not set 6.472 -# CONFIG_NET_IPGRE is not set 6.473 -# CONFIG_ARPD is not set 6.474 -# CONFIG_SYN_COOKIES is not set 6.475 -# CONFIG_INET_AH is not set 6.476 -# CONFIG_INET_ESP is not set 6.477 -# CONFIG_INET_IPCOMP is not set 6.478 -# CONFIG_INET_TUNNEL is not set 6.479 -CONFIG_IP_TCPDIAG=y 6.480 -# CONFIG_IP_TCPDIAG_IPV6 is not set 6.481 - 6.482 -# 6.483 -# IP: Virtual Server Configuration 6.484 -# 6.485 -# CONFIG_IP_VS is not set 6.486 -# CONFIG_IPV6 is not set 6.487 -CONFIG_NETFILTER=y 6.488 -# CONFIG_NETFILTER_DEBUG is not set 6.489 -CONFIG_BRIDGE_NETFILTER=y 6.490 - 6.491 -# 6.492 -# IP: Netfilter Configuration 6.493 -# 6.494 -CONFIG_IP_NF_CONNTRACK=m 6.495 -CONFIG_IP_NF_CT_ACCT=y 6.496 -# CONFIG_IP_NF_CONNTRACK_MARK is not set 6.497 -# CONFIG_IP_NF_CT_PROTO_SCTP is not set 6.498 -CONFIG_IP_NF_FTP=m 6.499 -# CONFIG_IP_NF_IRC is not set 6.500 -# CONFIG_IP_NF_TFTP is not set 6.501 -# CONFIG_IP_NF_AMANDA is not set 6.502 -# CONFIG_IP_NF_QUEUE is not set 6.503 -CONFIG_IP_NF_IPTABLES=m 6.504 -# CONFIG_IP_NF_MATCH_LIMIT is not set 6.505 -CONFIG_IP_NF_MATCH_IPRANGE=m 6.506 -# CONFIG_IP_NF_MATCH_MAC is not set 6.507 -# CONFIG_IP_NF_MATCH_PKTTYPE is not set 6.508 -# CONFIG_IP_NF_MATCH_MARK is not set 6.509 -# CONFIG_IP_NF_MATCH_MULTIPORT is not set 6.510 -# CONFIG_IP_NF_MATCH_TOS is not set 6.511 -# CONFIG_IP_NF_MATCH_RECENT is not set 6.512 -# CONFIG_IP_NF_MATCH_ECN is not set 6.513 -# CONFIG_IP_NF_MATCH_DSCP is not set 6.514 -# CONFIG_IP_NF_MATCH_AH_ESP is not set 6.515 -# CONFIG_IP_NF_MATCH_LENGTH is not set 6.516 -# CONFIG_IP_NF_MATCH_TTL is not set 6.517 -# CONFIG_IP_NF_MATCH_TCPMSS is not set 6.518 -# CONFIG_IP_NF_MATCH_HELPER is not set 6.519 -# CONFIG_IP_NF_MATCH_STATE is not set 6.520 -# CONFIG_IP_NF_MATCH_CONNTRACK is not set 6.521 -# CONFIG_IP_NF_MATCH_OWNER is not set 6.522 -# CONFIG_IP_NF_MATCH_PHYSDEV is not set 6.523 -# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 6.524 -# CONFIG_IP_NF_MATCH_REALM is not set 6.525 -# CONFIG_IP_NF_MATCH_SCTP is not set 6.526 -# CONFIG_IP_NF_MATCH_COMMENT is not set 6.527 -# CONFIG_IP_NF_MATCH_HASHLIMIT is not set 6.528 -CONFIG_IP_NF_FILTER=m 6.529 -CONFIG_IP_NF_TARGET_REJECT=m 6.530 -# CONFIG_IP_NF_TARGET_LOG is not set 6.531 -# CONFIG_IP_NF_TARGET_ULOG is not set 6.532 -# CONFIG_IP_NF_TARGET_TCPMSS is not set 6.533 -CONFIG_IP_NF_NAT=m 6.534 -CONFIG_IP_NF_NAT_NEEDED=y 6.535 -CONFIG_IP_NF_TARGET_MASQUERADE=m 6.536 -# CONFIG_IP_NF_TARGET_REDIRECT is not set 6.537 -# CONFIG_IP_NF_TARGET_NETMAP is not set 6.538 -# CONFIG_IP_NF_TARGET_SAME is not set 6.539 -# CONFIG_IP_NF_NAT_LOCAL is not set 6.540 -# CONFIG_IP_NF_NAT_SNMP_BASIC is not set 6.541 -CONFIG_IP_NF_NAT_FTP=m 6.542 -# CONFIG_IP_NF_MANGLE is not set 6.543 -# CONFIG_IP_NF_RAW is not set 6.544 -# CONFIG_IP_NF_ARPTABLES is not set 6.545 -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set 6.546 -# CONFIG_IP_NF_COMPAT_IPFWADM is not set 6.547 - 6.548 -# 6.549 -# Bridge: Netfilter Configuration 6.550 -# 6.551 -# CONFIG_BRIDGE_NF_EBTABLES is not set 6.552 - 6.553 -# 6.554 -# SCTP Configuration (EXPERIMENTAL) 6.555 -# 6.556 -# CONFIG_IP_SCTP is not set 6.557 -# CONFIG_ATM is not set 6.558 -CONFIG_BRIDGE=y 6.559 -# CONFIG_VLAN_8021Q is not set 6.560 -# CONFIG_DECNET is not set 6.561 -# CONFIG_LLC2 is not set 6.562 -# CONFIG_IPX is not set 6.563 -# CONFIG_ATALK is not set 6.564 -# CONFIG_X25 is not set 6.565 -# CONFIG_LAPB is not set 6.566 -# CONFIG_NET_DIVERT is not set 6.567 -# CONFIG_ECONET is not set 6.568 -# CONFIG_WAN_ROUTER is not set 6.569 - 6.570 -# 6.571 -# QoS and/or fair queueing 6.572 -# 6.573 -# CONFIG_NET_SCHED is not set 6.574 -# CONFIG_NET_CLS_ROUTE is not set 6.575 - 6.576 -# 6.577 -# Network testing 6.578 -# 6.579 -# CONFIG_NET_PKTGEN is not set 6.580 -# CONFIG_NETPOLL is not set 6.581 -# CONFIG_NET_POLL_CONTROLLER is not set 6.582 -# CONFIG_HAMRADIO is not set 6.583 -# CONFIG_IRDA is not set 6.584 -# CONFIG_BT is not set 6.585 -CONFIG_NETDEVICES=y 6.586 -# CONFIG_DUMMY is not set 6.587 -# CONFIG_BONDING is not set 6.588 -# CONFIG_EQUALIZER is not set 6.589 -# CONFIG_TUN is not set 6.590 - 6.591 -# 6.592 -# ARCnet devices 6.593 -# 6.594 -# CONFIG_ARCNET is not set 6.595 - 6.596 -# 6.597 -# Ethernet (10 or 100Mbit) 6.598 -# 6.599 -CONFIG_NET_ETHERNET=y 6.600 -CONFIG_MII=y 6.601 -# CONFIG_HAPPYMEAL is not set 6.602 -# CONFIG_SUNGEM is not set 6.603 -CONFIG_NET_VENDOR_3COM=y 6.604 -# CONFIG_EL1 is not set 6.605 -# CONFIG_EL2 is not set 6.606 -# CONFIG_ELPLUS is not set 6.607 -# CONFIG_EL16 is not set 6.608 -# CONFIG_EL3 is not set 6.609 -# CONFIG_3C515 is not set 6.610 -CONFIG_VORTEX=y 6.611 -# CONFIG_TYPHOON is not set 6.612 -# CONFIG_LANCE is not set 6.613 -# CONFIG_NET_VENDOR_SMC is not set 6.614 -# CONFIG_NET_VENDOR_RACAL is not set 6.615 - 6.616 -# 6.617 -# Tulip family network device support 6.618 -# 6.619 -CONFIG_NET_TULIP=y 6.620 -# CONFIG_DE2104X is not set 6.621 -CONFIG_TULIP=y 6.622 -# CONFIG_TULIP_MWI is not set 6.623 -# CONFIG_TULIP_MMIO is not set 6.624 -# CONFIG_TULIP_NAPI is not set 6.625 -# CONFIG_DE4X5 is not set 6.626 -# CONFIG_WINBOND_840 is not set 6.627 -# CONFIG_DM9102 is not set 6.628 -# CONFIG_AT1700 is not set 6.629 -# CONFIG_DEPCA is not set 6.630 -# CONFIG_HP100 is not set 6.631 -# CONFIG_NET_ISA is not set 6.632 -CONFIG_NET_PCI=y 6.633 -CONFIG_PCNET32=y 6.634 -# CONFIG_AMD8111_ETH is not set 6.635 -# CONFIG_ADAPTEC_STARFIRE is not set 6.636 -# CONFIG_AC3200 is not set 6.637 -# CONFIG_APRICOT is not set 6.638 -# CONFIG_B44 is not set 6.639 -# CONFIG_FORCEDETH is not set 6.640 -# CONFIG_CS89x0 is not set 6.641 -# CONFIG_DGRS is not set 6.642 -# CONFIG_EEPRO100 is not set 6.643 -CONFIG_E100=y 6.644 -# CONFIG_E100_NAPI is not set 6.645 -# CONFIG_FEALNX is not set 6.646 -# CONFIG_NATSEMI is not set 6.647 -CONFIG_NE2K_PCI=y 6.648 -# CONFIG_8139CP is not set 6.649 -CONFIG_8139TOO=y 6.650 -CONFIG_8139TOO_PIO=y 6.651 -# CONFIG_8139TOO_TUNE_TWISTER is not set 6.652 -# CONFIG_8139TOO_8129 is not set 6.653 -# CONFIG_8139_OLD_RX_RESET is not set 6.654 -# CONFIG_SIS900 is not set 6.655 -# CONFIG_EPIC100 is not set 6.656 -# CONFIG_SUNDANCE is not set 6.657 -# CONFIG_TLAN is not set 6.658 -CONFIG_VIA_RHINE=y 6.659 -# CONFIG_VIA_RHINE_MMIO is not set 6.660 -# CONFIG_NET_POCKET is not set 6.661 - 6.662 -# 6.663 -# Ethernet (1000 Mbit) 6.664 -# 6.665 -CONFIG_ACENIC=y 6.666 -# CONFIG_ACENIC_OMIT_TIGON_I is not set 6.667 -# CONFIG_DL2K is not set 6.668 -CONFIG_E1000=y 6.669 -# CONFIG_E1000_NAPI is not set 6.670 -# CONFIG_NS83820 is not set 6.671 -# CONFIG_HAMACHI is not set 6.672 -# CONFIG_YELLOWFIN is not set 6.673 -# CONFIG_R8169 is not set 6.674 -# CONFIG_SK98LIN is not set 6.675 -# CONFIG_VIA_VELOCITY is not set 6.676 -CONFIG_TIGON3=y 6.677 - 6.678 -# 6.679 -# Ethernet (10000 Mbit) 6.680 -# 6.681 -# CONFIG_IXGB is not set 6.682 -# CONFIG_S2IO is not set 6.683 - 6.684 -# 6.685 -# Token Ring devices 6.686 -# 6.687 -# CONFIG_TR is not set 6.688 - 6.689 -# 6.690 -# Wireless LAN (non-hamradio) 6.691 -# 6.692 -# CONFIG_NET_RADIO is not set 6.693 - 6.694 -# 6.695 -# Wan interfaces 6.696 -# 6.697 -# CONFIG_WAN is not set 6.698 -# CONFIG_FDDI is not set 6.699 -# CONFIG_HIPPI is not set 6.700 -# CONFIG_PPP is not set 6.701 -# CONFIG_SLIP is not set 6.702 -# CONFIG_NET_FC is not set 6.703 -# CONFIG_SHAPER is not set 6.704 -# CONFIG_NETCONSOLE is not set 6.705 - 6.706 -# 6.707 -# ISDN subsystem 6.708 -# 6.709 -# CONFIG_ISDN is not set 6.710 - 6.711 -# 6.712 -# Telephony Support 6.713 -# 6.714 -# CONFIG_PHONE is not set 6.715 - 6.716 -# 6.717 -# Input device support 6.718 -# 6.719 -CONFIG_INPUT=y 6.720 - 6.721 -# 6.722 -# Userland interfaces 6.723 -# 6.724 -CONFIG_INPUT_MOUSEDEV=y 6.725 -CONFIG_INPUT_MOUSEDEV_PSAUX=y 6.726 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 6.727 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 6.728 -# CONFIG_INPUT_JOYDEV is not set 6.729 -# CONFIG_INPUT_TSDEV is not set 6.730 -# CONFIG_INPUT_EVDEV is not set 6.731 -# CONFIG_INPUT_EVBUG is not set 6.732 - 6.733 -# 6.734 -# Input I/O drivers 6.735 -# 6.736 -# CONFIG_GAMEPORT is not set 6.737 -CONFIG_SOUND_GAMEPORT=y 6.738 -CONFIG_SERIO=y 6.739 -CONFIG_SERIO_I8042=y 6.740 -CONFIG_SERIO_SERPORT=y 6.741 -# CONFIG_SERIO_CT82C710 is not set 6.742 -# CONFIG_SERIO_PCIPS2 is not set 6.743 -# CONFIG_SERIO_RAW is not set 6.744 - 6.745 -# 6.746 -# Input Device Drivers 6.747 -# 6.748 -CONFIG_INPUT_KEYBOARD=y 6.749 -CONFIG_KEYBOARD_ATKBD=y 6.750 -# CONFIG_KEYBOARD_SUNKBD is not set 6.751 -# CONFIG_KEYBOARD_LKKBD is not set 6.752 -# CONFIG_KEYBOARD_XTKBD is not set 6.753 -# CONFIG_KEYBOARD_NEWTON is not set 6.754 -CONFIG_INPUT_MOUSE=y 6.755 -CONFIG_MOUSE_PS2=y 6.756 -# CONFIG_MOUSE_SERIAL is not set 6.757 -# CONFIG_MOUSE_INPORT is not set 6.758 -# CONFIG_MOUSE_LOGIBM is not set 6.759 -# CONFIG_MOUSE_PC110PAD is not set 6.760 -# CONFIG_MOUSE_VSXXXAA is not set 6.761 -# CONFIG_INPUT_JOYSTICK is not set 6.762 -# CONFIG_INPUT_TOUCHSCREEN is not set 6.763 -# CONFIG_INPUT_MISC is not set 6.764 - 6.765 -# 6.766 -# Character devices 6.767 -# 6.768 -CONFIG_VT=y 6.769 -CONFIG_VT_CONSOLE=y 6.770 -CONFIG_HW_CONSOLE=y 6.771 -# CONFIG_SERIAL_NONSTANDARD is not set 6.772 - 6.773 -# 6.774 -# Serial drivers 6.775 -# 6.776 -# CONFIG_SERIAL_8250 is not set 6.777 - 6.778 -# 6.779 -# Non-8250 serial port support 6.780 -# 6.781 -CONFIG_UNIX98_PTYS=y 6.782 -CONFIG_LEGACY_PTYS=y 6.783 -CONFIG_LEGACY_PTY_COUNT=256 6.784 - 6.785 -# 6.786 -# IPMI 6.787 -# 6.788 -# CONFIG_IPMI_HANDLER is not set 6.789 - 6.790 -# 6.791 -# Watchdog Cards 6.792 -# 6.793 -# CONFIG_WATCHDOG is not set 6.794 -# CONFIG_HW_RANDOM is not set 6.795 -# CONFIG_NVRAM is not set 6.796 -# CONFIG_RTC is not set 6.797 -# CONFIG_GEN_RTC is not set 6.798 -# CONFIG_DTLK is not set 6.799 -# CONFIG_R3964 is not set 6.800 -# CONFIG_APPLICOM is not set 6.801 -# CONFIG_SONYPI is not set 6.802 - 6.803 -# 6.804 -# Ftape, the floppy tape device driver 6.805 -# 6.806 -# CONFIG_FTAPE is not set 6.807 -CONFIG_AGP=m 6.808 -CONFIG_AGP_ALI=m 6.809 -CONFIG_AGP_ATI=m 6.810 -CONFIG_AGP_AMD=m 6.811 -CONFIG_AGP_AMD64=m 6.812 -CONFIG_AGP_INTEL=m 6.813 -CONFIG_AGP_INTEL_MCH=m 6.814 -CONFIG_AGP_NVIDIA=m 6.815 -CONFIG_AGP_SIS=m 6.816 -CONFIG_AGP_SWORKS=m 6.817 -CONFIG_AGP_VIA=m 6.818 -# CONFIG_AGP_EFFICEON is not set 6.819 -CONFIG_DRM=y 6.820 -CONFIG_DRM_TDFX=m 6.821 -# CONFIG_DRM_GAMMA is not set 6.822 -CONFIG_DRM_R128=m 6.823 -CONFIG_DRM_RADEON=m 6.824 -CONFIG_DRM_I810=m 6.825 -CONFIG_DRM_I830=m 6.826 -CONFIG_DRM_I915=m 6.827 -CONFIG_DRM_MGA=m 6.828 -CONFIG_DRM_SIS=m 6.829 -# CONFIG_MWAVE is not set 6.830 -# CONFIG_RAW_DRIVER is not set 6.831 -# CONFIG_HANGCHECK_TIMER is not set 6.832 - 6.833 -# 6.834 -# I2C support 6.835 -# 6.836 -# CONFIG_I2C is not set 6.837 - 6.838 -# 6.839 -# Dallas's 1-wire bus 6.840 -# 6.841 -# CONFIG_W1 is not set 6.842 - 6.843 -# 6.844 -# Misc devices 6.845 -# 6.846 -# CONFIG_IBM_ASM is not set 6.847 - 6.848 -# 6.849 -# Multimedia devices 6.850 -# 6.851 -# CONFIG_VIDEO_DEV is not set 6.852 - 6.853 -# 6.854 -# Digital Video Broadcasting Devices 6.855 -# 6.856 -# CONFIG_DVB is not set 6.857 - 6.858 -# 6.859 -# Graphics support 6.860 -# 6.861 -# CONFIG_FB is not set 6.862 -# CONFIG_VIDEO_SELECT is not set 6.863 - 6.864 -# 6.865 -# Console display driver support 6.866 -# 6.867 -CONFIG_VGA_CONSOLE=y 6.868 -# CONFIG_MDA_CONSOLE is not set 6.869 -CONFIG_DUMMY_CONSOLE=y 6.870 - 6.871 -# 6.872 -# Sound 6.873 -# 6.874 -# CONFIG_SOUND is not set 6.875 - 6.876 -# 6.877 -# USB support 6.878 -# 6.879 -# CONFIG_USB is not set 6.880 -CONFIG_USB_ARCH_HAS_HCD=y 6.881 -CONFIG_USB_ARCH_HAS_OHCI=y 6.882 - 6.883 -# 6.884 -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 6.885 -# 6.886 - 6.887 -# 6.888 -# USB Gadget Support 6.889 -# 6.890 -# CONFIG_USB_GADGET is not set 6.891 - 6.892 -# 6.893 -# File systems 6.894 -# 6.895 -CONFIG_EXT2_FS=y 6.896 -# CONFIG_EXT2_FS_XATTR is not set 6.897 -CONFIG_EXT3_FS=y 6.898 -CONFIG_EXT3_FS_XATTR=y 6.899 -# CONFIG_EXT3_FS_POSIX_ACL is not set 6.900 -# CONFIG_EXT3_FS_SECURITY is not set 6.901 -CONFIG_JBD=y 6.902 -# CONFIG_JBD_DEBUG is not set 6.903 -CONFIG_FS_MBCACHE=y 6.904 -CONFIG_REISERFS_FS=y 6.905 -# CONFIG_REISERFS_CHECK is not set 6.906 -# CONFIG_REISERFS_PROC_INFO is not set 6.907 -# CONFIG_REISERFS_FS_XATTR is not set 6.908 -# CONFIG_JFS_FS is not set 6.909 -# CONFIG_XFS_FS is not set 6.910 -# CONFIG_MINIX_FS is not set 6.911 -# CONFIG_ROMFS_FS is not set 6.912 -# CONFIG_QUOTA is not set 6.913 -CONFIG_DNOTIFY=y 6.914 -# CONFIG_AUTOFS_FS is not set 6.915 -# CONFIG_AUTOFS4_FS is not set 6.916 - 6.917 -# 6.918 -# CD-ROM/DVD Filesystems 6.919 -# 6.920 -CONFIG_ISO9660_FS=y 6.921 -CONFIG_JOLIET=y 6.922 -CONFIG_ZISOFS=y 6.923 -CONFIG_ZISOFS_FS=y 6.924 -# CONFIG_UDF_FS is not set 6.925 - 6.926 -# 6.927 -# DOS/FAT/NT Filesystems 6.928 -# 6.929 -CONFIG_FAT_FS=m 6.930 -CONFIG_MSDOS_FS=m 6.931 -CONFIG_VFAT_FS=m 6.932 -CONFIG_FAT_DEFAULT_CODEPAGE=437 6.933 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 6.934 -# CONFIG_NTFS_FS is not set 6.935 - 6.936 -# 6.937 -# Pseudo filesystems 6.938 -# 6.939 -CONFIG_PROC_FS=y 6.940 -CONFIG_PROC_KCORE=y 6.941 -CONFIG_SYSFS=y 6.942 -# CONFIG_DEVFS_FS is not set 6.943 -# CONFIG_DEVPTS_FS_XATTR is not set 6.944 -CONFIG_TMPFS=y 6.945 -# CONFIG_TMPFS_XATTR is not set 6.946 -# CONFIG_HUGETLBFS is not set 6.947 -# CONFIG_HUGETLB_PAGE is not set 6.948 -CONFIG_RAMFS=y 6.949 - 6.950 -# 6.951 -# Miscellaneous filesystems 6.952 -# 6.953 -# CONFIG_ADFS_FS is not set 6.954 -# CONFIG_AFFS_FS is not set 6.955 -# CONFIG_HFS_FS is not set 6.956 -# CONFIG_HFSPLUS_FS is not set 6.957 -# CONFIG_BEFS_FS is not set 6.958 -# CONFIG_BFS_FS is not set 6.959 -# CONFIG_EFS_FS is not set 6.960 -# CONFIG_CRAMFS is not set 6.961 -# CONFIG_VXFS_FS is not set 6.962 -# CONFIG_HPFS_FS is not set 6.963 -# CONFIG_QNX4FS_FS is not set 6.964 -# CONFIG_SYSV_FS is not set 6.965 -# CONFIG_UFS_FS is not set 6.966 - 6.967 -# 6.968 -# Network File Systems 6.969 -# 6.970 -CONFIG_NFS_FS=y 6.971 -CONFIG_NFS_V3=y 6.972 -# CONFIG_NFS_V4 is not set 6.973 -# CONFIG_NFS_DIRECTIO is not set 6.974 -CONFIG_NFSD=m 6.975 -CONFIG_NFSD_V3=y 6.976 -# CONFIG_NFSD_V4 is not set 6.977 -CONFIG_NFSD_TCP=y 6.978 -CONFIG_ROOT_NFS=y 6.979 -CONFIG_LOCKD=y 6.980 -CONFIG_LOCKD_V4=y 6.981 -CONFIG_EXPORTFS=m 6.982 -CONFIG_SUNRPC=y 6.983 -# CONFIG_RPCSEC_GSS_KRB5 is not set 6.984 -# CONFIG_RPCSEC_GSS_SPKM3 is not set 6.985 -# CONFIG_SMB_FS is not set 6.986 -# CONFIG_CIFS is not set 6.987 -# CONFIG_NCP_FS is not set 6.988 -# CONFIG_CODA_FS is not set 6.989 -# CONFIG_AFS_FS is not set 6.990 - 6.991 -# 6.992 -# Partition Types 6.993 -# 6.994 -# CONFIG_PARTITION_ADVANCED is not set 6.995 -CONFIG_MSDOS_PARTITION=y 6.996 - 6.997 -# 6.998 -# Native Language Support 6.999 -# 6.1000 -CONFIG_NLS=y 6.1001 -CONFIG_NLS_DEFAULT="iso8859-1" 6.1002 -CONFIG_NLS_CODEPAGE_437=y 6.1003 -# CONFIG_NLS_CODEPAGE_737 is not set 6.1004 -# CONFIG_NLS_CODEPAGE_775 is not set 6.1005 -# CONFIG_NLS_CODEPAGE_850 is not set 6.1006 -# CONFIG_NLS_CODEPAGE_852 is not set 6.1007 -# CONFIG_NLS_CODEPAGE_855 is not set 6.1008 -# CONFIG_NLS_CODEPAGE_857 is not set 6.1009 -# CONFIG_NLS_CODEPAGE_860 is not set 6.1010 -# CONFIG_NLS_CODEPAGE_861 is not set 6.1011 -# CONFIG_NLS_CODEPAGE_862 is not set 6.1012 -# CONFIG_NLS_CODEPAGE_863 is not set 6.1013 -# CONFIG_NLS_CODEPAGE_864 is not set 6.1014 -# CONFIG_NLS_CODEPAGE_865 is not set 6.1015 -# CONFIG_NLS_CODEPAGE_866 is not set 6.1016 -# CONFIG_NLS_CODEPAGE_869 is not set 6.1017 -# CONFIG_NLS_CODEPAGE_936 is not set 6.1018 -# CONFIG_NLS_CODEPAGE_950 is not set 6.1019 -# CONFIG_NLS_CODEPAGE_932 is not set 6.1020 -# CONFIG_NLS_CODEPAGE_949 is not set 6.1021 -# CONFIG_NLS_CODEPAGE_874 is not set 6.1022 -# CONFIG_NLS_ISO8859_8 is not set 6.1023 -# CONFIG_NLS_CODEPAGE_1250 is not set 6.1024 -# CONFIG_NLS_CODEPAGE_1251 is not set 6.1025 -# CONFIG_NLS_ASCII is not set 6.1026 -CONFIG_NLS_ISO8859_1=y 6.1027 -# CONFIG_NLS_ISO8859_2 is not set 6.1028 -# CONFIG_NLS_ISO8859_3 is not set 6.1029 -# CONFIG_NLS_ISO8859_4 is not set 6.1030 -# CONFIG_NLS_ISO8859_5 is not set 6.1031 -# CONFIG_NLS_ISO8859_6 is not set 6.1032 -# CONFIG_NLS_ISO8859_7 is not set 6.1033 -# CONFIG_NLS_ISO8859_9 is not set 6.1034 -# CONFIG_NLS_ISO8859_13 is not set 6.1035 -# CONFIG_NLS_ISO8859_14 is not set 6.1036 -# CONFIG_NLS_ISO8859_15 is not set 6.1037 -# CONFIG_NLS_KOI8_R is not set 6.1038 -# CONFIG_NLS_KOI8_U is not set 6.1039 -# CONFIG_NLS_UTF8 is not set 6.1040 - 6.1041 -# 6.1042 -# Security options 6.1043 -# 6.1044 -# CONFIG_KEYS is not set 6.1045 -# CONFIG_SECURITY is not set 6.1046 - 6.1047 -# 6.1048 -# Cryptographic options 6.1049 -# 6.1050 -CONFIG_CRYPTO=y 6.1051 -CONFIG_CRYPTO_HMAC=y 6.1052 -# CONFIG_CRYPTO_NULL is not set 6.1053 -# CONFIG_CRYPTO_MD4 is not set 6.1054 -CONFIG_CRYPTO_MD5=m 6.1055 -CONFIG_CRYPTO_SHA1=m 6.1056 -# CONFIG_CRYPTO_SHA256 is not set 6.1057 -# CONFIG_CRYPTO_SHA512 is not set 6.1058 -# CONFIG_CRYPTO_WP512 is not set 6.1059 -CONFIG_CRYPTO_DES=m 6.1060 -# CONFIG_CRYPTO_BLOWFISH is not set 6.1061 -# CONFIG_CRYPTO_TWOFISH is not set 6.1062 -# CONFIG_CRYPTO_SERPENT is not set 6.1063 -# CONFIG_CRYPTO_AES_586 is not set 6.1064 -# CONFIG_CRYPTO_CAST5 is not set 6.1065 -# CONFIG_CRYPTO_CAST6 is not set 6.1066 -# CONFIG_CRYPTO_TEA is not set 6.1067 -# CONFIG_CRYPTO_ARC4 is not set 6.1068 -# CONFIG_CRYPTO_KHAZAD is not set 6.1069 -# CONFIG_CRYPTO_ANUBIS is not set 6.1070 -# CONFIG_CRYPTO_DEFLATE is not set 6.1071 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 6.1072 -CONFIG_CRYPTO_CRC32C=m 6.1073 -# CONFIG_CRYPTO_TEST is not set 6.1074 - 6.1075 -# 6.1076 -# Library routines 6.1077 -# 6.1078 -# CONFIG_CRC_CCITT is not set 6.1079 -CONFIG_CRC32=y 6.1080 -CONFIG_LIBCRC32C=y 6.1081 -CONFIG_ZLIB_INFLATE=y
7.1 --- a/linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig Thu Mar 10 18:09:19 2005 +0000 7.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 7.3 @@ -1,512 +0,0 @@ 7.4 -# 7.5 -# Automatically generated make config: don't edit 7.6 -# Linux kernel version: 2.6.10-rc3-xenU 7.7 -# Sun Dec 26 10:35:15 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_M386 is not set 7.85 -# CONFIG_M486 is not set 7.86 -# CONFIG_M586 is not set 7.87 -# CONFIG_M586TSC is not set 7.88 -# CONFIG_M586MMX is not set 7.89 -# CONFIG_M686 is not set 7.90 -# CONFIG_MPENTIUMII is not set 7.91 -# CONFIG_MPENTIUMIII is not set 7.92 -# CONFIG_MPENTIUMM is not set 7.93 -CONFIG_MPENTIUM4=y 7.94 -# CONFIG_MK6 is not set 7.95 -# CONFIG_MK7 is not set 7.96 -# CONFIG_MK8 is not set 7.97 -# CONFIG_MCRUSOE is not set 7.98 -# CONFIG_MEFFICEON is not set 7.99 -# CONFIG_MWINCHIPC6 is not set 7.100 -# CONFIG_MWINCHIP2 is not set 7.101 -# CONFIG_MWINCHIP3D is not set 7.102 -# CONFIG_MCYRIXIII is not set 7.103 -# CONFIG_MVIAC3_2 is not set 7.104 -# CONFIG_X86_GENERIC is not set 7.105 -CONFIG_X86_CMPXCHG=y 7.106 -CONFIG_X86_XADD=y 7.107 -CONFIG_X86_L1_CACHE_SHIFT=7 7.108 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 7.109 -CONFIG_X86_WP_WORKS_OK=y 7.110 -CONFIG_X86_INVLPG=y 7.111 -CONFIG_X86_BSWAP=y 7.112 -CONFIG_X86_POPAD_OK=y 7.113 -CONFIG_X86_GOOD_APIC=y 7.114 -CONFIG_X86_INTEL_USERCOPY=y 7.115 -CONFIG_X86_USE_PPRO_CHECKSUM=y 7.116 -# CONFIG_HPET_TIMER is not set 7.117 -# CONFIG_HPET_EMULATE_RTC is not set 7.118 -# CONFIG_SMP is not set 7.119 -CONFIG_PREEMPT=y 7.120 -CONFIG_X86_CPUID=y 7.121 - 7.122 -# 7.123 -# Firmware Drivers 7.124 -# 7.125 -# CONFIG_EDD is not set 7.126 -CONFIG_NOHIGHMEM=y 7.127 -# CONFIG_HIGHMEM4G is not set 7.128 -CONFIG_HAVE_DEC_LOCK=y 7.129 -# CONFIG_REGPARM is not set 7.130 - 7.131 -# 7.132 -# Kernel hacking 7.133 -# 7.134 -# CONFIG_DEBUG_KERNEL is not set 7.135 -CONFIG_EARLY_PRINTK=y 7.136 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 7.137 -# CONFIG_FRAME_POINTER is not set 7.138 -# CONFIG_4KSTACKS is not set 7.139 -CONFIG_GENERIC_HARDIRQS=y 7.140 -CONFIG_GENERIC_IRQ_PROBE=y 7.141 -CONFIG_X86_BIOS_REBOOT=y 7.142 -CONFIG_PC=y 7.143 - 7.144 -# 7.145 -# Executable file formats 7.146 -# 7.147 -CONFIG_BINFMT_ELF=y 7.148 -# CONFIG_BINFMT_AOUT is not set 7.149 -# CONFIG_BINFMT_MISC is not set 7.150 - 7.151 -# 7.152 -# Device Drivers 7.153 -# 7.154 - 7.155 -# 7.156 -# Generic Driver Options 7.157 -# 7.158 -CONFIG_STANDALONE=y 7.159 -CONFIG_PREVENT_FIRMWARE_BUILD=y 7.160 -# CONFIG_FW_LOADER is not set 7.161 -# CONFIG_DEBUG_DRIVER is not set 7.162 - 7.163 -# 7.164 -# Block devices 7.165 -# 7.166 -# CONFIG_BLK_DEV_FD is not set 7.167 -CONFIG_BLK_DEV_LOOP=m 7.168 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 7.169 -CONFIG_BLK_DEV_NBD=m 7.170 -CONFIG_BLK_DEV_RAM=y 7.171 -CONFIG_BLK_DEV_RAM_COUNT=16 7.172 -CONFIG_BLK_DEV_RAM_SIZE=4096 7.173 -CONFIG_BLK_DEV_INITRD=y 7.174 -CONFIG_INITRAMFS_SOURCE="" 7.175 -# CONFIG_LBD is not set 7.176 -# CONFIG_CDROM_PKTCDVD is not set 7.177 - 7.178 -# 7.179 -# IO Schedulers 7.180 -# 7.181 -CONFIG_IOSCHED_NOOP=y 7.182 -CONFIG_IOSCHED_AS=y 7.183 -CONFIG_IOSCHED_DEADLINE=y 7.184 -CONFIG_IOSCHED_CFQ=y 7.185 - 7.186 -# 7.187 -# SCSI device support 7.188 -# 7.189 -CONFIG_SCSI=m 7.190 -CONFIG_SCSI_PROC_FS=y 7.191 - 7.192 -# 7.193 -# SCSI support type (disk, tape, CD-ROM) 7.194 -# 7.195 -CONFIG_BLK_DEV_SD=m 7.196 -# CONFIG_CHR_DEV_ST is not set 7.197 -# CONFIG_CHR_DEV_OSST is not set 7.198 -# CONFIG_BLK_DEV_SR is not set 7.199 -# CONFIG_CHR_DEV_SG is not set 7.200 - 7.201 -# 7.202 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 7.203 -# 7.204 -# CONFIG_SCSI_MULTI_LUN is not set 7.205 -# CONFIG_SCSI_CONSTANTS is not set 7.206 -# CONFIG_SCSI_LOGGING is not set 7.207 - 7.208 -# 7.209 -# SCSI Transport Attributes 7.210 -# 7.211 -# CONFIG_SCSI_SPI_ATTRS is not set 7.212 -# CONFIG_SCSI_FC_ATTRS is not set 7.213 - 7.214 -# 7.215 -# SCSI low-level drivers 7.216 -# 7.217 -# CONFIG_SCSI_SATA is not set 7.218 -# CONFIG_SCSI_DEBUG is not set 7.219 - 7.220 -# 7.221 -# Multi-device support (RAID and LVM) 7.222 -# 7.223 -# CONFIG_MD is not set 7.224 - 7.225 -# 7.226 -# Networking support 7.227 -# 7.228 -CONFIG_NET=y 7.229 - 7.230 -# 7.231 -# Networking options 7.232 -# 7.233 -CONFIG_PACKET=y 7.234 -# CONFIG_PACKET_MMAP is not set 7.235 -# CONFIG_NETLINK_DEV is not set 7.236 -CONFIG_UNIX=y 7.237 -# CONFIG_NET_KEY is not set 7.238 -CONFIG_INET=y 7.239 -# CONFIG_IP_MULTICAST is not set 7.240 -# CONFIG_IP_ADVANCED_ROUTER is not set 7.241 -CONFIG_IP_PNP=y 7.242 -# CONFIG_IP_PNP_DHCP is not set 7.243 -# CONFIG_IP_PNP_BOOTP is not set 7.244 -# CONFIG_IP_PNP_RARP is not set 7.245 -# CONFIG_NET_IPIP is not set 7.246 -# CONFIG_NET_IPGRE is not set 7.247 -# CONFIG_ARPD is not set 7.248 -# CONFIG_SYN_COOKIES is not set 7.249 -# CONFIG_INET_AH is not set 7.250 -# CONFIG_INET_ESP is not set 7.251 -# CONFIG_INET_IPCOMP is not set 7.252 -# CONFIG_INET_TUNNEL is not set 7.253 -CONFIG_IP_TCPDIAG=y 7.254 -# CONFIG_IP_TCPDIAG_IPV6 is not set 7.255 -# CONFIG_IPV6 is not set 7.256 -# CONFIG_NETFILTER is not set 7.257 - 7.258 -# 7.259 -# SCTP Configuration (EXPERIMENTAL) 7.260 -# 7.261 -# CONFIG_IP_SCTP is not set 7.262 -# CONFIG_ATM is not set 7.263 -# CONFIG_BRIDGE is not set 7.264 -# CONFIG_VLAN_8021Q is not set 7.265 -# CONFIG_DECNET is not set 7.266 -# CONFIG_LLC2 is not set 7.267 -# CONFIG_IPX is not set 7.268 -# CONFIG_ATALK is not set 7.269 -# CONFIG_X25 is not set 7.270 -# CONFIG_LAPB is not set 7.271 -# CONFIG_NET_DIVERT is not set 7.272 -# CONFIG_ECONET is not set 7.273 -# CONFIG_WAN_ROUTER is not set 7.274 - 7.275 -# 7.276 -# QoS and/or fair queueing 7.277 -# 7.278 -# CONFIG_NET_SCHED is not set 7.279 -# CONFIG_NET_CLS_ROUTE is not set 7.280 - 7.281 -# 7.282 -# Network testing 7.283 -# 7.284 -# CONFIG_NET_PKTGEN is not set 7.285 -# CONFIG_NETPOLL is not set 7.286 -# CONFIG_NET_POLL_CONTROLLER is not set 7.287 -# CONFIG_HAMRADIO is not set 7.288 -# CONFIG_IRDA is not set 7.289 -# CONFIG_BT is not set 7.290 -CONFIG_NETDEVICES=y 7.291 -# CONFIG_DUMMY is not set 7.292 -# CONFIG_BONDING is not set 7.293 -# CONFIG_EQUALIZER is not set 7.294 -# CONFIG_TUN is not set 7.295 - 7.296 -# 7.297 -# Ethernet (10 or 100Mbit) 7.298 -# 7.299 -# CONFIG_NET_ETHERNET is not set 7.300 - 7.301 -# 7.302 -# Ethernet (1000 Mbit) 7.303 -# 7.304 - 7.305 -# 7.306 -# Ethernet (10000 Mbit) 7.307 -# 7.308 - 7.309 -# 7.310 -# Token Ring devices 7.311 -# 7.312 - 7.313 -# 7.314 -# Wireless LAN (non-hamradio) 7.315 -# 7.316 -# CONFIG_NET_RADIO is not set 7.317 - 7.318 -# 7.319 -# Wan interfaces 7.320 -# 7.321 -# CONFIG_WAN is not set 7.322 -# CONFIG_PPP is not set 7.323 -# CONFIG_SLIP is not set 7.324 -# CONFIG_SHAPER is not set 7.325 -# CONFIG_NETCONSOLE is not set 7.326 -CONFIG_UNIX98_PTYS=y 7.327 - 7.328 -# 7.329 -# File systems 7.330 -# 7.331 -CONFIG_EXT2_FS=y 7.332 -# CONFIG_EXT2_FS_XATTR is not set 7.333 -CONFIG_EXT3_FS=y 7.334 -CONFIG_EXT3_FS_XATTR=y 7.335 -# CONFIG_EXT3_FS_POSIX_ACL is not set 7.336 -# CONFIG_EXT3_FS_SECURITY is not set 7.337 -CONFIG_JBD=y 7.338 -# CONFIG_JBD_DEBUG is not set 7.339 -CONFIG_FS_MBCACHE=y 7.340 -CONFIG_REISERFS_FS=y 7.341 -# CONFIG_REISERFS_CHECK is not set 7.342 -# CONFIG_REISERFS_PROC_INFO is not set 7.343 -# CONFIG_REISERFS_FS_XATTR is not set 7.344 -# CONFIG_JFS_FS is not set 7.345 -# CONFIG_XFS_FS is not set 7.346 -# CONFIG_MINIX_FS is not set 7.347 -# CONFIG_ROMFS_FS is not set 7.348 -# CONFIG_QUOTA is not set 7.349 -CONFIG_DNOTIFY=y 7.350 -CONFIG_AUTOFS_FS=y 7.351 -CONFIG_AUTOFS4_FS=y 7.352 - 7.353 -# 7.354 -# CD-ROM/DVD Filesystems 7.355 -# 7.356 -CONFIG_ISO9660_FS=y 7.357 -CONFIG_JOLIET=y 7.358 -CONFIG_ZISOFS=y 7.359 -CONFIG_ZISOFS_FS=y 7.360 -# CONFIG_UDF_FS is not set 7.361 - 7.362 -# 7.363 -# DOS/FAT/NT Filesystems 7.364 -# 7.365 -CONFIG_FAT_FS=m 7.366 -CONFIG_MSDOS_FS=m 7.367 -CONFIG_VFAT_FS=m 7.368 -CONFIG_FAT_DEFAULT_CODEPAGE=437 7.369 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 7.370 -# CONFIG_NTFS_FS is not set 7.371 - 7.372 -# 7.373 -# Pseudo filesystems 7.374 -# 7.375 -CONFIG_PROC_FS=y 7.376 -CONFIG_PROC_KCORE=y 7.377 -CONFIG_SYSFS=y 7.378 -# CONFIG_DEVFS_FS is not set 7.379 -CONFIG_DEVPTS_FS_XATTR=y 7.380 -# CONFIG_DEVPTS_FS_SECURITY is not set 7.381 -CONFIG_TMPFS=y 7.382 -# CONFIG_TMPFS_XATTR is not set 7.383 -# CONFIG_HUGETLBFS is not set 7.384 -# CONFIG_HUGETLB_PAGE is not set 7.385 -CONFIG_RAMFS=y 7.386 - 7.387 -# 7.388 -# Miscellaneous filesystems 7.389 -# 7.390 -# CONFIG_ADFS_FS is not set 7.391 -# CONFIG_AFFS_FS is not set 7.392 -# CONFIG_HFS_FS is not set 7.393 -# CONFIG_HFSPLUS_FS is not set 7.394 -# CONFIG_BEFS_FS is not set 7.395 -# CONFIG_BFS_FS is not set 7.396 -# CONFIG_EFS_FS is not set 7.397 -# CONFIG_CRAMFS is not set 7.398 -# CONFIG_VXFS_FS is not set 7.399 -# CONFIG_HPFS_FS is not set 7.400 -# CONFIG_QNX4FS_FS is not set 7.401 -# CONFIG_SYSV_FS is not set 7.402 -# CONFIG_UFS_FS is not set 7.403 - 7.404 -# 7.405 -# Network File Systems 7.406 -# 7.407 -CONFIG_NFS_FS=y 7.408 -CONFIG_NFS_V3=y 7.409 -# CONFIG_NFS_V4 is not set 7.410 -# CONFIG_NFS_DIRECTIO is not set 7.411 -# CONFIG_NFSD is not set 7.412 -CONFIG_ROOT_NFS=y 7.413 -CONFIG_LOCKD=y 7.414 -CONFIG_LOCKD_V4=y 7.415 -# CONFIG_EXPORTFS is not set 7.416 -CONFIG_SUNRPC=y 7.417 -# CONFIG_RPCSEC_GSS_KRB5 is not set 7.418 -# CONFIG_RPCSEC_GSS_SPKM3 is not set 7.419 -# CONFIG_SMB_FS is not set 7.420 -# CONFIG_CIFS is not set 7.421 -# CONFIG_NCP_FS is not set 7.422 -# CONFIG_CODA_FS is not set 7.423 -# CONFIG_AFS_FS is not set 7.424 - 7.425 -# 7.426 -# Partition Types 7.427 -# 7.428 -# CONFIG_PARTITION_ADVANCED is not set 7.429 -CONFIG_MSDOS_PARTITION=y 7.430 - 7.431 -# 7.432 -# Native Language Support 7.433 -# 7.434 -CONFIG_NLS=y 7.435 -CONFIG_NLS_DEFAULT="iso8859-1" 7.436 -CONFIG_NLS_CODEPAGE_437=y 7.437 -# CONFIG_NLS_CODEPAGE_737 is not set 7.438 -# CONFIG_NLS_CODEPAGE_775 is not set 7.439 -# CONFIG_NLS_CODEPAGE_850 is not set 7.440 -# CONFIG_NLS_CODEPAGE_852 is not set 7.441 -# CONFIG_NLS_CODEPAGE_855 is not set 7.442 -# CONFIG_NLS_CODEPAGE_857 is not set 7.443 -# CONFIG_NLS_CODEPAGE_860 is not set 7.444 -# CONFIG_NLS_CODEPAGE_861 is not set 7.445 -# CONFIG_NLS_CODEPAGE_862 is not set 7.446 -# CONFIG_NLS_CODEPAGE_863 is not set 7.447 -# CONFIG_NLS_CODEPAGE_864 is not set 7.448 -# CONFIG_NLS_CODEPAGE_865 is not set 7.449 -# CONFIG_NLS_CODEPAGE_866 is not set 7.450 -# CONFIG_NLS_CODEPAGE_869 is not set 7.451 -# CONFIG_NLS_CODEPAGE_936 is not set 7.452 -# CONFIG_NLS_CODEPAGE_950 is not set 7.453 -# CONFIG_NLS_CODEPAGE_932 is not set 7.454 -# CONFIG_NLS_CODEPAGE_949 is not set 7.455 -# CONFIG_NLS_CODEPAGE_874 is not set 7.456 -# CONFIG_NLS_ISO8859_8 is not set 7.457 -# CONFIG_NLS_CODEPAGE_1250 is not set 7.458 -# CONFIG_NLS_CODEPAGE_1251 is not set 7.459 -# CONFIG_NLS_ASCII is not set 7.460 -CONFIG_NLS_ISO8859_1=y 7.461 -# CONFIG_NLS_ISO8859_2 is not set 7.462 -# CONFIG_NLS_ISO8859_3 is not set 7.463 -# CONFIG_NLS_ISO8859_4 is not set 7.464 -# CONFIG_NLS_ISO8859_5 is not set 7.465 -# CONFIG_NLS_ISO8859_6 is not set 7.466 -# CONFIG_NLS_ISO8859_7 is not set 7.467 -# CONFIG_NLS_ISO8859_9 is not set 7.468 -# CONFIG_NLS_ISO8859_13 is not set 7.469 -# CONFIG_NLS_ISO8859_14 is not set 7.470 -# CONFIG_NLS_ISO8859_15 is not set 7.471 -# CONFIG_NLS_KOI8_R is not set 7.472 -# CONFIG_NLS_KOI8_U is not set 7.473 -# CONFIG_NLS_UTF8 is not set 7.474 - 7.475 -# 7.476 -# Security options 7.477 -# 7.478 -# CONFIG_KEYS is not set 7.479 -# CONFIG_SECURITY is not set 7.480 - 7.481 -# 7.482 -# Cryptographic options 7.483 -# 7.484 -CONFIG_CRYPTO=y 7.485 -# CONFIG_CRYPTO_HMAC is not set 7.486 -# CONFIG_CRYPTO_NULL is not set 7.487 -# CONFIG_CRYPTO_MD4 is not set 7.488 -CONFIG_CRYPTO_MD5=m 7.489 -# CONFIG_CRYPTO_SHA1 is not set 7.490 -# CONFIG_CRYPTO_SHA256 is not set 7.491 -# CONFIG_CRYPTO_SHA512 is not set 7.492 -# CONFIG_CRYPTO_WP512 is not set 7.493 -# CONFIG_CRYPTO_DES is not set 7.494 -# CONFIG_CRYPTO_BLOWFISH is not set 7.495 -# CONFIG_CRYPTO_TWOFISH is not set 7.496 -# CONFIG_CRYPTO_SERPENT is not set 7.497 -# CONFIG_CRYPTO_AES_586 is not set 7.498 -# CONFIG_CRYPTO_CAST5 is not set 7.499 -# CONFIG_CRYPTO_CAST6 is not set 7.500 -# CONFIG_CRYPTO_TEA is not set 7.501 -# CONFIG_CRYPTO_ARC4 is not set 7.502 -# CONFIG_CRYPTO_KHAZAD is not set 7.503 -# CONFIG_CRYPTO_ANUBIS is not set 7.504 -# CONFIG_CRYPTO_DEFLATE is not set 7.505 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 7.506 -CONFIG_CRYPTO_CRC32C=m 7.507 -# CONFIG_CRYPTO_TEST is not set 7.508 - 7.509 -# 7.510 -# Library routines 7.511 -# 7.512 -# CONFIG_CRC_CCITT is not set 7.513 -# CONFIG_CRC32 is not set 7.514 -CONFIG_LIBCRC32C=m 7.515 -CONFIG_ZLIB_INFLATE=y
8.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/Kconfig Thu Mar 10 18:09:19 2005 +0000 8.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 8.3 @@ -1,957 +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 Cyrix 5x86, 6x86 and 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 - depends on XEN_PRIVILEGED_GUEST 8.449 - ---help--- 8.450 - If you say Y here and also to "/dev file system support" in the 8.451 - 'File systems' section, you will be able to update the microcode on 8.452 - Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II, 8.453 - Pentium III, Pentium 4, Xeon etc. You will obviously need the 8.454 - actual microcode binary data itself which is not shipped with the 8.455 - Linux kernel. 8.456 - 8.457 - For latest news and information on obtaining all the required 8.458 - ingredients for this driver, check: 8.459 - <http://www.urbanmyth.org/microcode/>. 8.460 - 8.461 - To compile this driver as a module, choose M here: the 8.462 - module will be called microcode. 8.463 - 8.464 -#config X86_MSR 8.465 -# tristate "/dev/cpu/*/msr - Model-specific register support" 8.466 -# help 8.467 -# This device gives privileged processes access to the x86 8.468 -# Model-Specific Registers (MSRs). It is a character device with 8.469 -# major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. 8.470 -# MSR accesses are directed to a specific CPU on multi-processor 8.471 -# systems. 8.472 - 8.473 -config X86_CPUID 8.474 - tristate "/dev/cpu/*/cpuid - CPU information support" 8.475 - help 8.476 - This device gives processes access to the x86 CPUID instruction to 8.477 - be executed on a specific processor. It is a character device 8.478 - with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 8.479 - /dev/cpu/31/cpuid. 8.480 - 8.481 -source "drivers/firmware/Kconfig" 8.482 - 8.483 -choice 8.484 - prompt "High Memory Support" 8.485 - default NOHIGHMEM 8.486 - 8.487 -config NOHIGHMEM 8.488 - bool "off" 8.489 - ---help--- 8.490 - Linux can use up to 64 Gigabytes of physical memory on x86 systems. 8.491 - However, the address space of 32-bit x86 processors is only 4 8.492 - Gigabytes large. That means that, if you have a large amount of 8.493 - physical memory, not all of it can be "permanently mapped" by the 8.494 - kernel. The physical memory that's not permanently mapped is called 8.495 - "high memory". 8.496 - 8.497 - If you are compiling a kernel which will never run on a machine with 8.498 - more than 1 Gigabyte total physical RAM, answer "off" here (default 8.499 - choice and suitable for most users). This will result in a "3GB/1GB" 8.500 - split: 3GB are mapped so that each process sees a 3GB virtual memory 8.501 - space and the remaining part of the 4GB virtual memory space is used 8.502 - by the kernel to permanently map as much physical memory as 8.503 - possible. 8.504 - 8.505 - If the machine has between 1 and 4 Gigabytes physical RAM, then 8.506 - answer "4GB" here. 8.507 - 8.508 - If more than 4 Gigabytes is used then answer "64GB" here. This 8.509 - selection turns Intel PAE (Physical Address Extension) mode on. 8.510 - PAE implements 3-level paging on IA32 processors. PAE is fully 8.511 - supported by Linux, PAE mode is implemented on all recent Intel 8.512 - processors (Pentium Pro and better). NOTE: If you say "64GB" here, 8.513 - then the kernel will not boot on CPUs that don't support PAE! 8.514 - 8.515 - The actual amount of total physical memory will either be 8.516 - auto detected or can be forced by using a kernel command line option 8.517 - such as "mem=256M". (Try "man bootparam" or see the documentation of 8.518 - your boot loader (lilo or loadlin) about how to pass options to the 8.519 - kernel at boot time.) 8.520 - 8.521 - If unsure, say "off". 8.522 - 8.523 -config HIGHMEM4G 8.524 - bool "4GB" 8.525 - help 8.526 - Select this if you have a 32-bit processor and between 1 and 4 8.527 - gigabytes of physical RAM. 8.528 - 8.529 -#config HIGHMEM64G 8.530 -# bool "64GB" 8.531 -# help 8.532 -# Select this if you have a 32-bit processor and more than 4 8.533 -# gigabytes of physical RAM. 8.534 - 8.535 -endchoice 8.536 - 8.537 -config HIGHMEM 8.538 - bool 8.539 - depends on HIGHMEM64G || HIGHMEM4G 8.540 - default y 8.541 - 8.542 -config X86_PAE 8.543 - bool 8.544 - depends on HIGHMEM64G 8.545 - default y 8.546 - 8.547 -# Common NUMA Features 8.548 -config NUMA 8.549 - bool "Numa Memory Allocation and Scheduler Support" 8.550 - depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI)) 8.551 - default n if X86_PC 8.552 - default y if (X86_NUMAQ || X86_SUMMIT) 8.553 - 8.554 -# Need comments to help the hapless user trying to turn on NUMA support 8.555 -comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" 8.556 - depends on X86_NUMAQ && (!HIGHMEM64G || !SMP) 8.557 - 8.558 -comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 8.559 - depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) 8.560 - 8.561 -config DISCONTIGMEM 8.562 - bool 8.563 - depends on NUMA 8.564 - default y 8.565 - 8.566 -config HAVE_ARCH_BOOTMEM_NODE 8.567 - bool 8.568 - depends on NUMA 8.569 - default y 8.570 - 8.571 -#config HIGHPTE 8.572 -# bool "Allocate 3rd-level pagetables from highmem" 8.573 -# depends on HIGHMEM4G || HIGHMEM64G 8.574 -# help 8.575 -# The VM uses one page table entry for each page of physical memory. 8.576 -# For systems with a lot of RAM, this can be wasteful of precious 8.577 -# low memory. Setting this option will put user-space page table 8.578 -# entries in high memory. 8.579 - 8.580 -config MTRR 8.581 - bool 8.582 - depends on XEN_PRIVILEGED_GUEST 8.583 - default y 8.584 - 8.585 -#config MTRR 8.586 -# bool "MTRR (Memory Type Range Register) support" 8.587 -# ---help--- 8.588 -# On Intel P6 family processors (Pentium Pro, Pentium II and later) 8.589 -# the Memory Type Range Registers (MTRRs) may be used to control 8.590 -# processor access to memory ranges. This is most useful if you have 8.591 -# a video (VGA) card on a PCI or AGP bus. Enabling write-combining 8.592 -# allows bus write transfers to be combined into a larger transfer 8.593 -# before bursting over the PCI/AGP bus. This can increase performance 8.594 -# of image write operations 2.5 times or more. Saying Y here creates a 8.595 -# /proc/mtrr file which may be used to manipulate your processor's 8.596 -# MTRRs. Typically the X server should use this. 8.597 -# 8.598 -# This code has a reasonably generic interface so that similar 8.599 -# control registers on other processors can be easily supported 8.600 -# as well: 8.601 -# 8.602 -# The Cyrix 6x86, 6x86MX and M II processors have Address Range 8.603 -# Registers (ARRs) which provide a similar functionality to MTRRs. For 8.604 -# these, the ARRs are used to emulate the MTRRs. 8.605 -# The AMD K6-2 (stepping 8 and above) and K6-3 processors have two 8.606 -# MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing 8.607 -# write-combining. All of these processors are supported by this code 8.608 -# and it makes sense to say Y here if you have one of them. 8.609 -# 8.610 -# Saying Y here also fixes a problem with buggy SMP BIOSes which only 8.611 -# set the MTRRs for the boot CPU and not for the secondary CPUs. This 8.612 -# can lead to all sorts of problems, so it's good to say Y here. 8.613 -# 8.614 -# You can safely say Y even if your machine doesn't have MTRRs, you'll 8.615 -# just add about 9 KB to your kernel. 8.616 -# 8.617 -# See <file:Documentation/mtrr.txt> for more information. 8.618 - 8.619 -config IRQBALANCE 8.620 - bool "Enable kernel irq balancing" 8.621 - depends on SMP && X86_IO_APIC 8.622 - default y 8.623 - help 8.624 - The default yes will allow the kernel to do irq load balancing. 8.625 - Saying no will keep the kernel from doing irq load balancing. 8.626 - 8.627 -config HAVE_DEC_LOCK 8.628 - bool 8.629 - depends on (SMP || PREEMPT) && X86_CMPXCHG 8.630 - default y 8.631 - 8.632 -# turning this on wastes a bunch of space. 8.633 -# Summit needs it only when NUMA is on 8.634 -config BOOT_IOREMAP 8.635 - bool 8.636 - depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI)) 8.637 - default y 8.638 - 8.639 -config REGPARM 8.640 - bool "Use register arguments (EXPERIMENTAL)" 8.641 - depends on EXPERIMENTAL 8.642 - default n 8.643 - help 8.644 - Compile the kernel with -mregparm=3. This uses an different ABI 8.645 - and passes the first three arguments of a function call in registers. 8.646 - This will probably break binary only modules. 8.647 - 8.648 - This feature is only enabled for gcc-3.0 and later - earlier compilers 8.649 - generate incorrect output with certain kernel constructs when 8.650 - -mregparm=3 is used. 8.651 - 8.652 - 8.653 -if XEN_PHYSDEV_ACCESS 8.654 - 8.655 -menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" 8.656 - 8.657 -config X86_VISWS_APIC 8.658 - bool 8.659 - depends on X86_VISWS 8.660 - default y 8.661 - 8.662 -config X86_LOCAL_APIC 8.663 - bool 8.664 - depends on (X86_VISWS || SMP) && !X86_VOYAGER 8.665 - default y 8.666 - 8.667 -config X86_IO_APIC 8.668 - bool 8.669 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 8.670 - default y 8.671 - 8.672 -config PCI 8.673 - bool "PCI support" if !X86_VISWS 8.674 - depends on !X86_VOYAGER 8.675 - default y if X86_VISWS 8.676 - help 8.677 - Find out whether you have a PCI motherboard. PCI is the name of a 8.678 - bus system, i.e. the way the CPU talks to the other stuff inside 8.679 - your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 8.680 - VESA. If you have PCI, say Y, otherwise N. 8.681 - 8.682 - The PCI-HOWTO, available from 8.683 - <http://www.tldp.org/docs.html#howto>, contains valuable 8.684 - information about which PCI hardware does work under Linux and which 8.685 - doesn't. 8.686 - 8.687 -#choice 8.688 -# prompt "PCI access mode" 8.689 -# depends on PCI && !X86_VISWS 8.690 -# default PCI_GOANY 8.691 -# ---help--- 8.692 -# On PCI systems, the BIOS can be used to detect the PCI devices and 8.693 -# determine their configuration. However, some old PCI motherboards 8.694 -# have BIOS bugs and may crash if this is done. Also, some embedded 8.695 -# PCI-based systems don't have any BIOS at all. Linux can also try to 8.696 -# detect the PCI hardware directly without using the BIOS. 8.697 -# 8.698 -# With this option, you can specify how Linux should detect the 8.699 -# PCI devices. If you choose "BIOS", the BIOS will be used, 8.700 -# if you choose "Direct", the BIOS won't be used, and if you 8.701 -# choose "MMConfig", then PCI Express MMCONFIG will be used. 8.702 -# If you choose "Any", the kernel will try MMCONFIG, then the 8.703 -# direct access method and falls back to the BIOS if that doesn't 8.704 -# work. If unsure, go with the default, which is "Any". 8.705 -# 8.706 -#config PCI_GOBIOS 8.707 -# bool "BIOS" 8.708 -# 8.709 -#config PCI_GOMMCONFIG 8.710 -# bool "MMConfig" 8.711 -# 8.712 -#config PCI_GODIRECT 8.713 -# bool "Direct" 8.714 -# 8.715 -#config PCI_GOANY 8.716 -# bool "Any" 8.717 -# 8.718 -#endchoice 8.719 -# 8.720 -#config PCI_BIOS 8.721 -# bool 8.722 -# depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY) 8.723 -# default y 8.724 -# 8.725 -#config PCI_DIRECT 8.726 -# bool 8.727 -# depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS) 8.728 -# default y 8.729 - 8.730 -config PCI_DIRECT 8.731 - bool 8.732 - depends on PCI 8.733 - default y 8.734 - 8.735 -source "drivers/pci/Kconfig" 8.736 - 8.737 -config ISA 8.738 - bool "ISA support" 8.739 - depends on !(X86_VOYAGER || X86_VISWS) 8.740 - help 8.741 - Find out whether you have ISA slots on your motherboard. ISA is the 8.742 - name of a bus system, i.e. the way the CPU talks to the other stuff 8.743 - inside your box. Other bus systems are PCI, EISA, MicroChannel 8.744 - (MCA) or VESA. ISA is an older system, now being displaced by PCI; 8.745 - newer boards don't support it. If you have ISA, say Y, otherwise N. 8.746 - 8.747 -config EISA 8.748 - bool "EISA support" 8.749 - depends on ISA 8.750 - ---help--- 8.751 - The Extended Industry Standard Architecture (EISA) bus was 8.752 - developed as an open alternative to the IBM MicroChannel bus. 8.753 - 8.754 - The EISA bus provided some of the features of the IBM MicroChannel 8.755 - bus while maintaining backward compatibility with cards made for 8.756 - the older ISA bus. The EISA bus saw limited use between 1988 and 8.757 - 1995 when it was made obsolete by the PCI bus. 8.758 - 8.759 - Say Y here if you are building a kernel for an EISA-based machine. 8.760 - 8.761 - Otherwise, say N. 8.762 - 8.763 -source "drivers/eisa/Kconfig" 8.764 - 8.765 -config MCA 8.766 - bool "MCA support" 8.767 - depends on !(X86_VISWS || X86_VOYAGER) 8.768 - help 8.769 - MicroChannel Architecture is found in some IBM PS/2 machines and 8.770 - laptops. It is a bus system similar to PCI or ISA. See 8.771 - <file:Documentation/mca.txt> (and especially the web page given 8.772 - there) before attempting to build an MCA bus kernel. 8.773 - 8.774 -config MCA 8.775 - depends on X86_VOYAGER 8.776 - default y if X86_VOYAGER 8.777 - 8.778 -source "drivers/mca/Kconfig" 8.779 - 8.780 -config SCx200 8.781 - tristate "NatSemi SCx200 support" 8.782 - depends on !X86_VOYAGER 8.783 - help 8.784 - This provides basic support for the National Semiconductor SCx200 8.785 - processor. Right now this is just a driver for the GPIO pins. 8.786 - 8.787 - If you don't know what to do here, say N. 8.788 - 8.789 - This support is also available as a module. If compiled as a 8.790 - module, it will be called scx200. 8.791 - 8.792 -source "drivers/pcmcia/Kconfig" 8.793 - 8.794 -source "drivers/pci/hotplug/Kconfig" 8.795 - 8.796 -endmenu 8.797 - 8.798 -endif 8.799 - 8.800 -menu "Kernel hacking" 8.801 - 8.802 -config DEBUG_KERNEL 8.803 - bool "Kernel debugging" 8.804 - help 8.805 - Say Y here if you are developing drivers or trying to debug and 8.806 - identify kernel problems. 8.807 - 8.808 -config EARLY_PRINTK 8.809 - bool "Early printk" if EMBEDDED 8.810 - default y 8.811 - help 8.812 - Write kernel log output directly into the VGA buffer or to a serial 8.813 - port. 8.814 - 8.815 - This is useful for kernel debugging when your machine crashes very 8.816 - early before the console code is initialized. For normal operation 8.817 - it is not recommended because it looks ugly and doesn't cooperate 8.818 - with klogd/syslogd or the X server. You should normally N here, 8.819 - unless you want to debug such a crash. 8.820 - 8.821 -config DEBUG_STACKOVERFLOW 8.822 - bool "Check for stack overflows" 8.823 - depends on DEBUG_KERNEL 8.824 - 8.825 -config DEBUG_STACK_USAGE 8.826 - bool "Stack utilization instrumentation" 8.827 - depends on DEBUG_KERNEL 8.828 - help 8.829 - Enables the display of the minimum amount of free stack which each 8.830 - task has ever had available in the sysrq-T and sysrq-P debug output. 8.831 - 8.832 - This option will slow down process creation somewhat. 8.833 - 8.834 -config DEBUG_SLAB 8.835 - bool "Debug memory allocations" 8.836 - depends on DEBUG_KERNEL 8.837 - help 8.838 - Say Y here to have the kernel do limited verification on memory 8.839 - allocation as well as poisoning memory on free to catch use of freed 8.840 - memory. 8.841 - 8.842 -config MAGIC_SYSRQ 8.843 - bool "Magic SysRq key" 8.844 - depends on DEBUG_KERNEL 8.845 - help 8.846 - If you say Y here, you will have some control over the system even 8.847 - if the system crashes for example during kernel debugging (e.g., you 8.848 - will be able to flush the buffer cache to disk, reboot the system 8.849 - immediately or dump some status information). This is accomplished 8.850 - by pressing various keys while holding SysRq (Alt+PrintScreen). It 8.851 - also works on a serial console (on PC hardware at least), if you 8.852 - send a BREAK and then within 5 seconds a command keypress. The 8.853 - keys are documented in <file:Documentation/sysrq.txt>. Don't say Y 8.854 - unless you really know what this hack does. 8.855 - 8.856 -config DEBUG_SPINLOCK 8.857 - bool "Spinlock debugging" 8.858 - depends on DEBUG_KERNEL 8.859 - help 8.860 - Say Y here and build SMP to catch missing spinlock initialization 8.861 - and certain other kinds of spinlock errors commonly made. This is 8.862 - best used in conjunction with the NMI watchdog so that spinlock 8.863 - deadlocks are also debuggable. 8.864 - 8.865 -config DEBUG_PAGEALLOC 8.866 - bool "Page alloc debugging" 8.867 - depends on DEBUG_KERNEL 8.868 - help 8.869 - Unmap pages from the kernel linear mapping after free_pages(). 8.870 - This results in a large slowdown, but helps to find certain types 8.871 - of memory corruptions. 8.872 - 8.873 -config DEBUG_HIGHMEM 8.874 - bool "Highmem debugging" 8.875 - depends on DEBUG_KERNEL && HIGHMEM 8.876 - help 8.877 - This options enables addition error checking for high memory systems. 8.878 - Disable for production systems. 8.879 - 8.880 -config DEBUG_INFO 8.881 - bool "Compile the kernel with debug info" 8.882 - depends on DEBUG_KERNEL 8.883 - help 8.884 - If you say Y here the resulting kernel image will include 8.885 - debugging info resulting in a larger kernel image. 8.886 - Say Y here only if you plan to use gdb to debug the kernel. 8.887 - If you don't debug the kernel, you can say N. 8.888 - 8.889 -config DEBUG_SPINLOCK_SLEEP 8.890 - bool "Sleep-inside-spinlock checking" 8.891 - help 8.892 - If you say Y here, various routines which may sleep will become very 8.893 - noisy if they are called with a spinlock held. 8.894 - 8.895 -config FRAME_POINTER 8.896 - bool "Compile the kernel with frame pointers" 8.897 - help 8.898 - If you say Y here the resulting kernel image will be slightly larger 8.899 - and slower, but it will give very useful debugging information. 8.900 - If you don't debug the kernel, you can say N, but we may not be able 8.901 - to solve problems without frame pointers. 8.902 - 8.903 -config 4KSTACKS 8.904 - bool "Use 4Kb for kernel stacks instead of 8Kb" 8.905 - help 8.906 - If you say Y here the kernel will use a 4Kb stacksize for the 8.907 - kernel stack attached to each process/thread. This facilitates 8.908 - running more threads on a system and also reduces the pressure 8.909 - on the VM subsystem for higher order allocations. This option 8.910 - will also use IRQ stacks to compensate for the reduced stackspace. 8.911 - 8.912 -config X86_FIND_SMP_CONFIG 8.913 - bool 8.914 - depends on X86_LOCAL_APIC || X86_VOYAGER 8.915 - default y 8.916 - 8.917 -config X86_MPPARSE 8.918 - bool 8.919 - depends on X86_LOCAL_APIC && !X86_VISWS 8.920 - default y 8.921 - 8.922 -endmenu 8.923 - 8.924 -# 8.925 -# Use the generic interrupt handling code in kernel/irq/: 8.926 -# 8.927 -config GENERIC_HARDIRQS 8.928 - bool 8.929 - default y 8.930 - 8.931 -config GENERIC_IRQ_PROBE 8.932 - bool 8.933 - default y 8.934 - 8.935 -config X86_SMP 8.936 - bool 8.937 - depends on SMP && !X86_VOYAGER 8.938 - default y 8.939 - 8.940 -config X86_HT 8.941 - bool 8.942 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 8.943 - default y 8.944 - 8.945 -config X86_BIOS_REBOOT 8.946 - bool 8.947 - depends on !(X86_VISWS || X86_VOYAGER) 8.948 - default y 8.949 - 8.950 -config X86_TRAMPOLINE 8.951 - bool 8.952 - depends on X86_SMP || (X86_VOYAGER && SMP) 8.953 - default y 8.954 - 8.955 -config PC 8.956 - bool 8.957 - depends on X86 && !EMBEDDED 8.958 - default y 8.959 - 8.960 -endmenu
9.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/Makefile Thu Mar 10 18:09:19 2005 +0000 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,102 +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 += -m32 9.28 -AFLAGS += -m32 9.29 - 9.30 -CFLAGS += -pipe -msoft-float 9.31 - 9.32 -# prevent gcc from keeping the stack 16 byte aligned 9.33 -CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,) 9.34 - 9.35 -align := $(cc-option-align) 9.36 -cflags-$(CONFIG_M386) += -march=i386 9.37 -cflags-$(CONFIG_M486) += -march=i486 9.38 -cflags-$(CONFIG_M586) += -march=i586 9.39 -cflags-$(CONFIG_M586TSC) += -march=i586 9.40 -cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586) 9.41 -cflags-$(CONFIG_M686) += -march=i686 9.42 -cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call cc-option,-mtune=pentium2) 9.43 -cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call cc-option,-mtune=pentium3) 9.44 -cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call cc-option,-mtune=pentium3) 9.45 -cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call cc-option,-mtune=pentium4) 9.46 -cflags-$(CONFIG_MK6) += -march=k6 9.47 -# Please note, that patches that add -march=athlon-xp and friends are pointless. 9.48 -# They make zero difference whatsosever to performance at this time. 9.49 -cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4) 9.50 -cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)) 9.51 -cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.52 -cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call cc-option,-mtune=pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.53 -cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586) 9.54 -cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586) 9.55 -cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586) 9.56 -cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 9.57 -cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686) 9.58 - 9.59 -# AMD Elan support 9.60 -cflags-$(CONFIG_X86_ELAN) += -march=i486 9.61 - 9.62 -# -mregparm=3 works ok on gcc-3.0 and later 9.63 -# 9.64 -GCC_VERSION := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) 9.65 -cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) 9.66 - 9.67 -# Disable unit-at-a-time mode, it makes gcc use a lot more stack 9.68 -# due to the lack of sharing of stacklots. 9.69 -CFLAGS += $(call cc-option,-fno-unit-at-a-time,) 9.70 - 9.71 -CFLAGS += $(cflags-y) 9.72 - 9.73 -head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o 9.74 - 9.75 -libs-y += arch/i386/lib/ 9.76 -core-y += arch/xen/i386/kernel/ \ 9.77 - arch/xen/i386/mm/ \ 9.78 - arch/i386/crypto/ 9.79 -# \ 9.80 -# arch/xen/$(mcore-y)/ 9.81 -drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ 9.82 -drivers-$(CONFIG_PCI) += arch/xen/i386/pci/ 9.83 -# must be linked after kernel/ 9.84 -drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ 9.85 -drivers-$(CONFIG_PM) += arch/i386/power/ 9.86 - 9.87 -# for clean 9.88 -obj- += kernel/ mm/ pci/ 9.89 -#obj- += ../../i386/lib/ ../../i386/mm/ 9.90 -#../../i386/$(mcore-y)/ 9.91 -#obj- += ../../i386/pci/ ../../i386/oprofile/ ../../i386/power/ 9.92 - 9.93 -xenflags-y += -Iinclude/asm-xen/asm-i386/mach-xen \ 9.94 - -Iinclude/asm-i386/mach-default 9.95 -CFLAGS += $(xenflags-y) 9.96 -AFLAGS += $(xenflags-y) 9.97 - 9.98 -prepare: include/asm-$(XENARCH)/asm_offsets.h 9.99 -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h 9.100 - 9.101 -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \ 9.102 - include/linux/version.h include/config/MARKER 9.103 - 9.104 -include/asm-$(XENARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s 9.105 - $(call filechk,gen-asm-offsets)
10.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/Makefile Thu Mar 10 18:09:19 2005 +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 -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 -m32 $(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-xen-sparse/arch/xen/i386/kernel/cpu/Makefile Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/cpu/common.c Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/entry.S Thu Mar 10 18:09:19 2005 +0000 15.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 15.3 @@ -1,1034 +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 - xorl %ebp,%ebp 15.264 - sti 15.265 - sysexit 15.266 - 15.267 - 15.268 - # system call handler stub 15.269 -ENTRY(system_call) 15.270 - pushl %eax # save orig_eax 15.271 - SAVE_ALL 15.272 - GET_THREAD_INFO(%ebp) 15.273 - # system call tracing in operation 15.274 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 15.275 - jnz syscall_trace_entry 15.276 - cmpl $(nr_syscalls), %eax 15.277 - jae syscall_badsys 15.278 -syscall_call: 15.279 - call *sys_call_table(,%eax,4) 15.280 - movl %eax,EAX(%esp) # store the return value 15.281 -syscall_exit: 15.282 - XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt 15.283 - # setting need_resched or sigpending 15.284 - # between sampling and the iret 15.285 - movl TI_flags(%ebp), %ecx 15.286 - testw $_TIF_ALLWORK_MASK, %cx # current->work 15.287 - jne syscall_exit_work 15.288 -restore_all: 15.289 - testl $VM_MASK, EFLAGS(%esp) 15.290 - jnz resume_vm86 15.291 - movb EVENT_MASK(%esp), %al 15.292 - notb %al # %al == ~saved_mask 15.293 - andb evtchn_upcall_mask(%esi),%al 15.294 - andb $1,%al # %al == mask & ~saved_mask 15.295 - jnz restore_all_enable_events # != 0 => reenable event delivery 15.296 - RESTORE_ALL 15.297 - 15.298 -resume_vm86: 15.299 - XEN_UNBLOCK_EVENTS(%esi) 15.300 - RESTORE_REGS 15.301 - movl %eax,(%esp) 15.302 - movl $__HYPERVISOR_switch_vm86,%eax 15.303 - int $0x82 15.304 - ud2 15.305 - 15.306 - # perform work that needs to be done immediately before resumption 15.307 - ALIGN 15.308 -work_pending: 15.309 - testb $_TIF_NEED_RESCHED, %cl 15.310 - jz work_notifysig 15.311 -work_resched: 15.312 - call schedule 15.313 - XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt 15.314 - # setting need_resched or sigpending 15.315 - # between sampling and the iret 15.316 - movl TI_flags(%ebp), %ecx 15.317 - andl $_TIF_WORK_MASK, %ecx # is there any work to be done other 15.318 - # than syscall tracing? 15.319 - jz restore_all 15.320 - testb $_TIF_NEED_RESCHED, %cl 15.321 - jnz work_resched 15.322 - 15.323 -work_notifysig: # deal with pending signals and 15.324 - # notify-resume requests 15.325 - testl $VM_MASK, EFLAGS(%esp) 15.326 - movl %esp, %eax 15.327 - jne work_notifysig_v86 # returning to kernel-space or 15.328 - # vm86-space 15.329 - xorl %edx, %edx 15.330 - call do_notify_resume 15.331 - jmp restore_all 15.332 - 15.333 - ALIGN 15.334 -work_notifysig_v86: 15.335 - pushl %ecx # save ti_flags for do_notify_resume 15.336 - call save_v86_state # %eax contains pt_regs pointer 15.337 - popl %ecx 15.338 - movl %eax, %esp 15.339 - xorl %edx, %edx 15.340 - call do_notify_resume 15.341 - jmp restore_all 15.342 - 15.343 - # perform syscall exit tracing 15.344 - ALIGN 15.345 -syscall_trace_entry: 15.346 - movl $-ENOSYS,EAX(%esp) 15.347 - movl %esp, %eax 15.348 - xorl %edx,%edx 15.349 - call do_syscall_trace 15.350 - movl ORIG_EAX(%esp), %eax 15.351 - cmpl $(nr_syscalls), %eax 15.352 - jnae syscall_call 15.353 - jmp syscall_exit 15.354 - 15.355 - # perform syscall exit tracing 15.356 - ALIGN 15.357 -syscall_exit_work: 15.358 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl 15.359 - jz work_pending 15.360 - XEN_UNBLOCK_EVENTS(%esi) # could let do_syscall_trace() call 15.361 - # schedule() instead 15.362 - movl %esp, %eax 15.363 - movl $1, %edx 15.364 - call do_syscall_trace 15.365 - jmp resume_userspace 15.366 - 15.367 - ALIGN 15.368 -syscall_fault: 15.369 - pushl %eax # save orig_eax 15.370 - SAVE_ALL 15.371 - GET_THREAD_INFO(%ebp) 15.372 - movl $-EFAULT,EAX(%esp) 15.373 - jmp resume_userspace 15.374 - 15.375 - ALIGN 15.376 -syscall_badsys: 15.377 - movl $-ENOSYS,EAX(%esp) 15.378 - jmp resume_userspace 15.379 - 15.380 -#if 0 /* XEN */ 15.381 -/* 15.382 - * Build the entry stubs and pointer table with 15.383 - * some assembler magic. 15.384 - */ 15.385 -.data 15.386 -ENTRY(interrupt) 15.387 -.text 15.388 - 15.389 -vector=0 15.390 -ENTRY(irq_entries_start) 15.391 -.rept NR_IRQS 15.392 - ALIGN 15.393 -1: pushl $vector-256 15.394 - jmp common_interrupt 15.395 -.data 15.396 - .long 1b 15.397 -.text 15.398 -vector=vector+1 15.399 -.endr 15.400 - 15.401 - ALIGN 15.402 -common_interrupt: 15.403 - SAVE_ALL 15.404 - movl %esp,%eax 15.405 - call do_IRQ 15.406 - jmp ret_from_intr 15.407 - 15.408 -#define BUILD_INTERRUPT(name, nr) \ 15.409 -ENTRY(name) \ 15.410 - pushl $nr-256; \ 15.411 - SAVE_ALL \ 15.412 - movl %esp,%eax; \ 15.413 - call smp_/**/name; \ 15.414 - jmp ret_from_intr; 15.415 - 15.416 -/* The include is where all of the SMP etc. interrupts come from */ 15.417 -#include "entry_arch.h" 15.418 -#endif /* XEN */ 15.419 - 15.420 -ENTRY(divide_error) 15.421 - pushl $0 # no error code 15.422 - pushl $do_divide_error 15.423 - ALIGN 15.424 -error_code: 15.425 - pushl %ds 15.426 - pushl %eax 15.427 - xorl %eax, %eax 15.428 - pushl %ebp 15.429 - pushl %edi 15.430 - pushl %esi 15.431 - pushl %edx 15.432 - decl %eax # eax = -1 15.433 - pushl %ecx 15.434 - pushl %ebx 15.435 - cld 15.436 - movl %es, %ecx 15.437 - movl ES(%esp), %edi # get the function address 15.438 - movl ORIG_EAX(%esp), %edx # get the error code 15.439 - movl %eax, ORIG_EAX(%esp) 15.440 - movl %ecx, ES(%esp) 15.441 - movl $(__USER_DS), %ecx 15.442 - movl %ecx, %ds 15.443 - movl %ecx, %es 15.444 - movl %esp,%eax # pt_regs pointer 15.445 - XEN_GET_VCPU_INFO(%esi) 15.446 - XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK) 15.447 - call *%edi 15.448 - jmp ret_from_exception 15.449 - 15.450 -# A note on the "critical region" in our callback handler. 15.451 -# We want to avoid stacking callback handlers due to events occurring 15.452 -# during handling of the last event. To do this, we keep events disabled 15.453 -# until we've done all processing. HOWEVER, we must enable events before 15.454 -# popping the stack frame (can't be done atomically) and so it would still 15.455 -# be possible to get enough handler activations to overflow the stack. 15.456 -# Although unlikely, bugs of that kind are hard to track down, so we'd 15.457 -# like to avoid the possibility. 15.458 -# So, on entry to the handler we detect whether we interrupted an 15.459 -# existing activation in its critical region -- if so, we pop the current 15.460 -# activation and restart the handler using the previous one. 15.461 -ENTRY(hypervisor_callback) 15.462 - pushl %eax 15.463 - SAVE_ALL_NO_EVENTMASK 15.464 - movl EIP(%esp),%eax 15.465 - cmpl $scrit,%eax 15.466 - jb 11f 15.467 - cmpl $ecrit,%eax 15.468 - jb critical_region_fixup 15.469 -11: XEN_GET_VCPU_INFO(%esi) 15.470 - movb $0, EVENT_MASK(%esp) 15.471 - push %esp 15.472 - call evtchn_do_upcall 15.473 - add $4,%esp 15.474 - jmp ret_from_intr 15.475 - 15.476 - ALIGN 15.477 -restore_all_enable_events: 15.478 - XEN_UNBLOCK_EVENTS(%esi) 15.479 -scrit: /**** START OF CRITICAL REGION ****/ 15.480 - XEN_TEST_PENDING(%esi) 15.481 - jnz 14f # process more events if necessary... 15.482 - RESTORE_ALL 15.483 -14: XEN_BLOCK_EVENTS(%esi) 15.484 - jmp 11b 15.485 -ecrit: /**** END OF CRITICAL REGION ****/ 15.486 -# [How we do the fixup]. We want to merge the current stack frame with the 15.487 -# just-interrupted frame. How we do this depends on where in the critical 15.488 -# region the interrupted handler was executing, and so how many saved 15.489 -# registers are in each frame. We do this quickly using the lookup table 15.490 -# 'critical_fixup_table'. For each byte offset in the critical region, it 15.491 -# provides the number of bytes which have already been popped from the 15.492 -# interrupted stack frame. 15.493 -critical_region_fixup: 15.494 - addl $critical_fixup_table-scrit,%eax 15.495 - movzbl (%eax),%eax # %eax contains num bytes popped 15.496 - mov %esp,%esi 15.497 - add %eax,%esi # %esi points at end of src region 15.498 - mov %esp,%edi 15.499 - add $0x34,%edi # %edi points at end of dst region 15.500 - mov %eax,%ecx 15.501 - shr $2,%ecx # convert words to bytes 15.502 - je 16f # skip loop if nothing to copy 15.503 -15: subl $4,%esi # pre-decrementing copy loop 15.504 - subl $4,%edi 15.505 - movl (%esi),%eax 15.506 - movl %eax,(%edi) 15.507 - loop 15b 15.508 -16: movl %edi,%esp # final %edi is top of merged stack 15.509 - jmp 11b 15.510 - 15.511 -critical_fixup_table: 15.512 - .byte 0x00,0x00,0x00 # testb $0xff,(%esi) = XEN_TEST_PENDING 15.513 - .byte 0x00,0x00 # jnz 14f 15.514 - .byte 0x00 # pop %ebx 15.515 - .byte 0x04 # pop %ecx 15.516 - .byte 0x08 # pop %edx 15.517 - .byte 0x0c # pop %esi 15.518 - .byte 0x10 # pop %edi 15.519 - .byte 0x14 # pop %ebp 15.520 - .byte 0x18 # pop %eax 15.521 - .byte 0x1c # pop %ds 15.522 - .byte 0x20 # pop %es 15.523 - .byte 0x24,0x24,0x24 # add $4,%esp 15.524 - .byte 0x28 # iret 15.525 - .byte 0x00,0x00,0x00,0x00 # movb $1,1(%esi) 15.526 - .byte 0x00,0x00 # jmp 11b 15.527 - 15.528 -# Hypervisor uses this for application faults while it executes. 15.529 -ENTRY(failsafe_callback) 15.530 -1: popl %ds 15.531 -2: popl %es 15.532 -3: popl %fs 15.533 -4: popl %gs 15.534 - subl $4,%esp 15.535 - SAVE_ALL 15.536 - jmp ret_from_exception 15.537 -.section .fixup,"ax"; \ 15.538 -6: movl $0,(%esp); \ 15.539 - jmp 1b; \ 15.540 -7: movl $0,(%esp); \ 15.541 - jmp 2b; \ 15.542 -8: movl $0,(%esp); \ 15.543 - jmp 3b; \ 15.544 -9: movl $0,(%esp); \ 15.545 - jmp 4b; \ 15.546 -.previous; \ 15.547 -.section __ex_table,"a";\ 15.548 - .align 4; \ 15.549 - .long 1b,6b; \ 15.550 - .long 2b,7b; \ 15.551 - .long 3b,8b; \ 15.552 - .long 4b,9b; \ 15.553 -.previous 15.554 - 15.555 -ENTRY(coprocessor_error) 15.556 - pushl $0 15.557 - pushl $do_coprocessor_error 15.558 - jmp error_code 15.559 - 15.560 -ENTRY(simd_coprocessor_error) 15.561 - pushl $0 15.562 - pushl $do_simd_coprocessor_error 15.563 - jmp error_code 15.564 - 15.565 -ENTRY(device_not_available) 15.566 - pushl $-1 # mark this as an int 15.567 - SAVE_ALL 15.568 - preempt_stop 15.569 - call math_state_restore 15.570 - jmp ret_from_exception 15.571 - 15.572 -/* 15.573 - * Debug traps and NMI can happen at the one SYSENTER instruction 15.574 - * that sets up the real kernel stack. Check here, since we can't 15.575 - * allow the wrong stack to be used. 15.576 - * 15.577 - * "TSS_sysenter_esp0+12" is because the NMI/debug handler will have 15.578 - * already pushed 3 words if it hits on the sysenter instruction: 15.579 - * eflags, cs and eip. 15.580 - * 15.581 - * We just load the right stack, and push the three (known) values 15.582 - * by hand onto the new stack - while updating the return eip past 15.583 - * the instruction that would have done it for sysenter. 15.584 - */ 15.585 -#define FIX_STACK(offset, ok, label) \ 15.586 - cmpw $__KERNEL_CS,4(%esp); \ 15.587 - jne ok; \ 15.588 -label: \ 15.589 - movl TSS_sysenter_esp0+offset(%esp),%esp; \ 15.590 - pushfl; \ 15.591 - pushl $__KERNEL_CS; \ 15.592 - pushl $sysenter_past_esp 15.593 - 15.594 -ENTRY(debug) 15.595 - cmpl $sysenter_entry,(%esp) 15.596 - jne debug_stack_correct 15.597 - FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn) 15.598 -debug_stack_correct: 15.599 - pushl $-1 # mark this as an int 15.600 - SAVE_ALL 15.601 - xorl %edx,%edx # error code 0 15.602 - movl %esp,%eax # pt_regs pointer 15.603 - call do_debug 15.604 - testl %eax,%eax 15.605 - jnz restore_all 15.606 - jmp ret_from_exception 15.607 - 15.608 -#if 0 /* XEN */ 15.609 -/* 15.610 - * NMI is doubly nasty. It can happen _while_ we're handling 15.611 - * a debug fault, and the debug fault hasn't yet been able to 15.612 - * clear up the stack. So we first check whether we got an 15.613 - * NMI on the sysenter entry path, but after that we need to 15.614 - * check whether we got an NMI on the debug path where the debug 15.615 - * fault happened on the sysenter path. 15.616 - */ 15.617 -ENTRY(nmi) 15.618 - cmpl $sysenter_entry,(%esp) 15.619 - je nmi_stack_fixup 15.620 - pushl %eax 15.621 - movl %esp,%eax 15.622 - /* Do not access memory above the end of our stack page, 15.623 - * it might not exist. 15.624 - */ 15.625 - andl $(THREAD_SIZE-1),%eax 15.626 - cmpl $(THREAD_SIZE-20),%eax 15.627 - popl %eax 15.628 - jae nmi_stack_correct 15.629 - cmpl $sysenter_entry,12(%esp) 15.630 - je nmi_debug_stack_check 15.631 -nmi_stack_correct: 15.632 - pushl %eax 15.633 - SAVE_ALL 15.634 - xorl %edx,%edx # zero error code 15.635 - movl %esp,%eax # pt_regs pointer 15.636 - call do_nmi 15.637 - RESTORE_ALL 15.638 - 15.639 -nmi_stack_fixup: 15.640 - FIX_STACK(12,nmi_stack_correct, 1) 15.641 - jmp nmi_stack_correct 15.642 -nmi_debug_stack_check: 15.643 - cmpw $__KERNEL_CS,16(%esp) 15.644 - jne nmi_stack_correct 15.645 - cmpl $debug - 1,(%esp) 15.646 - jle nmi_stack_correct 15.647 - cmpl $debug_esp_fix_insn,(%esp) 15.648 - jle nmi_debug_stack_fixup 15.649 -nmi_debug_stack_fixup: 15.650 - FIX_STACK(24,nmi_stack_correct, 1) 15.651 - jmp nmi_stack_correct 15.652 -#endif /* XEN */ 15.653 - 15.654 -ENTRY(int3) 15.655 - pushl $-1 # mark this as an int 15.656 - SAVE_ALL 15.657 - xorl %edx,%edx # zero error code 15.658 - movl %esp,%eax # pt_regs pointer 15.659 - call do_int3 15.660 - testl %eax,%eax 15.661 - jnz restore_all 15.662 - jmp ret_from_exception 15.663 - 15.664 -ENTRY(overflow) 15.665 - pushl $0 15.666 - pushl $do_overflow 15.667 - jmp error_code 15.668 - 15.669 -ENTRY(bounds) 15.670 - pushl $0 15.671 - pushl $do_bounds 15.672 - jmp error_code 15.673 - 15.674 -ENTRY(invalid_op) 15.675 - pushl $0 15.676 - pushl $do_invalid_op 15.677 - jmp error_code 15.678 - 15.679 -ENTRY(coprocessor_segment_overrun) 15.680 - pushl $0 15.681 - pushl $do_coprocessor_segment_overrun 15.682 - jmp error_code 15.683 - 15.684 -ENTRY(invalid_TSS) 15.685 - pushl $do_invalid_TSS 15.686 - jmp error_code 15.687 - 15.688 -ENTRY(segment_not_present) 15.689 - pushl $do_segment_not_present 15.690 - jmp error_code 15.691 - 15.692 -ENTRY(stack_segment) 15.693 - pushl $do_stack_segment 15.694 - jmp error_code 15.695 - 15.696 -ENTRY(general_protection) 15.697 - pushl $do_general_protection 15.698 - jmp error_code 15.699 - 15.700 -ENTRY(alignment_check) 15.701 - pushl $do_alignment_check 15.702 - jmp error_code 15.703 - 15.704 -# This handler is special, because it gets an extra value on its stack, 15.705 -# which is the linear faulting address. 15.706 -# fastcall register usage: %eax = pt_regs, %edx = error code, 15.707 -# %ecx = fault address 15.708 -ENTRY(page_fault) 15.709 - pushl %ds 15.710 - pushl %eax 15.711 - xorl %eax, %eax 15.712 - pushl %ebp 15.713 - pushl %edi 15.714 - pushl %esi 15.715 - pushl %edx 15.716 - decl %eax /* eax = -1 */ 15.717 - pushl %ecx 15.718 - pushl %ebx 15.719 - cld 15.720 - movl %es,%edi 15.721 - movl ES(%esp), %ecx /* get the faulting address */ 15.722 - movl ORIG_EAX(%esp), %edx /* get the error code */ 15.723 - movl %eax, ORIG_EAX(%esp) 15.724 - movl %edi, ES(%esp) 15.725 - movl $(__KERNEL_DS),%eax 15.726 - movl %eax, %ds 15.727 - movl %eax, %es 15.728 - movl %esp,%eax /* pt_regs pointer */ 15.729 - XEN_GET_VCPU_INFO(%esi) 15.730 - XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK) 15.731 - call do_page_fault 15.732 - jmp ret_from_exception 15.733 - 15.734 -#ifdef CONFIG_X86_MCE 15.735 -ENTRY(machine_check) 15.736 - pushl $0 15.737 - pushl machine_check_vector 15.738 - jmp error_code 15.739 -#endif 15.740 - 15.741 -ENTRY(fixup_4gb_segment) 15.742 - pushl $do_fixup_4gb_segment 15.743 - jmp error_code 15.744 - 15.745 -.data 15.746 -ENTRY(sys_call_table) 15.747 - .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */ 15.748 - .long sys_exit 15.749 - .long sys_fork 15.750 - .long sys_read 15.751 - .long sys_write 15.752 - .long sys_open /* 5 */ 15.753 - .long sys_close 15.754 - .long sys_waitpid 15.755 - .long sys_creat 15.756 - .long sys_link 15.757 - .long sys_unlink /* 10 */ 15.758 - .long sys_execve 15.759 - .long sys_chdir 15.760 - .long sys_time 15.761 - .long sys_mknod 15.762 - .long sys_chmod /* 15 */ 15.763 - .long sys_lchown16 15.764 - .long sys_ni_syscall /* old break syscall holder */ 15.765 - .long sys_stat 15.766 - .long sys_lseek 15.767 - .long sys_getpid /* 20 */ 15.768 - .long sys_mount 15.769 - .long sys_oldumount 15.770 - .long sys_setuid16 15.771 - .long sys_getuid16 15.772 - .long sys_stime /* 25 */ 15.773 - .long sys_ptrace 15.774 - .long sys_alarm 15.775 - .long sys_fstat 15.776 - .long sys_pause 15.777 - .long sys_utime /* 30 */ 15.778 - .long sys_ni_syscall /* old stty syscall holder */ 15.779 - .long sys_ni_syscall /* old gtty syscall holder */ 15.780 - .long sys_access 15.781 - .long sys_nice 15.782 - .long sys_ni_syscall /* 35 - old ftime syscall holder */ 15.783 - .long sys_sync 15.784 - .long sys_kill 15.785 - .long sys_rename 15.786 - .long sys_mkdir 15.787 - .long sys_rmdir /* 40 */ 15.788 - .long sys_dup 15.789 - .long sys_pipe 15.790 - .long sys_times 15.791 - .long sys_ni_syscall /* old prof syscall holder */ 15.792 - .long sys_brk /* 45 */ 15.793 - .long sys_setgid16 15.794 - .long sys_getgid16 15.795 - .long sys_signal 15.796 - .long sys_geteuid16 15.797 - .long sys_getegid16 /* 50 */ 15.798 - .long sys_acct 15.799 - .long sys_umount /* recycled never used phys() */ 15.800 - .long sys_ni_syscall /* old lock syscall holder */ 15.801 - .long sys_ioctl 15.802 - .long sys_fcntl /* 55 */ 15.803 - .long sys_ni_syscall /* old mpx syscall holder */ 15.804 - .long sys_setpgid 15.805 - .long sys_ni_syscall /* old ulimit syscall holder */ 15.806 - .long sys_olduname 15.807 - .long sys_umask /* 60 */ 15.808 - .long sys_chroot 15.809 - .long sys_ustat 15.810 - .long sys_dup2 15.811 - .long sys_getppid 15.812 - .long sys_getpgrp /* 65 */ 15.813 - .long sys_setsid 15.814 - .long sys_sigaction 15.815 - .long sys_sgetmask 15.816 - .long sys_ssetmask 15.817 - .long sys_setreuid16 /* 70 */ 15.818 - .long sys_setregid16 15.819 - .long sys_sigsuspend 15.820 - .long sys_sigpending 15.821 - .long sys_sethostname 15.822 - .long sys_setrlimit /* 75 */ 15.823 - .long sys_old_getrlimit 15.824 - .long sys_getrusage 15.825 - .long sys_gettimeofday 15.826 - .long sys_settimeofday 15.827 - .long sys_getgroups16 /* 80 */ 15.828 - .long sys_setgroups16 15.829 - .long old_select 15.830 - .long sys_symlink 15.831 - .long sys_lstat 15.832 - .long sys_readlink /* 85 */ 15.833 - .long sys_uselib 15.834 - .long sys_swapon 15.835 - .long sys_reboot 15.836 - .long old_readdir 15.837 - .long old_mmap /* 90 */ 15.838 - .long sys_munmap 15.839 - .long sys_truncate 15.840 - .long sys_ftruncate 15.841 - .long sys_fchmod 15.842 - .long sys_fchown16 /* 95 */ 15.843 - .long sys_getpriority 15.844 - .long sys_setpriority 15.845 - .long sys_ni_syscall /* old profil syscall holder */ 15.846 - .long sys_statfs 15.847 - .long sys_fstatfs /* 100 */ 15.848 - .long sys_ioperm 15.849 - .long sys_socketcall 15.850 - .long sys_syslog 15.851 - .long sys_setitimer 15.852 - .long sys_getitimer /* 105 */ 15.853 - .long sys_newstat 15.854 - .long sys_newlstat 15.855 - .long sys_newfstat 15.856 - .long sys_uname 15.857 - .long sys_iopl /* 110 */ 15.858 - .long sys_vhangup 15.859 - .long sys_ni_syscall /* old "idle" system call */ 15.860 - .long sys_vm86old 15.861 - .long sys_wait4 15.862 - .long sys_swapoff /* 115 */ 15.863 - .long sys_sysinfo 15.864 - .long sys_ipc 15.865 - .long sys_fsync 15.866 - .long sys_sigreturn 15.867 - .long sys_clone /* 120 */ 15.868 - .long sys_setdomainname 15.869 - .long sys_newuname 15.870 - .long sys_modify_ldt 15.871 - .long sys_adjtimex 15.872 - .long sys_mprotect /* 125 */ 15.873 - .long sys_sigprocmask 15.874 - .long sys_ni_syscall /* old "create_module" */ 15.875 - .long sys_init_module 15.876 - .long sys_delete_module 15.877 - .long sys_ni_syscall /* 130: old "get_kernel_syms" */ 15.878 - .long sys_quotactl 15.879 - .long sys_getpgid 15.880 - .long sys_fchdir 15.881 - .long sys_bdflush 15.882 - .long sys_sysfs /* 135 */ 15.883 - .long sys_personality 15.884 - .long sys_ni_syscall /* reserved for afs_syscall */ 15.885 - .long sys_setfsuid16 15.886 - .long sys_setfsgid16 15.887 - .long sys_llseek /* 140 */ 15.888 - .long sys_getdents 15.889 - .long sys_select 15.890 - .long sys_flock 15.891 - .long sys_msync 15.892 - .long sys_readv /* 145 */ 15.893 - .long sys_writev 15.894 - .long sys_getsid 15.895 - .long sys_fdatasync 15.896 - .long sys_sysctl 15.897 - .long sys_mlock /* 150 */ 15.898 - .long sys_munlock 15.899 - .long sys_mlockall 15.900 - .long sys_munlockall 15.901 - .long sys_sched_setparam 15.902 - .long sys_sched_getparam /* 155 */ 15.903 - .long sys_sched_setscheduler 15.904 - .long sys_sched_getscheduler 15.905 - .long sys_sched_yield 15.906 - .long sys_sched_get_priority_max 15.907 - .long sys_sched_get_priority_min /* 160 */ 15.908 - .long sys_sched_rr_get_interval 15.909 - .long sys_nanosleep 15.910 - .long sys_mremap 15.911 - .long sys_setresuid16 15.912 - .long sys_getresuid16 /* 165 */ 15.913 - .long sys_vm86 15.914 - .long sys_ni_syscall /* Old sys_query_module */ 15.915 - .long sys_poll 15.916 - .long sys_nfsservctl 15.917 - .long sys_setresgid16 /* 170 */ 15.918 - .long sys_getresgid16 15.919 - .long sys_prctl 15.920 - .long sys_rt_sigreturn 15.921 - .long sys_rt_sigaction 15.922 - .long sys_rt_sigprocmask /* 175 */ 15.923 - .long sys_rt_sigpending 15.924 - .long sys_rt_sigtimedwait 15.925 - .long sys_rt_sigqueueinfo 15.926 - .long sys_rt_sigsuspend 15.927 - .long sys_pread64 /* 180 */ 15.928 - .long sys_pwrite64 15.929 - .long sys_chown16 15.930 - .long sys_getcwd 15.931 - .long sys_capget 15.932 - .long sys_capset /* 185 */ 15.933 - .long sys_sigaltstack 15.934 - .long sys_sendfile 15.935 - .long sys_ni_syscall /* reserved for streams1 */ 15.936 - .long sys_ni_syscall /* reserved for streams2 */ 15.937 - .long sys_vfork /* 190 */ 15.938 - .long sys_getrlimit 15.939 - .long sys_mmap2 15.940 - .long sys_truncate64 15.941 - .long sys_ftruncate64 15.942 - .long sys_stat64 /* 195 */ 15.943 - .long sys_lstat64 15.944 - .long sys_fstat64 15.945 - .long sys_lchown 15.946 - .long sys_getuid 15.947 - .long sys_getgid /* 200 */ 15.948 - .long sys_geteuid 15.949 - .long sys_getegid 15.950 - .long sys_setreuid 15.951 - .long sys_setregid 15.952 - .long sys_getgroups /* 205 */ 15.953 - .long sys_setgroups 15.954 - .long sys_fchown 15.955 - .long sys_setresuid 15.956 - .long sys_getresuid 15.957 - .long sys_setresgid /* 210 */ 15.958 - .long sys_getresgid 15.959 - .long sys_chown 15.960 - .long sys_setuid 15.961 - .long sys_setgid 15.962 - .long sys_setfsuid /* 215 */ 15.963 - .long sys_setfsgid 15.964 - .long sys_pivot_root 15.965 - .long sys_mincore 15.966 - .long sys_madvise 15.967 - .long sys_getdents64 /* 220 */ 15.968 - .long sys_fcntl64 15.969 - .long sys_ni_syscall /* reserved for TUX */ 15.970 - .long sys_ni_syscall 15.971 - .long sys_gettid 15.972 - .long sys_readahead /* 225 */ 15.973 - .long sys_setxattr 15.974 - .long sys_lsetxattr 15.975 - .long sys_fsetxattr 15.976 - .long sys_getxattr 15.977 - .long sys_lgetxattr /* 230 */ 15.978 - .long sys_fgetxattr 15.979 - .long sys_listxattr 15.980 - .long sys_llistxattr 15.981 - .long sys_flistxattr 15.982 - .long sys_removexattr /* 235 */ 15.983 - .long sys_lremovexattr 15.984 - .long sys_fremovexattr 15.985 - .long sys_tkill 15.986 - .long sys_sendfile64 15.987 - .long sys_futex /* 240 */ 15.988 - .long sys_sched_setaffinity 15.989 - .long sys_sched_getaffinity 15.990 - .long sys_set_thread_area 15.991 - .long sys_get_thread_area 15.992 - .long sys_io_setup /* 245 */ 15.993 - .long sys_io_destroy 15.994 - .long sys_io_getevents 15.995 - .long sys_io_submit 15.996 - .long sys_io_cancel 15.997 - .long sys_fadvise64 /* 250 */ 15.998 - .long sys_ni_syscall 15.999 - .long sys_exit_group 15.1000 - .long sys_lookup_dcookie 15.1001 - .long sys_epoll_create 15.1002 - .long sys_epoll_ctl /* 255 */ 15.1003 - .long sys_epoll_wait 15.1004 - .long sys_remap_file_pages 15.1005 - .long sys_set_tid_address 15.1006 - .long sys_timer_create 15.1007 - .long sys_timer_settime /* 260 */ 15.1008 - .long sys_timer_gettime 15.1009 - .long sys_timer_getoverrun 15.1010 - .long sys_timer_delete 15.1011 - .long sys_clock_settime 15.1012 - .long sys_clock_gettime /* 265 */ 15.1013 - .long sys_clock_getres 15.1014 - .long sys_clock_nanosleep 15.1015 - .long sys_statfs64 15.1016 - .long sys_fstatfs64 15.1017 - .long sys_tgkill /* 270 */ 15.1018 - .long sys_utimes 15.1019 - .long sys_fadvise64_64 15.1020 - .long sys_ni_syscall /* sys_vserver */ 15.1021 - .long sys_mbind 15.1022 - .long sys_get_mempolicy 15.1023 - .long sys_set_mempolicy 15.1024 - .long sys_mq_open 15.1025 - .long sys_mq_unlink 15.1026 - .long sys_mq_timedsend 15.1027 - .long sys_mq_timedreceive /* 280 */ 15.1028 - .long sys_mq_notify 15.1029 - .long sys_mq_getsetattr 15.1030 - .long sys_ni_syscall /* reserved for kexec */ 15.1031 - .long sys_waitid 15.1032 - .long sys_ni_syscall /* 285 */ /* available */ 15.1033 - .long sys_add_key 15.1034 - .long sys_request_key 15.1035 - .long sys_keyctl 15.1036 - 15.1037 -syscall_table_size=(.-sys_call_table)
16.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/head.S Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/ioport.c Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/ldt.c Thu Mar 10 18:09:19 2005 +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-xen-sparse/arch/xen/i386/kernel/microcode.c Thu Mar 10 18:09:19 2005 +0000 20.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 20.3 @@ -1,163 +0,0 @@ 20.4 -/* 20.5 - * Intel CPU Microcode Update Driver for Linux 20.6 - * 20.7 - * Copyright (C) 2000-2004 Tigran Aivazian 20.8 - * 20.9 - * This driver allows to upgrade microcode on Intel processors 20.10 - * belonging to IA-32 family - PentiumPro, Pentium II, 20.11 - * Pentium III, Xeon, Pentium 4, etc. 20.12 - * 20.13 - * Reference: Section 8.10 of Volume III, Intel Pentium 4 Manual, 20.14 - * Order Number 245472 or free download from: 20.15 - * 20.16 - * http://developer.intel.com/design/pentium4/manuals/245472.htm 20.17 - * 20.18 - * For more information, go to http://www.urbanmyth.org/microcode 20.19 - * 20.20 - * This program is free software; you can redistribute it and/or 20.21 - * modify it under the terms of the GNU General Public License 20.22 - * as published by the Free Software Foundation; either version 20.23 - * 2 of the License, or (at your option) any later version. 20.24 - */ 20.25 - 20.26 -//#define DEBUG /* pr_debug */ 20.27 -#include <linux/kernel.h> 20.28 -#include <linux/init.h> 20.29 -#include <linux/sched.h> 20.30 -#include <linux/module.h> 20.31 -#include <linux/slab.h> 20.32 -#include <linux/vmalloc.h> 20.33 -#include <linux/miscdevice.h> 20.34 -#include <linux/spinlock.h> 20.35 -#include <linux/mm.h> 20.36 -#include <linux/syscalls.h> 20.37 - 20.38 -#include <asm/msr.h> 20.39 -#include <asm/uaccess.h> 20.40 -#include <asm/processor.h> 20.41 - 20.42 -MODULE_DESCRIPTION("Intel CPU (IA-32) Microcode Update Driver"); 20.43 -MODULE_AUTHOR("Tigran Aivazian <tigran@veritas.com>"); 20.44 -MODULE_LICENSE("GPL"); 20.45 - 20.46 -#define MICROCODE_VERSION "1.14-xen" 20.47 - 20.48 -#define DEFAULT_UCODE_DATASIZE (2000) /* 2000 bytes */ 20.49 -#define MC_HEADER_SIZE (sizeof (microcode_header_t)) /* 48 bytes */ 20.50 -#define DEFAULT_UCODE_TOTALSIZE (DEFAULT_UCODE_DATASIZE + MC_HEADER_SIZE) /* 2048 bytes */ 20.51 - 20.52 -/* no concurrent ->write()s are allowed on /dev/cpu/microcode */ 20.53 -static DECLARE_MUTEX(microcode_sem); 20.54 - 20.55 -static void __user *user_buffer; /* user area microcode data buffer */ 20.56 -static unsigned int user_buffer_size; /* it's size */ 20.57 - 20.58 -static int microcode_open (struct inode *unused1, struct file *unused2) 20.59 -{ 20.60 - return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; 20.61 -} 20.62 - 20.63 - 20.64 -static int do_microcode_update (void) 20.65 -{ 20.66 - int err; 20.67 - dom0_op_t op; 20.68 - 20.69 - err = sys_mlock((unsigned long)user_buffer, user_buffer_size); 20.70 - if (err != 0) 20.71 - return err; 20.72 - 20.73 - op.cmd = DOM0_MICROCODE; 20.74 - op.u.microcode.data = user_buffer; 20.75 - op.u.microcode.length = user_buffer_size; 20.76 - err = HYPERVISOR_dom0_op(&op); 20.77 - 20.78 - (void)sys_munlock((unsigned long)user_buffer, user_buffer_size); 20.79 - 20.80 - return err; 20.81 -} 20.82 - 20.83 -static ssize_t microcode_write (struct file *file, const char __user *buf, size_t len, loff_t *ppos) 20.84 -{ 20.85 - ssize_t ret; 20.86 - 20.87 - if (len < DEFAULT_UCODE_TOTALSIZE) { 20.88 - printk(KERN_ERR "microcode: not enough data\n"); 20.89 - return -EINVAL; 20.90 - } 20.91 - 20.92 - if ((len >> PAGE_SHIFT) > num_physpages) { 20.93 - printk(KERN_ERR "microcode: too much data (max %ld pages)\n", num_physpages); 20.94 - return -EINVAL; 20.95 - } 20.96 - 20.97 - down(µcode_sem); 20.98 - 20.99 - user_buffer = (void __user *) buf; 20.100 - user_buffer_size = (int) len; 20.101 - 20.102 - ret = do_microcode_update(); 20.103 - if (!ret) 20.104 - ret = (ssize_t)len; 20.105 - 20.106 - up(µcode_sem); 20.107 - 20.108 - return ret; 20.109 -} 20.110 - 20.111 -static int microcode_ioctl (struct inode *inode, struct file *file, 20.112 - unsigned int cmd, unsigned long arg) 20.113 -{ 20.114 - switch (cmd) { 20.115 - /* 20.116 - * XXX: will be removed after microcode_ctl 20.117 - * is updated to ignore failure of this ioctl() 20.118 - */ 20.119 - case MICROCODE_IOCFREE: 20.120 - return 0; 20.121 - default: 20.122 - return -EINVAL; 20.123 - } 20.124 - return -EINVAL; 20.125 -} 20.126 - 20.127 -static struct file_operations microcode_fops = { 20.128 - .owner = THIS_MODULE, 20.129 - .write = microcode_write, 20.130 - .ioctl = microcode_ioctl, 20.131 - .open = microcode_open, 20.132 -}; 20.133 - 20.134 -static struct miscdevice microcode_dev = { 20.135 - .minor = MICROCODE_MINOR, 20.136 - .name = "microcode", 20.137 - .devfs_name = "cpu/microcode", 20.138 - .fops = µcode_fops, 20.139 -}; 20.140 - 20.141 -static int __init microcode_init (void) 20.142 -{ 20.143 - int error; 20.144 - 20.145 - error = misc_register(µcode_dev); 20.146 - if (error) { 20.147 - printk(KERN_ERR 20.148 - "microcode: can't misc_register on minor=%d\n", 20.149 - MICROCODE_MINOR); 20.150 - return error; 20.151 - } 20.152 - 20.153 - printk(KERN_INFO 20.154 - "IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@veritas.com>\n"); 20.155 - return 0; 20.156 -} 20.157 - 20.158 -static void __exit microcode_exit (void) 20.159 -{ 20.160 - misc_deregister(µcode_dev); 20.161 - printk(KERN_INFO "IA-32 Microcode Update Driver v" MICROCODE_VERSION " unregistered\n"); 20.162 -} 20.163 - 20.164 -module_init(microcode_init) 20.165 -module_exit(microcode_exit) 20.166 -MODULE_ALIAS_MISCDEV(MICROCODE_MINOR);
21.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c Thu Mar 10 18:09:19 2005 +0000 21.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 21.3 @@ -1,232 +0,0 @@ 21.4 -/* 21.5 - * Dynamic DMA mapping support. 21.6 - * 21.7 - * On i386 there is no hardware dynamic DMA address translation, 21.8 - * so consistent alloc/free are merely page allocation/freeing. 21.9 - * The rest of the dynamic DMA mapping interface is implemented 21.10 - * in asm/pci.h. 21.11 - */ 21.12 - 21.13 -#include <linux/types.h> 21.14 -#include <linux/mm.h> 21.15 -#include <linux/string.h> 21.16 -#include <linux/pci.h> 21.17 -#include <linux/version.h> 21.18 -#include <asm/io.h> 21.19 -#include <asm-xen/balloon.h> 21.20 - 21.21 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.22 -#define pte_offset_kernel pte_offset 21.23 -#endif 21.24 - 21.25 -struct dma_coherent_mem { 21.26 - void *virt_base; 21.27 - u32 device_base; 21.28 - int size; 21.29 - int flags; 21.30 - unsigned long *bitmap; 21.31 -}; 21.32 - 21.33 -static void 21.34 -xen_contig_memory(unsigned long vstart, unsigned int order) 21.35 -{ 21.36 - /* 21.37 - * Ensure multi-page extents are contiguous in machine memory. 21.38 - * This code could be cleaned up some, and the number of 21.39 - * hypercalls reduced. 21.40 - */ 21.41 - pgd_t *pgd; 21.42 - pmd_t *pmd; 21.43 - pte_t *pte; 21.44 - unsigned long pfn, i, flags; 21.45 - 21.46 - scrub_pages(vstart, 1 << order); 21.47 - 21.48 - balloon_lock(flags); 21.49 - 21.50 - /* 1. Zap current PTEs, giving away the underlying pages. */ 21.51 - for (i = 0; i < (1<<order); i++) { 21.52 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 21.53 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 21.54 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 21.55 - pfn = pte->pte_low >> PAGE_SHIFT; 21.56 - queue_l1_entry_update(pte, 0); 21.57 - phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 21.58 - INVALID_P2M_ENTRY; 21.59 - flush_page_update_queue(); 21.60 - if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation, 21.61 - &pfn, 1, 0) != 1) BUG(); 21.62 - } 21.63 - /* 2. Get a new contiguous memory extent. */ 21.64 - if (HYPERVISOR_dom_mem_op(MEMOP_increase_reservation, 21.65 - &pfn, 1, order) != 1) BUG(); 21.66 - /* 3. Map the new extent in place of old pages. */ 21.67 - for (i = 0; i < (1<<order); i++) { 21.68 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 21.69 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 21.70 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 21.71 - queue_l1_entry_update( 21.72 - pte, ((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL); 21.73 - queue_machphys_update( 21.74 - pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i); 21.75 - phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 21.76 - pfn+i; 21.77 - } 21.78 - /* Flush updates through and flush the TLB. */ 21.79 - xen_tlb_flush(); 21.80 - 21.81 - balloon_unlock(flags); 21.82 -} 21.83 - 21.84 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.85 -void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, 21.86 - dma_addr_t *dma_handle) 21.87 -#else 21.88 -void *dma_alloc_coherent(struct device *dev, size_t size, 21.89 - dma_addr_t *dma_handle, int gfp) 21.90 -#endif 21.91 -{ 21.92 - void *ret; 21.93 - unsigned int order = get_order(size); 21.94 - unsigned long vstart; 21.95 - 21.96 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.97 - int gfp = GFP_ATOMIC; 21.98 - 21.99 - if (hwdev == NULL || ((u32)hwdev->dma_mask < 0xffffffff)) 21.100 - gfp |= GFP_DMA; 21.101 -#else 21.102 - struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; 21.103 - 21.104 - /* ignore region specifiers */ 21.105 - gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); 21.106 - 21.107 - if (mem) { 21.108 - int page = bitmap_find_free_region(mem->bitmap, mem->size, 21.109 - order); 21.110 - if (page >= 0) { 21.111 - *dma_handle = mem->device_base + (page << PAGE_SHIFT); 21.112 - ret = mem->virt_base + (page << PAGE_SHIFT); 21.113 - memset(ret, 0, size); 21.114 - return ret; 21.115 - } 21.116 - if (mem->flags & DMA_MEMORY_EXCLUSIVE) 21.117 - return NULL; 21.118 - } 21.119 - 21.120 - if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) 21.121 - gfp |= GFP_DMA; 21.122 -#endif 21.123 - 21.124 - vstart = __get_free_pages(gfp, order); 21.125 - ret = (void *)vstart; 21.126 - if (ret == NULL) 21.127 - return ret; 21.128 - 21.129 - xen_contig_memory(vstart, order); 21.130 - 21.131 - memset(ret, 0, size); 21.132 - *dma_handle = virt_to_bus(ret); 21.133 - 21.134 - return ret; 21.135 -} 21.136 - 21.137 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.138 -void pci_free_consistent(struct pci_dev *hwdev, size_t size, 21.139 - void *vaddr, dma_addr_t dma_handle) 21.140 -{ 21.141 - free_pages((unsigned long)vaddr, get_order(size)); 21.142 -} 21.143 -#else 21.144 - 21.145 -void dma_free_coherent(struct device *dev, size_t size, 21.146 - void *vaddr, dma_addr_t dma_handle) 21.147 -{ 21.148 - struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; 21.149 - int order = get_order(size); 21.150 - 21.151 - if (mem && vaddr >= mem->virt_base && vaddr < (mem->virt_base + (mem->size << PAGE_SHIFT))) { 21.152 - int page = (vaddr - mem->virt_base) >> PAGE_SHIFT; 21.153 - 21.154 - bitmap_release_region(mem->bitmap, page, order); 21.155 - } else 21.156 - free_pages((unsigned long)vaddr, order); 21.157 -} 21.158 - 21.159 -int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, 21.160 - dma_addr_t device_addr, size_t size, int flags) 21.161 -{ 21.162 - void __iomem *mem_base; 21.163 - int pages = size >> PAGE_SHIFT; 21.164 - int bitmap_size = (pages + 31)/32; 21.165 - 21.166 - if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0) 21.167 - goto out; 21.168 - if (!size) 21.169 - goto out; 21.170 - if (dev->dma_mem) 21.171 - goto out; 21.172 - 21.173 - /* FIXME: this routine just ignores DMA_MEMORY_INCLUDES_CHILDREN */ 21.174 - 21.175 - mem_base = ioremap(bus_addr, size); 21.176 - if (!mem_base) 21.177 - goto out; 21.178 - 21.179 - dev->dma_mem = kmalloc(GFP_KERNEL, sizeof(struct dma_coherent_mem)); 21.180 - if (!dev->dma_mem) 21.181 - goto out; 21.182 - memset(dev->dma_mem, 0, sizeof(struct dma_coherent_mem)); 21.183 - dev->dma_mem->bitmap = kmalloc(GFP_KERNEL, bitmap_size); 21.184 - if (!dev->dma_mem->bitmap) 21.185 - goto free1_out; 21.186 - memset(dev->dma_mem->bitmap, 0, bitmap_size); 21.187 - 21.188 - dev->dma_mem->virt_base = mem_base; 21.189 - dev->dma_mem->device_base = device_addr; 21.190 - dev->dma_mem->size = pages; 21.191 - dev->dma_mem->flags = flags; 21.192 - 21.193 - if (flags & DMA_MEMORY_MAP) 21.194 - return DMA_MEMORY_MAP; 21.195 - 21.196 - return DMA_MEMORY_IO; 21.197 - 21.198 - free1_out: 21.199 - kfree(dev->dma_mem->bitmap); 21.200 - out: 21.201 - return 0; 21.202 -} 21.203 -EXPORT_SYMBOL(dma_declare_coherent_memory); 21.204 - 21.205 -void dma_release_declared_memory(struct device *dev) 21.206 -{ 21.207 - struct dma_coherent_mem *mem = dev->dma_mem; 21.208 - 21.209 - if(!mem) 21.210 - return; 21.211 - dev->dma_mem = NULL; 21.212 - kfree(mem->bitmap); 21.213 - kfree(mem); 21.214 -} 21.215 -EXPORT_SYMBOL(dma_release_declared_memory); 21.216 - 21.217 -void *dma_mark_declared_memory_occupied(struct device *dev, 21.218 - dma_addr_t device_addr, size_t size) 21.219 -{ 21.220 - struct dma_coherent_mem *mem = dev->dma_mem; 21.221 - int pages = (size + (device_addr & ~PAGE_MASK) + PAGE_SIZE - 1) >> PAGE_SHIFT; 21.222 - int pos, err; 21.223 - 21.224 - if (!mem) 21.225 - return ERR_PTR(-EINVAL); 21.226 - 21.227 - pos = (device_addr - mem->device_base) >> PAGE_SHIFT; 21.228 - err = bitmap_allocate_region(mem->bitmap, pos, get_order(pages)); 21.229 - if (err != 0) 21.230 - return ERR_PTR(err); 21.231 - return mem->virt_base + (pos << PAGE_SHIFT); 21.232 -} 21.233 -EXPORT_SYMBOL(dma_mark_declared_memory_occupied); 21.234 - 21.235 -#endif
22.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c Thu Mar 10 18:09:19 2005 +0000 22.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 22.3 @@ -1,768 +0,0 @@ 22.4 -/* 22.5 - * linux/arch/i386/kernel/process.c 22.6 - * 22.7 - * Copyright (C) 1995 Linus Torvalds 22.8 - * 22.9 - * Pentium III FXSR, SSE support 22.10 - * Gareth Hughes <gareth@valinux.com>, May 2000 22.11 - */ 22.12 - 22.13 -/* 22.14 - * This file handles the architecture-dependent parts of process handling.. 22.15 - */ 22.16 - 22.17 -#include <stdarg.h> 22.18 - 22.19 -#include <linux/errno.h> 22.20 -#include <linux/sched.h> 22.21 -#include <linux/fs.h> 22.22 -#include <linux/kernel.h> 22.23 -#include <linux/mm.h> 22.24 -#include <linux/elfcore.h> 22.25 -#include <linux/smp.h> 22.26 -#include <linux/smp_lock.h> 22.27 -#include <linux/stddef.h> 22.28 -#include <linux/slab.h> 22.29 -#include <linux/vmalloc.h> 22.30 -#include <linux/user.h> 22.31 -#include <linux/a.out.h> 22.32 -#include <linux/interrupt.h> 22.33 -#include <linux/config.h> 22.34 -#include <linux/utsname.h> 22.35 -#include <linux/delay.h> 22.36 -#include <linux/reboot.h> 22.37 -#include <linux/init.h> 22.38 -#include <linux/mc146818rtc.h> 22.39 -#include <linux/module.h> 22.40 -#include <linux/kallsyms.h> 22.41 -#include <linux/ptrace.h> 22.42 - 22.43 -#include <asm/uaccess.h> 22.44 -#include <asm/pgtable.h> 22.45 -#include <asm/system.h> 22.46 -#include <asm/io.h> 22.47 -#include <asm/ldt.h> 22.48 -#include <asm/processor.h> 22.49 -#include <asm/i387.h> 22.50 -#include <asm/irq.h> 22.51 -#include <asm/desc.h> 22.52 -#include <asm-xen/multicall.h> 22.53 -#include <asm-xen/xen-public/dom0_ops.h> 22.54 -#ifdef CONFIG_MATH_EMULATION 22.55 -#include <asm/math_emu.h> 22.56 -#endif 22.57 - 22.58 -#include <linux/irq.h> 22.59 -#include <linux/err.h> 22.60 - 22.61 -asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); 22.62 - 22.63 -int hlt_counter; 22.64 - 22.65 -unsigned long boot_option_idle_override = 0; 22.66 -EXPORT_SYMBOL(boot_option_idle_override); 22.67 - 22.68 -/* 22.69 - * Return saved PC of a blocked thread. 22.70 - */ 22.71 -unsigned long thread_saved_pc(struct task_struct *tsk) 22.72 -{ 22.73 - return ((unsigned long *)tsk->thread.esp)[3]; 22.74 -} 22.75 - 22.76 -/* 22.77 - * Powermanagement idle function, if any.. 22.78 - */ 22.79 -void (*pm_idle)(void); 22.80 - 22.81 -void disable_hlt(void) 22.82 -{ 22.83 - hlt_counter++; 22.84 -} 22.85 - 22.86 -EXPORT_SYMBOL(disable_hlt); 22.87 - 22.88 -void enable_hlt(void) 22.89 -{ 22.90 - hlt_counter--; 22.91 -} 22.92 - 22.93 -EXPORT_SYMBOL(enable_hlt); 22.94 - 22.95 -/* XXX XEN doesn't use default_idle(), poll_idle(). Use xen_idle() instead. */ 22.96 -extern int set_timeout_timer(void); 22.97 -void xen_idle(void) 22.98 -{ 22.99 - int cpu = smp_processor_id(); 22.100 - 22.101 - local_irq_disable(); 22.102 - 22.103 - if (rcu_pending(cpu)) 22.104 - rcu_check_callbacks(cpu, 0); 22.105 - 22.106 - if (need_resched()) { 22.107 - local_irq_enable(); 22.108 - } else if (set_timeout_timer() == 0) { 22.109 - /* NB. Blocking reenable events in a race-free manner. */ 22.110 - HYPERVISOR_block(); 22.111 - } else { 22.112 - local_irq_enable(); 22.113 - HYPERVISOR_yield(); 22.114 - } 22.115 -} 22.116 - 22.117 -/* 22.118 - * The idle thread. There's no useful work to be 22.119 - * done, so just try to conserve power and have a 22.120 - * low exit latency (ie sit in a loop waiting for 22.121 - * somebody to say that they'd like to reschedule) 22.122 - */ 22.123 -void cpu_idle (void) 22.124 -{ 22.125 - /* endless idle loop with no priority at all */ 22.126 - while (1) { 22.127 - while (!need_resched()) { 22.128 - /* 22.129 - * Mark this as an RCU critical section so that 22.130 - * synchronize_kernel() in the unload path waits 22.131 - * for our completion. 22.132 - */ 22.133 - rcu_read_lock(); 22.134 - irq_stat[smp_processor_id()].idle_timestamp = jiffies; 22.135 - xen_idle(); 22.136 - rcu_read_unlock(); 22.137 - } 22.138 - schedule(); 22.139 - } 22.140 -} 22.141 - 22.142 -/* XXX XEN doesn't use mwait_idle(), select_idle_routine(), idle_setup(). */ 22.143 -/* Always use xen_idle() instead. */ 22.144 -void __init select_idle_routine(const struct cpuinfo_x86 *c) {} 22.145 - 22.146 -void show_regs(struct pt_regs * regs) 22.147 -{ 22.148 - printk("\n"); 22.149 - printk("Pid: %d, comm: %20s\n", current->pid, current->comm); 22.150 - printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id()); 22.151 - print_symbol("EIP is at %s\n", regs->eip); 22.152 - 22.153 - if (regs->xcs & 2) 22.154 - printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); 22.155 - printk(" EFLAGS: %08lx %s (%s)\n", 22.156 - regs->eflags, print_tainted(),UTS_RELEASE); 22.157 - printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", 22.158 - regs->eax,regs->ebx,regs->ecx,regs->edx); 22.159 - printk("ESI: %08lx EDI: %08lx EBP: %08lx", 22.160 - regs->esi, regs->edi, regs->ebp); 22.161 - printk(" DS: %04x ES: %04x\n", 22.162 - 0xffff & regs->xds,0xffff & regs->xes); 22.163 - 22.164 - show_trace(NULL, ®s->esp); 22.165 -} 22.166 - 22.167 -/* 22.168 - * This gets run with %ebx containing the 22.169 - * function to call, and %edx containing 22.170 - * the "args". 22.171 - */ 22.172 -extern void kernel_thread_helper(void); 22.173 -__asm__(".section .text\n" 22.174 - ".align 4\n" 22.175 - "kernel_thread_helper:\n\t" 22.176 - "movl %edx,%eax\n\t" 22.177 - "pushl %edx\n\t" 22.178 - "call *%ebx\n\t" 22.179 - "pushl %eax\n\t" 22.180 - "call do_exit\n" 22.181 - ".previous"); 22.182 - 22.183 -/* 22.184 - * Create a kernel thread 22.185 - */ 22.186 -int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) 22.187 -{ 22.188 - struct pt_regs regs; 22.189 - 22.190 - memset(®s, 0, sizeof(regs)); 22.191 - 22.192 - regs.ebx = (unsigned long) fn; 22.193 - regs.edx = (unsigned long) arg; 22.194 - 22.195 - regs.xds = __USER_DS; 22.196 - regs.xes = __USER_DS; 22.197 - regs.orig_eax = -1; 22.198 - regs.eip = (unsigned long) kernel_thread_helper; 22.199 - regs.xcs = __KERNEL_CS; 22.200 - regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; 22.201 - 22.202 - /* Ok, create the new process.. */ 22.203 - return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); 22.204 -} 22.205 - 22.206 -/* 22.207 - * Free current thread data structures etc.. 22.208 - */ 22.209 -void exit_thread(void) 22.210 -{ 22.211 - struct task_struct *tsk = current; 22.212 - struct thread_struct *t = &tsk->thread; 22.213 - 22.214 - /* The process may have allocated an io port bitmap... nuke it. */ 22.215 - if (unlikely(NULL != t->io_bitmap_ptr)) { 22.216 - int cpu = get_cpu(); 22.217 - struct tss_struct *tss = &per_cpu(init_tss, cpu); 22.218 - 22.219 - kfree(t->io_bitmap_ptr); 22.220 - t->io_bitmap_ptr = NULL; 22.221 - /* 22.222 - * Careful, clear this in the TSS too: 22.223 - */ 22.224 - memset(tss->io_bitmap, 0xff, tss->io_bitmap_max); 22.225 - t->io_bitmap_max = 0; 22.226 - tss->io_bitmap_owner = NULL; 22.227 - tss->io_bitmap_max = 0; 22.228 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 22.229 - put_cpu(); 22.230 - } 22.231 -} 22.232 - 22.233 -void flush_thread(void) 22.234 -{ 22.235 - struct task_struct *tsk = current; 22.236 - 22.237 - memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8); 22.238 - memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); 22.239 - /* 22.240 - * Forget coprocessor state.. 22.241 - */ 22.242 - clear_fpu(tsk); 22.243 - tsk->used_math = 0; 22.244 -} 22.245 - 22.246 -void release_thread(struct task_struct *dead_task) 22.247 -{ 22.248 - if (dead_task->mm) { 22.249 - // temporary debugging check 22.250 - if (dead_task->mm->context.size) { 22.251 - printk("WARNING: dead process %8s still has LDT? <%p/%d>\n", 22.252 - dead_task->comm, 22.253 - dead_task->mm->context.ldt, 22.254 - dead_task->mm->context.size); 22.255 - BUG(); 22.256 - } 22.257 - } 22.258 - 22.259 - release_vm86_irqs(dead_task); 22.260 -} 22.261 - 22.262 -/* 22.263 - * This gets called before we allocate a new thread and copy 22.264 - * the current task into it. 22.265 - */ 22.266 -void prepare_to_copy(struct task_struct *tsk) 22.267 -{ 22.268 - unlazy_fpu(tsk); 22.269 -} 22.270 - 22.271 -int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, 22.272 - unsigned long unused, 22.273 - struct task_struct * p, struct pt_regs * regs) 22.274 -{ 22.275 - struct pt_regs * childregs; 22.276 - struct task_struct *tsk; 22.277 - int err; 22.278 - unsigned long eflags; 22.279 - 22.280 - childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; 22.281 - *childregs = *regs; 22.282 - childregs->eax = 0; 22.283 - childregs->esp = esp; 22.284 - 22.285 - p->thread.esp = (unsigned long) childregs; 22.286 - p->thread.esp0 = (unsigned long) (childregs+1); 22.287 - 22.288 - p->thread.eip = (unsigned long) ret_from_fork; 22.289 - 22.290 - savesegment(fs,p->thread.fs); 22.291 - savesegment(gs,p->thread.gs); 22.292 - 22.293 - tsk = current; 22.294 - if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) { 22.295 - p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); 22.296 - if (!p->thread.io_bitmap_ptr) { 22.297 - p->thread.io_bitmap_max = 0; 22.298 - return -ENOMEM; 22.299 - } 22.300 - memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, 22.301 - IO_BITMAP_BYTES); 22.302 - } 22.303 - 22.304 - /* 22.305 - * Set a new TLS for the child thread? 22.306 - */ 22.307 - if (clone_flags & CLONE_SETTLS) { 22.308 - struct desc_struct *desc; 22.309 - struct user_desc info; 22.310 - int idx; 22.311 - 22.312 - err = -EFAULT; 22.313 - if (copy_from_user(&info, (void __user *)childregs->esi, sizeof(info))) 22.314 - goto out; 22.315 - err = -EINVAL; 22.316 - if (LDT_empty(&info)) 22.317 - goto out; 22.318 - 22.319 - idx = info.entry_number; 22.320 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.321 - goto out; 22.322 - 22.323 - desc = p->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 22.324 - desc->a = LDT_entry_a(&info); 22.325 - desc->b = LDT_entry_b(&info); 22.326 - } 22.327 - 22.328 - 22.329 - __asm__ __volatile__ ( "pushfl; popl %0" : "=r" (eflags) : ); 22.330 - p->thread.io_pl = (eflags >> 12) & 3; 22.331 - 22.332 - err = 0; 22.333 - out: 22.334 - if (err && p->thread.io_bitmap_ptr) { 22.335 - kfree(p->thread.io_bitmap_ptr); 22.336 - p->thread.io_bitmap_max = 0; 22.337 - } 22.338 - return err; 22.339 -} 22.340 - 22.341 -/* 22.342 - * fill in the user structure for a core dump.. 22.343 - */ 22.344 -void dump_thread(struct pt_regs * regs, struct user * dump) 22.345 -{ 22.346 - int i; 22.347 - 22.348 -/* changed the size calculations - should hopefully work better. lbt */ 22.349 - dump->magic = CMAGIC; 22.350 - dump->start_code = 0; 22.351 - dump->start_stack = regs->esp & ~(PAGE_SIZE - 1); 22.352 - dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT; 22.353 - dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT; 22.354 - dump->u_dsize -= dump->u_tsize; 22.355 - dump->u_ssize = 0; 22.356 - for (i = 0; i < 8; i++) 22.357 - dump->u_debugreg[i] = current->thread.debugreg[i]; 22.358 - 22.359 - if (dump->start_stack < TASK_SIZE) 22.360 - dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT; 22.361 - 22.362 - dump->regs.ebx = regs->ebx; 22.363 - dump->regs.ecx = regs->ecx; 22.364 - dump->regs.edx = regs->edx; 22.365 - dump->regs.esi = regs->esi; 22.366 - dump->regs.edi = regs->edi; 22.367 - dump->regs.ebp = regs->ebp; 22.368 - dump->regs.eax = regs->eax; 22.369 - dump->regs.ds = regs->xds; 22.370 - dump->regs.es = regs->xes; 22.371 - savesegment(fs,dump->regs.fs); 22.372 - savesegment(gs,dump->regs.gs); 22.373 - dump->regs.orig_eax = regs->orig_eax; 22.374 - dump->regs.eip = regs->eip; 22.375 - dump->regs.cs = regs->xcs; 22.376 - dump->regs.eflags = regs->eflags; 22.377 - dump->regs.esp = regs->esp; 22.378 - dump->regs.ss = regs->xss; 22.379 - 22.380 - dump->u_fpvalid = dump_fpu (regs, &dump->i387); 22.381 -} 22.382 - 22.383 -/* 22.384 - * Capture the user space registers if the task is not running (in user space) 22.385 - */ 22.386 -int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) 22.387 -{ 22.388 - struct pt_regs ptregs; 22.389 - 22.390 - ptregs = *(struct pt_regs *) 22.391 - ((unsigned long)tsk->thread_info+THREAD_SIZE - sizeof(ptregs)); 22.392 - ptregs.xcs &= 0xffff; 22.393 - ptregs.xds &= 0xffff; 22.394 - ptregs.xes &= 0xffff; 22.395 - ptregs.xss &= 0xffff; 22.396 - 22.397 - elf_core_copy_regs(regs, &ptregs); 22.398 - 22.399 - boot_option_idle_override = 1; 22.400 - return 1; 22.401 -} 22.402 - 22.403 -static inline void 22.404 -handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss) 22.405 -{ 22.406 - if (!next->io_bitmap_ptr) { 22.407 - /* 22.408 - * Disable the bitmap via an invalid offset. We still cache 22.409 - * the previous bitmap owner and the IO bitmap contents: 22.410 - */ 22.411 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 22.412 - return; 22.413 - } 22.414 - if (likely(next == tss->io_bitmap_owner)) { 22.415 - /* 22.416 - * Previous owner of the bitmap (hence the bitmap content) 22.417 - * matches the next task, we dont have to do anything but 22.418 - * to set a valid offset in the TSS: 22.419 - */ 22.420 - tss->io_bitmap_base = IO_BITMAP_OFFSET; 22.421 - return; 22.422 - } 22.423 - /* 22.424 - * Lazy TSS's I/O bitmap copy. We set an invalid offset here 22.425 - * and we let the task to get a GPF in case an I/O instruction 22.426 - * is performed. The handler of the GPF will verify that the 22.427 - * faulting task has a valid I/O bitmap and, it true, does the 22.428 - * real copy and restart the instruction. This will save us 22.429 - * redundant copies when the currently switched task does not 22.430 - * perform any I/O during its timeslice. 22.431 - */ 22.432 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET_LAZY; 22.433 -} 22.434 -/* 22.435 - * This special macro can be used to load a debugging register 22.436 - */ 22.437 -#define loaddebug(thread,register) \ 22.438 - HYPERVISOR_set_debugreg((register), \ 22.439 - (thread->debugreg[register])) 22.440 - 22.441 -/* 22.442 - * switch_to(x,yn) should switch tasks from x to y. 22.443 - * 22.444 - * We fsave/fwait so that an exception goes off at the right time 22.445 - * (as a call from the fsave or fwait in effect) rather than to 22.446 - * the wrong process. Lazy FP saving no longer makes any sense 22.447 - * with modern CPU's, and this simplifies a lot of things (SMP 22.448 - * and UP become the same). 22.449 - * 22.450 - * NOTE! We used to use the x86 hardware context switching. The 22.451 - * reason for not using it any more becomes apparent when you 22.452 - * try to recover gracefully from saved state that is no longer 22.453 - * valid (stale segment register values in particular). With the 22.454 - * hardware task-switch, there is no way to fix up bad state in 22.455 - * a reasonable manner. 22.456 - * 22.457 - * The fact that Intel documents the hardware task-switching to 22.458 - * be slow is a fairly red herring - this code is not noticeably 22.459 - * faster. However, there _is_ some room for improvement here, 22.460 - * so the performance issues may eventually be a valid point. 22.461 - * More important, however, is the fact that this allows us much 22.462 - * more flexibility. 22.463 - * 22.464 - * The return value (in %eax) will be the "prev" task after 22.465 - * the task-switch, and shows up in ret_from_fork in entry.S, 22.466 - * for example. 22.467 - */ 22.468 -struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 22.469 -{ 22.470 - struct thread_struct *prev = &prev_p->thread, 22.471 - *next = &next_p->thread; 22.472 - int cpu = smp_processor_id(); 22.473 - struct tss_struct *tss = &per_cpu(init_tss, cpu); 22.474 - dom0_op_t op; 22.475 - 22.476 - /* NB. No need to disable interrupts as already done in sched.c */ 22.477 - /* __cli(); */ 22.478 - 22.479 - /* 22.480 - * Save away %fs and %gs. No need to save %es and %ds, as 22.481 - * those are always kernel segments while inside the kernel. 22.482 - */ 22.483 - asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs)); 22.484 - asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs)); 22.485 - 22.486 - /* 22.487 - * We clobber FS and GS here so that we avoid a GPF when restoring 22.488 - * previous task's FS/GS values in Xen when the LDT is switched. 22.489 - */ 22.490 - __asm__ __volatile__ ( 22.491 - "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs" : : : 22.492 - "eax" ); 22.493 - 22.494 - MULTICALL_flush_page_update_queue(); 22.495 - 22.496 - /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 22.497 - 22.498 - /* 22.499 - * This is basically '__unlazy_fpu', except that we queue a 22.500 - * multicall to indicate FPU task switch, rather than 22.501 - * synchronously trapping to Xen. 22.502 - */ 22.503 - if (prev_p->thread_info->status & TS_USEDFPU) { 22.504 - __save_init_fpu(prev_p); /* _not_ save_init_fpu() */ 22.505 - queue_multicall0(__HYPERVISOR_fpu_taskswitch); 22.506 - } 22.507 - 22.508 - /* 22.509 - * Reload esp0, LDT and the page table pointer: 22.510 - * This is load_esp0(tss, next) with a multicall. 22.511 - */ 22.512 - tss->esp0 = next->esp0; 22.513 - queue_multicall2(__HYPERVISOR_stack_switch, tss->ss0, tss->esp0); 22.514 - 22.515 - /* 22.516 - * Load the per-thread Thread-Local Storage descriptor. 22.517 - * This is load_TLS(next, cpu) with multicalls. 22.518 - */ 22.519 -#define C(i) do { \ 22.520 - if (unlikely(next->tls_array[i].a != prev->tls_array[i].a || \ 22.521 - next->tls_array[i].b != prev->tls_array[i].b)) \ 22.522 - queue_multicall3(__HYPERVISOR_update_descriptor, \ 22.523 - virt_to_machine(&get_cpu_gdt_table(cpu) \ 22.524 - [GDT_ENTRY_TLS_MIN + i]), \ 22.525 - ((u32 *)&next->tls_array[i])[0], \ 22.526 - ((u32 *)&next->tls_array[i])[1]); \ 22.527 -} while (0) 22.528 - C(0); C(1); C(2); 22.529 -#undef C 22.530 - 22.531 - if (xen_start_info.flags & SIF_PRIVILEGED) { 22.532 - op.cmd = DOM0_IOPL; 22.533 - op.u.iopl.domain = DOMID_SELF; 22.534 - op.u.iopl.iopl = next->io_pl; 22.535 - op.interface_version = DOM0_INTERFACE_VERSION; 22.536 - queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op); 22.537 - } 22.538 - 22.539 - /* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */ 22.540 - execute_multicall_list(); 22.541 - /* __sti(); */ 22.542 - 22.543 - /* 22.544 - * Restore %fs and %gs if needed. 22.545 - */ 22.546 - if (unlikely(next->fs | next->gs)) { 22.547 - loadsegment(fs, next->fs); 22.548 - loadsegment(gs, next->gs); 22.549 - } 22.550 - 22.551 - /* 22.552 - * Now maybe reload the debug registers 22.553 - */ 22.554 - if (unlikely(next->debugreg[7])) { 22.555 - loaddebug(next, 0); 22.556 - loaddebug(next, 1); 22.557 - loaddebug(next, 2); 22.558 - loaddebug(next, 3); 22.559 - /* no 4 and 5 */ 22.560 - loaddebug(next, 6); 22.561 - loaddebug(next, 7); 22.562 - } 22.563 - 22.564 - if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) 22.565 - handle_io_bitmap(next, tss); 22.566 - 22.567 - return prev_p; 22.568 -} 22.569 - 22.570 -asmlinkage int sys_fork(struct pt_regs regs) 22.571 -{ 22.572 - return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 22.573 -} 22.574 - 22.575 -asmlinkage int sys_clone(struct pt_regs regs) 22.576 -{ 22.577 - unsigned long clone_flags; 22.578 - unsigned long newsp; 22.579 - int __user *parent_tidptr, *child_tidptr; 22.580 - 22.581 - clone_flags = regs.ebx; 22.582 - newsp = regs.ecx; 22.583 - parent_tidptr = (int __user *)regs.edx; 22.584 - child_tidptr = (int __user *)regs.edi; 22.585 - if (!newsp) 22.586 - newsp = regs.esp; 22.587 - return do_fork(clone_flags, newsp, ®s, 0, parent_tidptr, child_tidptr); 22.588 -} 22.589 - 22.590 -/* 22.591 - * This is trivial, and on the face of it looks like it 22.592 - * could equally well be done in user mode. 22.593 - * 22.594 - * Not so, for quite unobvious reasons - register pressure. 22.595 - * In user mode vfork() cannot have a stack frame, and if 22.596 - * done by calling the "clone()" system call directly, you 22.597 - * do not have enough call-clobbered registers to hold all 22.598 - * the information you need. 22.599 - */ 22.600 -asmlinkage int sys_vfork(struct pt_regs regs) 22.601 -{ 22.602 - return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 22.603 -} 22.604 - 22.605 -/* 22.606 - * sys_execve() executes a new program. 22.607 - */ 22.608 -asmlinkage int sys_execve(struct pt_regs regs) 22.609 -{ 22.610 - int error; 22.611 - char * filename; 22.612 - 22.613 - filename = getname((char __user *) regs.ebx); 22.614 - error = PTR_ERR(filename); 22.615 - if (IS_ERR(filename)) 22.616 - goto out; 22.617 - error = do_execve(filename, 22.618 - (char __user * __user *) regs.ecx, 22.619 - (char __user * __user *) regs.edx, 22.620 - ®s); 22.621 - if (error == 0) { 22.622 - task_lock(current); 22.623 - current->ptrace &= ~PT_DTRACE; 22.624 - task_unlock(current); 22.625 - /* Make sure we don't return using sysenter.. */ 22.626 - set_thread_flag(TIF_IRET); 22.627 - } 22.628 - putname(filename); 22.629 -out: 22.630 - return error; 22.631 -} 22.632 - 22.633 -#define top_esp (THREAD_SIZE - sizeof(unsigned long)) 22.634 -#define top_ebp (THREAD_SIZE - 2*sizeof(unsigned long)) 22.635 - 22.636 -unsigned long get_wchan(struct task_struct *p) 22.637 -{ 22.638 - unsigned long ebp, esp, eip; 22.639 - unsigned long stack_page; 22.640 - int count = 0; 22.641 - if (!p || p == current || p->state == TASK_RUNNING) 22.642 - return 0; 22.643 - stack_page = (unsigned long)p->thread_info; 22.644 - esp = p->thread.esp; 22.645 - if (!stack_page || esp < stack_page || esp > top_esp+stack_page) 22.646 - return 0; 22.647 - /* include/asm-i386/system.h:switch_to() pushes ebp last. */ 22.648 - ebp = *(unsigned long *) esp; 22.649 - do { 22.650 - if (ebp < stack_page || ebp > top_ebp+stack_page) 22.651 - return 0; 22.652 - eip = *(unsigned long *) (ebp+4); 22.653 - if (!in_sched_functions(eip)) 22.654 - return eip; 22.655 - ebp = *(unsigned long *) ebp; 22.656 - } while (count++ < 16); 22.657 - return 0; 22.658 -} 22.659 - 22.660 -/* 22.661 - * sys_alloc_thread_area: get a yet unused TLS descriptor index. 22.662 - */ 22.663 -static int get_free_idx(void) 22.664 -{ 22.665 - struct thread_struct *t = ¤t->thread; 22.666 - int idx; 22.667 - 22.668 - for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++) 22.669 - if (desc_empty(t->tls_array + idx)) 22.670 - return idx + GDT_ENTRY_TLS_MIN; 22.671 - return -ESRCH; 22.672 -} 22.673 - 22.674 -/* 22.675 - * Set a given TLS descriptor: 22.676 - */ 22.677 -asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) 22.678 -{ 22.679 - struct thread_struct *t = ¤t->thread; 22.680 - struct user_desc info; 22.681 - struct desc_struct *desc; 22.682 - int cpu, idx; 22.683 - 22.684 - if (copy_from_user(&info, u_info, sizeof(info))) 22.685 - return -EFAULT; 22.686 - idx = info.entry_number; 22.687 - 22.688 - /* 22.689 - * index -1 means the kernel should try to find and 22.690 - * allocate an empty descriptor: 22.691 - */ 22.692 - if (idx == -1) { 22.693 - idx = get_free_idx(); 22.694 - if (idx < 0) 22.695 - return idx; 22.696 - if (put_user(idx, &u_info->entry_number)) 22.697 - return -EFAULT; 22.698 - } 22.699 - 22.700 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.701 - return -EINVAL; 22.702 - 22.703 - desc = t->tls_array + idx - GDT_ENTRY_TLS_MIN; 22.704 - 22.705 - /* 22.706 - * We must not get preempted while modifying the TLS. 22.707 - */ 22.708 - cpu = get_cpu(); 22.709 - 22.710 - if (LDT_empty(&info)) { 22.711 - desc->a = 0; 22.712 - desc->b = 0; 22.713 - } else { 22.714 - desc->a = LDT_entry_a(&info); 22.715 - desc->b = LDT_entry_b(&info); 22.716 - } 22.717 - load_TLS(t, cpu); 22.718 - 22.719 - put_cpu(); 22.720 - 22.721 - return 0; 22.722 -} 22.723 - 22.724 -/* 22.725 - * Get the current Thread-Local Storage area: 22.726 - */ 22.727 - 22.728 -#define GET_BASE(desc) ( \ 22.729 - (((desc)->a >> 16) & 0x0000ffff) | \ 22.730 - (((desc)->b << 16) & 0x00ff0000) | \ 22.731 - ( (desc)->b & 0xff000000) ) 22.732 - 22.733 -#define GET_LIMIT(desc) ( \ 22.734 - ((desc)->a & 0x0ffff) | \ 22.735 - ((desc)->b & 0xf0000) ) 22.736 - 22.737 -#define GET_32BIT(desc) (((desc)->b >> 22) & 1) 22.738 -#define GET_CONTENTS(desc) (((desc)->b >> 10) & 3) 22.739 -#define GET_WRITABLE(desc) (((desc)->b >> 9) & 1) 22.740 -#define GET_LIMIT_PAGES(desc) (((desc)->b >> 23) & 1) 22.741 -#define GET_PRESENT(desc) (((desc)->b >> 15) & 1) 22.742 -#define GET_USEABLE(desc) (((desc)->b >> 20) & 1) 22.743 - 22.744 -asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) 22.745 -{ 22.746 - struct user_desc info; 22.747 - struct desc_struct *desc; 22.748 - int idx; 22.749 - 22.750 - if (get_user(idx, &u_info->entry_number)) 22.751 - return -EFAULT; 22.752 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.753 - return -EINVAL; 22.754 - 22.755 - desc = current->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 22.756 - 22.757 - info.entry_number = idx; 22.758 - info.base_addr = GET_BASE(desc); 22.759 - info.limit = GET_LIMIT(desc); 22.760 - info.seg_32bit = GET_32BIT(desc); 22.761 - info.contents = GET_CONTENTS(desc); 22.762 - info.read_exec_only = !GET_WRITABLE(desc); 22.763 - info.limit_in_pages = GET_LIMIT_PAGES(desc); 22.764 - info.seg_not_present = !GET_PRESENT(desc); 22.765 - info.useable = GET_USEABLE(desc); 22.766 - 22.767 - if (copy_to_user(u_info, &info, sizeof(info))) 22.768 - return -EFAULT; 22.769 - return 0; 22.770 -} 22.771 -
23.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c Thu Mar 10 18:09:19 2005 +0000 23.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 23.3 @@ -1,1549 +0,0 @@ 23.4 -/* 23.5 - * linux/arch/i386/kernel/setup.c 23.6 - * 23.7 - * Copyright (C) 1995 Linus Torvalds 23.8 - * 23.9 - * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999 23.10 - * 23.11 - * Memory region support 23.12 - * David Parsons <orc@pell.chi.il.us>, July-August 1999 23.13 - * 23.14 - * Added E820 sanitization routine (removes overlapping memory regions); 23.15 - * Brian Moyle <bmoyle@mvista.com>, February 2001 23.16 - * 23.17 - * Moved CPU detection code to cpu/${cpu}.c 23.18 - * Patrick Mochel <mochel@osdl.org>, March 2002 23.19 - * 23.20 - * Provisions for empty E820 memory regions (reported by certain BIOSes). 23.21 - * Alex Achenbach <xela@slit.de>, December 2002. 23.22 - * 23.23 - */ 23.24 - 23.25 -/* 23.26 - * This file handles the architecture-dependent parts of initialization 23.27 - */ 23.28 - 23.29 -#include <linux/sched.h> 23.30 -#include <linux/mm.h> 23.31 -#include <linux/tty.h> 23.32 -#include <linux/ioport.h> 23.33 -#include <linux/acpi.h> 23.34 -#include <linux/apm_bios.h> 23.35 -#include <linux/initrd.h> 23.36 -#include <linux/bootmem.h> 23.37 -#include <linux/seq_file.h> 23.38 -#include <linux/console.h> 23.39 -#include <linux/root_dev.h> 23.40 -#include <linux/highmem.h> 23.41 -#include <linux/module.h> 23.42 -#include <linux/efi.h> 23.43 -#include <linux/init.h> 23.44 -#include <linux/edd.h> 23.45 -#include <video/edid.h> 23.46 -#include <asm/e820.h> 23.47 -#include <asm/mpspec.h> 23.48 -#include <asm/setup.h> 23.49 -#include <asm/arch_hooks.h> 23.50 -#include <asm/sections.h> 23.51 -#include <asm/io_apic.h> 23.52 -#include <asm/ist.h> 23.53 -#include <asm/io.h> 23.54 -#include <asm-xen/hypervisor.h> 23.55 -#include "setup_arch_pre.h" 23.56 -#include <bios_ebda.h> 23.57 - 23.58 -/* Allows setting of maximum possible memory size */ 23.59 -static unsigned long xen_override_max_pfn; 23.60 - 23.61 -int disable_pse __initdata = 0; 23.62 - 23.63 -/* 23.64 - * Machine setup.. 23.65 - */ 23.66 - 23.67 -#ifdef CONFIG_EFI 23.68 -int efi_enabled = 0; 23.69 -EXPORT_SYMBOL(efi_enabled); 23.70 -#endif 23.71 - 23.72 -/* cpu data as detected by the assembly code in head.S */ 23.73 -struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 23.74 -/* common cpu data for all cpus */ 23.75 -struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 23.76 - 23.77 -unsigned long mmu_cr4_features; 23.78 -EXPORT_SYMBOL_GPL(mmu_cr4_features); 23.79 - 23.80 -#ifdef CONFIG_ACPI_INTERPRETER 23.81 - int acpi_disabled = 0; 23.82 -#else 23.83 - int acpi_disabled = 1; 23.84 -#endif 23.85 -EXPORT_SYMBOL(acpi_disabled); 23.86 - 23.87 -#ifdef CONFIG_ACPI_BOOT 23.88 -int __initdata acpi_force = 0; 23.89 -extern acpi_interrupt_flags acpi_sci_flags; 23.90 -#endif 23.91 - 23.92 -int MCA_bus; 23.93 -/* for MCA, but anyone else can use it if they want */ 23.94 -unsigned int machine_id; 23.95 -unsigned int machine_submodel_id; 23.96 -unsigned int BIOS_revision; 23.97 -unsigned int mca_pentium_flag; 23.98 - 23.99 -/* For PCI or other memory-mapped resources */ 23.100 -unsigned long pci_mem_start = 0x10000000; 23.101 - 23.102 -/* user-defined highmem size */ 23.103 -static unsigned int highmem_pages = -1; 23.104 - 23.105 -/* 23.106 - * Setup options 23.107 - */ 23.108 -struct drive_info_struct { char dummy[32]; } drive_info; 23.109 -struct screen_info screen_info; 23.110 -struct apm_info apm_info; 23.111 -struct sys_desc_table_struct { 23.112 - unsigned short length; 23.113 - unsigned char table[0]; 23.114 -}; 23.115 -struct edid_info edid_info; 23.116 -struct ist_info ist_info; 23.117 -struct e820map e820; 23.118 - 23.119 -unsigned char aux_device_present; 23.120 - 23.121 -extern void early_cpu_init(void); 23.122 -extern void dmi_scan_machine(void); 23.123 -extern void generic_apic_probe(char *); 23.124 -extern int root_mountflags; 23.125 - 23.126 -unsigned long saved_videomode; 23.127 - 23.128 -#define RAMDISK_IMAGE_START_MASK 0x07FF 23.129 -#define RAMDISK_PROMPT_FLAG 0x8000 23.130 -#define RAMDISK_LOAD_FLAG 0x4000 23.131 - 23.132 -static char command_line[COMMAND_LINE_SIZE]; 23.133 - 23.134 -unsigned char __initdata boot_params[PARAM_SIZE]; 23.135 - 23.136 -static struct resource data_resource = { 23.137 - .name = "Kernel data", 23.138 - .start = 0, 23.139 - .end = 0, 23.140 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.141 -}; 23.142 - 23.143 -static struct resource code_resource = { 23.144 - .name = "Kernel code", 23.145 - .start = 0, 23.146 - .end = 0, 23.147 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.148 -}; 23.149 - 23.150 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.151 -static struct resource system_rom_resource = { 23.152 - .name = "System ROM", 23.153 - .start = 0xf0000, 23.154 - .end = 0xfffff, 23.155 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.156 -}; 23.157 - 23.158 -static struct resource extension_rom_resource = { 23.159 - .name = "Extension ROM", 23.160 - .start = 0xe0000, 23.161 - .end = 0xeffff, 23.162 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.163 -}; 23.164 - 23.165 -static struct resource adapter_rom_resources[] = { { 23.166 - .name = "Adapter ROM", 23.167 - .start = 0xc8000, 23.168 - .end = 0, 23.169 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.170 -}, { 23.171 - .name = "Adapter ROM", 23.172 - .start = 0, 23.173 - .end = 0, 23.174 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.175 -}, { 23.176 - .name = "Adapter ROM", 23.177 - .start = 0, 23.178 - .end = 0, 23.179 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.180 -}, { 23.181 - .name = "Adapter ROM", 23.182 - .start = 0, 23.183 - .end = 0, 23.184 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.185 -}, { 23.186 - .name = "Adapter ROM", 23.187 - .start = 0, 23.188 - .end = 0, 23.189 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.190 -}, { 23.191 - .name = "Adapter ROM", 23.192 - .start = 0, 23.193 - .end = 0, 23.194 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.195 -} }; 23.196 - 23.197 -#define ADAPTER_ROM_RESOURCES \ 23.198 - (sizeof adapter_rom_resources / sizeof adapter_rom_resources[0]) 23.199 - 23.200 -static struct resource video_rom_resource = { 23.201 - .name = "Video ROM", 23.202 - .start = 0xc0000, 23.203 - .end = 0xc7fff, 23.204 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.205 -}; 23.206 -#endif 23.207 - 23.208 -static struct resource video_ram_resource = { 23.209 - .name = "Video RAM area", 23.210 - .start = 0xa0000, 23.211 - .end = 0xbffff, 23.212 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.213 -}; 23.214 - 23.215 -static struct resource standard_io_resources[] = { { 23.216 - .name = "dma1", 23.217 - .start = 0x0000, 23.218 - .end = 0x001f, 23.219 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.220 -}, { 23.221 - .name = "pic1", 23.222 - .start = 0x0020, 23.223 - .end = 0x0021, 23.224 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.225 -}, { 23.226 - .name = "timer0", 23.227 - .start = 0x0040, 23.228 - .end = 0x0043, 23.229 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.230 -}, { 23.231 - .name = "timer1", 23.232 - .start = 0x0050, 23.233 - .end = 0x0053, 23.234 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.235 -}, { 23.236 - .name = "keyboard", 23.237 - .start = 0x0060, 23.238 - .end = 0x006f, 23.239 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.240 -}, { 23.241 - .name = "dma page reg", 23.242 - .start = 0x0080, 23.243 - .end = 0x008f, 23.244 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.245 -}, { 23.246 - .name = "pic2", 23.247 - .start = 0x00a0, 23.248 - .end = 0x00a1, 23.249 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.250 -}, { 23.251 - .name = "dma2", 23.252 - .start = 0x00c0, 23.253 - .end = 0x00df, 23.254 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.255 -}, { 23.256 - .name = "fpu", 23.257 - .start = 0x00f0, 23.258 - .end = 0x00ff, 23.259 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.260 -} }; 23.261 - 23.262 -#define STANDARD_IO_RESOURCES \ 23.263 - (sizeof standard_io_resources / sizeof standard_io_resources[0]) 23.264 - 23.265 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.266 -#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) 23.267 - 23.268 -static int __init romchecksum(unsigned char *rom, unsigned long length) 23.269 -{ 23.270 - unsigned char *p, sum = 0; 23.271 - 23.272 - for (p = rom; p < rom + length; p++) 23.273 - sum += *p; 23.274 - return sum == 0; 23.275 -} 23.276 - 23.277 -static void __init probe_roms(void) 23.278 -{ 23.279 - unsigned long start, length, upper; 23.280 - unsigned char *rom; 23.281 - int i; 23.282 - 23.283 - /* video rom */ 23.284 - upper = adapter_rom_resources[0].start; 23.285 - for (start = video_rom_resource.start; start < upper; start += 2048) { 23.286 - rom = isa_bus_to_virt(start); 23.287 - if (!romsignature(rom)) 23.288 - continue; 23.289 - 23.290 - video_rom_resource.start = start; 23.291 - 23.292 - /* 0 < length <= 0x7f * 512, historically */ 23.293 - length = rom[2] * 512; 23.294 - 23.295 - /* if checksum okay, trust length byte */ 23.296 - if (length && romchecksum(rom, length)) 23.297 - video_rom_resource.end = start + length - 1; 23.298 - 23.299 - request_resource(&iomem_resource, &video_rom_resource); 23.300 - break; 23.301 - } 23.302 - 23.303 - start = (video_rom_resource.end + 1 + 2047) & ~2047UL; 23.304 - if (start < upper) 23.305 - start = upper; 23.306 - 23.307 - /* system rom */ 23.308 - request_resource(&iomem_resource, &system_rom_resource); 23.309 - upper = system_rom_resource.start; 23.310 - 23.311 - /* check for extension rom (ignore length byte!) */ 23.312 - rom = isa_bus_to_virt(extension_rom_resource.start); 23.313 - if (romsignature(rom)) { 23.314 - length = extension_rom_resource.end - extension_rom_resource.start + 1; 23.315 - if (romchecksum(rom, length)) { 23.316 - request_resource(&iomem_resource, &extension_rom_resource); 23.317 - upper = extension_rom_resource.start; 23.318 - } 23.319 - } 23.320 - 23.321 - /* check for adapter roms on 2k boundaries */ 23.322 - for (i = 0; i < ADAPTER_ROM_RESOURCES && start < upper; start += 2048) { 23.323 - rom = isa_bus_to_virt(start); 23.324 - if (!romsignature(rom)) 23.325 - continue; 23.326 - 23.327 - /* 0 < length <= 0x7f * 512, historically */ 23.328 - length = rom[2] * 512; 23.329 - 23.330 - /* but accept any length that fits if checksum okay */ 23.331 - if (!length || start + length > upper || !romchecksum(rom, length)) 23.332 - continue; 23.333 - 23.334 - adapter_rom_resources[i].start = start; 23.335 - adapter_rom_resources[i].end = start + length - 1; 23.336 - request_resource(&iomem_resource, &adapter_rom_resources[i]); 23.337 - 23.338 - start = adapter_rom_resources[i++].end & ~2047UL; 23.339 - } 23.340 -} 23.341 -#endif 23.342 - 23.343 -/* 23.344 - * Point at the empty zero page to start with. We map the real shared_info 23.345 - * page as soon as fixmap is up and running. 23.346 - */ 23.347 -shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; 23.348 -EXPORT_SYMBOL(HYPERVISOR_shared_info); 23.349 - 23.350 -unsigned long *phys_to_machine_mapping, *pfn_to_mfn_frame_list; 23.351 -EXPORT_SYMBOL(phys_to_machine_mapping); 23.352 - 23.353 -multicall_entry_t multicall_list[8]; 23.354 -int nr_multicall_ents = 0; 23.355 - 23.356 -/* Raw start-of-day parameters from the hypervisor. */ 23.357 -union xen_start_info_union xen_start_info_union; 23.358 - 23.359 -static void __init limit_regions(unsigned long long size) 23.360 -{ 23.361 - unsigned long long current_addr = 0; 23.362 - int i; 23.363 - 23.364 - if (efi_enabled) { 23.365 - for (i = 0; i < memmap.nr_map; i++) { 23.366 - current_addr = memmap.map[i].phys_addr + 23.367 - (memmap.map[i].num_pages << 12); 23.368 - if (memmap.map[i].type == EFI_CONVENTIONAL_MEMORY) { 23.369 - if (current_addr >= size) { 23.370 - memmap.map[i].num_pages -= 23.371 - (((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT); 23.372 - memmap.nr_map = i + 1; 23.373 - return; 23.374 - } 23.375 - } 23.376 - } 23.377 - } 23.378 - for (i = 0; i < e820.nr_map; i++) { 23.379 - if (e820.map[i].type == E820_RAM) { 23.380 - current_addr = e820.map[i].addr + e820.map[i].size; 23.381 - if (current_addr >= size) { 23.382 - e820.map[i].size -= current_addr-size; 23.383 - e820.nr_map = i + 1; 23.384 - return; 23.385 - } 23.386 - } 23.387 - } 23.388 -} 23.389 - 23.390 -static void __init add_memory_region(unsigned long long start, 23.391 - unsigned long long size, int type) 23.392 -{ 23.393 - int x; 23.394 - 23.395 - if (!efi_enabled) { 23.396 - x = e820.nr_map; 23.397 - 23.398 - if (x == E820MAX) { 23.399 - printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); 23.400 - return; 23.401 - } 23.402 - 23.403 - e820.map[x].addr = start; 23.404 - e820.map[x].size = size; 23.405 - e820.map[x].type = type; 23.406 - e820.nr_map++; 23.407 - } 23.408 -} /* add_memory_region */ 23.409 - 23.410 -#define E820_DEBUG 1 23.411 - 23.412 -static void __init print_memory_map(char *who) 23.413 -{ 23.414 - int i; 23.415 - 23.416 - for (i = 0; i < e820.nr_map; i++) { 23.417 - printk(" %s: %016Lx - %016Lx ", who, 23.418 - e820.map[i].addr, 23.419 - e820.map[i].addr + e820.map[i].size); 23.420 - switch (e820.map[i].type) { 23.421 - case E820_RAM: printk("(usable)\n"); 23.422 - break; 23.423 - case E820_RESERVED: 23.424 - printk("(reserved)\n"); 23.425 - break; 23.426 - case E820_ACPI: 23.427 - printk("(ACPI data)\n"); 23.428 - break; 23.429 - case E820_NVS: 23.430 - printk("(ACPI NVS)\n"); 23.431 - break; 23.432 - default: printk("type %lu\n", e820.map[i].type); 23.433 - break; 23.434 - } 23.435 - } 23.436 -} 23.437 - 23.438 -#if 0 23.439 -/* 23.440 - * Sanitize the BIOS e820 map. 23.441 - * 23.442 - * Some e820 responses include overlapping entries. The following 23.443 - * replaces the original e820 map with a new one, removing overlaps. 23.444 - * 23.445 - */ 23.446 -struct change_member { 23.447 - struct e820entry *pbios; /* pointer to original bios entry */ 23.448 - unsigned long long addr; /* address for this change point */ 23.449 -}; 23.450 -struct change_member change_point_list[2*E820MAX] __initdata; 23.451 -struct change_member *change_point[2*E820MAX] __initdata; 23.452 -struct e820entry *overlap_list[E820MAX] __initdata; 23.453 -struct e820entry new_bios[E820MAX] __initdata; 23.454 - 23.455 -static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map) 23.456 -{ 23.457 - struct change_member *change_tmp; 23.458 - unsigned long current_type, last_type; 23.459 - unsigned long long last_addr; 23.460 - int chgidx, still_changing; 23.461 - int overlap_entries; 23.462 - int new_bios_entry; 23.463 - int old_nr, new_nr, chg_nr; 23.464 - int i; 23.465 - 23.466 - /* 23.467 - Visually we're performing the following (1,2,3,4 = memory types)... 23.468 - 23.469 - Sample memory map (w/overlaps): 23.470 - ____22__________________ 23.471 - ______________________4_ 23.472 - ____1111________________ 23.473 - _44_____________________ 23.474 - 11111111________________ 23.475 - ____________________33__ 23.476 - ___________44___________ 23.477 - __________33333_________ 23.478 - ______________22________ 23.479 - ___________________2222_ 23.480 - _________111111111______ 23.481 - _____________________11_ 23.482 - _________________4______ 23.483 - 23.484 - Sanitized equivalent (no overlap): 23.485 - 1_______________________ 23.486 - _44_____________________ 23.487 - ___1____________________ 23.488 - ____22__________________ 23.489 - ______11________________ 23.490 - _________1______________ 23.491 - __________3_____________ 23.492 - ___________44___________ 23.493 - _____________33_________ 23.494 - _______________2________ 23.495 - ________________1_______ 23.496 - _________________4______ 23.497 - ___________________2____ 23.498 - ____________________33__ 23.499 - ______________________4_ 23.500 - */ 23.501 - 23.502 - /* if there's only one memory region, don't bother */ 23.503 - if (*pnr_map < 2) 23.504 - return -1; 23.505 - 23.506 - old_nr = *pnr_map; 23.507 - 23.508 - /* bail out if we find any unreasonable addresses in bios map */ 23.509 - for (i=0; i<old_nr; i++) 23.510 - if (biosmap[i].addr + biosmap[i].size < biosmap[i].addr) 23.511 - return -1; 23.512 - 23.513 - /* create pointers for initial change-point information (for sorting) */ 23.514 - for (i=0; i < 2*old_nr; i++) 23.515 - change_point[i] = &change_point_list[i]; 23.516 - 23.517 - /* record all known change-points (starting and ending addresses), 23.518 - omitting those that are for empty memory regions */ 23.519 - chgidx = 0; 23.520 - for (i=0; i < old_nr; i++) { 23.521 - if (biosmap[i].size != 0) { 23.522 - change_point[chgidx]->addr = biosmap[i].addr; 23.523 - change_point[chgidx++]->pbios = &biosmap[i]; 23.524 - change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size; 23.525 - change_point[chgidx++]->pbios = &biosmap[i]; 23.526 - } 23.527 - } 23.528 - chg_nr = chgidx; /* true number of change-points */ 23.529 - 23.530 - /* sort change-point list by memory addresses (low -> high) */ 23.531 - still_changing = 1; 23.532 - while (still_changing) { 23.533 - still_changing = 0; 23.534 - for (i=1; i < chg_nr; i++) { 23.535 - /* if <current_addr> > <last_addr>, swap */ 23.536 - /* or, if current=<start_addr> & last=<end_addr>, swap */ 23.537 - if ((change_point[i]->addr < change_point[i-1]->addr) || 23.538 - ((change_point[i]->addr == change_point[i-1]->addr) && 23.539 - (change_point[i]->addr == change_point[i]->pbios->addr) && 23.540 - (change_point[i-1]->addr != change_point[i-1]->pbios->addr)) 23.541 - ) 23.542 - { 23.543 - change_tmp = change_point[i]; 23.544 - change_point[i] = change_point[i-1]; 23.545 - change_point[i-1] = change_tmp; 23.546 - still_changing=1; 23.547 - } 23.548 - } 23.549 - } 23.550 - 23.551 - /* create a new bios memory map, removing overlaps */ 23.552 - overlap_entries=0; /* number of entries in the overlap table */ 23.553 - new_bios_entry=0; /* index for creating new bios map entries */ 23.554 - last_type = 0; /* start with undefined memory type */ 23.555 - last_addr = 0; /* start with 0 as last starting address */ 23.556 - /* loop through change-points, determining affect on the new bios map */ 23.557 - for (chgidx=0; chgidx < chg_nr; chgidx++) 23.558 - { 23.559 - /* keep track of all overlapping bios entries */ 23.560 - if (change_point[chgidx]->addr == change_point[chgidx]->pbios->addr) 23.561 - { 23.562 - /* add map entry to overlap list (> 1 entry implies an overlap) */ 23.563 - overlap_list[overlap_entries++]=change_point[chgidx]->pbios; 23.564 - } 23.565 - else 23.566 - { 23.567 - /* remove entry from list (order independent, so swap with last) */ 23.568 - for (i=0; i<overlap_entries; i++) 23.569 - { 23.570 - if (overlap_list[i] == change_point[chgidx]->pbios) 23.571 - overlap_list[i] = overlap_list[overlap_entries-1]; 23.572 - } 23.573 - overlap_entries--; 23.574 - } 23.575 - /* if there are overlapping entries, decide which "type" to use */ 23.576 - /* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */ 23.577 - current_type = 0; 23.578 - for (i=0; i<overlap_entries; i++) 23.579 - if (overlap_list[i]->type > current_type) 23.580 - current_type = overlap_list[i]->type; 23.581 - /* continue building up new bios map based on this information */ 23.582 - if (current_type != last_type) { 23.583 - if (last_type != 0) { 23.584 - new_bios[new_bios_entry].size = 23.585 - change_point[chgidx]->addr - last_addr; 23.586 - /* move forward only if the new size was non-zero */ 23.587 - if (new_bios[new_bios_entry].size != 0) 23.588 - if (++new_bios_entry >= E820MAX) 23.589 - break; /* no more space left for new bios entries */ 23.590 - } 23.591 - if (current_type != 0) { 23.592 - new_bios[new_bios_entry].addr = change_point[chgidx]->addr; 23.593 - new_bios[new_bios_entry].type = current_type; 23.594 - last_addr=change_point[chgidx]->addr; 23.595 - } 23.596 - last_type = current_type; 23.597 - } 23.598 - } 23.599 - new_nr = new_bios_entry; /* retain count for new bios entries */ 23.600 - 23.601 - /* copy new bios mapping into original location */ 23.602 - memcpy(biosmap, new_bios, new_nr*sizeof(struct e820entry)); 23.603 - *pnr_map = new_nr; 23.604 - 23.605 - return 0; 23.606 -} 23.607 - 23.608 -/* 23.609 - * Copy the BIOS e820 map into a safe place. 23.610 - * 23.611 - * Sanity-check it while we're at it.. 23.612 - * 23.613 - * If we're lucky and live on a modern system, the setup code 23.614 - * will have given us a memory map that we can use to properly 23.615 - * set up memory. If we aren't, we'll fake a memory map. 23.616 - * 23.617 - * We check to see that the memory map contains at least 2 elements 23.618 - * before we'll use it, because the detection code in setup.S may 23.619 - * not be perfect and most every PC known to man has two memory 23.620 - * regions: one from 0 to 640k, and one from 1mb up. (The IBM 23.621 - * thinkpad 560x, for example, does not cooperate with the memory 23.622 - * detection code.) 23.623 - */ 23.624 -static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) 23.625 -{ 23.626 - /* Only one memory region (or negative)? Ignore it */ 23.627 - if (nr_map < 2) 23.628 - return -1; 23.629 - 23.630 - do { 23.631 - unsigned long long start = biosmap->addr; 23.632 - unsigned long long size = biosmap->size; 23.633 - unsigned long long end = start + size; 23.634 - unsigned long type = biosmap->type; 23.635 - 23.636 - /* Overflow in 64 bits? Ignore the memory map. */ 23.637 - if (start > end) 23.638 - return -1; 23.639 - 23.640 - /* 23.641 - * Some BIOSes claim RAM in the 640k - 1M region. 23.642 - * Not right. Fix it up. 23.643 - */ 23.644 - if (type == E820_RAM) { 23.645 - if (start < 0x100000ULL && end > 0xA0000ULL) { 23.646 - if (start < 0xA0000ULL) 23.647 - add_memory_region(start, 0xA0000ULL-start, type); 23.648 - if (end <= 0x100000ULL) 23.649 - continue; 23.650 - start = 0x100000ULL; 23.651 - size = end - start; 23.652 - } 23.653 - } 23.654 - add_memory_region(start, size, type); 23.655 - } while (biosmap++,--nr_map); 23.656 - return 0; 23.657 -} 23.658 -#endif 23.659 - 23.660 -#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) 23.661 -struct edd edd; 23.662 -#ifdef CONFIG_EDD_MODULE 23.663 -EXPORT_SYMBOL(edd); 23.664 -#endif 23.665 -/** 23.666 - * copy_edd() - Copy the BIOS EDD information 23.667 - * from boot_params into a safe place. 23.668 - * 23.669 - */ 23.670 -static inline void copy_edd(void) 23.671 -{ 23.672 - memcpy(edd.mbr_signature, EDD_MBR_SIGNATURE, sizeof(edd.mbr_signature)); 23.673 - memcpy(edd.edd_info, EDD_BUF, sizeof(edd.edd_info)); 23.674 - edd.mbr_signature_nr = EDD_MBR_SIG_NR; 23.675 - edd.edd_info_nr = EDD_NR; 23.676 -} 23.677 -#else 23.678 -static inline void copy_edd(void) 23.679 -{ 23.680 -} 23.681 -#endif 23.682 - 23.683 -/* 23.684 - * Do NOT EVER look at the BIOS memory size location. 23.685 - * It does not work on many machines. 23.686 - */ 23.687 -#define LOWMEMSIZE() (0x9f000) 23.688 - 23.689 -static void __init parse_cmdline_early (char ** cmdline_p) 23.690 -{ 23.691 - char c = ' ', *to = command_line, *from = saved_command_line; 23.692 - int len = 0; 23.693 - int userdef = 0; 23.694 - 23.695 - memcpy(saved_command_line, xen_start_info.cmd_line, MAX_CMDLINE); 23.696 - /* Save unparsed command line copy for /proc/cmdline */ 23.697 - saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 23.698 - 23.699 - for (;;) { 23.700 - /* 23.701 - * "mem=nopentium" disables the 4MB page tables. 23.702 - * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM 23.703 - * to <mem>, overriding the bios size. 23.704 - * "memmap=XXX[KkmM]@XXX[KkmM]" defines a memory region from 23.705 - * <start> to <start>+<mem>, overriding the bios size. 23.706 - * 23.707 - * HPA tells me bootloaders need to parse mem=, so no new 23.708 - * option should be mem= [also see Documentation/i386/boot.txt] 23.709 - */ 23.710 - if (c == ' ' && !memcmp(from, "mem=", 4)) { 23.711 - if (to != command_line) 23.712 - to--; 23.713 - if (!memcmp(from+4, "nopentium", 9)) { 23.714 - from += 9+4; 23.715 - clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability); 23.716 - disable_pse = 1; 23.717 - } else { 23.718 - /* If the user specifies memory size, we 23.719 - * limit the BIOS-provided memory map to 23.720 - * that size. exactmap can be used to specify 23.721 - * the exact map. mem=number can be used to 23.722 - * trim the existing memory map. 23.723 - */ 23.724 - unsigned long long mem_size; 23.725 - 23.726 - mem_size = memparse(from+4, &from); 23.727 -#if 0 23.728 - limit_regions(mem_size); 23.729 - userdef=1; 23.730 -#else 23.731 - xen_override_max_pfn = 23.732 - (unsigned long)(mem_size>>PAGE_SHIFT); 23.733 -#endif 23.734 - } 23.735 - } 23.736 - 23.737 - if (c == ' ' && !memcmp(from, "memmap=", 7)) { 23.738 - if (to != command_line) 23.739 - to--; 23.740 - if (!memcmp(from+7, "exactmap", 8)) { 23.741 - from += 8+7; 23.742 - e820.nr_map = 0; 23.743 - userdef = 1; 23.744 - } else { 23.745 - /* If the user specifies memory size, we 23.746 - * limit the BIOS-provided memory map to 23.747 - * that size. exactmap can be used to specify 23.748 - * the exact map. mem=number can be used to 23.749 - * trim the existing memory map. 23.750 - */ 23.751 - unsigned long long start_at, mem_size; 23.752 - 23.753 - mem_size = memparse(from+7, &from); 23.754 - if (*from == '@') { 23.755 - start_at = memparse(from+1, &from); 23.756 - add_memory_region(start_at, mem_size, E820_RAM); 23.757 - } else if (*from == '#') { 23.758 - start_at = memparse(from+1, &from); 23.759 - add_memory_region(start_at, mem_size, E820_ACPI); 23.760 - } else if (*from == '$') { 23.761 - start_at = memparse(from+1, &from); 23.762 - add_memory_region(start_at, mem_size, E820_RESERVED); 23.763 - } else { 23.764 - limit_regions(mem_size); 23.765 - userdef=1; 23.766 - } 23.767 - } 23.768 - } 23.769 - 23.770 -#ifdef CONFIG_X86_SMP 23.771 - /* 23.772 - * If the BIOS enumerates physical processors before logical, 23.773 - * maxcpus=N at enumeration-time can be used to disable HT. 23.774 - */ 23.775 - else if (!memcmp(from, "maxcpus=", 8)) { 23.776 - extern unsigned int maxcpus; 23.777 - 23.778 - maxcpus = simple_strtoul(from + 8, NULL, 0); 23.779 - } 23.780 -#endif 23.781 - 23.782 -#ifdef CONFIG_ACPI_BOOT 23.783 - /* "acpi=off" disables both ACPI table parsing and interpreter */ 23.784 - else if (!memcmp(from, "acpi=off", 8)) { 23.785 - disable_acpi(); 23.786 - } 23.787 - 23.788 - /* acpi=force to over-ride black-list */ 23.789 - else if (!memcmp(from, "acpi=force", 10)) { 23.790 - acpi_force = 1; 23.791 - acpi_ht = 1; 23.792 - acpi_disabled = 0; 23.793 - } 23.794 - 23.795 - /* acpi=strict disables out-of-spec workarounds */ 23.796 - else if (!memcmp(from, "acpi=strict", 11)) { 23.797 - acpi_strict = 1; 23.798 - } 23.799 - 23.800 - /* Limit ACPI just to boot-time to enable HT */ 23.801 - else if (!memcmp(from, "acpi=ht", 7)) { 23.802 - if (!acpi_force) 23.803 - disable_acpi(); 23.804 - acpi_ht = 1; 23.805 - } 23.806 - 23.807 - /* "pci=noacpi" disable ACPI IRQ routing and PCI scan */ 23.808 - else if (!memcmp(from, "pci=noacpi", 10)) { 23.809 - acpi_disable_pci(); 23.810 - } 23.811 - /* "acpi=noirq" disables ACPI interrupt routing */ 23.812 - else if (!memcmp(from, "acpi=noirq", 10)) { 23.813 - acpi_noirq_set(); 23.814 - } 23.815 - 23.816 - else if (!memcmp(from, "acpi_sci=edge", 13)) 23.817 - acpi_sci_flags.trigger = 1; 23.818 - 23.819 - else if (!memcmp(from, "acpi_sci=level", 14)) 23.820 - acpi_sci_flags.trigger = 3; 23.821 - 23.822 - else if (!memcmp(from, "acpi_sci=high", 13)) 23.823 - acpi_sci_flags.polarity = 1; 23.824 - 23.825 - else if (!memcmp(from, "acpi_sci=low", 12)) 23.826 - acpi_sci_flags.polarity = 3; 23.827 - 23.828 -#ifdef CONFIG_X86_IO_APIC 23.829 - else if (!memcmp(from, "acpi_skip_timer_override", 24)) 23.830 - acpi_skip_timer_override = 1; 23.831 -#endif 23.832 - 23.833 -#ifdef CONFIG_X86_LOCAL_APIC 23.834 - /* disable IO-APIC */ 23.835 - else if (!memcmp(from, "noapic", 6)) 23.836 - disable_ioapic_setup(); 23.837 -#endif /* CONFIG_X86_LOCAL_APIC */ 23.838 -#endif /* CONFIG_ACPI_BOOT */ 23.839 - 23.840 - /* 23.841 - * highmem=size forces highmem to be exactly 'size' bytes. 23.842 - * This works even on boxes that have no highmem otherwise. 23.843 - * This also works to reduce highmem size on bigger boxes. 23.844 - */ 23.845 - if (c == ' ' && !memcmp(from, "highmem=", 8)) 23.846 - highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT; 23.847 - 23.848 - /* 23.849 - * vmalloc=size forces the vmalloc area to be exactly 'size' 23.850 - * bytes. This can be used to increase (or decrease) the 23.851 - * vmalloc area - the default is 128m. 23.852 - */ 23.853 - if (c == ' ' && !memcmp(from, "vmalloc=", 8)) 23.854 - __VMALLOC_RESERVE = memparse(from+8, &from); 23.855 - 23.856 - c = *(from++); 23.857 - if (!c) 23.858 - break; 23.859 - if (COMMAND_LINE_SIZE <= ++len) 23.860 - break; 23.861 - *(to++) = c; 23.862 - } 23.863 - *to = '\0'; 23.864 - *cmdline_p = command_line; 23.865 - if (userdef) { 23.866 - printk(KERN_INFO "user-defined physical RAM map:\n"); 23.867 - print_memory_map("user"); 23.868 - } 23.869 -} 23.870 - 23.871 -#if 0 /* !XEN */ 23.872 -/* 23.873 - * Callback for efi_memory_walk. 23.874 - */ 23.875 -static int __init 23.876 -efi_find_max_pfn(unsigned long start, unsigned long end, void *arg) 23.877 -{ 23.878 - unsigned long *max_pfn = arg, pfn; 23.879 - 23.880 - if (start < end) { 23.881 - pfn = PFN_UP(end -1); 23.882 - if (pfn > *max_pfn) 23.883 - *max_pfn = pfn; 23.884 - } 23.885 - return 0; 23.886 -} 23.887 - 23.888 -/* 23.889 - * Find the highest page frame number we have available 23.890 - */ 23.891 -void __init find_max_pfn(void) 23.892 -{ 23.893 - int i; 23.894 - 23.895 - max_pfn = 0; 23.896 - if (efi_enabled) { 23.897 - efi_memmap_walk(efi_find_max_pfn, &max_pfn); 23.898 - return; 23.899 - } 23.900 - 23.901 - for (i = 0; i < e820.nr_map; i++) { 23.902 - unsigned long start, end; 23.903 - /* RAM? */ 23.904 - if (e820.map[i].type != E820_RAM) 23.905 - continue; 23.906 - start = PFN_UP(e820.map[i].addr); 23.907 - end = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 23.908 - if (start >= end) 23.909 - continue; 23.910 - if (end > max_pfn) 23.911 - max_pfn = end; 23.912 - } 23.913 -} 23.914 -#else 23.915 -/* We don't use the fake e820 because we need to respond to user override. */ 23.916 -void __init find_max_pfn(void) 23.917 -{ 23.918 - if ( xen_override_max_pfn < xen_start_info.nr_pages ) 23.919 - xen_override_max_pfn = xen_start_info.nr_pages; 23.920 - max_pfn = xen_override_max_pfn; 23.921 -} 23.922 -#endif /* XEN */ 23.923 - 23.924 -/* 23.925 - * Determine low and high memory ranges: 23.926 - */ 23.927 -unsigned long __init find_max_low_pfn(void) 23.928 -{ 23.929 - unsigned long max_low_pfn; 23.930 - 23.931 - max_low_pfn = max_pfn; 23.932 - if (max_low_pfn > MAXMEM_PFN) { 23.933 - if (highmem_pages == -1) 23.934 - highmem_pages = max_pfn - MAXMEM_PFN; 23.935 - if (highmem_pages + MAXMEM_PFN < max_pfn) 23.936 - max_pfn = MAXMEM_PFN + highmem_pages; 23.937 - if (highmem_pages + MAXMEM_PFN > max_pfn) { 23.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)); 23.939 - highmem_pages = 0; 23.940 - } 23.941 - max_low_pfn = MAXMEM_PFN; 23.942 -#ifndef CONFIG_HIGHMEM 23.943 - /* Maximum memory usable is what is directly addressable */ 23.944 - printk(KERN_WARNING "Warning only %ldMB will be used.\n", 23.945 - MAXMEM>>20); 23.946 - if (max_pfn > MAX_NONPAE_PFN) 23.947 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 23.948 - else 23.949 - printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n"); 23.950 - max_pfn = MAXMEM_PFN; 23.951 -#else /* !CONFIG_HIGHMEM */ 23.952 -#ifndef CONFIG_X86_PAE 23.953 - if (max_pfn > MAX_NONPAE_PFN) { 23.954 - max_pfn = MAX_NONPAE_PFN; 23.955 - printk(KERN_WARNING "Warning only 4GB will be used.\n"); 23.956 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 23.957 - } 23.958 -#endif /* !CONFIG_X86_PAE */ 23.959 -#endif /* !CONFIG_HIGHMEM */ 23.960 - } else { 23.961 - if (highmem_pages == -1) 23.962 - highmem_pages = 0; 23.963 -#ifdef CONFIG_HIGHMEM 23.964 - if (highmem_pages >= max_pfn) { 23.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)); 23.966 - highmem_pages = 0; 23.967 - } 23.968 - if (highmem_pages) { 23.969 - if (max_low_pfn-highmem_pages < 64*1024*1024/PAGE_SIZE){ 23.970 - printk(KERN_ERR "highmem size %uMB results in smaller than 64MB lowmem, ignoring it.\n", pages_to_mb(highmem_pages)); 23.971 - highmem_pages = 0; 23.972 - } 23.973 - max_low_pfn -= highmem_pages; 23.974 - } 23.975 -#else 23.976 - if (highmem_pages) 23.977 - printk(KERN_ERR "ignoring highmem size on non-highmem kernel!\n"); 23.978 -#endif 23.979 - } 23.980 - return max_low_pfn; 23.981 -} 23.982 - 23.983 -#ifndef CONFIG_DISCONTIGMEM 23.984 - 23.985 -/* 23.986 - * Free all available memory for boot time allocation. Used 23.987 - * as a callback function by efi_memory_walk() 23.988 - */ 23.989 - 23.990 -static int __init 23.991 -free_available_memory(unsigned long start, unsigned long end, void *arg) 23.992 -{ 23.993 - /* check max_low_pfn */ 23.994 - if (start >= ((max_low_pfn + 1) << PAGE_SHIFT)) 23.995 - return 0; 23.996 - if (end >= ((max_low_pfn + 1) << PAGE_SHIFT)) 23.997 - end = (max_low_pfn + 1) << PAGE_SHIFT; 23.998 - if (start < end) 23.999 - free_bootmem(start, end - start); 23.1000 - 23.1001 - return 0; 23.1002 -} 23.1003 -/* 23.1004 - * Register fully available low RAM pages with the bootmem allocator. 23.1005 - */ 23.1006 -static void __init register_bootmem_low_pages(unsigned long max_low_pfn) 23.1007 -{ 23.1008 - int i; 23.1009 - 23.1010 - if (efi_enabled) { 23.1011 - efi_memmap_walk(free_available_memory, NULL); 23.1012 - return; 23.1013 - } 23.1014 - for (i = 0; i < e820.nr_map; i++) { 23.1015 - unsigned long curr_pfn, last_pfn, size; 23.1016 - /* 23.1017 - * Reserve usable low memory 23.1018 - */ 23.1019 - if (e820.map[i].type != E820_RAM) 23.1020 - continue; 23.1021 - /* 23.1022 - * We are rounding up the start address of usable memory: 23.1023 - */ 23.1024 - curr_pfn = PFN_UP(e820.map[i].addr); 23.1025 - if (curr_pfn >= max_low_pfn) 23.1026 - continue; 23.1027 - /* 23.1028 - * ... and at the end of the usable range downwards: 23.1029 - */ 23.1030 - last_pfn = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 23.1031 - 23.1032 - if (last_pfn > max_low_pfn) 23.1033 - last_pfn = max_low_pfn; 23.1034 - 23.1035 - /* 23.1036 - * .. finally, did all the rounding and playing 23.1037 - * around just make the area go away? 23.1038 - */ 23.1039 - if (last_pfn <= curr_pfn) 23.1040 - continue; 23.1041 - 23.1042 - size = last_pfn - curr_pfn; 23.1043 - free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size)); 23.1044 - } 23.1045 -} 23.1046 - 23.1047 -/* 23.1048 - * workaround for Dell systems that neglect to reserve EBDA 23.1049 - */ 23.1050 -static void __init reserve_ebda_region(void) 23.1051 -{ 23.1052 - unsigned int addr; 23.1053 - addr = get_bios_ebda(); 23.1054 - if (addr) 23.1055 - reserve_bootmem(addr, PAGE_SIZE); 23.1056 -} 23.1057 - 23.1058 -static unsigned long __init setup_memory(void) 23.1059 -{ 23.1060 - unsigned long bootmap_size, start_pfn, max_low_pfn; 23.1061 - 23.1062 - /* 23.1063 - * partially used pages are not usable - thus 23.1064 - * we are rounding upwards: 23.1065 - */ 23.1066 - start_pfn = PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames; 23.1067 - 23.1068 - find_max_pfn(); 23.1069 - 23.1070 - max_low_pfn = find_max_low_pfn(); 23.1071 - 23.1072 -#ifdef CONFIG_HIGHMEM 23.1073 - highstart_pfn = highend_pfn = max_pfn; 23.1074 - if (max_pfn > max_low_pfn) { 23.1075 - highstart_pfn = max_low_pfn; 23.1076 - } 23.1077 - printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", 23.1078 - pages_to_mb(highend_pfn - highstart_pfn)); 23.1079 -#endif 23.1080 - printk(KERN_NOTICE "%ldMB LOWMEM available.\n", 23.1081 - pages_to_mb(max_low_pfn)); 23.1082 - /* 23.1083 - * Initialize the boot-time allocator (with low memory only): 23.1084 - */ 23.1085 - bootmap_size = init_bootmem(start_pfn, max_low_pfn); 23.1086 - 23.1087 - register_bootmem_low_pages(max_low_pfn); 23.1088 - 23.1089 - /* 23.1090 - * Reserve the bootmem bitmap itself as well. We do this in two 23.1091 - * steps (first step was init_bootmem()) because this catches 23.1092 - * the (very unlikely) case of us accidentally initializing the 23.1093 - * bootmem allocator with an invalid RAM area. 23.1094 - */ 23.1095 - reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(start_pfn) + 23.1096 - bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY)); 23.1097 - 23.1098 - /* reserve EBDA region, it's a 4K region */ 23.1099 - reserve_ebda_region(); 23.1100 - 23.1101 - /* could be an AMD 768MPX chipset. Reserve a page before VGA to prevent 23.1102 - PCI prefetch into it (errata #56). Usually the page is reserved anyways, 23.1103 - unless you have no PS/2 mouse plugged in. */ 23.1104 - if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && 23.1105 - boot_cpu_data.x86 == 6) 23.1106 - reserve_bootmem(0xa0000 - 4096, 4096); 23.1107 - 23.1108 -#ifdef CONFIG_SMP 23.1109 - /* 23.1110 - * But first pinch a few for the stack/trampoline stuff 23.1111 - * FIXME: Don't need the extra page at 4K, but need to fix 23.1112 - * trampoline before removing it. (see the GDT stuff) 23.1113 - */ 23.1114 - reserve_bootmem(PAGE_SIZE, PAGE_SIZE); 23.1115 -#endif 23.1116 -#ifdef CONFIG_ACPI_SLEEP 23.1117 - /* 23.1118 - * Reserve low memory region for sleep support. 23.1119 - */ 23.1120 - acpi_reserve_bootmem(); 23.1121 -#endif 23.1122 -#ifdef CONFIG_X86_FIND_SMP_CONFIG 23.1123 - /* 23.1124 - * Find and reserve possible boot-time SMP configuration: 23.1125 - */ 23.1126 - find_smp_config(); 23.1127 -#endif 23.1128 - 23.1129 -#ifdef CONFIG_BLK_DEV_INITRD 23.1130 - if (xen_start_info.mod_start) { 23.1131 - if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 23.1132 - /*reserve_bootmem(INITRD_START, INITRD_SIZE);*/ 23.1133 - initrd_start = INITRD_START + PAGE_OFFSET; 23.1134 - initrd_end = initrd_start+INITRD_SIZE; 23.1135 - initrd_below_start_ok = 1; 23.1136 - } 23.1137 - else { 23.1138 - printk(KERN_ERR "initrd extends beyond end of memory " 23.1139 - "(0x%08lx > 0x%08lx)\ndisabling initrd\n", 23.1140 - INITRD_START + INITRD_SIZE, 23.1141 - max_low_pfn << PAGE_SHIFT); 23.1142 - initrd_start = 0; 23.1143 - } 23.1144 - } 23.1145 -#endif 23.1146 - 23.1147 - phys_to_machine_mapping = (unsigned long *)xen_start_info.mfn_list; 23.1148 - 23.1149 - return max_low_pfn; 23.1150 -} 23.1151 -#else 23.1152 -extern unsigned long setup_memory(void); 23.1153 -#endif /* !CONFIG_DISCONTIGMEM */ 23.1154 - 23.1155 -/* 23.1156 - * Request address space for all standard RAM and ROM resources 23.1157 - * and also for regions reported as reserved by the e820. 23.1158 - */ 23.1159 -static void __init 23.1160 -legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource) 23.1161 -{ 23.1162 - int i; 23.1163 - 23.1164 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.1165 - probe_roms(); 23.1166 -#endif 23.1167 - for (i = 0; i < e820.nr_map; i++) { 23.1168 - struct resource *res; 23.1169 - if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) 23.1170 - continue; 23.1171 - res = alloc_bootmem_low(sizeof(struct resource)); 23.1172 - switch (e820.map[i].type) { 23.1173 - case E820_RAM: res->name = "System RAM"; break; 23.1174 - case E820_ACPI: res->name = "ACPI Tables"; break; 23.1175 - case E820_NVS: res->name = "ACPI Non-volatile Storage"; break; 23.1176 - default: res->name = "reserved"; 23.1177 - } 23.1178 - res->start = e820.map[i].addr; 23.1179 - res->end = res->start + e820.map[i].size - 1; 23.1180 - res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; 23.1181 - request_resource(&iomem_resource, res); 23.1182 - if (e820.map[i].type == E820_RAM) { 23.1183 - /* 23.1184 - * We don't know which RAM region contains kernel data, 23.1185 - * so we try it repeatedly and let the resource manager 23.1186 - * test it. 23.1187 - */ 23.1188 - request_resource(res, code_resource); 23.1189 - request_resource(res, data_resource); 23.1190 - } 23.1191 - } 23.1192 -} 23.1193 - 23.1194 -/* 23.1195 - * Request address space for all standard resources 23.1196 - */ 23.1197 -static void __init register_memory(unsigned long max_low_pfn) 23.1198 -{ 23.1199 - unsigned long low_mem_size; 23.1200 - int i; 23.1201 - 23.1202 - if (efi_enabled) 23.1203 - efi_initialize_iomem_resources(&code_resource, &data_resource); 23.1204 - else 23.1205 - legacy_init_iomem_resources(&code_resource, &data_resource); 23.1206 - 23.1207 - /* EFI systems may still have VGA */ 23.1208 - request_resource(&iomem_resource, &video_ram_resource); 23.1209 - 23.1210 - /* request I/O space for devices used on all i[345]86 PCs */ 23.1211 - for (i = 0; i < STANDARD_IO_RESOURCES; i++) 23.1212 - request_resource(&ioport_resource, &standard_io_resources[i]); 23.1213 - 23.1214 - /* Tell the PCI layer not to allocate too close to the RAM area.. */ 23.1215 - low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff; 23.1216 - if (low_mem_size > pci_mem_start) 23.1217 - pci_mem_start = low_mem_size; 23.1218 -} 23.1219 - 23.1220 -/* Use inline assembly to define this because the nops are defined 23.1221 - as inline assembly strings in the include files and we cannot 23.1222 - get them easily into strings. */ 23.1223 -asm("\t.data\nintelnops: " 23.1224 - GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 23.1225 - GENERIC_NOP7 GENERIC_NOP8); 23.1226 -asm("\t.data\nk8nops: " 23.1227 - K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 23.1228 - K8_NOP7 K8_NOP8); 23.1229 -asm("\t.data\nk7nops: " 23.1230 - K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 23.1231 - K7_NOP7 K7_NOP8); 23.1232 - 23.1233 -extern unsigned char intelnops[], k8nops[], k7nops[]; 23.1234 -static unsigned char *intel_nops[ASM_NOP_MAX+1] = { 23.1235 - NULL, 23.1236 - intelnops, 23.1237 - intelnops + 1, 23.1238 - intelnops + 1 + 2, 23.1239 - intelnops + 1 + 2 + 3, 23.1240 - intelnops + 1 + 2 + 3 + 4, 23.1241 - intelnops + 1 + 2 + 3 + 4 + 5, 23.1242 - intelnops + 1 + 2 + 3 + 4 + 5 + 6, 23.1243 - intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1244 -}; 23.1245 -static unsigned char *k8_nops[ASM_NOP_MAX+1] = { 23.1246 - NULL, 23.1247 - k8nops, 23.1248 - k8nops + 1, 23.1249 - k8nops + 1 + 2, 23.1250 - k8nops + 1 + 2 + 3, 23.1251 - k8nops + 1 + 2 + 3 + 4, 23.1252 - k8nops + 1 + 2 + 3 + 4 + 5, 23.1253 - k8nops + 1 + 2 + 3 + 4 + 5 + 6, 23.1254 - k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1255 -}; 23.1256 -static unsigned char *k7_nops[ASM_NOP_MAX+1] = { 23.1257 - NULL, 23.1258 - k7nops, 23.1259 - k7nops + 1, 23.1260 - k7nops + 1 + 2, 23.1261 - k7nops + 1 + 2 + 3, 23.1262 - k7nops + 1 + 2 + 3 + 4, 23.1263 - k7nops + 1 + 2 + 3 + 4 + 5, 23.1264 - k7nops + 1 + 2 + 3 + 4 + 5 + 6, 23.1265 - k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1266 -}; 23.1267 -static struct nop { 23.1268 - int cpuid; 23.1269 - unsigned char **noptable; 23.1270 -} noptypes[] = { 23.1271 - { X86_FEATURE_K8, k8_nops }, 23.1272 - { X86_FEATURE_K7, k7_nops }, 23.1273 - { -1, NULL } 23.1274 -}; 23.1275 - 23.1276 -/* Replace instructions with better alternatives for this CPU type. 23.1277 - 23.1278 - This runs before SMP is initialized to avoid SMP problems with 23.1279 - self modifying code. This implies that assymetric systems where 23.1280 - APs have less capabilities than the boot processor are not handled. 23.1281 - In this case boot with "noreplacement". */ 23.1282 -void apply_alternatives(void *start, void *end) 23.1283 -{ 23.1284 - struct alt_instr *a; 23.1285 - int diff, i, k; 23.1286 - unsigned char **noptable = intel_nops; 23.1287 - for (i = 0; noptypes[i].cpuid >= 0; i++) { 23.1288 - if (boot_cpu_has(noptypes[i].cpuid)) { 23.1289 - noptable = noptypes[i].noptable; 23.1290 - break; 23.1291 - } 23.1292 - } 23.1293 - for (a = start; (void *)a < end; a++) { 23.1294 - if (!boot_cpu_has(a->cpuid)) 23.1295 - continue; 23.1296 - BUG_ON(a->replacementlen > a->instrlen); 23.1297 - memcpy(a->instr, a->replacement, a->replacementlen); 23.1298 - diff = a->instrlen - a->replacementlen; 23.1299 - /* Pad the rest with nops */ 23.1300 - for (i = a->replacementlen; diff > 0; diff -= k, i += k) { 23.1301 - k = diff; 23.1302 - if (k > ASM_NOP_MAX) 23.1303 - k = ASM_NOP_MAX; 23.1304 - memcpy(a->instr + i, noptable[k], k); 23.1305 - } 23.1306 - } 23.1307 -} 23.1308 - 23.1309 -static int no_replacement __initdata = 0; 23.1310 - 23.1311 -void __init alternative_instructions(void) 23.1312 -{ 23.1313 - extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; 23.1314 - if (no_replacement) 23.1315 - return; 23.1316 - apply_alternatives(__alt_instructions, __alt_instructions_end); 23.1317 -} 23.1318 - 23.1319 -static int __init noreplacement_setup(char *s) 23.1320 -{ 23.1321 - no_replacement = 1; 23.1322 - return 0; 23.1323 -} 23.1324 - 23.1325 -__setup("noreplacement", noreplacement_setup); 23.1326 - 23.1327 -static char * __init machine_specific_memory_setup(void); 23.1328 - 23.1329 -/* 23.1330 - * Determine if we were loaded by an EFI loader. If so, then we have also been 23.1331 - * passed the efi memmap, systab, etc., so we should use these data structures 23.1332 - * for initialization. Note, the efi init code path is determined by the 23.1333 - * global efi_enabled. This allows the same kernel image to be used on existing 23.1334 - * systems (with a traditional BIOS) as well as on EFI systems. 23.1335 - */ 23.1336 -void __init setup_arch(char **cmdline_p) 23.1337 -{ 23.1338 - int i,j; 23.1339 - 23.1340 - unsigned long max_low_pfn; 23.1341 - 23.1342 - /* Force a quick death if the kernel panics. */ 23.1343 - extern int panic_timeout; 23.1344 - if ( panic_timeout == 0 ) 23.1345 - panic_timeout = 1; 23.1346 - 23.1347 - HYPERVISOR_vm_assist(VMASST_CMD_enable, 23.1348 - VMASST_TYPE_4gb_segments); 23.1349 - 23.1350 - memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data)); 23.1351 - early_cpu_init(); 23.1352 - 23.1353 - /* 23.1354 - * FIXME: This isn't an official loader_type right 23.1355 - * now but does currently work with elilo. 23.1356 - * If we were configured as an EFI kernel, check to make 23.1357 - * sure that we were loaded correctly from elilo and that 23.1358 - * the system table is valid. If not, then initialize normally. 23.1359 - */ 23.1360 -#ifdef CONFIG_EFI 23.1361 - if ((LOADER_TYPE == 0x50) && EFI_SYSTAB) 23.1362 - efi_enabled = 1; 23.1363 -#endif 23.1364 - 23.1365 - /* This must be initialized to UNNAMED_MAJOR for ipconfig to work 23.1366 - properly. Setting ROOT_DEV to default to /dev/ram0 breaks initrd. 23.1367 - */ 23.1368 - ROOT_DEV = MKDEV(UNNAMED_MAJOR,0); 23.1369 - drive_info = DRIVE_INFO; 23.1370 - screen_info = SCREEN_INFO; 23.1371 - edid_info = EDID_INFO; 23.1372 - apm_info.bios = APM_BIOS_INFO; 23.1373 - ist_info = IST_INFO; 23.1374 - saved_videomode = VIDEO_MODE; 23.1375 - if( SYS_DESC_TABLE.length != 0 ) { 23.1376 - MCA_bus = SYS_DESC_TABLE.table[3] &0x2; 23.1377 - machine_id = SYS_DESC_TABLE.table[0]; 23.1378 - machine_submodel_id = SYS_DESC_TABLE.table[1]; 23.1379 - BIOS_revision = SYS_DESC_TABLE.table[2]; 23.1380 - } 23.1381 - aux_device_present = AUX_DEVICE_INFO; 23.1382 - 23.1383 -#ifdef CONFIG_XEN_PHYSDEV_ACCESS 23.1384 - /* This is drawn from a dump from vgacon:startup in standard Linux. */ 23.1385 - screen_info.orig_video_mode = 3; 23.1386 - screen_info.orig_video_isVGA = 1; 23.1387 - screen_info.orig_video_lines = 25; 23.1388 - screen_info.orig_video_cols = 80; 23.1389 - screen_info.orig_video_ega_bx = 3; 23.1390 - screen_info.orig_video_points = 16; 23.1391 -#endif 23.1392 - 23.1393 -#ifdef CONFIG_BLK_DEV_RAM 23.1394 - rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; 23.1395 - rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0); 23.1396 - rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0); 23.1397 -#endif 23.1398 - ARCH_SETUP 23.1399 - if (efi_enabled) 23.1400 - efi_init(); 23.1401 - else { 23.1402 - printk(KERN_INFO "BIOS-provided physical RAM map:\n"); 23.1403 - print_memory_map(machine_specific_memory_setup()); 23.1404 - } 23.1405 - 23.1406 - copy_edd(); 23.1407 - 23.1408 - if (!MOUNT_ROOT_RDONLY) 23.1409 - root_mountflags &= ~MS_RDONLY; 23.1410 - init_mm.start_code = (unsigned long) _text; 23.1411 - init_mm.end_code = (unsigned long) _etext; 23.1412 - init_mm.end_data = (unsigned long) _edata; 23.1413 - init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT; 23.1414 - 23.1415 - /* XEN: This is nonsense: kernel may not even be contiguous in RAM. */ 23.1416 - /*code_resource.start = virt_to_phys(_text);*/ 23.1417 - /*code_resource.end = virt_to_phys(_etext)-1;*/ 23.1418 - /*data_resource.start = virt_to_phys(_etext);*/ 23.1419 - /*data_resource.end = virt_to_phys(_edata)-1;*/ 23.1420 - 23.1421 - parse_cmdline_early(cmdline_p); 23.1422 - 23.1423 - max_low_pfn = setup_memory(); 23.1424 - 23.1425 - /* 23.1426 - * NOTE: before this point _nobody_ is allowed to allocate 23.1427 - * any memory using the bootmem allocator. Although the 23.1428 - * alloctor is now initialised only the first 8Mb of the kernel 23.1429 - * virtual address space has been mapped. All allocations before 23.1430 - * paging_init() has completed must use the alloc_bootmem_low_pages() 23.1431 - * variant (which allocates DMA'able memory) and care must be taken 23.1432 - * not to exceed the 8Mb limit. 23.1433 - */ 23.1434 - 23.1435 -#ifdef CONFIG_SMP 23.1436 - smp_alloc_memory(); /* AP processor realmode stacks in low memory*/ 23.1437 -#endif 23.1438 - paging_init(); 23.1439 - 23.1440 - /* Make sure we have a large enough P->M table. */ 23.1441 - if (max_pfn > xen_start_info.nr_pages) { 23.1442 - phys_to_machine_mapping = alloc_bootmem_low_pages( 23.1443 - max_pfn * sizeof(unsigned long)); 23.1444 - memset(phys_to_machine_mapping, ~0, 23.1445 - max_pfn * sizeof(unsigned long)); 23.1446 - memcpy(phys_to_machine_mapping, 23.1447 - (unsigned long *)xen_start_info.mfn_list, 23.1448 - xen_start_info.nr_pages * sizeof(unsigned long)); 23.1449 - free_bootmem( 23.1450 - __pa(xen_start_info.mfn_list), 23.1451 - PFN_PHYS(PFN_UP(xen_start_info.nr_pages * 23.1452 - sizeof(unsigned long)))); 23.1453 - } 23.1454 - 23.1455 - pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE); 23.1456 - for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ ) 23.1457 - { 23.1458 - pfn_to_mfn_frame_list[j] = 23.1459 - virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT; 23.1460 - } 23.1461 - HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list = 23.1462 - virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT; 23.1463 - 23.1464 - 23.1465 - /* 23.1466 - * NOTE: at this point the bootmem allocator is fully available. 23.1467 - */ 23.1468 - 23.1469 -#ifdef CONFIG_EARLY_PRINTK 23.1470 - { 23.1471 - char *s = strstr(*cmdline_p, "earlyprintk="); 23.1472 - if (s) { 23.1473 - extern void setup_early_printk(char *); 23.1474 - 23.1475 - setup_early_printk(s); 23.1476 - printk("early console enabled\n"); 23.1477 - } 23.1478 - } 23.1479 -#endif 23.1480 - 23.1481 - 23.1482 - dmi_scan_machine(); 23.1483 - 23.1484 -#ifdef CONFIG_X86_GENERICARCH 23.1485 - generic_apic_probe(*cmdline_p); 23.1486 -#endif 23.1487 - if (efi_enabled) 23.1488 - efi_map_memmap(); 23.1489 - 23.1490 - /* 23.1491 - * Parse the ACPI tables for possible boot-time SMP configuration. 23.1492 - */ 23.1493 - acpi_boot_init(); 23.1494 - 23.1495 -#ifdef CONFIG_X86_LOCAL_APIC 23.1496 - if (smp_found_config) 23.1497 - get_smp_config(); 23.1498 -#endif 23.1499 - 23.1500 - /* XXX Disable irqdebug until we have a way to avoid interrupt 23.1501 - * conflicts. */ 23.1502 - noirqdebug_setup(""); 23.1503 - 23.1504 - register_memory(max_low_pfn); 23.1505 - 23.1506 - /* If we are a privileged guest OS then we should request IO privs. */ 23.1507 - if (xen_start_info.flags & SIF_PRIVILEGED) { 23.1508 - dom0_op_t op; 23.1509 - op.cmd = DOM0_IOPL; 23.1510 - op.u.iopl.domain = DOMID_SELF; 23.1511 - op.u.iopl.iopl = 1; 23.1512 - if (HYPERVISOR_dom0_op(&op) != 0) 23.1513 - panic("Unable to obtain IOPL, despite SIF_PRIVILEGED"); 23.1514 - current->thread.io_pl = 1; 23.1515 - } 23.1516 - 23.1517 - if (xen_start_info.flags & SIF_INITDOMAIN) { 23.1518 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 23.1519 - panic("Xen granted us console access " 23.1520 - "but not privileged status"); 23.1521 - 23.1522 -#ifdef CONFIG_VT 23.1523 -#if defined(CONFIG_VGA_CONSOLE) 23.1524 - if (!efi_enabled || 23.1525 - (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) 23.1526 - conswitchp = &vga_con; 23.1527 -#elif defined(CONFIG_DUMMY_CONSOLE) 23.1528 - conswitchp = &dummy_con; 23.1529 -#endif 23.1530 -#endif 23.1531 - } else { 23.1532 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.1533 - extern const struct consw xennull_con; 23.1534 - extern int console_use_vt; 23.1535 -#if defined(CONFIG_VGA_CONSOLE) 23.1536 - /* disable VGA driver */ 23.1537 - ORIG_VIDEO_ISVGA = VIDEO_TYPE_VLFB; 23.1538 -#endif 23.1539 - conswitchp = &xennull_con; 23.1540 - console_use_vt = 0; 23.1541 -#endif 23.1542 - } 23.1543 -} 23.1544 - 23.1545 -#include "setup_arch_post.h" 23.1546 -/* 23.1547 - * Local Variables: 23.1548 - * mode:c 23.1549 - * c-file-style:"k&r" 23.1550 - * c-basic-offset:8 23.1551 - * End: 23.1552 - */
24.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/signal.c Thu Mar 10 18:09:19 2005 +0000 24.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 24.3 @@ -1,664 +0,0 @@ 24.4 -/* 24.5 - * linux/arch/i386/kernel/signal.c 24.6 - * 24.7 - * Copyright (C) 1991, 1992 Linus Torvalds 24.8 - * 24.9 - * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson 24.10 - * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes 24.11 - */ 24.12 - 24.13 -#include <linux/sched.h> 24.14 -#include <linux/mm.h> 24.15 -#include <linux/smp.h> 24.16 -#include <linux/smp_lock.h> 24.17 -#include <linux/kernel.h> 24.18 -#include <linux/signal.h> 24.19 -#include <linux/errno.h> 24.20 -#include <linux/wait.h> 24.21 -#include <linux/unistd.h> 24.22 -#include <linux/stddef.h> 24.23 -#include <linux/personality.h> 24.24 -#include <linux/suspend.h> 24.25 -#include <linux/ptrace.h> 24.26 -#include <linux/elf.h> 24.27 -#include <asm/processor.h> 24.28 -#include <asm/ucontext.h> 24.29 -#include <asm/uaccess.h> 24.30 -#include <asm/i387.h> 24.31 -#include "sigframe.h" 24.32 - 24.33 -#define DEBUG_SIG 0 24.34 - 24.35 -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 24.36 - 24.37 -/* 24.38 - * Atomically swap in the new signal mask, and wait for a signal. 24.39 - */ 24.40 -asmlinkage int 24.41 -sys_sigsuspend(int history0, int history1, old_sigset_t mask) 24.42 -{ 24.43 - struct pt_regs * regs = (struct pt_regs *) &history0; 24.44 - sigset_t saveset; 24.45 - 24.46 - mask &= _BLOCKABLE; 24.47 - spin_lock_irq(¤t->sighand->siglock); 24.48 - saveset = current->blocked; 24.49 - siginitset(¤t->blocked, mask); 24.50 - recalc_sigpending(); 24.51 - spin_unlock_irq(¤t->sighand->siglock); 24.52 - 24.53 - regs->eax = -EINTR; 24.54 - while (1) { 24.55 - current->state = TASK_INTERRUPTIBLE; 24.56 - schedule(); 24.57 - if (do_signal(regs, &saveset)) 24.58 - return -EINTR; 24.59 - } 24.60 -} 24.61 - 24.62 -asmlinkage int 24.63 -sys_rt_sigsuspend(struct pt_regs regs) 24.64 -{ 24.65 - sigset_t saveset, newset; 24.66 - 24.67 - /* XXX: Don't preclude handling different sized sigset_t's. */ 24.68 - if (regs.ecx != sizeof(sigset_t)) 24.69 - return -EINVAL; 24.70 - 24.71 - if (copy_from_user(&newset, (sigset_t __user *)regs.ebx, sizeof(newset))) 24.72 - return -EFAULT; 24.73 - sigdelsetmask(&newset, ~_BLOCKABLE); 24.74 - 24.75 - spin_lock_irq(¤t->sighand->siglock); 24.76 - saveset = current->blocked; 24.77 - current->blocked = newset; 24.78 - recalc_sigpending(); 24.79 - spin_unlock_irq(¤t->sighand->siglock); 24.80 - 24.81 - regs.eax = -EINTR; 24.82 - while (1) { 24.83 - current->state = TASK_INTERRUPTIBLE; 24.84 - schedule(); 24.85 - if (do_signal(®s, &saveset)) 24.86 - return -EINTR; 24.87 - } 24.88 -} 24.89 - 24.90 -asmlinkage int 24.91 -sys_sigaction(int sig, const struct old_sigaction __user *act, 24.92 - struct old_sigaction __user *oact) 24.93 -{ 24.94 - struct k_sigaction new_ka, old_ka; 24.95 - int ret; 24.96 - 24.97 - if (act) { 24.98 - old_sigset_t mask; 24.99 - if (verify_area(VERIFY_READ, act, sizeof(*act)) || 24.100 - __get_user(new_ka.sa.sa_handler, &act->sa_handler) || 24.101 - __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) 24.102 - return -EFAULT; 24.103 - __get_user(new_ka.sa.sa_flags, &act->sa_flags); 24.104 - __get_user(mask, &act->sa_mask); 24.105 - siginitset(&new_ka.sa.sa_mask, mask); 24.106 - } 24.107 - 24.108 - ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); 24.109 - 24.110 - if (!ret && oact) { 24.111 - if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || 24.112 - __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || 24.113 - __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) 24.114 - return -EFAULT; 24.115 - __put_user(old_ka.sa.sa_flags, &oact->sa_flags); 24.116 - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); 24.117 - } 24.118 - 24.119 - return ret; 24.120 -} 24.121 - 24.122 -asmlinkage int 24.123 -sys_sigaltstack(unsigned long ebx) 24.124 -{ 24.125 - /* This is needed to make gcc realize it doesn't own the "struct pt_regs" */ 24.126 - struct pt_regs *regs = (struct pt_regs *)&ebx; 24.127 - const stack_t __user *uss = (const stack_t __user *)ebx; 24.128 - stack_t __user *uoss = (stack_t __user *)regs->ecx; 24.129 - 24.130 - return do_sigaltstack(uss, uoss, regs->esp); 24.131 -} 24.132 - 24.133 - 24.134 -/* 24.135 - * Do a signal return; undo the signal stack. 24.136 - */ 24.137 - 24.138 -static int 24.139 -restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax) 24.140 -{ 24.141 - unsigned int err = 0; 24.142 - 24.143 - /* Always make any pending restarted system calls return -EINTR */ 24.144 - current_thread_info()->restart_block.fn = do_no_restart_syscall; 24.145 - 24.146 -#define COPY(x) err |= __get_user(regs->x, &sc->x) 24.147 - 24.148 -#define COPY_SEG(seg) \ 24.149 - { unsigned short tmp; \ 24.150 - err |= __get_user(tmp, &sc->seg); \ 24.151 - regs->x##seg = tmp; } 24.152 - 24.153 -#define COPY_SEG_STRICT(seg) \ 24.154 - { unsigned short tmp; \ 24.155 - err |= __get_user(tmp, &sc->seg); \ 24.156 - regs->x##seg = tmp|3; } 24.157 - 24.158 -#define GET_SEG(seg) \ 24.159 - { unsigned short tmp; \ 24.160 - err |= __get_user(tmp, &sc->seg); \ 24.161 - loadsegment(seg,tmp); } 24.162 - 24.163 -#define FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | X86_EFLAGS_DF | \ 24.164 - X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \ 24.165 - X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF) 24.166 - 24.167 - GET_SEG(gs); 24.168 - GET_SEG(fs); 24.169 - COPY_SEG(es); 24.170 - COPY_SEG(ds); 24.171 - COPY(edi); 24.172 - COPY(esi); 24.173 - COPY(ebp); 24.174 - COPY(esp); 24.175 - COPY(ebx); 24.176 - COPY(edx); 24.177 - COPY(ecx); 24.178 - COPY(eip); 24.179 - COPY_SEG_STRICT(cs); 24.180 - COPY_SEG_STRICT(ss); 24.181 - 24.182 - { 24.183 - unsigned int tmpflags; 24.184 - err |= __get_user(tmpflags, &sc->eflags); 24.185 - regs->eflags = (regs->eflags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS); 24.186 - regs->orig_eax = -1; /* disable syscall checks */ 24.187 - } 24.188 - 24.189 - { 24.190 - struct _fpstate __user * buf; 24.191 - err |= __get_user(buf, &sc->fpstate); 24.192 - if (buf) { 24.193 - if (verify_area(VERIFY_READ, buf, sizeof(*buf))) 24.194 - goto badframe; 24.195 - err |= restore_i387(buf); 24.196 - } 24.197 - } 24.198 - 24.199 - err |= __get_user(*peax, &sc->eax); 24.200 - return err; 24.201 - 24.202 -badframe: 24.203 - return 1; 24.204 -} 24.205 - 24.206 -asmlinkage int sys_sigreturn(unsigned long __unused) 24.207 -{ 24.208 - struct pt_regs *regs = (struct pt_regs *) &__unused; 24.209 - struct sigframe __user *frame = (struct sigframe __user *)(regs->esp - 8); 24.210 - sigset_t set; 24.211 - int eax; 24.212 - 24.213 - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) 24.214 - goto badframe; 24.215 - if (__get_user(set.sig[0], &frame->sc.oldmask) 24.216 - || (_NSIG_WORDS > 1 24.217 - && __copy_from_user(&set.sig[1], &frame->extramask, 24.218 - sizeof(frame->extramask)))) 24.219 - goto badframe; 24.220 - 24.221 - sigdelsetmask(&set, ~_BLOCKABLE); 24.222 - spin_lock_irq(¤t->sighand->siglock); 24.223 - current->blocked = set; 24.224 - recalc_sigpending(); 24.225 - spin_unlock_irq(¤t->sighand->siglock); 24.226 - 24.227 - if (restore_sigcontext(regs, &frame->sc, &eax)) 24.228 - goto badframe; 24.229 - return eax; 24.230 - 24.231 -badframe: 24.232 - force_sig(SIGSEGV, current); 24.233 - return 0; 24.234 -} 24.235 - 24.236 -asmlinkage int sys_rt_sigreturn(unsigned long __unused) 24.237 -{ 24.238 - struct pt_regs *regs = (struct pt_regs *) &__unused; 24.239 - struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(regs->esp - 4); 24.240 - sigset_t set; 24.241 - int eax; 24.242 - 24.243 - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) 24.244 - goto badframe; 24.245 - if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) 24.246 - goto badframe; 24.247 - 24.248 - sigdelsetmask(&set, ~_BLOCKABLE); 24.249 - spin_lock_irq(¤t->sighand->siglock); 24.250 - current->blocked = set; 24.251 - recalc_sigpending(); 24.252 - spin_unlock_irq(¤t->sighand->siglock); 24.253 - 24.254 - if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &eax)) 24.255 - goto badframe; 24.256 - 24.257 - if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->esp) == -EFAULT) 24.258 - goto badframe; 24.259 - 24.260 - return eax; 24.261 - 24.262 -badframe: 24.263 - force_sig(SIGSEGV, current); 24.264 - return 0; 24.265 -} 24.266 - 24.267 -/* 24.268 - * Set up a signal frame. 24.269 - */ 24.270 - 24.271 -static int 24.272 -setup_sigcontext(struct sigcontext __user *sc, struct _fpstate __user *fpstate, 24.273 - struct pt_regs *regs, unsigned long mask) 24.274 -{ 24.275 - int tmp, err = 0; 24.276 - unsigned long eflags; 24.277 - 24.278 - tmp = 0; 24.279 - __asm__("movl %%gs,%0" : "=r"(tmp): "0"(tmp)); 24.280 - err |= __put_user(tmp, (unsigned int __user *)&sc->gs); 24.281 - __asm__("movl %%fs,%0" : "=r"(tmp): "0"(tmp)); 24.282 - err |= __put_user(tmp, (unsigned int __user *)&sc->fs); 24.283 - 24.284 - err |= __put_user(regs->xes, (unsigned int __user *)&sc->es); 24.285 - err |= __put_user(regs->xds, (unsigned int __user *)&sc->ds); 24.286 - err |= __put_user(regs->edi, &sc->edi); 24.287 - err |= __put_user(regs->esi, &sc->esi); 24.288 - err |= __put_user(regs->ebp, &sc->ebp); 24.289 - err |= __put_user(regs->esp, &sc->esp); 24.290 - err |= __put_user(regs->ebx, &sc->ebx); 24.291 - err |= __put_user(regs->edx, &sc->edx); 24.292 - err |= __put_user(regs->ecx, &sc->ecx); 24.293 - err |= __put_user(regs->eax, &sc->eax); 24.294 - err |= __put_user(current->thread.trap_no, &sc->trapno); 24.295 - err |= __put_user(current->thread.error_code, &sc->err); 24.296 - err |= __put_user(regs->eip, &sc->eip); 24.297 - err |= __put_user(regs->xcs, (unsigned int __user *)&sc->cs); 24.298 - 24.299 - /* 24.300 - * Iff TF was set because the program is being single-stepped by a 24.301 - * debugger, don't save that information on the signal stack.. We 24.302 - * don't want debugging to change state. 24.303 - */ 24.304 - eflags = regs->eflags; 24.305 - if (current->ptrace & PT_DTRACE) 24.306 - eflags &= ~TF_MASK; 24.307 - err |= __put_user(eflags, &sc->eflags); 24.308 - err |= __put_user(regs->esp, &sc->esp_at_signal); 24.309 - err |= __put_user(regs->xss, (unsigned int __user *)&sc->ss); 24.310 - 24.311 - tmp = save_i387(fpstate); 24.312 - if (tmp < 0) 24.313 - err = 1; 24.314 - else 24.315 - err |= __put_user(tmp ? fpstate : NULL, &sc->fpstate); 24.316 - 24.317 - /* non-iBCS2 extensions.. */ 24.318 - err |= __put_user(mask, &sc->oldmask); 24.319 - err |= __put_user(current->thread.cr2, &sc->cr2); 24.320 - 24.321 - return err; 24.322 -} 24.323 - 24.324 -/* 24.325 - * Determine which stack to use.. 24.326 - */ 24.327 -static inline void __user * 24.328 -get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) 24.329 -{ 24.330 - unsigned long esp; 24.331 - 24.332 - /* Default to using normal stack */ 24.333 - esp = regs->esp; 24.334 - 24.335 - /* This is the X/Open sanctioned signal stack switching. */ 24.336 - if (ka->sa.sa_flags & SA_ONSTACK) { 24.337 - if (sas_ss_flags(esp) == 0) 24.338 - esp = current->sas_ss_sp + current->sas_ss_size; 24.339 - } 24.340 - 24.341 - /* This is the legacy signal stack switching. */ 24.342 - else if ((regs->xss & 0xffff) != __USER_DS && 24.343 - !(ka->sa.sa_flags & SA_RESTORER) && 24.344 - ka->sa.sa_restorer) { 24.345 - esp = (unsigned long) ka->sa.sa_restorer; 24.346 - } 24.347 - 24.348 - return (void __user *)((esp - frame_size) & -8ul); 24.349 -} 24.350 - 24.351 -/* These symbols are defined with the addresses in the vsyscall page. 24.352 - See vsyscall-sigreturn.S. */ 24.353 -extern void __user __kernel_sigreturn; 24.354 -extern void __user __kernel_rt_sigreturn; 24.355 - 24.356 -static void setup_frame(int sig, struct k_sigaction *ka, 24.357 - sigset_t *set, struct pt_regs * regs) 24.358 -{ 24.359 - void __user *restorer; 24.360 - struct sigframe __user *frame; 24.361 - int err = 0; 24.362 - int usig; 24.363 - 24.364 - frame = get_sigframe(ka, regs, sizeof(*frame)); 24.365 - 24.366 - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 24.367 - goto give_sigsegv; 24.368 - 24.369 - usig = current_thread_info()->exec_domain 24.370 - && current_thread_info()->exec_domain->signal_invmap 24.371 - && sig < 32 24.372 - ? current_thread_info()->exec_domain->signal_invmap[sig] 24.373 - : sig; 24.374 - 24.375 - err |= __put_user(usig, &frame->sig); 24.376 - if (err) 24.377 - goto give_sigsegv; 24.378 - 24.379 - err |= setup_sigcontext(&frame->sc, &frame->fpstate, regs, set->sig[0]); 24.380 - if (err) 24.381 - goto give_sigsegv; 24.382 - 24.383 - if (_NSIG_WORDS > 1) { 24.384 - err |= __copy_to_user(&frame->extramask, &set->sig[1], 24.385 - sizeof(frame->extramask)); 24.386 - } 24.387 - if (err) 24.388 - goto give_sigsegv; 24.389 - 24.390 - restorer = &__kernel_sigreturn; 24.391 - if (ka->sa.sa_flags & SA_RESTORER) 24.392 - restorer = ka->sa.sa_restorer; 24.393 - 24.394 - /* Set up to return from userspace. */ 24.395 - err |= __put_user(restorer, &frame->pretcode); 24.396 - 24.397 - /* 24.398 - * This is popl %eax ; movl $,%eax ; int $0x80 24.399 - * 24.400 - * WE DO NOT USE IT ANY MORE! It's only left here for historical 24.401 - * reasons and because gdb uses it as a signature to notice 24.402 - * signal handler stack frames. 24.403 - */ 24.404 - err |= __put_user(0xb858, (short __user *)(frame->retcode+0)); 24.405 - err |= __put_user(__NR_sigreturn, (int __user *)(frame->retcode+2)); 24.406 - err |= __put_user(0x80cd, (short __user *)(frame->retcode+6)); 24.407 - 24.408 - if (err) 24.409 - goto give_sigsegv; 24.410 - 24.411 - /* Set up registers for signal handler */ 24.412 - regs->esp = (unsigned long) frame; 24.413 - regs->eip = (unsigned long) ka->sa.sa_handler; 24.414 - regs->eax = (unsigned long) sig; 24.415 - regs->edx = (unsigned long) 0; 24.416 - regs->ecx = (unsigned long) 0; 24.417 - 24.418 - set_fs(USER_DS); 24.419 - regs->xds = __USER_DS; 24.420 - regs->xes = __USER_DS; 24.421 - regs->xss = __USER_DS; 24.422 - regs->xcs = __USER_CS; 24.423 - 24.424 - /* 24.425 - * Clear TF when entering the signal handler, but 24.426 - * notify any tracer that was single-stepping it. 24.427 - * The tracer may want to single-step inside the 24.428 - * handler too. 24.429 - */ 24.430 - if (regs->eflags & TF_MASK) { 24.431 - regs->eflags &= ~TF_MASK; 24.432 - if (current->ptrace & PT_DTRACE) 24.433 - ptrace_notify(SIGTRAP); 24.434 - } 24.435 - 24.436 -#if DEBUG_SIG 24.437 - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", 24.438 - current->comm, current->pid, frame, regs->eip, frame->pretcode); 24.439 -#endif 24.440 - 24.441 - return; 24.442 - 24.443 -give_sigsegv: 24.444 - force_sigsegv(sig, current); 24.445 -} 24.446 - 24.447 -static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, 24.448 - sigset_t *set, struct pt_regs * regs) 24.449 -{ 24.450 - void __user *restorer; 24.451 - struct rt_sigframe __user *frame; 24.452 - int err = 0; 24.453 - int usig; 24.454 - 24.455 - frame = get_sigframe(ka, regs, sizeof(*frame)); 24.456 - 24.457 - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 24.458 - goto give_sigsegv; 24.459 - 24.460 - usig = current_thread_info()->exec_domain 24.461 - && current_thread_info()->exec_domain->signal_invmap 24.462 - && sig < 32 24.463 - ? current_thread_info()->exec_domain->signal_invmap[sig] 24.464 - : sig; 24.465 - 24.466 - err |= __put_user(usig, &frame->sig); 24.467 - err |= __put_user(&frame->info, &frame->pinfo); 24.468 - err |= __put_user(&frame->uc, &frame->puc); 24.469 - err |= copy_siginfo_to_user(&frame->info, info); 24.470 - if (err) 24.471 - goto give_sigsegv; 24.472 - 24.473 - /* Create the ucontext. */ 24.474 - err |= __put_user(0, &frame->uc.uc_flags); 24.475 - err |= __put_user(0, &frame->uc.uc_link); 24.476 - err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); 24.477 - err |= __put_user(sas_ss_flags(regs->esp), 24.478 - &frame->uc.uc_stack.ss_flags); 24.479 - err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); 24.480 - err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->fpstate, 24.481 - regs, set->sig[0]); 24.482 - err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 24.483 - if (err) 24.484 - goto give_sigsegv; 24.485 - 24.486 - /* Set up to return from userspace. */ 24.487 - restorer = &__kernel_rt_sigreturn; 24.488 - if (ka->sa.sa_flags & SA_RESTORER) 24.489 - restorer = ka->sa.sa_restorer; 24.490 - err |= __put_user(restorer, &frame->pretcode); 24.491 - 24.492 - /* 24.493 - * This is movl $,%eax ; int $0x80 24.494 - * 24.495 - * WE DO NOT USE IT ANY MORE! It's only left here for historical 24.496 - * reasons and because gdb uses it as a signature to notice 24.497 - * signal handler stack frames. 24.498 - */ 24.499 - err |= __put_user(0xb8, (char __user *)(frame->retcode+0)); 24.500 - err |= __put_user(__NR_rt_sigreturn, (int __user *)(frame->retcode+1)); 24.501 - err |= __put_user(0x80cd, (short __user *)(frame->retcode+5)); 24.502 - 24.503 - if (err) 24.504 - goto give_sigsegv; 24.505 - 24.506 - /* Set up registers for signal handler */ 24.507 - regs->esp = (unsigned long) frame; 24.508 - regs->eip = (unsigned long) ka->sa.sa_handler; 24.509 - regs->eax = (unsigned long) usig; 24.510 - regs->edx = (unsigned long) &frame->info; 24.511 - regs->ecx = (unsigned long) &frame->uc; 24.512 - 24.513 - set_fs(USER_DS); 24.514 - regs->xds = __USER_DS; 24.515 - regs->xes = __USER_DS; 24.516 - regs->xss = __USER_DS; 24.517 - regs->xcs = __USER_CS; 24.518 - 24.519 - /* 24.520 - * Clear TF when entering the signal handler, but 24.521 - * notify any tracer that was single-stepping it. 24.522 - * The tracer may want to single-step inside the 24.523 - * handler too. 24.524 - */ 24.525 - if (regs->eflags & TF_MASK) { 24.526 - regs->eflags &= ~TF_MASK; 24.527 - if (current->ptrace & PT_DTRACE) 24.528 - ptrace_notify(SIGTRAP); 24.529 - } 24.530 - 24.531 -#if DEBUG_SIG 24.532 - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", 24.533 - current->comm, current->pid, frame, regs->eip, frame->pretcode); 24.534 -#endif 24.535 - 24.536 - return; 24.537 - 24.538 -give_sigsegv: 24.539 - force_sigsegv(sig, current); 24.540 -} 24.541 - 24.542 -/* 24.543 - * OK, we're invoking a handler 24.544 - */ 24.545 - 24.546 -static void 24.547 -handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, 24.548 - sigset_t *oldset, struct pt_regs * regs) 24.549 -{ 24.550 - /* Are we from a system call? */ 24.551 - if (regs->orig_eax >= 0) { 24.552 - /* If so, check system call restarting.. */ 24.553 - switch (regs->eax) { 24.554 - case -ERESTART_RESTARTBLOCK: 24.555 - case -ERESTARTNOHAND: 24.556 - regs->eax = -EINTR; 24.557 - break; 24.558 - 24.559 - case -ERESTARTSYS: 24.560 - if (!(ka->sa.sa_flags & SA_RESTART)) { 24.561 - regs->eax = -EINTR; 24.562 - break; 24.563 - } 24.564 - /* fallthrough */ 24.565 - case -ERESTARTNOINTR: 24.566 - regs->eax = regs->orig_eax; 24.567 - regs->eip -= 2; 24.568 - } 24.569 - } 24.570 - 24.571 - /* Set up the stack frame */ 24.572 - if (ka->sa.sa_flags & SA_SIGINFO) 24.573 - setup_rt_frame(sig, ka, info, oldset, regs); 24.574 - else 24.575 - setup_frame(sig, ka, oldset, regs); 24.576 - 24.577 - if (!(ka->sa.sa_flags & SA_NODEFER)) { 24.578 - spin_lock_irq(¤t->sighand->siglock); 24.579 - sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); 24.580 - sigaddset(¤t->blocked,sig); 24.581 - recalc_sigpending(); 24.582 - spin_unlock_irq(¤t->sighand->siglock); 24.583 - } 24.584 -} 24.585 - 24.586 -/* 24.587 - * Note that 'init' is a special process: it doesn't get signals it doesn't 24.588 - * want to handle. Thus you cannot kill init even with a SIGKILL even by 24.589 - * mistake. 24.590 - */ 24.591 -int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset) 24.592 -{ 24.593 - siginfo_t info; 24.594 - int signr; 24.595 - struct k_sigaction ka; 24.596 - 24.597 - /* 24.598 - * We want the common case to go fast, which 24.599 - * is why we may in certain cases get here from 24.600 - * kernel mode. Just return without doing anything 24.601 - * if so. 24.602 - */ 24.603 - if ((regs->xcs & 2) != 2) 24.604 - return 1; 24.605 - 24.606 - if (current->flags & PF_FREEZE) { 24.607 - refrigerator(0); 24.608 - goto no_signal; 24.609 - } 24.610 - 24.611 - if (!oldset) 24.612 - oldset = ¤t->blocked; 24.613 - 24.614 - signr = get_signal_to_deliver(&info, &ka, regs, NULL); 24.615 - if (signr > 0) { 24.616 - /* Reenable any watchpoints before delivering the 24.617 - * signal to user space. The processor register will 24.618 - * have been cleared if the watchpoint triggered 24.619 - * inside the kernel. 24.620 - */ 24.621 - if (unlikely(current->thread.debugreg[7])) { 24.622 - HYPERVISOR_set_debugreg(7, 24.623 - current->thread.debugreg[7]); 24.624 - } 24.625 - 24.626 - /* Whee! Actually deliver the signal. */ 24.627 - handle_signal(signr, &info, &ka, oldset, regs); 24.628 - return 1; 24.629 - } 24.630 - 24.631 - no_signal: 24.632 - /* Did we come from a system call? */ 24.633 - if (regs->orig_eax >= 0) { 24.634 - /* Restart the system call - no handlers present */ 24.635 - if (regs->eax == -ERESTARTNOHAND || 24.636 - regs->eax == -ERESTARTSYS || 24.637 - regs->eax == -ERESTARTNOINTR) { 24.638 - regs->eax = regs->orig_eax; 24.639 - regs->eip -= 2; 24.640 - } 24.641 - if (regs->eax == -ERESTART_RESTARTBLOCK){ 24.642 - regs->eax = __NR_restart_syscall; 24.643 - regs->eip -= 2; 24.644 - } 24.645 - } 24.646 - return 0; 24.647 -} 24.648 - 24.649 -/* 24.650 - * notification of userspace execution resumption 24.651 - * - triggered by current->work.notify_resume 24.652 - */ 24.653 -__attribute__((regparm(3))) 24.654 -void do_notify_resume(struct pt_regs *regs, sigset_t *oldset, 24.655 - __u32 thread_info_flags) 24.656 -{ 24.657 - /* Pending single-step? */ 24.658 - if (thread_info_flags & _TIF_SINGLESTEP) { 24.659 - regs->eflags |= TF_MASK; 24.660 - clear_thread_flag(TIF_SINGLESTEP); 24.661 - } 24.662 - /* deal with pending signal delivery */ 24.663 - if (thread_info_flags & _TIF_SIGPENDING) 24.664 - do_signal(regs,oldset); 24.665 - 24.666 - clear_thread_flag(TIF_IRET); 24.667 -}
25.1 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/time.c Thu Mar 10 18:09:19 2005 +0000 25.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 25.3 @@ -1,733 +0,0 @@ 25.4 -/* 25.5 - * linux/arch/i386/kernel/time.c 25.6 - * 25.7 - * Copyright (C) 1991, 1992, 1995 Linus Torvalds 25.8 - * 25.9 - * This file contains the PC-specific time handling details: 25.10 - * reading the RTC at bootup, etc.. 25.11 - * 1994-07-02 Alan Modra 25.12 - * fixed set_rtc_mmss, fixed time.year for >= 2000, new mktime 25.13 - * 1995-03-26 Markus Kuhn 25.14 - * fixed 500 ms bug at call to set_rtc_mmss, fixed DS12887 25.15 - * precision CMOS clock update 25.16 - * 1996-05-03 Ingo Molnar 25.17 - * fixed time warps in do_[slow|fast]_gettimeoffset() 25.18 - * 1997-09-10 Updated NTP code according to technical memorandum Jan '96 25.19 - * "A Kernel Model for Precision Timekeeping" by Dave Mills 25.20 - * 1998-09-05 (Various) 25.21 - * More robust do_fast_gettimeoffset() algorithm implemented 25.22 - * (works with APM, Cyrix 6x86MX and Centaur C6), 25.23 - * monotonic gettimeofday() with fast_get_timeoffset(), 25.24 - * drift-proof precision TSC calibration on boot 25.25 - * (C. Scott Ananian <cananian@alumni.princeton.edu>, Andrew D. 25.26 - * Balsa <andrebalsa@altern.org>, Philip Gladstone <philip@raptor.com>; 25.27 - * ported from 2.0.35 Jumbo-9 by Michael Krause <m.krause@tu-harburg.de>). 25.28 - * 1998-12-16 Andrea Arcangeli 25.29 - * Fixed Jumbo-9 code in 2.1.131: do_gettimeofday was missing 1 jiffy 25.30 - * because was not accounting lost_ticks. 25.31 - * 1998-12-24 Copyright (C) 1998 Andrea Arcangeli 25.32 - * Fixed a xtime SMP race (we need the xtime_lock rw spinlock to 25.33 - * serialize accesses to xtime/lost_ticks). 25.34 - */ 25.35 - 25.36 -#include <linux/errno.h> 25.37 -#include <linux/sched.h> 25.38 -#include <linux/kernel.h> 25.39 -#include <linux/param.h> 25.40 -#include <linux/string.h> 25.41 -#include <linux/mm.h> 25.42 -#include <linux/interrupt.h> 25.43 -#include <linux/time.h> 25.44 -#include <linux/delay.h> 25.45 -#include <linux/init.h> 25.46 -#include <linux/smp.h> 25.47 -#include <linux/module.h> 25.48 -#include <linux/sysdev.h> 25.49 -#include <linux/bcd.h> 25.50 -#include <linux/efi.h> 25.51 -#include <linux/sysctl.h> 25.52 - 25.53 -#include <asm/io.h> 25.54 -#include <asm/smp.h> 25.55 -#include <asm/irq.h> 25.56 -#include <asm/msr.h> 25.57 -#include <asm/delay.h> 25.58 -#include <asm/mpspec.h> 25.59 -#include <asm/uaccess.h> 25.60 -#include <asm/processor.h> 25.61 -#include <asm/timer.h> 25.62 - 25.63 -#include "mach_time.h" 25.64 - 25.65 -#include <linux/timex.h> 25.66 -#include <linux/config.h> 25.67 - 25.68 -#include <asm/hpet.h> 25.69 - 25.70 -#include <asm/arch_hooks.h> 25.71 - 25.72 -#include "io_ports.h" 25.73 - 25.74 -extern spinlock_t i8259A_lock; 25.75 -int pit_latch_buggy; /* extern */ 25.76 - 25.77 -u64 jiffies_64 = INITIAL_JIFFIES; 25.78 - 25.79 -EXPORT_SYMBOL(jiffies_64); 25.80 - 25.81 -unsigned long cpu_khz; /* Detected as we calibrate the TSC */ 25.82 - 25.83 -extern unsigned long wall_jiffies; 25.84 - 25.85 -spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; 25.86 - 25.87 -spinlock_t i8253_lock = SPIN_LOCK_UNLOCKED; 25.88 -EXPORT_SYMBOL(i8253_lock); 25.89 - 25.90 -extern struct init_timer_opts timer_tsc_init; 25.91 -extern struct timer_opts timer_tsc; 25.92 -struct timer_opts *cur_timer = &timer_tsc; 25.93 - 25.94 -/* These are peridically updated in shared_info, and then copied here. */ 25.95 -u32 shadow_tsc_stamp; 25.96 -u64 shadow_system_time; 25.97 -static u32 shadow_time_version; 25.98 -static struct timeval shadow_tv; 25.99 -extern u64 processed_system_time; 25.100 - 25.101 -/* 25.102 - * We use this to ensure that gettimeofday() is monotonically increasing. We 25.103 - * only break this guarantee if the wall clock jumps backwards "a long way". 25.104 - */ 25.105 -static struct timeval last_seen_tv = {0,0}; 25.106 - 25.107 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 25.108 -/* Periodically propagate synchronised time base to the RTC and to Xen. */ 25.109 -static long last_rtc_update, last_update_to_xen; 25.110 -#endif 25.111 - 25.112 -/* Periodically take synchronised time base from Xen, if we need it. */ 25.113 -static long last_update_from_xen; /* UTC seconds when last read Xen clock. */ 25.114 - 25.115 -/* Keep track of last time we did processing/updating of jiffies and xtime. */ 25.116 -u64 processed_system_time; /* System time (ns) at last processing. */ 25.117 - 25.118 -#define NS_PER_TICK (1000000000ULL/HZ) 25.119 - 25.120 -#define HANDLE_USEC_UNDERFLOW(_tv) do { \ 25.121 - while ((_tv).tv_usec < 0) { \ 25.122 - (_tv).tv_usec += USEC_PER_SEC; \ 25.123 - (_tv).tv_sec--; \ 25.124 - } \ 25.125 -} while (0) 25.126 -#define HANDLE_USEC_OVERFLOW(_tv) do { \ 25.127 - while ((_tv).tv_usec >= USEC_PER_SEC) { \ 25.128 - (_tv).tv_usec -= USEC_PER_SEC; \ 25.129 - (_tv).tv_sec++; \ 25.130 - } \ 25.131 -} while (0) 25.132 -static inline void __normalize_time(time_t *sec, s64 *nsec) 25.133 -{ 25.134 - while (*nsec >= NSEC_PER_SEC) { 25.135 - (*nsec) -= NSEC_PER_SEC; 25.136 - (*sec)++; 25.137 - } 25.138 - while (*nsec < 0) { 25.139 - (*nsec) += NSEC_PER_SEC; 25.140 - (*sec)--; 25.141 - } 25.142 -} 25.143 - 25.144 -/* Does this guest OS track Xen time, or set its wall clock independently? */ 25.145 -static int independent_wallclock = 0; 25.146 -static int __init __independent_wallclock(char *str) 25.147 -{ 25.148 - independent_wallclock = 1; 25.149 - return 1; 25.150 -} 25.151 -__setup("independent_wallclock", __independent_wallclock); 25.152 -#define INDEPENDENT_WALLCLOCK() \ 25.153 - (independent_wallclock || (xen_start_info.flags & SIF_INITDOMAIN)) 25.154 - 25.155 -/* 25.156 - * Reads a consistent set of time-base values from Xen, into a shadow data 25.157 - * area. Must be called with the xtime_lock held for writing. 25.158 - */ 25.159 -static void __get_time_values_from_xen(void) 25.160 -{ 25.161 - shared_info_t *s = HYPERVISOR_shared_info; 25.162 - 25.163 - do { 25.164 - shadow_time_version = s->time_version2; 25.165 - rmb(); 25.166 - shadow_tv.tv_sec = s->wc_sec; 25.167 - shadow_tv.tv_usec = s->wc_usec; 25.168 - shadow_tsc_stamp = (u32)s->tsc_timestamp; 25.169 - shadow_system_time = s->system_time; 25.170 - rmb(); 25.171 - } 25.172 - while (shadow_time_version != s->time_version1); 25.173 - 25.174 - cur_timer->mark_offset(); 25.175 -} 25.176 - 25.177 -#define TIME_VALUES_UP_TO_DATE \ 25.178 - ({ rmb(); (shadow_time_version == HYPERVISOR_shared_info->time_version2); }) 25.179 - 25.180 -/* 25.181 - * This version of gettimeofday has microsecond resolution 25.182 - * and better than microsecond precision on fast x86 machines with TSC. 25.183 - */ 25.184 -void do_gettimeofday(struct timeval *tv) 25.185 -{ 25.186 - unsigned long seq; 25.187 - unsigned long usec, sec; 25.188 - unsigned long max_ntp_tick; 25.189 - unsigned long flags; 25.190 - s64 nsec; 25.191 - 25.192 - do { 25.193 - unsigned long lost; 25.194 - 25.195 - seq = read_seqbegin(&xtime_lock); 25.196 - 25.197 - usec = cur_timer->get_offset(); 25.198 - lost = jiffies - wall_jiffies; 25.199 - 25.200 - /* 25.201 - * If time_adjust is negative then NTP is slowing the clock 25.202 - * so make sure not to go into next possible interval. 25.203 - * Better to lose some accuracy than have time go backwards.. 25.204 - */ 25.205 - if (unlikely(time_adjust < 0)) { 25.206 - max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj; 25.207 - usec = min(usec, max_ntp_tick); 25.208 - 25.209 - if (lost) 25.210 - usec += lost * max_ntp_tick; 25.211 - } 25.212 - else if (unlikely(lost)) 25.213 - usec += lost * (USEC_PER_SEC / HZ); 25.214 - 25.215 - sec = xtime.tv_sec; 25.216 - usec += (xtime.tv_nsec / NSEC_PER_USEC); 25.217 - 25.218 - nsec = shadow_system_time - processed_system_time; 25.219 - __normalize_time(&sec, &nsec); 25.220 - usec += (long)nsec / NSEC_PER_USEC; 25.221 - 25.222 - if (unlikely(!TIME_VALUES_UP_TO_DATE)) { 25.223 - /* 25.224 - * We may have blocked for a long time, 25.225 - * rendering our calculations invalid 25.226 - * (e.g. the time delta may have 25.227 - * overflowed). Detect that and recalculate 25.228 - * with fresh values. 25.229 - */ 25.230 - write_seqlock_irqsave(&xtime_lock, flags); 25.231 - __get_time_values_from_xen(); 25.232 - write_sequnlock_irqrestore(&xtime_lock, flags); 25.233 - continue; 25.234 - } 25.235 - } while (read_seqretry(&xtime_lock, seq)); 25.236 - 25.237 - while (usec >= USEC_PER_SEC) { 25.238 - usec -= USEC_PER_SEC; 25.239 - sec++; 25.240 - } 25.241 - 25.242 - /* Ensure that time-of-day is monotonically increasing. */ 25.243 - if ((sec < last_seen_tv.tv_sec) || 25.244 - ((sec == last_seen_tv.tv_sec) && (usec < last_seen_tv.tv_usec))) { 25.245 - sec = last_seen_tv.tv_sec; 25.246 - usec = last_seen_tv.tv_usec; 25.247 - } else { 25.248 - last_seen_tv.tv_sec = sec; 25.249 - last_seen_tv.tv_usec = usec; 25.250 - } 25.251 - 25.252 - tv->tv_sec = sec; 25.253 - tv->tv_usec = usec; 25.254 -} 25.255 - 25.256 -EXPORT_SYMBOL(do_gettimeofday); 25.257 - 25.258 -int do_settimeofday(struct timespec *tv) 25.259 -{ 25.260 - time_t wtm_sec, sec = tv->tv_sec; 25.261 - long wtm_nsec; 25.262 - s64 nsec; 25.263 - struct timespec xentime; 25.264 - 25.265 - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) 25.266 - return -EINVAL; 25.267 - 25.268 - if (!INDEPENDENT_WALLCLOCK()) 25.269 - return 0; /* Silent failure? */ 25.270 - 25.271 - write_seqlock_irq(&xtime_lock); 25.272 - 25.273 - /* 25.274 - * Ensure we don't get blocked for a long time so that our time delta 25.275 - * overflows. If that were to happen then our shadow time values would 25.276 - * be stale, so we can retry with fresh ones. 25.277 - */ 25.278 - again: 25.279 - nsec = (s64)tv->tv_nsec - 25.280 - ((s64)cur_timer->get_offset() * (s64)NSEC_PER_USEC); 25.281 - if (unlikely(!TIME_VALUES_UP_TO_DATE)) { 25.282 - __get_time_values_from_xen(); 25.283 - goto again; 25.284 - } 25.285 - 25.286 - __normalize_time(&sec, &nsec); 25.287 - set_normalized_timespec(&xentime, sec, nsec); 25.288 - 25.289 - /* 25.290 - * This is revolting. We need to set "xtime" correctly. However, the 25.291 - * value in this location is the value at the most recent update of 25.292 - * wall time. Discover what correction gettimeofday() would have 25.293 - * made, and then undo it! 25.294 - */ 25.295 - nsec -= (jiffies - wall_jiffies) * TICK_NSEC; 25.296 - 25.297 - nsec -= (shadow_system_time - processed_system_time); 25.298 - 25.299 - __normalize_time(&sec, &nsec); 25.300 - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 25.301 - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 25.302 - 25.303 - set_normalized_timespec(&xtime, sec, nsec); 25.304 - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 25.305 - 25.306 - time_adjust = 0; /* stop active adjtime() */ 25.307 - time_status |= STA_UNSYNC; 25.308 - time_maxerror = NTP_PHASE_LIMIT; 25.309 - time_esterror = NTP_PHASE_LIMIT; 25.310 - 25.311 - /* Reset all our running time counts. They make no sense now. */ 25.312 - last_seen_tv.tv_sec = 0; 25.313 - last_update_from_xen = 0; 25.314 - 25.315 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 25.316 - if (xen_start_info.flags & SIF_INITDOMAIN) { 25.317 - dom0_op_t op; 25.318 - last_rtc_update = last_update_to_xen = 0; 25.319 - op.cmd = DOM0_SETTIME; 25.320 - op.u.settime.secs = xentime.tv_sec; 25.321 - op.u.settime.usecs = xentime.tv_nsec / NSEC_PER_USEC; 25.322 - op.u.settime.system_time = shadow_system_time; 25.323 - write_sequnlock_irq(&xtime_lock); 25.324 - HYPERVISOR_dom0_op(&op); 25.325 - } else 25.326 -#endif 25.327 - write_sequnlock_irq(&xtime_lock); 25.328 - 25.329 - clock_was_set(); 25.330 - return 0; 25.331 -} 25.332 - 25.333 -EXPORT_SYMBOL(do_settimeofday); 25.334 - 25.335 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 25.336 -static int set_rtc_mmss(unsigned long nowtime) 25.337 -{ 25.338 - int retval; 25.339 - 25.340 - /* gets recalled with irq locally disabled */ 25.341 - spin_lock(&rtc_lock); 25.342 - if (efi_enabled) 25.343 - retval = efi_set_rtc_mmss(nowtime); 25.344 - else 25.345 - retval = mach_set_rtc_mmss(nowtime); 25.346 - spin_unlock(&rtc_lock); 25.347 - 25.348 - return retval; 25.349 -} 25.350 -#endif 25.351 - 25.352 -/* monotonic_clock(): returns # of nanoseconds passed since time_init() 25.353 - * Note: This function is required to return accurate 25.354 - * time even in the absence of multiple timer ticks. 25.355 - */ 25.356 -unsigned long long monotonic_clock(void) 25.357 -{ 25.358 - return cur_timer->monotonic_clock(); 25.359 -} 25.360 -EXPORT_SYMBOL(monotonic_clock); 25.361 - 25.362 -#if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER) 25.363 -unsigned long profile_pc(struct pt_regs *regs) 25.364 -{ 25.365 - unsigned long pc = instruction_pointer(regs); 25.366 - 25.367 - if (in_lock_functions(pc)) 25.368 - return *(unsigned long *)(regs->ebp + 4); 25.369 - 25.370 - return pc; 25.371 -} 25.372 -EXPORT_SYMBOL(profile_pc); 25.373 -#endif 25.374 - 25.375 -/* 25.376 - * timer_interrupt() needs to keep up the real-time clock, 25.377 - * as well as call the "do_timer()" routine every clocktick 25.378 - */ 25.379 -static inline void do_timer_interrupt(int irq, void *dev_id, 25.380 - struct pt_regs *regs) 25.381 -{ 25.382 - time_t wtm_sec, sec; 25.383 - s64 delta, nsec; 25.384 - long sec_diff, wtm_nsec; 25.385 - 25.386 - do { 25.387 - __get_time_values_from_xen(); 25.388 - 25.389 - delta = (s64)(shadow_system_time + 25.390 - ((s64)cur_timer->get_offset() * 25.391 - (s64)NSEC_PER_USEC) - 25.392 - processed_system_time); 25.393 - } 25.394 - while (!TIME_VALUES_UP_TO_DATE); 25.395 - 25.396 - if (unlikely(delta < 0)) { 25.397 - printk("Timer ISR: Time went backwards: %lld %lld %lld %lld\n", 25.398 - delta, shadow_system_time, 25.399 - ((s64)cur_timer->get_offset() * (s64)NSEC_PER_USEC), 25.400 - processed_system_time); 25.401 - return; 25.402 - } 25.403 - 25.404 - /* Process elapsed jiffies since last call. */ 25.405 - while (delta >= NS_PER_TICK) { 25.406 - delta -= NS_PER_TICK; 25.407 - processed_system_time += NS_PER_TICK; 25.408 - do_timer(regs); 25.409 -#ifndef CONFIG_SMP 25.410 - update_process_times(user_mode(regs)); 25.411 -#endif 25.412 - if (regs) 25.413 - profile_tick(CPU_PROFILING, regs); 25.414 - } 25.415 - 25.416 - /* 25.417 - * Take synchronised time from Xen once a minute if we're not 25.418 - * synchronised ourselves, and we haven't chosen to keep an independent 25.419 - * time base. 25.420 - */ 25.421 - if (!INDEPENDENT_WALLCLOCK() && 25.422 - ((time_status & STA_UNSYNC) != 0) && 25.423 - (xtime.tv_sec > (last_update_from_xen + 60))) { 25.424 - /* Adjust shadow for jiffies that haven't updated xtime yet. */ 25.425 - shadow_tv.tv_usec -= 25.426 - (jiffies - wall_jiffies) * (USEC_PER_SEC / HZ); 25.427 - HANDLE_USEC_UNDERFLOW(shadow_tv); 25.428 - 25.429 - /* 25.430 - * Reset our running time counts if they are invalidated by 25.431 - * a warp backwards of more than 500ms. 25.432 - */ 25.433 - sec_diff = xtime.tv_sec - shadow_tv.tv_sec; 25.434 - if (unlikely(abs(sec_diff) > 1) || 25.435 - unlikely(((sec_diff * USEC_PER_SEC) + 25.436 - (xtime.tv_nsec / NSEC_PER_USEC) - 25.437 - shadow_tv.tv_usec) > 500000)) { 25.438 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 25.439 - last_rtc_update = last_update_to_xen = 0; 25.440 -#endif 25.441 - last_seen_tv.tv_sec = 0; 25.442 - } 25.443 - 25.444 - /* Update our unsynchronised xtime appropriately. */ 25.445 - sec = shadow_tv.tv_sec; 25.446 - nsec = shadow_tv.tv_usec * NSEC_PER_USEC; 25.447 - 25.448 - __normalize_time(&sec, &nsec); 25.449 - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 25.450 - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 25.451 - 25.452 - set_normalized_timespec(&xtime, sec, nsec); 25.453 - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 25.454 - 25.455 - last_update_from_xen = sec; 25.456 - } 25.457 - 25.458 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 25.459 - if (!(xen_start_info.flags & SIF_INITDOMAIN)) 25.460 - return; 25.461 - 25.462 - /* Send synchronised time to Xen approximately every minute. */ 25.463 - if (((time_status & STA_UNSYNC) == 0) && 25.464 - (xtime.tv_sec > (last_update_to_xen + 60))) { 25.465 - dom0_op_t op; 25.466 - struct timeval tv; 25.467 - 25.468 - tv.tv_sec = xtime.tv_sec; 25.469 - tv.tv_usec = xtime.tv_nsec / NSEC_PER_USEC; 25.470 - tv.tv_usec += (jiffies - wall_jiffies) * (USEC_PER_SEC/HZ); 25.471 - HANDLE_USEC_OVERFLOW(tv); 25.472 -