ia64/xen-unstable
changeset 2730:145b7783c604
bitkeeper revision 1.1159.1.272 (417d33eaZEb_tnkLdhSsCNFpEXrEiw)
Update to Linux 2.6.9.
Update to Linux 2.6.9.
author | cl349@freefall.cl.cam.ac.uk |
---|---|
date | Mon Oct 25 17:12:10 2004 +0000 (2004-10-25) |
parents | 62cd5cf03a25 |
children | 337efea3503e |
files | .rootkeys linux-2.6.8.1-patches/agpgart.patch linux-2.6.8.1-patches/drm.patch linux-2.6.8.1-xen-sparse/arch/xen/Kconfig linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.8.1-xen-sparse/arch/xen/Makefile linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/Makefile linux-2.6.8.1-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/empty.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.8.1-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.8.1-xen-sparse/drivers/Makefile linux-2.6.8.1-xen-sparse/drivers/char/mem.c linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c linux-2.6.8.1-xen-sparse/drivers/xen/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.8.1-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.8.1-xen-sparse/drivers/xen/blkback/common.h linux-2.6.8.1-xen-sparse/drivers/xen/blkback/control.c linux-2.6.8.1-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.8.1-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.8.1-xen-sparse/drivers/xen/console/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.8.1-xen-sparse/drivers/xen/netback/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/netback/common.h linux-2.6.8.1-xen-sparse/drivers/xen/netback/control.c linux-2.6.8.1-xen-sparse/drivers/xen/netback/interface.c linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.8.1-xen-sparse/include/asm-generic/pgtable.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/timer.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.8.1-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.8.1-xen-sparse/include/asm-xen/evtchn.h linux-2.6.8.1-xen-sparse/include/asm-xen/gnttab.h linux-2.6.8.1-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.8.1-xen-sparse/include/asm-xen/multicall.h linux-2.6.8.1-xen-sparse/include/asm-xen/proc_cmd.h linux-2.6.8.1-xen-sparse/include/asm-xen/queues.h linux-2.6.8.1-xen-sparse/include/asm-xen/suspend.h linux-2.6.8.1-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.8.1-xen-sparse/include/linux/bio.h linux-2.6.8.1-xen-sparse/include/linux/page-flags.h linux-2.6.8.1-xen-sparse/include/linux/skbuff.h linux-2.6.8.1-xen-sparse/mkbuildtree linux-2.6.8.1-xen-sparse/mm/memory.c linux-2.6.8.1-xen-sparse/mm/page_alloc.c linux-2.6.8.1-xen-sparse/net/core/skbuff.c linux-2.6.8.1-xen-sparse/net/ipv4/raw.c linux-2.6.9-patches/agpgart.patch linux-2.6.9-patches/drm.patch linux-2.6.9-xen-sparse/arch/xen/Kconfig linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers linux-2.6.9-xen-sparse/arch/xen/Makefile linux-2.6.9-xen-sparse/arch/xen/boot/Makefile linux-2.6.9-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.9-xen-sparse/arch/xen/configs/xenU_defconfig linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig linux-2.6.9-xen-sparse/arch/xen/i386/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/common.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S linux-2.6.9-xen-sparse/arch/xen/i386/kernel/head.S linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ioport.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ldt.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/pci-dma.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/setup.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/sysenter.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.S linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.lds linux-2.6.9-xen-sparse/arch/xen/i386/mm/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/highmem.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c linux-2.6.9-xen-sparse/arch/xen/i386/pci/Makefile linux-2.6.9-xen-sparse/arch/xen/i386/pci/direct.c linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c linux-2.6.9-xen-sparse/arch/xen/kernel/Makefile linux-2.6.9-xen-sparse/arch/xen/kernel/ctrl_if.c linux-2.6.9-xen-sparse/arch/xen/kernel/empty.c linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c linux-2.6.9-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.9-xen-sparse/arch/xen/kernel/gnttab.c linux-2.6.9-xen-sparse/arch/xen/kernel/process.c linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c linux-2.6.9-xen-sparse/arch/xen/kernel/skbuff.c linux-2.6.9-xen-sparse/arch/xen/kernel/xen_proc.c linux-2.6.9-xen-sparse/drivers/Makefile linux-2.6.9-xen-sparse/drivers/char/mem.c linux-2.6.9-xen-sparse/drivers/char/tty_io.c linux-2.6.9-xen-sparse/drivers/xen/Makefile linux-2.6.9-xen-sparse/drivers/xen/balloon/Makefile linux-2.6.9-xen-sparse/drivers/xen/balloon/balloon.c linux-2.6.9-xen-sparse/drivers/xen/blkback/Makefile linux-2.6.9-xen-sparse/drivers/xen/blkback/blkback.c linux-2.6.9-xen-sparse/drivers/xen/blkback/common.h linux-2.6.9-xen-sparse/drivers/xen/blkback/control.c linux-2.6.9-xen-sparse/drivers/xen/blkback/interface.c linux-2.6.9-xen-sparse/drivers/xen/blkback/vbd.c linux-2.6.9-xen-sparse/drivers/xen/blkfront/Kconfig linux-2.6.9-xen-sparse/drivers/xen/blkfront/Makefile linux-2.6.9-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.9-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.9-xen-sparse/drivers/xen/console/Makefile linux-2.6.9-xen-sparse/drivers/xen/console/console.c linux-2.6.9-xen-sparse/drivers/xen/evtchn/Makefile linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c linux-2.6.9-xen-sparse/drivers/xen/netback/Makefile linux-2.6.9-xen-sparse/drivers/xen/netback/common.h linux-2.6.9-xen-sparse/drivers/xen/netback/control.c linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c linux-2.6.9-xen-sparse/drivers/xen/netfront/Kconfig linux-2.6.9-xen-sparse/drivers/xen/netfront/Makefile linux-2.6.9-xen-sparse/drivers/xen/netfront/netfront.c linux-2.6.9-xen-sparse/drivers/xen/privcmd/Makefile linux-2.6.9-xen-sparse/drivers/xen/privcmd/privcmd.c linux-2.6.9-xen-sparse/include/asm-generic/pgtable.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/desc.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mmu_context.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/msr.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/param.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pci.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgalloc.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/ptrace.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/segment.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/setup.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/timer.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/tlbflush.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/vga.h linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/xor.h linux-2.6.9-xen-sparse/include/asm-xen/ctrl_if.h linux-2.6.9-xen-sparse/include/asm-xen/evtchn.h linux-2.6.9-xen-sparse/include/asm-xen/gnttab.h linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h linux-2.6.9-xen-sparse/include/asm-xen/multicall.h linux-2.6.9-xen-sparse/include/asm-xen/proc_cmd.h linux-2.6.9-xen-sparse/include/asm-xen/queues.h linux-2.6.9-xen-sparse/include/asm-xen/suspend.h linux-2.6.9-xen-sparse/include/asm-xen/xen_proc.h linux-2.6.9-xen-sparse/include/linux/bio.h linux-2.6.9-xen-sparse/include/linux/page-flags.h linux-2.6.9-xen-sparse/include/linux/skbuff.h linux-2.6.9-xen-sparse/mkbuildtree linux-2.6.9-xen-sparse/mm/memory.c linux-2.6.9-xen-sparse/mm/page_alloc.c linux-2.6.9-xen-sparse/net/core/skbuff.c linux-2.6.9-xen-sparse/net/ipv4/raw.c |
line diff
1.1 --- a/.rootkeys Mon Oct 25 12:45:34 2004 +0000 1.2 +++ b/.rootkeys Mon Oct 25 17:12:10 2004 +0000 1.3 @@ -124,143 +124,142 @@ 409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4 1.4 3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.27-xen-sparse/mm/swapfile.c 1.5 41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.27-xen-sparse/mm/vmalloc.c 1.6 41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.27-xen-sparse/net/core/skbuff.c 1.7 -413aa1d0oNP8HXLvfPuMe6cSroUfSA linux-2.6.8.1-patches/agpgart.patch 1.8 -413aa1d0ewvSv-ohnNnQQNGsbPTTNA linux-2.6.8.1-patches/drm.patch 1.9 -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.8.1-xen-sparse/arch/xen/Kconfig 1.10 -40f56237utH41NPukqHksuNf29IC9A linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers 1.11 -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.8.1-xen-sparse/arch/xen/Makefile 1.12 -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile 1.13 -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig 1.14 -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig 1.15 -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig 1.16 -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile 1.17 -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile 1.18 -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.19 -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.20 -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S 1.21 -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S 1.22 -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.23 -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c 1.24 -40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c 1.25 -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c 1.26 -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.27 -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c 1.28 -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c 1.29 -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c 1.30 -40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c 1.31 -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c 1.32 -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.33 -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.34 -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c 1.35 -40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S 1.36 -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.37 -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.38 -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/Makefile 1.39 -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c 1.40 -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/highmem.c 1.41 -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.42 -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c 1.43 -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c 1.44 -413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pageattr.c 1.45 -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c 1.46 -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/Makefile 1.47 -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/direct.c 1.48 -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c 1.49 -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.8.1-xen-sparse/arch/xen/kernel/Makefile 1.50 -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.8.1-xen-sparse/arch/xen/kernel/ctrl_if.c 1.51 -40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.8.1-xen-sparse/arch/xen/kernel/empty.c 1.52 -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c 1.53 -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.8.1-xen-sparse/arch/xen/kernel/fixup.c 1.54 -412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.8.1-xen-sparse/arch/xen/kernel/gnttab.c 1.55 -40f56239sFcjHiIRmnObRIDF-zaeKQ linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c 1.56 -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.8.1-xen-sparse/arch/xen/kernel/reboot.c 1.57 -414c113396tK1HTVeUalm3u-1DF16g linux-2.6.8.1-xen-sparse/arch/xen/kernel/skbuff.c 1.58 -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.8.1-xen-sparse/arch/xen/kernel/xen_proc.c 1.59 -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.8.1-xen-sparse/drivers/Makefile 1.60 -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.8.1-xen-sparse/drivers/char/mem.c 1.61 -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c 1.62 -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.8.1-xen-sparse/drivers/xen/Makefile 1.63 -41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.8.1-xen-sparse/drivers/xen/balloon/Makefile 1.64 -3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.8.1-xen-sparse/drivers/xen/balloon/balloon.c 1.65 -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.8.1-xen-sparse/drivers/xen/blkback/Makefile 1.66 -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.8.1-xen-sparse/drivers/xen/blkback/blkback.c 1.67 -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.8.1-xen-sparse/drivers/xen/blkback/common.h 1.68 -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.8.1-xen-sparse/drivers/xen/blkback/control.c 1.69 -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.8.1-xen-sparse/drivers/xen/blkback/interface.c 1.70 -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.8.1-xen-sparse/drivers/xen/blkback/vbd.c 1.71 -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Kconfig 1.72 -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Makefile 1.73 -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/blkfront.c 1.74 -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/block.h 1.75 -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/vbd.c 1.76 -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.8.1-xen-sparse/drivers/xen/console/Makefile 1.77 -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c 1.78 -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/Makefile 1.79 -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/evtchn.c 1.80 -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.8.1-xen-sparse/drivers/xen/netback/Makefile 1.81 -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.8.1-xen-sparse/drivers/xen/netback/common.h 1.82 -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.8.1-xen-sparse/drivers/xen/netback/control.c 1.83 -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.8.1-xen-sparse/drivers/xen/netback/interface.c 1.84 -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c 1.85 -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Kconfig 1.86 -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Makefile 1.87 -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.8.1-xen-sparse/drivers/xen/netfront/netfront.c 1.88 -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/Makefile 1.89 -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/privcmd.c 1.90 -412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.8.1-xen-sparse/include/asm-generic/pgtable.h 1.91 -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h 1.92 -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.93 -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.94 -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.95 -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/io.h 1.96 -40f5623am9BzluYFuV6EQfTd-so3dA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h 1.97 -40f5623adZQ1IZGPxbDXONjyZGYuTA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h 1.98 -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.99 -40f5623aMQZoYuf4ml9v69N3gu8ing linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h 1.100 -40f5623a8LroVMnZ5YRzJJmIc-zHlw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h 1.101 -40f5623an3wOvFKmpIvqSxQfWzklVQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h 1.102 -40f5623ayR1vnzfF__htza35a8Ft-g linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h 1.103 -40f5623a4YdRdVzYWJzOOoqe8mnrXA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h 1.104 -40f5623aDLxmbOtUHvkWztKjAO4EjA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h 1.105 -41062ab7HMSSuaUv3_Z4agLpjSO88A linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h 1.106 -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.107 -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.108 -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.109 -40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h 1.110 -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h 1.111 -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h 1.112 -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pci.h 1.113 -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.114 -412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.115 -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.116 -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.117 -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h 1.118 -412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.119 -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/segment.h 1.120 -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h 1.121 -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.122 -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h 1.123 -40f5623bSgGrvrGRpD71K-lIYqaGgg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/timer.h 1.124 -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.125 -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/vga.h 1.126 -40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/xor.h 1.127 -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.8.1-xen-sparse/include/asm-xen/ctrl_if.h 1.128 -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.8.1-xen-sparse/include/asm-xen/evtchn.h 1.129 -412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.8.1-xen-sparse/include/asm-xen/gnttab.h 1.130 -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.8.1-xen-sparse/include/asm-xen/hypervisor.h 1.131 -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.8.1-xen-sparse/include/asm-xen/multicall.h 1.132 -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.8.1-xen-sparse/include/asm-xen/proc_cmd.h 1.133 -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.8.1-xen-sparse/include/asm-xen/queues.h 1.134 -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.8.1-xen-sparse/include/asm-xen/suspend.h 1.135 -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.8.1-xen-sparse/include/asm-xen/xen_proc.h 1.136 -4124d8c4aocX7A-jIbuGraWN84pxGQ linux-2.6.8.1-xen-sparse/include/linux/bio.h 1.137 -4124f66fp5QwbDHEfoUIa7pqO5Xhag linux-2.6.8.1-xen-sparse/include/linux/page-flags.h 1.138 -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.8.1-xen-sparse/include/linux/skbuff.h 1.139 -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.8.1-xen-sparse/mkbuildtree 1.140 -412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.8.1-xen-sparse/mm/memory.c 1.141 -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.8.1-xen-sparse/mm/page_alloc.c 1.142 -41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.8.1-xen-sparse/net/core/skbuff.c 1.143 -4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.8.1-xen-sparse/net/ipv4/raw.c 1.144 +413aa1d0oNP8HXLvfPuMe6cSroUfSA linux-2.6.9-patches/agpgart.patch 1.145 +413aa1d0ewvSv-ohnNnQQNGsbPTTNA linux-2.6.9-patches/drm.patch 1.146 +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.9-xen-sparse/arch/xen/Kconfig 1.147 +40f56237utH41NPukqHksuNf29IC9A linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers 1.148 +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.9-xen-sparse/arch/xen/Makefile 1.149 +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.9-xen-sparse/arch/xen/boot/Makefile 1.150 +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.9-xen-sparse/arch/xen/configs/xen0_defconfig 1.151 +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.9-xen-sparse/arch/xen/configs/xenU_defconfig 1.152 +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig 1.153 +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.9-xen-sparse/arch/xen/i386/Makefile 1.154 +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile 1.155 +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile 1.156 +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/common.c 1.157 +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S 1.158 +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.9-xen-sparse/arch/xen/i386/kernel/head.S 1.159 +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c 1.160 +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ioport.c 1.161 +40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c 1.162 +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ldt.c 1.163 +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/pci-dma.c 1.164 +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c 1.165 +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/setup.c 1.166 +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c 1.167 +40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.9-xen-sparse/arch/xen/i386/kernel/sysenter.c 1.168 +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c 1.169 +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/Makefile 1.170 +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c 1.171 +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c 1.172 +40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S 1.173 +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.S 1.174 +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.lds 1.175 +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.9-xen-sparse/arch/xen/i386/mm/Makefile 1.176 +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c 1.177 +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.9-xen-sparse/arch/xen/i386/mm/highmem.c 1.178 +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c 1.179 +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c 1.180 +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c 1.181 +413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c 1.182 +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c 1.183 +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.9-xen-sparse/arch/xen/i386/pci/Makefile 1.184 +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.9-xen-sparse/arch/xen/i386/pci/direct.c 1.185 +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c 1.186 +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.9-xen-sparse/arch/xen/kernel/Makefile 1.187 +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.9-xen-sparse/arch/xen/kernel/ctrl_if.c 1.188 +40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.9-xen-sparse/arch/xen/kernel/empty.c 1.189 +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c 1.190 +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.9-xen-sparse/arch/xen/kernel/fixup.c 1.191 +412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.9-xen-sparse/arch/xen/kernel/gnttab.c 1.192 +40f56239sFcjHiIRmnObRIDF-zaeKQ linux-2.6.9-xen-sparse/arch/xen/kernel/process.c 1.193 +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c 1.194 +414c113396tK1HTVeUalm3u-1DF16g linux-2.6.9-xen-sparse/arch/xen/kernel/skbuff.c 1.195 +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.9-xen-sparse/arch/xen/kernel/xen_proc.c 1.196 +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.9-xen-sparse/drivers/Makefile 1.197 +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.9-xen-sparse/drivers/char/mem.c 1.198 +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.9-xen-sparse/drivers/char/tty_io.c 1.199 +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.9-xen-sparse/drivers/xen/Makefile 1.200 +41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.9-xen-sparse/drivers/xen/balloon/Makefile 1.201 +3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.9-xen-sparse/drivers/xen/balloon/balloon.c 1.202 +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.9-xen-sparse/drivers/xen/blkback/Makefile 1.203 +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.9-xen-sparse/drivers/xen/blkback/blkback.c 1.204 +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.9-xen-sparse/drivers/xen/blkback/common.h 1.205 +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.9-xen-sparse/drivers/xen/blkback/control.c 1.206 +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.9-xen-sparse/drivers/xen/blkback/interface.c 1.207 +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.9-xen-sparse/drivers/xen/blkback/vbd.c 1.208 +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.9-xen-sparse/drivers/xen/blkfront/Kconfig 1.209 +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.9-xen-sparse/drivers/xen/blkfront/Makefile 1.210 +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.9-xen-sparse/drivers/xen/blkfront/blkfront.c 1.211 +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.9-xen-sparse/drivers/xen/blkfront/block.h 1.212 +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c 1.213 +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.9-xen-sparse/drivers/xen/console/Makefile 1.214 +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.9-xen-sparse/drivers/xen/console/console.c 1.215 +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.9-xen-sparse/drivers/xen/evtchn/Makefile 1.216 +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c 1.217 +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.9-xen-sparse/drivers/xen/netback/Makefile 1.218 +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.9-xen-sparse/drivers/xen/netback/common.h 1.219 +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.9-xen-sparse/drivers/xen/netback/control.c 1.220 +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c 1.221 +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c 1.222 +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.9-xen-sparse/drivers/xen/netfront/Kconfig 1.223 +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.9-xen-sparse/drivers/xen/netfront/Makefile 1.224 +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.9-xen-sparse/drivers/xen/netfront/netfront.c 1.225 +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.9-xen-sparse/drivers/xen/privcmd/Makefile 1.226 +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.9-xen-sparse/drivers/xen/privcmd/privcmd.c 1.227 +412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.9-xen-sparse/include/asm-generic/pgtable.h 1.228 +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/desc.h 1.229 +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h 1.230 +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.231 +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.232 +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h 1.233 +40f5623am9BzluYFuV6EQfTd-so3dA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h 1.234 +40f5623adZQ1IZGPxbDXONjyZGYuTA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h 1.235 +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.236 +40f5623aMQZoYuf4ml9v69N3gu8ing linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h 1.237 +40f5623a8LroVMnZ5YRzJJmIc-zHlw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h 1.238 +40f5623ayR1vnzfF__htza35a8Ft-g linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h 1.239 +40f5623a4YdRdVzYWJzOOoqe8mnrXA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h 1.240 +40f5623aDLxmbOtUHvkWztKjAO4EjA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h 1.241 +41062ab7HMSSuaUv3_Z4agLpjSO88A linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h 1.242 +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h 1.243 +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h 1.244 +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mmu_context.h 1.245 +40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/msr.h 1.246 +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h 1.247 +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/param.h 1.248 +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pci.h 1.249 +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgalloc.h 1.250 +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h 1.251 +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 1.252 +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable.h 1.253 +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h 1.254 +412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/ptrace.h 1.255 +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/segment.h 1.256 +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/setup.h 1.257 +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h 1.258 +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h 1.259 +40f5623bSgGrvrGRpD71K-lIYqaGgg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/timer.h 1.260 +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/tlbflush.h 1.261 +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/vga.h 1.262 +40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/xor.h 1.263 +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.9-xen-sparse/include/asm-xen/ctrl_if.h 1.264 +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.9-xen-sparse/include/asm-xen/evtchn.h 1.265 +412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.9-xen-sparse/include/asm-xen/gnttab.h 1.266 +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h 1.267 +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.9-xen-sparse/include/asm-xen/multicall.h 1.268 +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.9-xen-sparse/include/asm-xen/proc_cmd.h 1.269 +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.9-xen-sparse/include/asm-xen/queues.h 1.270 +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.9-xen-sparse/include/asm-xen/suspend.h 1.271 +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.9-xen-sparse/include/asm-xen/xen_proc.h 1.272 +4124d8c4aocX7A-jIbuGraWN84pxGQ linux-2.6.9-xen-sparse/include/linux/bio.h 1.273 +4124f66fp5QwbDHEfoUIa7pqO5Xhag linux-2.6.9-xen-sparse/include/linux/page-flags.h 1.274 +4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.9-xen-sparse/include/linux/skbuff.h 1.275 +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.9-xen-sparse/mkbuildtree 1.276 +412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.9-xen-sparse/mm/memory.c 1.277 +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.9-xen-sparse/mm/page_alloc.c 1.278 +41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.9-xen-sparse/net/core/skbuff.c 1.279 +4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.9-xen-sparse/net/ipv4/raw.c 1.280 413cb1e4zst25MDYjg63Y-NGC5_pLg netbsd-2.0-xen-sparse/Makefile 1.281 413cb1e5c_Mkxf_X0zimEhTKI_l4DA netbsd-2.0-xen-sparse/mkbuildtree 1.282 413cb1e5kY_Zil7-b0kI6hvCIxBEYg netbsd-2.0-xen-sparse/nbconfig-xen
2.1 --- a/linux-2.6.8.1-patches/agpgart.patch Mon Oct 25 12:45:34 2004 +0000 2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 2.3 @@ -1,346 +0,0 @@ 2.4 ---- linux-2.6.8.1/drivers/char/agp/ali-agp.c 2004-08-14 11:55:35.000000000 +0100 2.5 -+++ linux-2.6.8.1-xen0/drivers/char/agp/ali-agp.c 2004-09-05 05:55:58.876495340 +0100 2.6 -@@ -150,7 +150,7 @@ 2.7 - pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); 2.8 - pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, 2.9 - (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | 2.10 -- virt_to_phys(addr)) | ALI_CACHE_FLUSH_EN )); 2.11 -+ virt_to_bus(addr)) | ALI_CACHE_FLUSH_EN )); 2.12 - return addr; 2.13 - } 2.14 - 2.15 -@@ -174,7 +174,7 @@ 2.16 - pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); 2.17 - pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, 2.18 - (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | 2.19 -- virt_to_phys(addr)) | ALI_CACHE_FLUSH_EN)); 2.20 -+ virt_to_bus(addr)) | ALI_CACHE_FLUSH_EN)); 2.21 - agp_generic_destroy_page(addr); 2.22 - } 2.23 - 2.24 ---- linux-2.6.8.1/drivers/char/agp/amd-k7-agp.c 2004-08-14 11:56:24.000000000 +0100 2.25 -+++ linux-2.6.8.1-xen0/drivers/char/agp/amd-k7-agp.c 2004-09-05 05:55:58.877495108 +0100 2.26 -@@ -43,7 +43,7 @@ 2.27 - 2.28 - SetPageReserved(virt_to_page(page_map->real)); 2.29 - global_cache_flush(); 2.30 -- page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), 2.31 -+ page_map->remapped = ioremap_nocache(virt_to_bus(page_map->real), 2.32 - PAGE_SIZE); 2.33 - if (page_map->remapped == NULL) { 2.34 - ClearPageReserved(virt_to_page(page_map->real)); 2.35 -@@ -152,7 +152,7 @@ 2.36 - 2.37 - agp_bridge->gatt_table_real = (u32 *)page_dir.real; 2.38 - agp_bridge->gatt_table = (u32 *)page_dir.remapped; 2.39 -- agp_bridge->gatt_bus_addr = virt_to_phys(page_dir.real); 2.40 -+ agp_bridge->gatt_bus_addr = virt_to_bus(page_dir.real); 2.41 - 2.42 - /* Get the address for the gart region. 2.43 - * This is a bus address even on the alpha, b/c its 2.44 -@@ -166,7 +166,7 @@ 2.45 - /* Calculate the agp offset */ 2.46 - for (i = 0; i < value->num_entries / 1024; i++, addr += 0x00400000) { 2.47 - page_dir.remapped[GET_PAGE_DIR_OFF(addr)] = 2.48 -- virt_to_phys(amd_irongate_private.gatt_pages[i]->real); 2.49 -+ virt_to_bus(amd_irongate_private.gatt_pages[i]->real); 2.50 - page_dir.remapped[GET_PAGE_DIR_OFF(addr)] |= 0x00000001; 2.51 - } 2.52 - 2.53 ---- linux-2.6.8.1/drivers/char/agp/amd64-agp.c 2004-08-14 11:55:47.000000000 +0100 2.54 -+++ linux-2.6.8.1-xen0/drivers/char/agp/amd64-agp.c 2004-09-05 05:55:58.877495108 +0100 2.55 -@@ -212,7 +212,7 @@ 2.56 - 2.57 - static int amd_8151_configure(void) 2.58 - { 2.59 -- unsigned long gatt_bus = virt_to_phys(agp_bridge->gatt_table_real); 2.60 -+ unsigned long gatt_bus = virt_to_bus(agp_bridge->gatt_table_real); 2.61 - 2.62 - /* Configure AGP regs in each x86-64 host bridge. */ 2.63 - for_each_nb() { 2.64 -@@ -521,7 +521,7 @@ 2.65 - { 2.66 - struct agp_bridge_data *bridge = pci_get_drvdata(pdev); 2.67 - 2.68 -- release_mem_region(virt_to_phys(bridge->gatt_table_real), 2.69 -+ release_mem_region(virt_to_bus(bridge->gatt_table_real), 2.70 - amd64_aperture_sizes[bridge->aperture_size_idx].size); 2.71 - agp_remove_bridge(bridge); 2.72 - agp_put_bridge(bridge); 2.73 ---- linux-2.6.8.1/drivers/char/agp/ati-agp.c 2004-08-14 11:55:48.000000000 +0100 2.74 -+++ linux-2.6.8.1-xen0/drivers/char/agp/ati-agp.c 2004-09-05 05:55:58.877495108 +0100 2.75 -@@ -64,7 +64,7 @@ 2.76 - 2.77 - /* CACHE_FLUSH(); */ 2.78 - global_cache_flush(); 2.79 -- page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), 2.80 -+ page_map->remapped = ioremap_nocache(virt_to_bus(page_map->real), 2.81 - PAGE_SIZE); 2.82 - if (page_map->remapped == NULL || err) { 2.83 - ClearPageReserved(virt_to_page(page_map->real)); 2.84 ---- linux-2.6.8.1/drivers/char/agp/backend.c 2004-08-14 11:55:47.000000000 +0100 2.85 -+++ linux-2.6.8.1-xen0/drivers/char/agp/backend.c 2004-09-05 05:55:58.878494876 +0100 2.86 -@@ -142,7 +142,7 @@ 2.87 - return -ENOMEM; 2.88 - } 2.89 - 2.90 -- bridge->scratch_page_real = virt_to_phys(addr); 2.91 -+ bridge->scratch_page_real = virt_to_bus(addr); 2.92 - bridge->scratch_page = 2.93 - bridge->driver->mask_memory(bridge->scratch_page_real, 0); 2.94 - } 2.95 -@@ -186,7 +186,7 @@ 2.96 - err_out: 2.97 - if (bridge->driver->needs_scratch_page) 2.98 - bridge->driver->agp_destroy_page( 2.99 -- phys_to_virt(bridge->scratch_page_real)); 2.100 -+ bus_to_virt(bridge->scratch_page_real)); 2.101 - if (got_gatt) 2.102 - bridge->driver->free_gatt_table(); 2.103 - if (got_keylist) { 2.104 -@@ -211,7 +211,7 @@ 2.105 - if (bridge->driver->agp_destroy_page && 2.106 - bridge->driver->needs_scratch_page) 2.107 - bridge->driver->agp_destroy_page( 2.108 -- phys_to_virt(bridge->scratch_page_real)); 2.109 -+ bus_to_virt(bridge->scratch_page_real)); 2.110 - } 2.111 - 2.112 - static const drm_agp_t drm_agp = { 2.113 ---- linux-2.6.8.1/drivers/char/agp/generic.c 2004-08-14 11:55:10.000000000 +0100 2.114 -+++ linux-2.6.8.1-xen0/drivers/char/agp/generic.c 2004-09-05 05:55:58.879494644 +0100 2.115 -@@ -127,7 +127,7 @@ 2.116 - } 2.117 - if (curr->page_count != 0) { 2.118 - for (i = 0; i < curr->page_count; i++) { 2.119 -- agp_bridge->driver->agp_destroy_page(phys_to_virt(curr->memory[i])); 2.120 -+ agp_bridge->driver->agp_destroy_page(bus_to_virt(curr->memory[i])); 2.121 - } 2.122 - } 2.123 - agp_free_key(curr->key); 2.124 -@@ -181,7 +181,7 @@ 2.125 - return NULL; 2.126 - } 2.127 - new->memory[i] = 2.128 -- agp_bridge->driver->mask_memory(virt_to_phys(addr), type); 2.129 -+ agp_bridge->driver->mask_memory(virt_to_bus(addr), type); 2.130 - new->page_count++; 2.131 - } 2.132 - 2.133 -@@ -636,6 +636,7 @@ 2.134 - int i; 2.135 - void *temp; 2.136 - struct page *page; 2.137 -+ dma_addr_t dma; 2.138 - 2.139 - /* The generic routines can't handle 2 level gatt's */ 2.140 - if (agp_bridge->driver->size_type == LVL2_APER_SIZE) 2.141 -@@ -674,8 +675,10 @@ 2.142 - break; 2.143 - } 2.144 - 2.145 -- table = (char *) __get_free_pages(GFP_KERNEL, 2.146 -- page_order); 2.147 -+ table = dma_alloc_coherent( 2.148 -+ &agp_bridge->dev->dev, 2.149 -+ PAGE_SIZE << page_order, &dma, 2.150 -+ GFP_KERNEL); 2.151 - 2.152 - if (table == NULL) { 2.153 - i++; 2.154 -@@ -706,7 +709,9 @@ 2.155 - size = ((struct aper_size_info_fixed *) temp)->size; 2.156 - page_order = ((struct aper_size_info_fixed *) temp)->page_order; 2.157 - num_entries = ((struct aper_size_info_fixed *) temp)->num_entries; 2.158 -- table = (char *) __get_free_pages(GFP_KERNEL, page_order); 2.159 -+ table = dma_alloc_coherent( 2.160 -+ &agp_bridge->dev->dev, 2.161 -+ PAGE_SIZE << page_order, &dma, GFP_KERNEL); 2.162 - } 2.163 - 2.164 - if (table == NULL) 2.165 -@@ -721,7 +726,7 @@ 2.166 - agp_gatt_table = (void *)table; 2.167 - 2.168 - agp_bridge->driver->cache_flush(); 2.169 -- agp_bridge->gatt_table = ioremap_nocache(virt_to_phys(table), 2.170 -+ agp_bridge->gatt_table = ioremap_nocache(virt_to_bus(table), 2.171 - (PAGE_SIZE * (1 << page_order))); 2.172 - agp_bridge->driver->cache_flush(); 2.173 - 2.174 -@@ -729,11 +734,12 @@ 2.175 - for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) 2.176 - ClearPageReserved(page); 2.177 - 2.178 -- free_pages((unsigned long) table, page_order); 2.179 -+ dma_free_coherent(&agp_bridge->dev->dev, PAGE_SIZE<<page_order, 2.180 -+ table, dma); 2.181 - 2.182 - return -ENOMEM; 2.183 - } 2.184 -- agp_bridge->gatt_bus_addr = virt_to_phys(agp_bridge->gatt_table_real); 2.185 -+ agp_bridge->gatt_bus_addr = virt_to_bus(table); 2.186 - 2.187 - /* AK: bogus, should encode addresses > 4GB */ 2.188 - for (i = 0; i < num_entries; i++) 2.189 -@@ -785,7 +791,8 @@ 2.190 - for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) 2.191 - ClearPageReserved(page); 2.192 - 2.193 -- free_pages((unsigned long) agp_bridge->gatt_table_real, page_order); 2.194 -+ dma_free_coherent(&agp_bridge->dev->dev, PAGE_SIZE<<page_order, 2.195 -+ agp_bridge->gatt_table_real, agp_bridge->gatt_bus_addr); 2.196 - 2.197 - agp_gatt_table = NULL; 2.198 - agp_bridge->gatt_table = NULL; 2.199 ---- linux-2.6.8.1/drivers/char/agp/hp-agp.c 2004-08-14 11:55:59.000000000 +0100 2.200 -+++ linux-2.6.8.1-xen0/drivers/char/agp/hp-agp.c 2004-09-05 05:55:58.879494644 +0100 2.201 -@@ -110,7 +110,7 @@ 2.202 - hp->gart_size = HP_ZX1_GART_SIZE; 2.203 - hp->gatt_entries = hp->gart_size / hp->io_page_size; 2.204 - 2.205 -- hp->io_pdir = phys_to_virt(INREG64(hp->ioc_regs, HP_ZX1_PDIR_BASE)); 2.206 -+ hp->io_pdir = bus_to_virt(INREG64(hp->ioc_regs, HP_ZX1_PDIR_BASE)); 2.207 - hp->gatt = &hp->io_pdir[HP_ZX1_IOVA_TO_PDIR(hp->gart_base)]; 2.208 - 2.209 - if (hp->gatt[0] != HP_ZX1_SBA_IOMMU_COOKIE) { 2.210 -@@ -248,7 +248,7 @@ 2.211 - agp_bridge->mode = INREG32(hp->lba_regs, hp->lba_cap_offset + PCI_AGP_STATUS); 2.212 - 2.213 - if (hp->io_pdir_owner) { 2.214 -- OUTREG64(hp->ioc_regs, HP_ZX1_PDIR_BASE, virt_to_phys(hp->io_pdir)); 2.215 -+ OUTREG64(hp->ioc_regs, HP_ZX1_PDIR_BASE, virt_to_bus(hp->io_pdir)); 2.216 - OUTREG64(hp->ioc_regs, HP_ZX1_TCNFG, hp->io_tlb_ps); 2.217 - OUTREG64(hp->ioc_regs, HP_ZX1_IMASK, ~(HP_ZX1_IOVA_SIZE - 1)); 2.218 - OUTREG64(hp->ioc_regs, HP_ZX1_IBASE, hp->iova_base | 0x1); 2.219 ---- linux-2.6.8.1/drivers/char/agp/i460-agp.c 2004-08-14 11:55:34.000000000 +0100 2.220 -+++ linux-2.6.8.1-xen0/drivers/char/agp/i460-agp.c 2004-09-05 05:55:58.879494644 +0100 2.221 -@@ -371,7 +371,7 @@ 2.222 - } 2.223 - memset(lp->alloced_map, 0, map_size); 2.224 - 2.225 -- lp->paddr = virt_to_phys(lpage); 2.226 -+ lp->paddr = virt_to_bus(lpage); 2.227 - lp->refcount = 0; 2.228 - atomic_add(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); 2.229 - return 0; 2.230 -@@ -382,7 +382,7 @@ 2.231 - kfree(lp->alloced_map); 2.232 - lp->alloced_map = NULL; 2.233 - 2.234 -- free_pages((unsigned long) phys_to_virt(lp->paddr), I460_IO_PAGE_SHIFT - PAGE_SHIFT); 2.235 -+ free_pages((unsigned long) bus_to_virt(lp->paddr), I460_IO_PAGE_SHIFT - PAGE_SHIFT); 2.236 - atomic_sub(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); 2.237 - } 2.238 - 2.239 ---- linux-2.6.8.1/drivers/char/agp/intel-agp.c 2004-08-14 11:55:32.000000000 +0100 2.240 -+++ linux-2.6.8.1-xen0/drivers/char/agp/intel-agp.c 2004-09-05 05:55:58.880494412 +0100 2.241 -@@ -285,7 +285,7 @@ 2.242 - if (new == NULL) 2.243 - return NULL; 2.244 - 2.245 -- new->memory[0] = virt_to_phys(addr); 2.246 -+ new->memory[0] = virt_to_bus(addr); 2.247 - if (pg_count == 4) { 2.248 - /* kludge to get 4 physical pages for ARGB cursor */ 2.249 - new->memory[1] = new->memory[0] + PAGE_SIZE; 2.250 -@@ -328,10 +328,10 @@ 2.251 - agp_free_key(curr->key); 2.252 - if(curr->type == AGP_PHYS_MEMORY) { 2.253 - if (curr->page_count == 4) 2.254 -- i8xx_destroy_pages(phys_to_virt(curr->memory[0])); 2.255 -+ i8xx_destroy_pages(bus_to_virt(curr->memory[0])); 2.256 - else 2.257 - agp_bridge->driver->agp_destroy_page( 2.258 -- phys_to_virt(curr->memory[0])); 2.259 -+ bus_to_virt(curr->memory[0])); 2.260 - vfree(curr->memory); 2.261 - } 2.262 - kfree(curr); 2.263 ---- linux-2.6.8.1/drivers/char/agp/intel-mch-agp.c 2004-08-14 11:54:49.000000000 +0100 2.264 -+++ linux-2.6.8.1-xen0/drivers/char/agp/intel-mch-agp.c 2004-09-05 05:55:58.880494412 +0100 2.265 -@@ -51,7 +51,7 @@ 2.266 - if (new == NULL) 2.267 - return NULL; 2.268 - 2.269 -- new->memory[0] = agp_bridge->driver->mask_memory(virt_to_phys(addr), type); 2.270 -+ new->memory[0] = agp_bridge->driver->mask_memory(virt_to_bus(addr), type); 2.271 - new->page_count = 1; 2.272 - new->num_scratch_pages = 1; 2.273 - new->type = AGP_PHYS_MEMORY; 2.274 -@@ -63,7 +63,7 @@ 2.275 - { 2.276 - agp_free_key(curr->key); 2.277 - if(curr->type == AGP_PHYS_MEMORY) { 2.278 -- agp_bridge->driver->agp_destroy_page(phys_to_virt(curr->memory[0])); 2.279 -+ agp_bridge->driver->agp_destroy_page(bus_to_virt(curr->memory[0])); 2.280 - vfree(curr->memory); 2.281 - } 2.282 - kfree(curr); 2.283 ---- linux-2.6.8.1/drivers/char/agp/sworks-agp.c 2004-08-14 11:55:10.000000000 +0100 2.284 -+++ linux-2.6.8.1-xen0/drivers/char/agp/sworks-agp.c 2004-09-05 05:55:58.881494180 +0100 2.285 -@@ -51,7 +51,7 @@ 2.286 - } 2.287 - SetPageReserved(virt_to_page(page_map->real)); 2.288 - global_cache_flush(); 2.289 -- page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), 2.290 -+ page_map->remapped = ioremap_nocache(virt_to_bus(page_map->real), 2.291 - PAGE_SIZE); 2.292 - if (page_map->remapped == NULL) { 2.293 - ClearPageReserved(virt_to_page(page_map->real)); 2.294 -@@ -164,7 +164,7 @@ 2.295 - for(i = 0; i < 1024; i++) { 2.296 - serverworks_private.scratch_dir.remapped[i] = (unsigned long) agp_bridge->scratch_page; 2.297 - page_dir.remapped[i] = 2.298 -- virt_to_phys(serverworks_private.scratch_dir.real); 2.299 -+ virt_to_bus(serverworks_private.scratch_dir.real); 2.300 - page_dir.remapped[i] |= 0x00000001; 2.301 - } 2.302 - 2.303 -@@ -177,7 +177,7 @@ 2.304 - 2.305 - agp_bridge->gatt_table_real = (u32 *)page_dir.real; 2.306 - agp_bridge->gatt_table = (u32 *)page_dir.remapped; 2.307 -- agp_bridge->gatt_bus_addr = virt_to_phys(page_dir.real); 2.308 -+ agp_bridge->gatt_bus_addr = virt_to_bus(page_dir.real); 2.309 - 2.310 - /* Get the address for the gart region. 2.311 - * This is a bus address even on the alpha, b/c its 2.312 -@@ -191,7 +191,7 @@ 2.313 - 2.314 - for(i = 0; i < value->num_entries / 1024; i++) { 2.315 - page_dir.remapped[i] = 2.316 -- virt_to_phys(serverworks_private.gatt_pages[i]->real); 2.317 -+ virt_to_bus(serverworks_private.gatt_pages[i]->real); 2.318 - page_dir.remapped[i] |= 0x00000001; 2.319 - } 2.320 - 2.321 ---- linux-2.6.8.1/drivers/char/agp/uninorth-agp.c 2004-08-14 11:55:32.000000000 +0100 2.322 -+++ linux-2.6.8.1-xen0/drivers/char/agp/uninorth-agp.c 2004-09-05 05:55:58.881494180 +0100 2.323 -@@ -200,7 +200,7 @@ 2.324 - 2.325 - agp_bridge->gatt_table_real = (u32 *) table; 2.326 - agp_bridge->gatt_table = (u32 *)table; 2.327 -- agp_bridge->gatt_bus_addr = virt_to_phys(table); 2.328 -+ agp_bridge->gatt_bus_addr = virt_to_bus(table); 2.329 - 2.330 - for (i = 0; i < num_entries; i++) { 2.331 - agp_bridge->gatt_table[i] = 2.332 ---- linux-2.6.8.1/include/asm-i386/agp.h 2004-08-14 11:54:47.000000000 +0100 2.333 -+++ linux-2.6.8.1-xen0/include/asm-i386/agp.h 2004-09-05 05:57:26.040268956 +0100 2.334 -@@ -3,6 +3,7 @@ 2.335 - 2.336 - #include <asm/pgtable.h> 2.337 - #include <asm/cacheflush.h> 2.338 -+#include <asm/system.h> 2.339 - 2.340 - /* 2.341 - * Functions to keep the agpgart mappings coherent with the MMU. 2.342 -@@ -19,6 +20,6 @@ 2.343 - /* Could use CLFLUSH here if the cpu supports it. But then it would 2.344 - need to be called for each cacheline of the whole page so it may not be 2.345 - worth it. Would need a page for it. */ 2.346 --#define flush_agp_cache() asm volatile("wbinvd":::"memory") 2.347 -+#define flush_agp_cache() wbinvd() 2.348 - 2.349 - #endif
3.1 --- a/linux-2.6.8.1-patches/drm.patch Mon Oct 25 12:45:34 2004 +0000 3.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 3.3 @@ -1,11 +0,0 @@ 3.4 ---- linux-2.6.8.1/drivers/char/drm/ati_pcigart.h 2004-08-14 11:56:14.000000000 +0100 3.5 -+++ linux-2.6.8.1-xen0/drivers/char/drm/ati_pcigart.h 2004-09-05 06:14:51.751782846 +0100 3.6 -@@ -158,7 +158,7 @@ 3.7 - ret = 1; 3.8 - 3.9 - #if defined(__i386__) || defined(__x86_64__) 3.10 -- asm volatile ( "wbinvd" ::: "memory" ); 3.11 -+ wbinvd(); 3.12 - #else 3.13 - mb(); 3.14 - #endif
4.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/Kconfig Mon Oct 25 12:45:34 2004 +0000 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,172 +0,0 @@ 4.4 -# 4.5 -# For a description of the syntax of this configuration file, 4.6 -# see Documentation/kbuild/kconfig-language.txt. 4.7 -# 4.8 - 4.9 -mainmenu "Linux Kernel Configuration" 4.10 - 4.11 -config XEN 4.12 - bool 4.13 - default y 4.14 - help 4.15 - This is the Linux Xen port. 4.16 - 4.17 -config ARCH_XEN 4.18 - bool 4.19 - default y 4.20 - 4.21 - 4.22 -config NO_IDLE_HZ 4.23 - bool 4.24 - default y 4.25 - 4.26 - 4.27 -menu "XEN" 4.28 - 4.29 -config XEN_PRIVILEGED_GUEST 4.30 - bool "Privileged Guest (domain 0)" 4.31 - default n 4.32 - select XEN_PHYSDEV_ACCESS 4.33 - help 4.34 - Support for privileged operation (domain 0) 4.35 - 4.36 -config XEN_PHYSDEV_ACCESS 4.37 - bool "Physical device access" 4.38 - default y if XEN_PRIVILEGED_GUEST 4.39 - default n if !XEN_PRIVILEGED_GUEST 4.40 - help 4.41 - Assume access is available to physical hardware devices 4.42 - (e.g., hard drives, network cards). This allows you to configure 4.43 - such devices and also includes some low-level support that is 4.44 - otherwise not compiled into the kernel. 4.45 - 4.46 -config XEN_BLKDEV_BACKEND 4.47 - bool "Block-device backend driver" 4.48 - default y if XEN_PHYSDEV_ACCESS 4.49 - default n if !XEN_PHYSDEV_ACCESS 4.50 - help 4.51 - The block-device backend driver allows the kernel to export its 4.52 - block devices to other guests via a high-performance shared-memory 4.53 - interface. 4.54 - 4.55 -config XEN_NETDEV_BACKEND 4.56 - bool "Network-device backend driver" 4.57 - default y if XEN_PHYSDEV_ACCESS 4.58 - default n if !XEN_PHYSDEV_ACCESS 4.59 - help 4.60 - The network-device backend driver allows the kernel to export its 4.61 - network devices to other guests via a high-performance shared-memory 4.62 - interface. 4.63 - 4.64 -config XEN_BLKDEV_FRONTEND 4.65 - bool "Block-device frontend driver" 4.66 - default y 4.67 - help 4.68 - The block-device frontend driver allows the kernel to access block 4.69 - devices mounted within another guest OS. Unless you are building a 4.70 - dedicated device-driver domain, or your master control domain 4.71 - (domain 0), then you almost certainly want to say Y here. 4.72 - 4.73 -config XEN_NETDEV_FRONTEND 4.74 - bool "Network-device frontend driver" 4.75 - default y 4.76 - help 4.77 - The network-device frontend driver allows the kernel to access 4.78 - network interfaces within another guest OS. Unless you are building a 4.79 - dedicated device-driver domain, or your master control domain 4.80 - (domain 0), then you almost certainly want to say Y here. 4.81 - 4.82 -if XEN_NETDEV_FRONTEND 4.83 -config XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER 4.84 - bool "Pipelined transmitter (DANGEROUS)" 4.85 - default n 4.86 - help 4.87 - The driver will assume that the backend is pipelining packets for 4.88 - transmission: whenever packets are pending in the remote backend, 4.89 - the driver will not send asynchronous notifications when it queues 4.90 - additional packets for transmission. 4.91 - If the backend is a dumb domain, such as a transparent Ethernet 4.92 - bridge with no local IP interface, it is safe to say Y here to get 4.93 - slightly lower network overhead. 4.94 - If the backend has a local IP interface; or may be doing smart things 4.95 - like reassembling packets to perform firewall filtering; or if you 4.96 - are unsure; or if you experience network hangs when this option is 4.97 - enabled; then you must say N here. 4.98 -endif 4.99 - 4.100 -config XEN_WRITABLE_PAGETABLES 4.101 - bool "Use writable pagetables" 4.102 - default n 4.103 - help 4.104 - Use writable L1 pagetables 4.105 - 4.106 -config XEN_SCRUB_PAGES 4.107 - bool "Scrub memory before freeing it to Xen" 4.108 - default y 4.109 - help 4.110 - Erase memory contents before freeing it back to Xen's global 4.111 - pool. This ensures that any secrets contained within that 4.112 - memory (e.g., private keys) cannot be found by other guests that 4.113 - may be running on the machine. Most people will want to say Y here. 4.114 - If security is not a concern then you may increase performance by 4.115 - saying N. 4.116 - 4.117 -endmenu 4.118 - 4.119 -config FOREIGN_PAGES 4.120 - bool 4.121 - default y 4.122 - 4.123 -config HAVE_ARCH_DEV_ALLOC_SKB 4.124 - bool 4.125 - default y 4.126 - 4.127 -#config VT 4.128 -# bool 4.129 -# default y 4.130 - 4.131 -#config VT_CONSOLE 4.132 -# bool 4.133 -# default y 4.134 - 4.135 -#config HW_CONSOLE 4.136 -# bool 4.137 -# default y 4.138 - 4.139 -choice 4.140 - prompt "Processor Type" 4.141 - default X86 4.142 - 4.143 -config X86 4.144 - bool "X86" 4.145 - help 4.146 - Choose this option if your computer is a X86 architecture. 4.147 - 4.148 -config X86_64 4.149 - bool "X86_64" 4.150 - help 4.151 - Choose this option if your computer is a X86 architecture. 4.152 - 4.153 -endchoice 4.154 - 4.155 -source "init/Kconfig" 4.156 - 4.157 -if X86 4.158 -source "arch/xen/i386/Kconfig" 4.159 -endif 4.160 - 4.161 -menu "Executable file formats" 4.162 - 4.163 -source "fs/Kconfig.binfmt" 4.164 - 4.165 -endmenu 4.166 - 4.167 -source "arch/xen/Kconfig.drivers" 4.168 - 4.169 -source "fs/Kconfig" 4.170 - 4.171 -source "security/Kconfig" 4.172 - 4.173 -source "crypto/Kconfig" 4.174 - 4.175 -source "lib/Kconfig"
5.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers Mon Oct 25 12:45:34 2004 +0000 5.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 5.3 @@ -1,55 +0,0 @@ 5.4 -# arch/xen/Kconfig.drivers 5.5 - 5.6 -menu "Device Drivers" 5.7 - 5.8 -source "drivers/base/Kconfig" 5.9 - 5.10 -if XEN_PHYSDEV_ACCESS 5.11 -source "drivers/mtd/Kconfig" 5.12 -source "drivers/parport/Kconfig" 5.13 -source "drivers/pnp/Kconfig" 5.14 -endif 5.15 - 5.16 -source "drivers/block/Kconfig" 5.17 - 5.18 -if XEN_PHYSDEV_ACCESS 5.19 -source "drivers/ide/Kconfig" 5.20 -endif 5.21 - 5.22 -source "drivers/scsi/Kconfig" 5.23 - 5.24 -if XEN_PHYSDEV_ACCESS 5.25 -source "drivers/cdrom/Kconfig" 5.26 -endif 5.27 - 5.28 -source "drivers/md/Kconfig" 5.29 - 5.30 -if XEN_PHYSDEV_ACCESS 5.31 -source "drivers/message/fusion/Kconfig" 5.32 -source "drivers/ieee1394/Kconfig" 5.33 -source "drivers/message/i2o/Kconfig" 5.34 -endif 5.35 - 5.36 -source "net/Kconfig" 5.37 - 5.38 -if XEN_PHYSDEV_ACCESS 5.39 -source "drivers/isdn/Kconfig" 5.40 -source "drivers/telephony/Kconfig" 5.41 -source "drivers/input/Kconfig" 5.42 -source "drivers/char/Kconfig" 5.43 -source "drivers/i2c/Kconfig" 5.44 -source "drivers/w1/Kconfig" 5.45 -source "drivers/misc/Kconfig" 5.46 -source "drivers/media/Kconfig" 5.47 -source "drivers/video/Kconfig" 5.48 -source "sound/Kconfig" 5.49 -source "drivers/usb/Kconfig" 5.50 -endif 5.51 - 5.52 -if !XEN_PHYSDEV_ACCESS 5.53 -config UNIX98_PTYS 5.54 - bool 5.55 - default y 5.56 -endif 5.57 - 5.58 -endmenu
6.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/Makefile Mon Oct 25 12:45:34 2004 +0000 6.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 6.3 @@ -1,75 +0,0 @@ 6.4 -# 6.5 -# xen/Makefile 6.6 -# 6.7 -# This file is included by the global makefile so that you can add your own 6.8 -# architecture-specific flags and dependencies. Remember to do have actions 6.9 -# for "archclean" cleaning up for this architecture. 6.10 -# 6.11 -# This file is subject to the terms and conditions of the GNU General Public 6.12 -# License. See the file "COPYING" in the main directory of this archive 6.13 -# for more details. 6.14 -# 6.15 -# Copyright (C) 2004 by Christian Limpach 6.16 -# 6.17 - 6.18 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 6.19 - 6.20 -# pick up headers from include/asm-xen/asm in preference over include/asm 6.21 -NOSTDINC_FLAGS = -nostdinc -iwithprefix include/asm-xen -Iinclude/asm-xen -iwithprefix include 6.22 - 6.23 -# make uname return the processor arch 6.24 -UTS_MACHINE := $(XENARCH) 6.25 - 6.26 -core-y += arch/xen/kernel/ 6.27 - 6.28 -include/.asm-ignore: 6.29 - @rm -f include/.asm-ignore 6.30 - @mv include/asm include/.asm-ignore 6.31 - @echo ' SYMLINK include/asm -> include/asm-$(XENARCH)' 6.32 - $(Q)if [ ! -d include ]; then mkdir -p include; fi; 6.33 - @ln -fsn asm-$(XENARCH) include/asm 6.34 - 6.35 -include/asm-xen/asm: 6.36 - @echo ' SYMLINK $@ -> include/asm-xen/asm-$(XENARCH)' 6.37 - @ln -fsn asm-$(XENARCH) $@ 6.38 - 6.39 -include/asm-xen/asm-$(XENARCH)/hypervisor-ifs: 6.40 - @echo ' SYMLINK $@ -> include/asm-xen/hypervisor-ifs' 6.41 - @ln -fsn ../hypervisor-ifs $@ 6.42 - 6.43 -arch/xen/arch: 6.44 - @rm -f $@ 6.45 - @ln -fsn $(XENARCH) $@ 6.46 - 6.47 -prepare: include/.asm-ignore include/asm-xen/asm \ 6.48 - include/asm-xen/asm-$(XENARCH)/hypervisor-ifs \ 6.49 - arch/xen/arch ; 6.50 - 6.51 -all: vmlinuz 6.52 - 6.53 -vmlinuz: vmlinux 6.54 - $(Q)$(MAKE) $(build)=arch/xen/boot vmlinuz 6.55 - 6.56 -XINSTALL_NAME ?= $(KERNELRELEASE) 6.57 -install: vmlinuz 6.58 - mkdir -p $(INSTALL_PATH)/boot 6.59 - install -m0644 vmlinuz $(INSTALL_PATH)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 6.60 - install -m0644 vmlinux $(INSTALL_PATH)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 6.61 - install -m0664 .config $(INSTALL_PATH)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 6.62 - install -m0664 System.map $(INSTALL_PATH)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 6.63 - 6.64 -dist: 6.65 - $(MAKE) INSTALL_PATH=../install install 6.66 - 6.67 -archclean: 6.68 - @if [ -e arch/xen/arch ]; then $(MAKE) $(clean)=arch/xen/arch; fi; 6.69 - @rm -f arch/xen/arch include/.asm-ignore include/asm-xen/asm 6.70 - 6.71 -define archhelp 6.72 - echo '* vmlinuz - Compressed kernel image' 6.73 - echo ' install - Install kernel image and config file' 6.74 -endef 6.75 - 6.76 -ifneq ($(XENARCH),) 6.77 -include $(srctree)/arch/xen/$(XENARCH)/Makefile 6.78 -endif
7.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile Mon Oct 25 12:45:34 2004 +0000 7.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 7.3 @@ -1,8 +0,0 @@ 7.4 - 7.5 -OBJCOPYFLAGS := -g --strip-unneeded 7.6 - 7.7 -vmlinuz: vmlinux-stripped FORCE 7.8 - $(call if_changed,gzip) 7.9 - 7.10 -vmlinux-stripped: vmlinux FORCE 7.11 - $(call if_changed,objcopy)
8.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig Mon Oct 25 12:45:34 2004 +0000 8.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 8.3 @@ -1,1032 +0,0 @@ 8.4 -# 8.5 -# Automatically generated make config: don't edit 8.6 -# 8.7 -CONFIG_XEN=y 8.8 -CONFIG_ARCH_XEN=y 8.9 -CONFIG_NO_IDLE_HZ=y 8.10 - 8.11 -# 8.12 -# XEN 8.13 -# 8.14 -CONFIG_XEN_PRIVILEGED_GUEST=y 8.15 -CONFIG_XEN_PHYSDEV_ACCESS=y 8.16 -CONFIG_XEN_BLKDEV_BACKEND=y 8.17 -CONFIG_XEN_NETDEV_BACKEND=y 8.18 -CONFIG_XEN_BLKDEV_FRONTEND=y 8.19 -CONFIG_XEN_NETDEV_FRONTEND=y 8.20 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 8.21 -CONFIG_XEN_WRITABLE_PAGETABLES=y 8.22 -CONFIG_XEN_SCRUB_PAGES=y 8.23 -CONFIG_FOREIGN_PAGES=y 8.24 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 8.25 -CONFIG_X86=y 8.26 -# CONFIG_X86_64 is not set 8.27 - 8.28 -# 8.29 -# Code maturity level options 8.30 -# 8.31 -CONFIG_EXPERIMENTAL=y 8.32 -# CONFIG_CLEAN_COMPILE is not set 8.33 -CONFIG_BROKEN=y 8.34 -CONFIG_BROKEN_ON_SMP=y 8.35 - 8.36 -# 8.37 -# General setup 8.38 -# 8.39 -CONFIG_SWAP=y 8.40 -CONFIG_SYSVIPC=y 8.41 -# CONFIG_POSIX_MQUEUE is not set 8.42 -# CONFIG_BSD_PROCESS_ACCT is not set 8.43 -CONFIG_SYSCTL=y 8.44 -# CONFIG_AUDIT is not set 8.45 -CONFIG_LOG_BUF_SHIFT=14 8.46 -CONFIG_HOTPLUG=y 8.47 -# CONFIG_IKCONFIG is not set 8.48 -# CONFIG_EMBEDDED is not set 8.49 -CONFIG_KALLSYMS=y 8.50 -# CONFIG_KALLSYMS_ALL is not set 8.51 -# CONFIG_KALLSYMS_EXTRA_PASS is not set 8.52 -CONFIG_FUTEX=y 8.53 -CONFIG_EPOLL=y 8.54 -CONFIG_IOSCHED_NOOP=y 8.55 -CONFIG_IOSCHED_AS=y 8.56 -CONFIG_IOSCHED_DEADLINE=y 8.57 -CONFIG_IOSCHED_CFQ=y 8.58 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 8.59 - 8.60 -# 8.61 -# Loadable module support 8.62 -# 8.63 -CONFIG_MODULES=y 8.64 -CONFIG_MODULE_UNLOAD=y 8.65 -# CONFIG_MODULE_FORCE_UNLOAD is not set 8.66 -CONFIG_OBSOLETE_MODPARM=y 8.67 -# CONFIG_MODVERSIONS is not set 8.68 -CONFIG_KMOD=y 8.69 - 8.70 -# 8.71 -# X86 Processor Configuration 8.72 -# 8.73 -CONFIG_XENARCH="i386" 8.74 -CONFIG_MMU=y 8.75 -CONFIG_UID16=y 8.76 -CONFIG_GENERIC_ISA_DMA=y 8.77 -# CONFIG_M686 is not set 8.78 -# CONFIG_MPENTIUMII is not set 8.79 -# CONFIG_MPENTIUMIII is not set 8.80 -# CONFIG_MPENTIUMM is not set 8.81 -CONFIG_MPENTIUM4=y 8.82 -# CONFIG_MK6 is not set 8.83 -# CONFIG_MK7 is not set 8.84 -# CONFIG_MK8 is not set 8.85 -# CONFIG_MCRUSOE is not set 8.86 -# CONFIG_MCYRIXIII is not set 8.87 -# CONFIG_MVIAC3_2 is not set 8.88 -# CONFIG_X86_GENERIC is not set 8.89 -CONFIG_X86_CMPXCHG=y 8.90 -CONFIG_X86_XADD=y 8.91 -CONFIG_X86_L1_CACHE_SHIFT=7 8.92 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 8.93 -CONFIG_X86_WP_WORKS_OK=y 8.94 -CONFIG_X86_INVLPG=y 8.95 -CONFIG_X86_BSWAP=y 8.96 -CONFIG_X86_POPAD_OK=y 8.97 -CONFIG_X86_GOOD_APIC=y 8.98 -CONFIG_X86_INTEL_USERCOPY=y 8.99 -CONFIG_X86_USE_PPRO_CHECKSUM=y 8.100 -# CONFIG_HPET_TIMER is not set 8.101 -# CONFIG_HPET_EMULATE_RTC is not set 8.102 -# CONFIG_SMP is not set 8.103 -CONFIG_PREEMPT=y 8.104 -CONFIG_X86_CPUID=y 8.105 - 8.106 -# 8.107 -# Firmware Drivers 8.108 -# 8.109 -# CONFIG_EDD is not set 8.110 -CONFIG_NOHIGHMEM=y 8.111 -# CONFIG_HIGHMEM4G is not set 8.112 -CONFIG_HAVE_DEC_LOCK=y 8.113 -# CONFIG_REGPARM is not set 8.114 - 8.115 -# 8.116 -# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 8.117 -# 8.118 -CONFIG_PCI=y 8.119 -# CONFIG_PCI_GOBIOS is not set 8.120 -# CONFIG_PCI_GOMMCONFIG is not set 8.121 -CONFIG_PCI_GODIRECT=y 8.122 -# CONFIG_PCI_GOANY is not set 8.123 -CONFIG_PCI_DIRECT=y 8.124 -CONFIG_PCI_LEGACY_PROC=y 8.125 -# CONFIG_PCI_NAMES is not set 8.126 -CONFIG_ISA=y 8.127 -# CONFIG_EISA is not set 8.128 -# CONFIG_MCA is not set 8.129 -# CONFIG_SCx200 is not set 8.130 - 8.131 -# 8.132 -# PCMCIA/CardBus support 8.133 -# 8.134 -CONFIG_PCMCIA=m 8.135 -# CONFIG_PCMCIA_DEBUG is not set 8.136 -CONFIG_YENTA=m 8.137 -CONFIG_CARDBUS=y 8.138 -# CONFIG_PD6729 is not set 8.139 -# CONFIG_I82092 is not set 8.140 -# CONFIG_I82365 is not set 8.141 -# CONFIG_TCIC is not set 8.142 -CONFIG_PCMCIA_PROBE=y 8.143 - 8.144 -# 8.145 -# PCI Hotplug Support 8.146 -# 8.147 -# CONFIG_HOTPLUG_PCI is not set 8.148 - 8.149 -# 8.150 -# Kernel hacking 8.151 -# 8.152 -CONFIG_DEBUG_KERNEL=y 8.153 -CONFIG_EARLY_PRINTK=y 8.154 -# CONFIG_DEBUG_STACKOVERFLOW is not set 8.155 -# CONFIG_DEBUG_STACK_USAGE is not set 8.156 -# CONFIG_DEBUG_SLAB is not set 8.157 -CONFIG_MAGIC_SYSRQ=y 8.158 -# CONFIG_DEBUG_SPINLOCK is not set 8.159 -# CONFIG_DEBUG_PAGEALLOC is not set 8.160 -# CONFIG_DEBUG_INFO is not set 8.161 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 8.162 -# CONFIG_FRAME_POINTER is not set 8.163 -# CONFIG_4KSTACKS is not set 8.164 -CONFIG_X86_BIOS_REBOOT=y 8.165 -CONFIG_X86_STD_RESOURCES=y 8.166 -CONFIG_PC=y 8.167 - 8.168 -# 8.169 -# Executable file formats 8.170 -# 8.171 -CONFIG_BINFMT_ELF=y 8.172 -# CONFIG_BINFMT_AOUT is not set 8.173 -# CONFIG_BINFMT_MISC is not set 8.174 - 8.175 -# 8.176 -# Device Drivers 8.177 -# 8.178 - 8.179 -# 8.180 -# Generic Driver Options 8.181 -# 8.182 -# CONFIG_STANDALONE is not set 8.183 -CONFIG_PREVENT_FIRMWARE_BUILD=y 8.184 -# CONFIG_FW_LOADER is not set 8.185 -# CONFIG_DEBUG_DRIVER is not set 8.186 - 8.187 -# 8.188 -# Memory Technology Devices (MTD) 8.189 -# 8.190 -# CONFIG_MTD is not set 8.191 - 8.192 -# 8.193 -# Parallel port support 8.194 -# 8.195 -# CONFIG_PARPORT is not set 8.196 - 8.197 -# 8.198 -# Plug and Play support 8.199 -# 8.200 -# CONFIG_PNP is not set 8.201 - 8.202 -# 8.203 -# Block devices 8.204 -# 8.205 -# CONFIG_BLK_DEV_FD is not set 8.206 -# CONFIG_BLK_DEV_XD is not set 8.207 -# CONFIG_BLK_CPQ_DA is not set 8.208 -# CONFIG_BLK_CPQ_CISS_DA is not set 8.209 -# CONFIG_BLK_DEV_DAC960 is not set 8.210 -# CONFIG_BLK_DEV_UMEM is not set 8.211 -CONFIG_BLK_DEV_LOOP=y 8.212 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 8.213 -CONFIG_BLK_DEV_NBD=y 8.214 -# CONFIG_BLK_DEV_SX8 is not set 8.215 -CONFIG_BLK_DEV_RAM=y 8.216 -CONFIG_BLK_DEV_RAM_SIZE=4096 8.217 -CONFIG_BLK_DEV_INITRD=y 8.218 -# CONFIG_LBD is not set 8.219 - 8.220 -# 8.221 -# ATA/ATAPI/MFM/RLL support 8.222 -# 8.223 -CONFIG_IDE=y 8.224 -CONFIG_BLK_DEV_IDE=y 8.225 - 8.226 -# 8.227 -# Please see Documentation/ide.txt for help/info on IDE drives 8.228 -# 8.229 -# CONFIG_BLK_DEV_IDE_SATA is not set 8.230 -# CONFIG_BLK_DEV_HD_IDE is not set 8.231 -CONFIG_BLK_DEV_IDEDISK=y 8.232 -# CONFIG_IDEDISK_MULTI_MODE is not set 8.233 -# CONFIG_BLK_DEV_IDECS is not set 8.234 -CONFIG_BLK_DEV_IDECD=y 8.235 -# CONFIG_BLK_DEV_IDETAPE is not set 8.236 -# CONFIG_BLK_DEV_IDEFLOPPY is not set 8.237 -# CONFIG_BLK_DEV_IDESCSI is not set 8.238 -# CONFIG_IDE_TASK_IOCTL is not set 8.239 -# CONFIG_IDE_TASKFILE_IO is not set 8.240 - 8.241 -# 8.242 -# IDE chipset support/bugfixes 8.243 -# 8.244 -CONFIG_IDE_GENERIC=y 8.245 -# CONFIG_BLK_DEV_CMD640 is not set 8.246 -CONFIG_BLK_DEV_IDEPCI=y 8.247 -# CONFIG_IDEPCI_SHARE_IRQ is not set 8.248 -# CONFIG_BLK_DEV_OFFBOARD is not set 8.249 -CONFIG_BLK_DEV_GENERIC=y 8.250 -# CONFIG_BLK_DEV_OPTI621 is not set 8.251 -# CONFIG_BLK_DEV_RZ1000 is not set 8.252 -CONFIG_BLK_DEV_IDEDMA_PCI=y 8.253 -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 8.254 -CONFIG_IDEDMA_PCI_AUTO=y 8.255 -# CONFIG_IDEDMA_ONLYDISK is not set 8.256 -CONFIG_BLK_DEV_ADMA=y 8.257 -# CONFIG_BLK_DEV_AEC62XX is not set 8.258 -# CONFIG_BLK_DEV_ALI15X3 is not set 8.259 -# CONFIG_BLK_DEV_AMD74XX is not set 8.260 -# CONFIG_BLK_DEV_ATIIXP is not set 8.261 -# CONFIG_BLK_DEV_CMD64X is not set 8.262 -# CONFIG_BLK_DEV_TRIFLEX is not set 8.263 -# CONFIG_BLK_DEV_CY82C693 is not set 8.264 -# CONFIG_BLK_DEV_CS5520 is not set 8.265 -# CONFIG_BLK_DEV_CS5530 is not set 8.266 -# CONFIG_BLK_DEV_HPT34X is not set 8.267 -# CONFIG_BLK_DEV_HPT366 is not set 8.268 -# CONFIG_BLK_DEV_SC1200 is not set 8.269 -CONFIG_BLK_DEV_PIIX=y 8.270 -# CONFIG_BLK_DEV_NS87415 is not set 8.271 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set 8.272 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set 8.273 -CONFIG_BLK_DEV_SVWKS=y 8.274 -# CONFIG_BLK_DEV_SIIMAGE is not set 8.275 -# CONFIG_BLK_DEV_SIS5513 is not set 8.276 -# CONFIG_BLK_DEV_SLC90E66 is not set 8.277 -# CONFIG_BLK_DEV_TRM290 is not set 8.278 -# CONFIG_BLK_DEV_VIA82CXXX is not set 8.279 -# CONFIG_IDE_ARM is not set 8.280 -# CONFIG_IDE_CHIPSETS is not set 8.281 -CONFIG_BLK_DEV_IDEDMA=y 8.282 -# CONFIG_IDEDMA_IVB is not set 8.283 -CONFIG_IDEDMA_AUTO=y 8.284 -# CONFIG_BLK_DEV_HD is not set 8.285 - 8.286 -# 8.287 -# SCSI device support 8.288 -# 8.289 -CONFIG_SCSI=y 8.290 -CONFIG_SCSI_PROC_FS=y 8.291 - 8.292 -# 8.293 -# SCSI support type (disk, tape, CD-ROM) 8.294 -# 8.295 -CONFIG_BLK_DEV_SD=y 8.296 -# CONFIG_CHR_DEV_ST is not set 8.297 -# CONFIG_CHR_DEV_OSST is not set 8.298 -# CONFIG_BLK_DEV_SR is not set 8.299 -# CONFIG_CHR_DEV_SG is not set 8.300 - 8.301 -# 8.302 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 8.303 -# 8.304 -# CONFIG_SCSI_MULTI_LUN is not set 8.305 -# CONFIG_SCSI_CONSTANTS is not set 8.306 -# CONFIG_SCSI_LOGGING is not set 8.307 - 8.308 -# 8.309 -# SCSI Transport Attributes 8.310 -# 8.311 -# CONFIG_SCSI_SPI_ATTRS is not set 8.312 -# CONFIG_SCSI_FC_ATTRS is not set 8.313 - 8.314 -# 8.315 -# SCSI low-level drivers 8.316 -# 8.317 -CONFIG_BLK_DEV_3W_XXXX_RAID=y 8.318 -# CONFIG_SCSI_3W_9XXX is not set 8.319 -# CONFIG_SCSI_7000FASST is not set 8.320 -# CONFIG_SCSI_ACARD is not set 8.321 -# CONFIG_SCSI_AHA152X is not set 8.322 -# CONFIG_SCSI_AHA1542 is not set 8.323 -CONFIG_SCSI_AACRAID=y 8.324 -CONFIG_SCSI_AIC7XXX=y 8.325 -CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 8.326 -CONFIG_AIC7XXX_RESET_DELAY_MS=15000 8.327 -# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set 8.328 -CONFIG_AIC7XXX_DEBUG_ENABLE=y 8.329 -CONFIG_AIC7XXX_DEBUG_MASK=0 8.330 -CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 8.331 -# CONFIG_SCSI_AIC7XXX_OLD is not set 8.332 -CONFIG_SCSI_AIC79XX=y 8.333 -CONFIG_AIC79XX_CMDS_PER_DEVICE=32 8.334 -CONFIG_AIC79XX_RESET_DELAY_MS=15000 8.335 -# CONFIG_AIC79XX_BUILD_FIRMWARE is not set 8.336 -# CONFIG_AIC79XX_ENABLE_RD_STRM is not set 8.337 -CONFIG_AIC79XX_DEBUG_ENABLE=y 8.338 -CONFIG_AIC79XX_DEBUG_MASK=0 8.339 -CONFIG_AIC79XX_REG_PRETTY_PRINT=y 8.340 -# CONFIG_SCSI_DPT_I2O is not set 8.341 -# CONFIG_SCSI_ADVANSYS is not set 8.342 -# CONFIG_SCSI_IN2000 is not set 8.343 -CONFIG_SCSI_MEGARAID=y 8.344 -CONFIG_SCSI_SATA=y 8.345 -# CONFIG_SCSI_SATA_SVW is not set 8.346 -CONFIG_SCSI_ATA_PIIX=y 8.347 -# CONFIG_SCSI_SATA_NV is not set 8.348 -CONFIG_SCSI_SATA_PROMISE=y 8.349 -CONFIG_SCSI_SATA_SX4=y 8.350 -CONFIG_SCSI_SATA_SIL=y 8.351 -# CONFIG_SCSI_SATA_SIS is not set 8.352 -# CONFIG_SCSI_SATA_VIA is not set 8.353 -# CONFIG_SCSI_SATA_VITESSE is not set 8.354 -CONFIG_SCSI_BUSLOGIC=y 8.355 -# CONFIG_SCSI_OMIT_FLASHPOINT is not set 8.356 -# CONFIG_SCSI_CPQFCTS is not set 8.357 -# CONFIG_SCSI_DMX3191D is not set 8.358 -# CONFIG_SCSI_DTC3280 is not set 8.359 -# CONFIG_SCSI_EATA is not set 8.360 -# CONFIG_SCSI_EATA_PIO is not set 8.361 -# CONFIG_SCSI_FUTURE_DOMAIN is not set 8.362 -# CONFIG_SCSI_GDTH is not set 8.363 -# CONFIG_SCSI_GENERIC_NCR5380 is not set 8.364 -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 8.365 -# CONFIG_SCSI_IPS is not set 8.366 -# CONFIG_SCSI_INITIO is not set 8.367 -# CONFIG_SCSI_INIA100 is not set 8.368 -# CONFIG_SCSI_NCR53C406A is not set 8.369 -# CONFIG_SCSI_SYM53C8XX_2 is not set 8.370 -# CONFIG_SCSI_IPR is not set 8.371 -# CONFIG_SCSI_PAS16 is not set 8.372 -# CONFIG_SCSI_PCI2000 is not set 8.373 -# CONFIG_SCSI_PCI2220I is not set 8.374 -# CONFIG_SCSI_PSI240I is not set 8.375 -# CONFIG_SCSI_QLOGIC_FAS is not set 8.376 -# CONFIG_SCSI_QLOGIC_ISP is not set 8.377 -# CONFIG_SCSI_QLOGIC_FC is not set 8.378 -# CONFIG_SCSI_QLOGIC_1280 is not set 8.379 -CONFIG_SCSI_QLA2XXX=y 8.380 -# CONFIG_SCSI_QLA21XX is not set 8.381 -# CONFIG_SCSI_QLA22XX is not set 8.382 -# CONFIG_SCSI_QLA2300 is not set 8.383 -# CONFIG_SCSI_QLA2322 is not set 8.384 -# CONFIG_SCSI_QLA6312 is not set 8.385 -# CONFIG_SCSI_QLA6322 is not set 8.386 -# CONFIG_SCSI_SEAGATE is not set 8.387 -# CONFIG_SCSI_SYM53C416 is not set 8.388 -# CONFIG_SCSI_DC395x is not set 8.389 -# CONFIG_SCSI_DC390T is not set 8.390 -# CONFIG_SCSI_T128 is not set 8.391 -# CONFIG_SCSI_U14_34F is not set 8.392 -# CONFIG_SCSI_ULTRASTOR is not set 8.393 -# CONFIG_SCSI_NSP32 is not set 8.394 -# CONFIG_SCSI_DEBUG is not set 8.395 - 8.396 -# 8.397 -# PCMCIA SCSI adapter support 8.398 -# 8.399 -# CONFIG_PCMCIA_AHA152X is not set 8.400 -# CONFIG_PCMCIA_FDOMAIN is not set 8.401 -# CONFIG_PCMCIA_NINJA_SCSI is not set 8.402 -# CONFIG_PCMCIA_QLOGIC is not set 8.403 -# CONFIG_PCMCIA_SYM53C500 is not set 8.404 - 8.405 -# 8.406 -# Old CD-ROM drivers (not SCSI, not IDE) 8.407 -# 8.408 -# CONFIG_CD_NO_IDESCSI is not set 8.409 - 8.410 -# 8.411 -# Multi-device support (RAID and LVM) 8.412 -# 8.413 -CONFIG_MD=y 8.414 -CONFIG_BLK_DEV_MD=y 8.415 -# CONFIG_MD_LINEAR is not set 8.416 -CONFIG_MD_RAID0=y 8.417 -CONFIG_MD_RAID1=y 8.418 -CONFIG_MD_RAID5=y 8.419 -# CONFIG_MD_RAID6 is not set 8.420 -# CONFIG_MD_MULTIPATH is not set 8.421 -CONFIG_BLK_DEV_DM=y 8.422 -# CONFIG_DM_CRYPT is not set 8.423 -CONFIG_DM_SNAPSHOT=y 8.424 -CONFIG_DM_MIRROR=y 8.425 -# CONFIG_DM_ZERO is not set 8.426 - 8.427 -# 8.428 -# Fusion MPT device support 8.429 -# 8.430 -# CONFIG_FUSION is not set 8.431 - 8.432 -# 8.433 -# IEEE 1394 (FireWire) support 8.434 -# 8.435 -# CONFIG_IEEE1394 is not set 8.436 - 8.437 -# 8.438 -# I2O device support 8.439 -# 8.440 -# CONFIG_I2O is not set 8.441 - 8.442 -# 8.443 -# Networking support 8.444 -# 8.445 -CONFIG_NET=y 8.446 - 8.447 -# 8.448 -# Networking options 8.449 -# 8.450 -CONFIG_PACKET=y 8.451 -# CONFIG_PACKET_MMAP is not set 8.452 -# CONFIG_NETLINK_DEV is not set 8.453 -CONFIG_UNIX=y 8.454 -# CONFIG_NET_KEY is not set 8.455 -CONFIG_INET=y 8.456 -# CONFIG_IP_MULTICAST is not set 8.457 -# CONFIG_IP_ADVANCED_ROUTER is not set 8.458 -CONFIG_IP_PNP=y 8.459 -CONFIG_IP_PNP_DHCP=y 8.460 -# CONFIG_IP_PNP_BOOTP is not set 8.461 -# CONFIG_IP_PNP_RARP is not set 8.462 -# CONFIG_NET_IPIP is not set 8.463 -# CONFIG_NET_IPGRE is not set 8.464 -# CONFIG_ARPD is not set 8.465 -# CONFIG_SYN_COOKIES is not set 8.466 -# CONFIG_INET_AH is not set 8.467 -# CONFIG_INET_ESP is not set 8.468 -# CONFIG_INET_IPCOMP is not set 8.469 - 8.470 -# 8.471 -# IP: Virtual Server Configuration 8.472 -# 8.473 -# CONFIG_IP_VS is not set 8.474 -# CONFIG_IPV6 is not set 8.475 -CONFIG_NETFILTER=y 8.476 -# CONFIG_NETFILTER_DEBUG is not set 8.477 -CONFIG_BRIDGE_NETFILTER=y 8.478 - 8.479 -# 8.480 -# IP: Netfilter Configuration 8.481 -# 8.482 -CONFIG_IP_NF_CONNTRACK=m 8.483 -CONFIG_IP_NF_FTP=m 8.484 -# CONFIG_IP_NF_IRC is not set 8.485 -# CONFIG_IP_NF_TFTP is not set 8.486 -# CONFIG_IP_NF_AMANDA is not set 8.487 -# CONFIG_IP_NF_QUEUE is not set 8.488 -CONFIG_IP_NF_IPTABLES=m 8.489 -# CONFIG_IP_NF_MATCH_LIMIT is not set 8.490 -# CONFIG_IP_NF_MATCH_IPRANGE is not set 8.491 -# CONFIG_IP_NF_MATCH_MAC is not set 8.492 -# CONFIG_IP_NF_MATCH_PKTTYPE is not set 8.493 -# CONFIG_IP_NF_MATCH_MARK is not set 8.494 -# CONFIG_IP_NF_MATCH_MULTIPORT is not set 8.495 -# CONFIG_IP_NF_MATCH_TOS is not set 8.496 -# CONFIG_IP_NF_MATCH_RECENT is not set 8.497 -# CONFIG_IP_NF_MATCH_ECN is not set 8.498 -# CONFIG_IP_NF_MATCH_DSCP is not set 8.499 -# CONFIG_IP_NF_MATCH_AH_ESP is not set 8.500 -# CONFIG_IP_NF_MATCH_LENGTH is not set 8.501 -# CONFIG_IP_NF_MATCH_TTL is not set 8.502 -# CONFIG_IP_NF_MATCH_TCPMSS is not set 8.503 -# CONFIG_IP_NF_MATCH_HELPER is not set 8.504 -# CONFIG_IP_NF_MATCH_STATE is not set 8.505 -# CONFIG_IP_NF_MATCH_CONNTRACK is not set 8.506 -# CONFIG_IP_NF_MATCH_OWNER is not set 8.507 -# CONFIG_IP_NF_MATCH_PHYSDEV is not set 8.508 -# CONFIG_IP_NF_FILTER is not set 8.509 -# CONFIG_IP_NF_NAT is not set 8.510 -# CONFIG_IP_NF_MANGLE is not set 8.511 -# CONFIG_IP_NF_TARGET_LOG is not set 8.512 -# CONFIG_IP_NF_TARGET_ULOG is not set 8.513 -# CONFIG_IP_NF_TARGET_TCPMSS is not set 8.514 -# CONFIG_IP_NF_ARPTABLES is not set 8.515 -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set 8.516 -# CONFIG_IP_NF_COMPAT_IPFWADM is not set 8.517 -# CONFIG_IP_NF_RAW is not set 8.518 -# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 8.519 -# CONFIG_IP_NF_MATCH_REALM is not set 8.520 - 8.521 -# 8.522 -# Bridge: Netfilter Configuration 8.523 -# 8.524 -# CONFIG_BRIDGE_NF_EBTABLES is not set 8.525 - 8.526 -# 8.527 -# SCTP Configuration (EXPERIMENTAL) 8.528 -# 8.529 -# CONFIG_IP_SCTP is not set 8.530 -# CONFIG_ATM is not set 8.531 -CONFIG_BRIDGE=y 8.532 -# CONFIG_VLAN_8021Q is not set 8.533 -# CONFIG_DECNET is not set 8.534 -# CONFIG_LLC2 is not set 8.535 -# CONFIG_IPX is not set 8.536 -# CONFIG_ATALK is not set 8.537 -# CONFIG_X25 is not set 8.538 -# CONFIG_LAPB is not set 8.539 -# CONFIG_NET_DIVERT is not set 8.540 -# CONFIG_ECONET is not set 8.541 -# CONFIG_WAN_ROUTER is not set 8.542 -# CONFIG_NET_HW_FLOWCONTROL is not set 8.543 - 8.544 -# 8.545 -# QoS and/or fair queueing 8.546 -# 8.547 -# CONFIG_NET_SCHED is not set 8.548 -# CONFIG_NET_CLS_ROUTE is not set 8.549 - 8.550 -# 8.551 -# Network testing 8.552 -# 8.553 -# CONFIG_NET_PKTGEN is not set 8.554 -# CONFIG_NETPOLL is not set 8.555 -# CONFIG_NET_POLL_CONTROLLER is not set 8.556 -# CONFIG_HAMRADIO is not set 8.557 -# CONFIG_IRDA is not set 8.558 -# CONFIG_BT is not set 8.559 -CONFIG_NETDEVICES=y 8.560 -# CONFIG_DUMMY is not set 8.561 -# CONFIG_BONDING is not set 8.562 -# CONFIG_EQUALIZER is not set 8.563 -# CONFIG_TUN is not set 8.564 - 8.565 -# 8.566 -# ARCnet devices 8.567 -# 8.568 -# CONFIG_ARCNET is not set 8.569 - 8.570 -# 8.571 -# Ethernet (10 or 100Mbit) 8.572 -# 8.573 -CONFIG_NET_ETHERNET=y 8.574 -CONFIG_MII=y 8.575 -# CONFIG_HAPPYMEAL is not set 8.576 -# CONFIG_SUNGEM is not set 8.577 -CONFIG_NET_VENDOR_3COM=y 8.578 -# CONFIG_EL1 is not set 8.579 -# CONFIG_EL2 is not set 8.580 -# CONFIG_ELPLUS is not set 8.581 -# CONFIG_EL16 is not set 8.582 -# CONFIG_EL3 is not set 8.583 -# CONFIG_3C515 is not set 8.584 -CONFIG_VORTEX=y 8.585 -# CONFIG_TYPHOON is not set 8.586 -# CONFIG_LANCE is not set 8.587 -# CONFIG_NET_VENDOR_SMC is not set 8.588 -# CONFIG_NET_VENDOR_RACAL is not set 8.589 - 8.590 -# 8.591 -# Tulip family network device support 8.592 -# 8.593 -CONFIG_NET_TULIP=y 8.594 -# CONFIG_DE2104X is not set 8.595 -CONFIG_TULIP=y 8.596 -# CONFIG_TULIP_MWI is not set 8.597 -# CONFIG_TULIP_MMIO is not set 8.598 -# CONFIG_TULIP_NAPI is not set 8.599 -# CONFIG_DE4X5 is not set 8.600 -# CONFIG_WINBOND_840 is not set 8.601 -# CONFIG_DM9102 is not set 8.602 -# CONFIG_PCMCIA_XIRCOM is not set 8.603 -# CONFIG_PCMCIA_XIRTULIP is not set 8.604 -# CONFIG_AT1700 is not set 8.605 -# CONFIG_DEPCA is not set 8.606 -# CONFIG_HP100 is not set 8.607 -# CONFIG_NET_ISA is not set 8.608 -CONFIG_NET_PCI=y 8.609 -CONFIG_PCNET32=y 8.610 -# CONFIG_AMD8111_ETH is not set 8.611 -# CONFIG_ADAPTEC_STARFIRE is not set 8.612 -# CONFIG_AC3200 is not set 8.613 -# CONFIG_APRICOT is not set 8.614 -# CONFIG_B44 is not set 8.615 -# CONFIG_FORCEDETH is not set 8.616 -# CONFIG_CS89x0 is not set 8.617 -# CONFIG_DGRS is not set 8.618 -# CONFIG_EEPRO100 is not set 8.619 -CONFIG_E100=y 8.620 -# CONFIG_E100_NAPI is not set 8.621 -# CONFIG_FEALNX is not set 8.622 -# CONFIG_NATSEMI is not set 8.623 -# CONFIG_NE2K_PCI is not set 8.624 -# CONFIG_8139CP is not set 8.625 -CONFIG_8139TOO=y 8.626 -CONFIG_8139TOO_PIO=y 8.627 -# CONFIG_8139TOO_TUNE_TWISTER is not set 8.628 -# CONFIG_8139TOO_8129 is not set 8.629 -# CONFIG_8139_OLD_RX_RESET is not set 8.630 -# CONFIG_SIS900 is not set 8.631 -# CONFIG_EPIC100 is not set 8.632 -# CONFIG_SUNDANCE is not set 8.633 -# CONFIG_TLAN is not set 8.634 -CONFIG_VIA_RHINE=y 8.635 -# CONFIG_VIA_RHINE_MMIO is not set 8.636 -# CONFIG_VIA_VELOCITY is not set 8.637 -# CONFIG_NET_POCKET is not set 8.638 - 8.639 -# 8.640 -# Ethernet (1000 Mbit) 8.641 -# 8.642 -CONFIG_ACENIC=y 8.643 -# CONFIG_ACENIC_OMIT_TIGON_I is not set 8.644 -# CONFIG_DL2K is not set 8.645 -CONFIG_E1000=y 8.646 -# CONFIG_E1000_NAPI is not set 8.647 -# CONFIG_NS83820 is not set 8.648 -# CONFIG_HAMACHI is not set 8.649 -# CONFIG_YELLOWFIN is not set 8.650 -# CONFIG_R8169 is not set 8.651 -# CONFIG_SK98LIN is not set 8.652 -CONFIG_TIGON3=y 8.653 - 8.654 -# 8.655 -# Ethernet (10000 Mbit) 8.656 -# 8.657 -# CONFIG_IXGB is not set 8.658 -# CONFIG_S2IO is not set 8.659 - 8.660 -# 8.661 -# Token Ring devices 8.662 -# 8.663 -# CONFIG_TR is not set 8.664 - 8.665 -# 8.666 -# Wireless LAN (non-hamradio) 8.667 -# 8.668 -# CONFIG_NET_RADIO is not set 8.669 - 8.670 -# 8.671 -# PCMCIA network device support 8.672 -# 8.673 -# CONFIG_NET_PCMCIA is not set 8.674 - 8.675 -# 8.676 -# Wan interfaces 8.677 -# 8.678 -# CONFIG_WAN is not set 8.679 -# CONFIG_FDDI is not set 8.680 -# CONFIG_HIPPI is not set 8.681 -# CONFIG_PPP is not set 8.682 -# CONFIG_SLIP is not set 8.683 -# CONFIG_NET_FC is not set 8.684 -# CONFIG_SHAPER is not set 8.685 -# CONFIG_NETCONSOLE is not set 8.686 - 8.687 -# 8.688 -# ISDN subsystem 8.689 -# 8.690 -# CONFIG_ISDN is not set 8.691 - 8.692 -# 8.693 -# Telephony Support 8.694 -# 8.695 -# CONFIG_PHONE is not set 8.696 - 8.697 -# 8.698 -# Input device support 8.699 -# 8.700 -CONFIG_INPUT=y 8.701 - 8.702 -# 8.703 -# Userland interfaces 8.704 -# 8.705 -CONFIG_INPUT_MOUSEDEV=y 8.706 -CONFIG_INPUT_MOUSEDEV_PSAUX=y 8.707 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 8.708 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 8.709 -# CONFIG_INPUT_JOYDEV is not set 8.710 -# CONFIG_INPUT_TSDEV is not set 8.711 -# CONFIG_INPUT_EVDEV is not set 8.712 -# CONFIG_INPUT_EVBUG is not set 8.713 - 8.714 -# 8.715 -# Input I/O drivers 8.716 -# 8.717 -# CONFIG_GAMEPORT is not set 8.718 -CONFIG_SOUND_GAMEPORT=y 8.719 -CONFIG_SERIO=y 8.720 -CONFIG_SERIO_I8042=y 8.721 -CONFIG_SERIO_SERPORT=y 8.722 -# CONFIG_SERIO_CT82C710 is not set 8.723 -# CONFIG_SERIO_PCIPS2 is not set 8.724 - 8.725 -# 8.726 -# Input Device Drivers 8.727 -# 8.728 -CONFIG_INPUT_KEYBOARD=y 8.729 -CONFIG_KEYBOARD_ATKBD=y 8.730 -# CONFIG_KEYBOARD_SUNKBD is not set 8.731 -# CONFIG_KEYBOARD_LKKBD is not set 8.732 -# CONFIG_KEYBOARD_XTKBD is not set 8.733 -# CONFIG_KEYBOARD_NEWTON is not set 8.734 -CONFIG_INPUT_MOUSE=y 8.735 -CONFIG_MOUSE_PS2=y 8.736 -# CONFIG_MOUSE_SERIAL is not set 8.737 -# CONFIG_MOUSE_INPORT is not set 8.738 -# CONFIG_MOUSE_LOGIBM is not set 8.739 -# CONFIG_MOUSE_PC110PAD is not set 8.740 -# CONFIG_MOUSE_VSXXXAA is not set 8.741 -# CONFIG_INPUT_JOYSTICK is not set 8.742 -# CONFIG_INPUT_TOUCHSCREEN is not set 8.743 -# CONFIG_INPUT_MISC is not set 8.744 - 8.745 -# 8.746 -# Character devices 8.747 -# 8.748 -CONFIG_VT=y 8.749 -CONFIG_VT_CONSOLE=y 8.750 -CONFIG_HW_CONSOLE=y 8.751 -# CONFIG_SERIAL_NONSTANDARD is not set 8.752 - 8.753 -# 8.754 -# Serial drivers 8.755 -# 8.756 -# CONFIG_SERIAL_8250 is not set 8.757 - 8.758 -# 8.759 -# Non-8250 serial port support 8.760 -# 8.761 -CONFIG_UNIX98_PTYS=y 8.762 -CONFIG_LEGACY_PTYS=y 8.763 -CONFIG_LEGACY_PTY_COUNT=256 8.764 -# CONFIG_QIC02_TAPE is not set 8.765 - 8.766 -# 8.767 -# IPMI 8.768 -# 8.769 -# CONFIG_IPMI_HANDLER is not set 8.770 - 8.771 -# 8.772 -# Watchdog Cards 8.773 -# 8.774 -# CONFIG_WATCHDOG is not set 8.775 -# CONFIG_HW_RANDOM is not set 8.776 -# CONFIG_NVRAM is not set 8.777 -# CONFIG_RTC is not set 8.778 -# CONFIG_GEN_RTC is not set 8.779 -# CONFIG_DTLK is not set 8.780 -# CONFIG_R3964 is not set 8.781 -# CONFIG_APPLICOM is not set 8.782 -# CONFIG_SONYPI is not set 8.783 - 8.784 -# 8.785 -# Ftape, the floppy tape device driver 8.786 -# 8.787 -# CONFIG_FTAPE is not set 8.788 -# CONFIG_AGP is not set 8.789 -# CONFIG_DRM is not set 8.790 - 8.791 -# 8.792 -# PCMCIA character devices 8.793 -# 8.794 -# CONFIG_SYNCLINK_CS is not set 8.795 -# CONFIG_MWAVE is not set 8.796 -# CONFIG_RAW_DRIVER is not set 8.797 -# CONFIG_HANGCHECK_TIMER is not set 8.798 - 8.799 -# 8.800 -# I2C support 8.801 -# 8.802 -# CONFIG_I2C is not set 8.803 - 8.804 -# 8.805 -# Dallas's 1-wire bus 8.806 -# 8.807 -# CONFIG_W1 is not set 8.808 - 8.809 -# 8.810 -# Misc devices 8.811 -# 8.812 -# CONFIG_IBM_ASM is not set 8.813 - 8.814 -# 8.815 -# Multimedia devices 8.816 -# 8.817 -# CONFIG_VIDEO_DEV is not set 8.818 - 8.819 -# 8.820 -# Digital Video Broadcasting Devices 8.821 -# 8.822 -# CONFIG_DVB is not set 8.823 - 8.824 -# 8.825 -# Graphics support 8.826 -# 8.827 -# CONFIG_FB is not set 8.828 -# CONFIG_VIDEO_SELECT is not set 8.829 - 8.830 -# 8.831 -# Console display driver support 8.832 -# 8.833 -CONFIG_VGA_CONSOLE=y 8.834 -# CONFIG_MDA_CONSOLE is not set 8.835 -CONFIG_DUMMY_CONSOLE=y 8.836 - 8.837 -# 8.838 -# Sound 8.839 -# 8.840 -# CONFIG_SOUND is not set 8.841 - 8.842 -# 8.843 -# USB support 8.844 -# 8.845 -# CONFIG_USB is not set 8.846 - 8.847 -# 8.848 -# USB Gadget Support 8.849 -# 8.850 -# CONFIG_USB_GADGET is not set 8.851 - 8.852 -# 8.853 -# File systems 8.854 -# 8.855 -CONFIG_EXT2_FS=y 8.856 -# CONFIG_EXT2_FS_XATTR is not set 8.857 -CONFIG_EXT3_FS=y 8.858 -CONFIG_EXT3_FS_XATTR=y 8.859 -# CONFIG_EXT3_FS_POSIX_ACL is not set 8.860 -# CONFIG_EXT3_FS_SECURITY is not set 8.861 -CONFIG_JBD=y 8.862 -# CONFIG_JBD_DEBUG is not set 8.863 -CONFIG_FS_MBCACHE=y 8.864 -CONFIG_REISERFS_FS=y 8.865 -# CONFIG_REISERFS_CHECK is not set 8.866 -# CONFIG_REISERFS_PROC_INFO is not set 8.867 -# CONFIG_REISERFS_FS_XATTR is not set 8.868 -# CONFIG_JFS_FS is not set 8.869 -# CONFIG_XFS_FS is not set 8.870 -# CONFIG_MINIX_FS is not set 8.871 -# CONFIG_ROMFS_FS is not set 8.872 -# CONFIG_QUOTA is not set 8.873 -# CONFIG_AUTOFS_FS is not set 8.874 -# CONFIG_AUTOFS4_FS is not set 8.875 - 8.876 -# 8.877 -# CD-ROM/DVD Filesystems 8.878 -# 8.879 -CONFIG_ISO9660_FS=y 8.880 -CONFIG_JOLIET=y 8.881 -CONFIG_ZISOFS=y 8.882 -CONFIG_ZISOFS_FS=y 8.883 -# CONFIG_UDF_FS is not set 8.884 - 8.885 -# 8.886 -# DOS/FAT/NT Filesystems 8.887 -# 8.888 -CONFIG_FAT_FS=m 8.889 -CONFIG_MSDOS_FS=m 8.890 -CONFIG_VFAT_FS=m 8.891 -CONFIG_FAT_DEFAULT_CODEPAGE=437 8.892 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 8.893 -# CONFIG_NTFS_FS is not set 8.894 - 8.895 -# 8.896 -# Pseudo filesystems 8.897 -# 8.898 -CONFIG_PROC_FS=y 8.899 -CONFIG_PROC_KCORE=y 8.900 -CONFIG_SYSFS=y 8.901 -# CONFIG_DEVFS_FS is not set 8.902 -# CONFIG_DEVPTS_FS_XATTR is not set 8.903 -CONFIG_TMPFS=y 8.904 -# CONFIG_HUGETLBFS is not set 8.905 -# CONFIG_HUGETLB_PAGE is not set 8.906 -CONFIG_RAMFS=y 8.907 - 8.908 -# 8.909 -# Miscellaneous filesystems 8.910 -# 8.911 -# CONFIG_ADFS_FS is not set 8.912 -# CONFIG_AFFS_FS is not set 8.913 -# CONFIG_HFS_FS is not set 8.914 -# CONFIG_HFSPLUS_FS is not set 8.915 -# CONFIG_BEFS_FS is not set 8.916 -# CONFIG_BFS_FS is not set 8.917 -# CONFIG_EFS_FS is not set 8.918 -# CONFIG_CRAMFS is not set 8.919 -# CONFIG_VXFS_FS is not set 8.920 -# CONFIG_HPFS_FS is not set 8.921 -# CONFIG_QNX4FS_FS is not set 8.922 -# CONFIG_SYSV_FS is not set 8.923 -# CONFIG_UFS_FS is not set 8.924 - 8.925 -# 8.926 -# Network File Systems 8.927 -# 8.928 -CONFIG_NFS_FS=y 8.929 -CONFIG_NFS_V3=y 8.930 -# CONFIG_NFS_V4 is not set 8.931 -# CONFIG_NFS_DIRECTIO is not set 8.932 -CONFIG_NFSD=m 8.933 -CONFIG_NFSD_V3=y 8.934 -# CONFIG_NFSD_V4 is not set 8.935 -CONFIG_NFSD_TCP=y 8.936 -CONFIG_ROOT_NFS=y 8.937 -CONFIG_LOCKD=y 8.938 -CONFIG_LOCKD_V4=y 8.939 -CONFIG_EXPORTFS=m 8.940 -CONFIG_SUNRPC=y 8.941 -# CONFIG_RPCSEC_GSS_KRB5 is not set 8.942 -# CONFIG_SMB_FS is not set 8.943 -# CONFIG_CIFS is not set 8.944 -# CONFIG_NCP_FS is not set 8.945 -# CONFIG_CODA_FS is not set 8.946 -# CONFIG_AFS_FS is not set 8.947 - 8.948 -# 8.949 -# Partition Types 8.950 -# 8.951 -# CONFIG_PARTITION_ADVANCED is not set 8.952 -CONFIG_MSDOS_PARTITION=y 8.953 - 8.954 -# 8.955 -# Native Language Support 8.956 -# 8.957 -CONFIG_NLS=y 8.958 -CONFIG_NLS_DEFAULT="iso8859-1" 8.959 -CONFIG_NLS_CODEPAGE_437=y 8.960 -# CONFIG_NLS_CODEPAGE_737 is not set 8.961 -# CONFIG_NLS_CODEPAGE_775 is not set 8.962 -# CONFIG_NLS_CODEPAGE_850 is not set 8.963 -# CONFIG_NLS_CODEPAGE_852 is not set 8.964 -# CONFIG_NLS_CODEPAGE_855 is not set 8.965 -# CONFIG_NLS_CODEPAGE_857 is not set 8.966 -# CONFIG_NLS_CODEPAGE_860 is not set 8.967 -# CONFIG_NLS_CODEPAGE_861 is not set 8.968 -# CONFIG_NLS_CODEPAGE_862 is not set 8.969 -# CONFIG_NLS_CODEPAGE_863 is not set 8.970 -# CONFIG_NLS_CODEPAGE_864 is not set 8.971 -# CONFIG_NLS_CODEPAGE_865 is not set 8.972 -# CONFIG_NLS_CODEPAGE_866 is not set 8.973 -# CONFIG_NLS_CODEPAGE_869 is not set 8.974 -# CONFIG_NLS_CODEPAGE_936 is not set 8.975 -# CONFIG_NLS_CODEPAGE_950 is not set 8.976 -# CONFIG_NLS_CODEPAGE_932 is not set 8.977 -# CONFIG_NLS_CODEPAGE_949 is not set 8.978 -# CONFIG_NLS_CODEPAGE_874 is not set 8.979 -# CONFIG_NLS_ISO8859_8 is not set 8.980 -# CONFIG_NLS_CODEPAGE_1250 is not set 8.981 -# CONFIG_NLS_CODEPAGE_1251 is not set 8.982 -# CONFIG_NLS_ASCII is not set 8.983 -CONFIG_NLS_ISO8859_1=y 8.984 -# CONFIG_NLS_ISO8859_2 is not set 8.985 -# CONFIG_NLS_ISO8859_3 is not set 8.986 -# CONFIG_NLS_ISO8859_4 is not set 8.987 -# CONFIG_NLS_ISO8859_5 is not set 8.988 -# CONFIG_NLS_ISO8859_6 is not set 8.989 -# CONFIG_NLS_ISO8859_7 is not set 8.990 -# CONFIG_NLS_ISO8859_9 is not set 8.991 -# CONFIG_NLS_ISO8859_13 is not set 8.992 -# CONFIG_NLS_ISO8859_14 is not set 8.993 -# CONFIG_NLS_ISO8859_15 is not set 8.994 -# CONFIG_NLS_KOI8_R is not set 8.995 -# CONFIG_NLS_KOI8_U is not set 8.996 -# CONFIG_NLS_UTF8 is not set 8.997 - 8.998 -# 8.999 -# Security options 8.1000 -# 8.1001 -# CONFIG_SECURITY is not set 8.1002 - 8.1003 -# 8.1004 -# Cryptographic options 8.1005 -# 8.1006 -CONFIG_CRYPTO=y 8.1007 -CONFIG_CRYPTO_HMAC=y 8.1008 -# CONFIG_CRYPTO_NULL is not set 8.1009 -# CONFIG_CRYPTO_MD4 is not set 8.1010 -CONFIG_CRYPTO_MD5=m 8.1011 -CONFIG_CRYPTO_SHA1=m 8.1012 -# CONFIG_CRYPTO_SHA256 is not set 8.1013 -# CONFIG_CRYPTO_SHA512 is not set 8.1014 -CONFIG_CRYPTO_DES=m 8.1015 -# CONFIG_CRYPTO_BLOWFISH is not set 8.1016 -# CONFIG_CRYPTO_TWOFISH is not set 8.1017 -# CONFIG_CRYPTO_SERPENT is not set 8.1018 -# CONFIG_CRYPTO_AES_586 is not set 8.1019 -# CONFIG_CRYPTO_CAST5 is not set 8.1020 -# CONFIG_CRYPTO_CAST6 is not set 8.1021 -# CONFIG_CRYPTO_TEA is not set 8.1022 -# CONFIG_CRYPTO_ARC4 is not set 8.1023 -# CONFIG_CRYPTO_KHAZAD is not set 8.1024 -# CONFIG_CRYPTO_DEFLATE is not set 8.1025 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 8.1026 -CONFIG_CRYPTO_CRC32C=m 8.1027 -# CONFIG_CRYPTO_TEST is not set 8.1028 - 8.1029 -# 8.1030 -# Library routines 8.1031 -# 8.1032 -# CONFIG_CRC_CCITT is not set 8.1033 -CONFIG_CRC32=y 8.1034 -CONFIG_LIBCRC32C=y 8.1035 -CONFIG_ZLIB_INFLATE=y
9.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig Mon Oct 25 12:45:34 2004 +0000 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,475 +0,0 @@ 9.4 -# 9.5 -# Automatically generated make config: don't edit 9.6 -# 9.7 -CONFIG_XEN=y 9.8 -CONFIG_ARCH_XEN=y 9.9 -CONFIG_NO_IDLE_HZ=y 9.10 - 9.11 -# 9.12 -# XEN 9.13 -# 9.14 -# CONFIG_XEN_PRIVILEGED_GUEST is not set 9.15 -# CONFIG_XEN_PHYSDEV_ACCESS is not set 9.16 -# CONFIG_XEN_BLKDEV_BACKEND is not set 9.17 -# CONFIG_XEN_NETDEV_BACKEND is not set 9.18 -CONFIG_XEN_BLKDEV_FRONTEND=y 9.19 -CONFIG_XEN_NETDEV_FRONTEND=y 9.20 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 9.21 -CONFIG_XEN_WRITABLE_PAGETABLES=y 9.22 -CONFIG_XEN_SCRUB_PAGES=y 9.23 -CONFIG_FOREIGN_PAGES=y 9.24 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 9.25 -CONFIG_X86=y 9.26 -# CONFIG_X86_64 is not set 9.27 - 9.28 -# 9.29 -# Code maturity level options 9.30 -# 9.31 -CONFIG_EXPERIMENTAL=y 9.32 -CONFIG_CLEAN_COMPILE=y 9.33 -CONFIG_BROKEN_ON_SMP=y 9.34 - 9.35 -# 9.36 -# General setup 9.37 -# 9.38 -CONFIG_SWAP=y 9.39 -CONFIG_SYSVIPC=y 9.40 -# CONFIG_POSIX_MQUEUE is not set 9.41 -# CONFIG_BSD_PROCESS_ACCT is not set 9.42 -CONFIG_SYSCTL=y 9.43 -# CONFIG_AUDIT is not set 9.44 -CONFIG_LOG_BUF_SHIFT=14 9.45 -CONFIG_HOTPLUG=y 9.46 -# CONFIG_IKCONFIG is not set 9.47 -# CONFIG_EMBEDDED is not set 9.48 -CONFIG_KALLSYMS=y 9.49 -# CONFIG_KALLSYMS_EXTRA_PASS is not set 9.50 -CONFIG_FUTEX=y 9.51 -CONFIG_EPOLL=y 9.52 -CONFIG_IOSCHED_NOOP=y 9.53 -CONFIG_IOSCHED_AS=y 9.54 -CONFIG_IOSCHED_DEADLINE=y 9.55 -CONFIG_IOSCHED_CFQ=y 9.56 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 9.57 - 9.58 -# 9.59 -# Loadable module support 9.60 -# 9.61 -CONFIG_MODULES=y 9.62 -CONFIG_MODULE_UNLOAD=y 9.63 -# CONFIG_MODULE_FORCE_UNLOAD is not set 9.64 -CONFIG_OBSOLETE_MODPARM=y 9.65 -# CONFIG_MODVERSIONS is not set 9.66 -CONFIG_KMOD=y 9.67 - 9.68 -# 9.69 -# X86 Processor Configuration 9.70 -# 9.71 -CONFIG_XENARCH="i386" 9.72 -CONFIG_MMU=y 9.73 -CONFIG_UID16=y 9.74 -CONFIG_GENERIC_ISA_DMA=y 9.75 -# CONFIG_M686 is not set 9.76 -# CONFIG_MPENTIUMII is not set 9.77 -# CONFIG_MPENTIUMIII is not set 9.78 -# CONFIG_MPENTIUMM is not set 9.79 -CONFIG_MPENTIUM4=y 9.80 -# CONFIG_MK6 is not set 9.81 -# CONFIG_MK7 is not set 9.82 -# CONFIG_MK8 is not set 9.83 -# CONFIG_MCRUSOE is not set 9.84 -# CONFIG_MCYRIXIII is not set 9.85 -# CONFIG_MVIAC3_2 is not set 9.86 -# CONFIG_X86_GENERIC is not set 9.87 -CONFIG_X86_CMPXCHG=y 9.88 -CONFIG_X86_XADD=y 9.89 -CONFIG_X86_L1_CACHE_SHIFT=7 9.90 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y 9.91 -CONFIG_X86_WP_WORKS_OK=y 9.92 -CONFIG_X86_INVLPG=y 9.93 -CONFIG_X86_BSWAP=y 9.94 -CONFIG_X86_POPAD_OK=y 9.95 -CONFIG_X86_GOOD_APIC=y 9.96 -CONFIG_X86_INTEL_USERCOPY=y 9.97 -CONFIG_X86_USE_PPRO_CHECKSUM=y 9.98 -# CONFIG_HPET_TIMER is not set 9.99 -# CONFIG_HPET_EMULATE_RTC is not set 9.100 -# CONFIG_SMP is not set 9.101 -CONFIG_PREEMPT=y 9.102 -CONFIG_X86_CPUID=y 9.103 - 9.104 -# 9.105 -# Firmware Drivers 9.106 -# 9.107 -# CONFIG_EDD is not set 9.108 -CONFIG_NOHIGHMEM=y 9.109 -# CONFIG_HIGHMEM4G is not set 9.110 -CONFIG_HAVE_DEC_LOCK=y 9.111 -# CONFIG_REGPARM is not set 9.112 - 9.113 -# 9.114 -# Kernel hacking 9.115 -# 9.116 -# CONFIG_DEBUG_KERNEL is not set 9.117 -CONFIG_EARLY_PRINTK=y 9.118 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 9.119 -# CONFIG_FRAME_POINTER is not set 9.120 -# CONFIG_4KSTACKS is not set 9.121 -CONFIG_X86_BIOS_REBOOT=y 9.122 -CONFIG_X86_STD_RESOURCES=y 9.123 -CONFIG_PC=y 9.124 - 9.125 -# 9.126 -# Executable file formats 9.127 -# 9.128 -CONFIG_BINFMT_ELF=y 9.129 -# CONFIG_BINFMT_AOUT is not set 9.130 -# CONFIG_BINFMT_MISC is not set 9.131 - 9.132 -# 9.133 -# Device Drivers 9.134 -# 9.135 - 9.136 -# 9.137 -# Generic Driver Options 9.138 -# 9.139 -CONFIG_STANDALONE=y 9.140 -CONFIG_PREVENT_FIRMWARE_BUILD=y 9.141 -# CONFIG_FW_LOADER is not set 9.142 - 9.143 -# 9.144 -# Block devices 9.145 -# 9.146 -# CONFIG_BLK_DEV_FD is not set 9.147 -CONFIG_BLK_DEV_LOOP=m 9.148 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set 9.149 -CONFIG_BLK_DEV_NBD=m 9.150 -CONFIG_BLK_DEV_RAM=y 9.151 -CONFIG_BLK_DEV_RAM_SIZE=4096 9.152 -CONFIG_BLK_DEV_INITRD=y 9.153 -# CONFIG_LBD is not set 9.154 - 9.155 -# 9.156 -# SCSI device support 9.157 -# 9.158 -CONFIG_SCSI=m 9.159 -CONFIG_SCSI_PROC_FS=y 9.160 - 9.161 -# 9.162 -# SCSI support type (disk, tape, CD-ROM) 9.163 -# 9.164 -CONFIG_BLK_DEV_SD=m 9.165 -# CONFIG_CHR_DEV_ST is not set 9.166 -# CONFIG_CHR_DEV_OSST is not set 9.167 -# CONFIG_BLK_DEV_SR is not set 9.168 -# CONFIG_CHR_DEV_SG is not set 9.169 - 9.170 -# 9.171 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 9.172 -# 9.173 -# CONFIG_SCSI_MULTI_LUN is not set 9.174 -# CONFIG_SCSI_CONSTANTS is not set 9.175 -# CONFIG_SCSI_LOGGING is not set 9.176 - 9.177 -# 9.178 -# SCSI Transport Attributes 9.179 -# 9.180 -# CONFIG_SCSI_SPI_ATTRS is not set 9.181 -# CONFIG_SCSI_FC_ATTRS is not set 9.182 - 9.183 -# 9.184 -# SCSI low-level drivers 9.185 -# 9.186 -# CONFIG_SCSI_AIC7XXX_OLD is not set 9.187 -# CONFIG_SCSI_SATA is not set 9.188 -# CONFIG_SCSI_EATA_PIO is not set 9.189 -# CONFIG_SCSI_DEBUG is not set 9.190 - 9.191 -# 9.192 -# Multi-device support (RAID and LVM) 9.193 -# 9.194 -# CONFIG_MD is not set 9.195 - 9.196 -# 9.197 -# Networking support 9.198 -# 9.199 -CONFIG_NET=y 9.200 - 9.201 -# 9.202 -# Networking options 9.203 -# 9.204 -CONFIG_PACKET=y 9.205 -# CONFIG_PACKET_MMAP is not set 9.206 -# CONFIG_NETLINK_DEV is not set 9.207 -CONFIG_UNIX=y 9.208 -# CONFIG_NET_KEY is not set 9.209 -CONFIG_INET=y 9.210 -# CONFIG_IP_MULTICAST is not set 9.211 -# CONFIG_IP_ADVANCED_ROUTER is not set 9.212 -CONFIG_IP_PNP=y 9.213 -# CONFIG_IP_PNP_DHCP is not set 9.214 -# CONFIG_IP_PNP_BOOTP is not set 9.215 -# CONFIG_IP_PNP_RARP is not set 9.216 -# CONFIG_NET_IPIP is not set 9.217 -# CONFIG_NET_IPGRE is not set 9.218 -# CONFIG_ARPD is not set 9.219 -# CONFIG_SYN_COOKIES is not set 9.220 -# CONFIG_INET_AH is not set 9.221 -# CONFIG_INET_ESP is not set 9.222 -# CONFIG_INET_IPCOMP is not set 9.223 -# CONFIG_IPV6 is not set 9.224 -# CONFIG_NETFILTER is not set 9.225 - 9.226 -# 9.227 -# SCTP Configuration (EXPERIMENTAL) 9.228 -# 9.229 -# CONFIG_IP_SCTP is not set 9.230 -# CONFIG_ATM is not set 9.231 -# CONFIG_BRIDGE is not set 9.232 -# CONFIG_VLAN_8021Q is not set 9.233 -# CONFIG_DECNET is not set 9.234 -# CONFIG_LLC2 is not set 9.235 -# CONFIG_IPX is not set 9.236 -# CONFIG_ATALK is not set 9.237 -# CONFIG_X25 is not set 9.238 -# CONFIG_LAPB is not set 9.239 -# CONFIG_NET_DIVERT is not set 9.240 -# CONFIG_ECONET is not set 9.241 -# CONFIG_WAN_ROUTER is not set 9.242 -# CONFIG_NET_HW_FLOWCONTROL is not set 9.243 - 9.244 -# 9.245 -# QoS and/or fair queueing 9.246 -# 9.247 -# CONFIG_NET_SCHED is not set 9.248 -# CONFIG_NET_CLS_ROUTE is not set 9.249 - 9.250 -# 9.251 -# Network testing 9.252 -# 9.253 -# CONFIG_NET_PKTGEN is not set 9.254 -# CONFIG_NETPOLL is not set 9.255 -# CONFIG_NET_POLL_CONTROLLER is not set 9.256 -# CONFIG_HAMRADIO is not set 9.257 -# CONFIG_IRDA is not set 9.258 -# CONFIG_BT is not set 9.259 -CONFIG_NETDEVICES=y 9.260 -# CONFIG_DUMMY is not set 9.261 -# CONFIG_BONDING is not set 9.262 -# CONFIG_EQUALIZER is not set 9.263 -# CONFIG_TUN is not set 9.264 - 9.265 -# 9.266 -# Ethernet (10 or 100Mbit) 9.267 -# 9.268 -# CONFIG_NET_ETHERNET is not set 9.269 - 9.270 -# 9.271 -# Ethernet (1000 Mbit) 9.272 -# 9.273 - 9.274 -# 9.275 -# Ethernet (10000 Mbit) 9.276 -# 9.277 - 9.278 -# 9.279 -# Token Ring devices 9.280 -# 9.281 - 9.282 -# 9.283 -# Wireless LAN (non-hamradio) 9.284 -# 9.285 -# CONFIG_NET_RADIO is not set 9.286 - 9.287 -# 9.288 -# Wan interfaces 9.289 -# 9.290 -# CONFIG_WAN is not set 9.291 -# CONFIG_PPP is not set 9.292 -# CONFIG_SLIP is not set 9.293 -# CONFIG_SHAPER is not set 9.294 -# CONFIG_NETCONSOLE is not set 9.295 -CONFIG_UNIX98_PTYS=y 9.296 - 9.297 -# 9.298 -# File systems 9.299 -# 9.300 -CONFIG_EXT2_FS=y 9.301 -# CONFIG_EXT2_FS_XATTR is not set 9.302 -CONFIG_EXT3_FS=y 9.303 -CONFIG_EXT3_FS_XATTR=y 9.304 -# CONFIG_EXT3_FS_POSIX_ACL is not set 9.305 -# CONFIG_EXT3_FS_SECURITY is not set 9.306 -CONFIG_JBD=y 9.307 -# CONFIG_JBD_DEBUG is not set 9.308 -CONFIG_FS_MBCACHE=y 9.309 -CONFIG_REISERFS_FS=y 9.310 -# CONFIG_REISERFS_CHECK is not set 9.311 -# CONFIG_REISERFS_PROC_INFO is not set 9.312 -# CONFIG_REISERFS_FS_XATTR is not set 9.313 -# CONFIG_JFS_FS is not set 9.314 -# CONFIG_XFS_FS is not set 9.315 -# CONFIG_MINIX_FS is not set 9.316 -# CONFIG_ROMFS_FS is not set 9.317 -# CONFIG_QUOTA is not set 9.318 -CONFIG_AUTOFS_FS=y 9.319 -CONFIG_AUTOFS4_FS=y 9.320 - 9.321 -# 9.322 -# CD-ROM/DVD Filesystems 9.323 -# 9.324 -CONFIG_ISO9660_FS=y 9.325 -CONFIG_JOLIET=y 9.326 -CONFIG_ZISOFS=y 9.327 -CONFIG_ZISOFS_FS=y 9.328 -# CONFIG_UDF_FS is not set 9.329 - 9.330 -# 9.331 -# DOS/FAT/NT Filesystems 9.332 -# 9.333 -CONFIG_FAT_FS=m 9.334 -CONFIG_MSDOS_FS=m 9.335 -CONFIG_VFAT_FS=m 9.336 -CONFIG_FAT_DEFAULT_CODEPAGE=437 9.337 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 9.338 -# CONFIG_NTFS_FS is not set 9.339 - 9.340 -# 9.341 -# Pseudo filesystems 9.342 -# 9.343 -CONFIG_PROC_FS=y 9.344 -CONFIG_PROC_KCORE=y 9.345 -CONFIG_SYSFS=y 9.346 -# CONFIG_DEVFS_FS is not set 9.347 -CONFIG_DEVPTS_FS_XATTR=y 9.348 -# CONFIG_DEVPTS_FS_SECURITY is not set 9.349 -CONFIG_TMPFS=y 9.350 -# CONFIG_HUGETLBFS is not set 9.351 -# CONFIG_HUGETLB_PAGE is not set 9.352 -CONFIG_RAMFS=y 9.353 - 9.354 -# 9.355 -# Miscellaneous filesystems 9.356 -# 9.357 -# CONFIG_ADFS_FS is not set 9.358 -# CONFIG_AFFS_FS is not set 9.359 -# CONFIG_HFS_FS is not set 9.360 -# CONFIG_HFSPLUS_FS is not set 9.361 -# CONFIG_BEFS_FS is not set 9.362 -# CONFIG_BFS_FS is not set 9.363 -# CONFIG_EFS_FS is not set 9.364 -# CONFIG_CRAMFS is not set 9.365 -# CONFIG_VXFS_FS is not set 9.366 -# CONFIG_HPFS_FS is not set 9.367 -# CONFIG_QNX4FS_FS is not set 9.368 -# CONFIG_SYSV_FS is not set 9.369 -# CONFIG_UFS_FS is not set 9.370 - 9.371 -# 9.372 -# Network File Systems 9.373 -# 9.374 -CONFIG_NFS_FS=y 9.375 -CONFIG_NFS_V3=y 9.376 -# CONFIG_NFS_V4 is not set 9.377 -# CONFIG_NFS_DIRECTIO is not set 9.378 -# CONFIG_NFSD is not set 9.379 -CONFIG_ROOT_NFS=y 9.380 -CONFIG_LOCKD=y 9.381 -CONFIG_LOCKD_V4=y 9.382 -# CONFIG_EXPORTFS is not set 9.383 -CONFIG_SUNRPC=y 9.384 -# CONFIG_RPCSEC_GSS_KRB5 is not set 9.385 -# CONFIG_SMB_FS is not set 9.386 -# CONFIG_CIFS is not set 9.387 -# CONFIG_NCP_FS is not set 9.388 -# CONFIG_CODA_FS is not set 9.389 -# CONFIG_AFS_FS is not set 9.390 - 9.391 -# 9.392 -# Partition Types 9.393 -# 9.394 -# CONFIG_PARTITION_ADVANCED is not set 9.395 -CONFIG_MSDOS_PARTITION=y 9.396 - 9.397 -# 9.398 -# Native Language Support 9.399 -# 9.400 -CONFIG_NLS=y 9.401 -CONFIG_NLS_DEFAULT="iso8859-1" 9.402 -CONFIG_NLS_CODEPAGE_437=y 9.403 -# CONFIG_NLS_CODEPAGE_737 is not set 9.404 -# CONFIG_NLS_CODEPAGE_775 is not set 9.405 -# CONFIG_NLS_CODEPAGE_850 is not set 9.406 -# CONFIG_NLS_CODEPAGE_852 is not set 9.407 -# CONFIG_NLS_CODEPAGE_855 is not set 9.408 -# CONFIG_NLS_CODEPAGE_857 is not set 9.409 -# CONFIG_NLS_CODEPAGE_860 is not set 9.410 -# CONFIG_NLS_CODEPAGE_861 is not set 9.411 -# CONFIG_NLS_CODEPAGE_862 is not set 9.412 -# CONFIG_NLS_CODEPAGE_863 is not set 9.413 -# CONFIG_NLS_CODEPAGE_864 is not set 9.414 -# CONFIG_NLS_CODEPAGE_865 is not set 9.415 -# CONFIG_NLS_CODEPAGE_866 is not set 9.416 -# CONFIG_NLS_CODEPAGE_869 is not set 9.417 -# CONFIG_NLS_CODEPAGE_936 is not set 9.418 -# CONFIG_NLS_CODEPAGE_950 is not set 9.419 -# CONFIG_NLS_CODEPAGE_932 is not set 9.420 -# CONFIG_NLS_CODEPAGE_949 is not set 9.421 -# CONFIG_NLS_CODEPAGE_874 is not set 9.422 -# CONFIG_NLS_ISO8859_8 is not set 9.423 -# CONFIG_NLS_CODEPAGE_1250 is not set 9.424 -# CONFIG_NLS_CODEPAGE_1251 is not set 9.425 -# CONFIG_NLS_ASCII is not set 9.426 -CONFIG_NLS_ISO8859_1=y 9.427 -# CONFIG_NLS_ISO8859_2 is not set 9.428 -# CONFIG_NLS_ISO8859_3 is not set 9.429 -# CONFIG_NLS_ISO8859_4 is not set 9.430 -# CONFIG_NLS_ISO8859_5 is not set 9.431 -# CONFIG_NLS_ISO8859_6 is not set 9.432 -# CONFIG_NLS_ISO8859_7 is not set 9.433 -# CONFIG_NLS_ISO8859_9 is not set 9.434 -# CONFIG_NLS_ISO8859_13 is not set 9.435 -# CONFIG_NLS_ISO8859_14 is not set 9.436 -# CONFIG_NLS_ISO8859_15 is not set 9.437 -# CONFIG_NLS_KOI8_R is not set 9.438 -# CONFIG_NLS_KOI8_U is not set 9.439 -# CONFIG_NLS_UTF8 is not set 9.440 - 9.441 -# 9.442 -# Security options 9.443 -# 9.444 -# CONFIG_SECURITY is not set 9.445 - 9.446 -# 9.447 -# Cryptographic options 9.448 -# 9.449 -CONFIG_CRYPTO=y 9.450 -# CONFIG_CRYPTO_HMAC is not set 9.451 -# CONFIG_CRYPTO_NULL is not set 9.452 -# CONFIG_CRYPTO_MD4 is not set 9.453 -CONFIG_CRYPTO_MD5=m 9.454 -# CONFIG_CRYPTO_SHA1 is not set 9.455 -# CONFIG_CRYPTO_SHA256 is not set 9.456 -# CONFIG_CRYPTO_SHA512 is not set 9.457 -# CONFIG_CRYPTO_DES is not set 9.458 -# CONFIG_CRYPTO_BLOWFISH is not set 9.459 -# CONFIG_CRYPTO_TWOFISH is not set 9.460 -# CONFIG_CRYPTO_SERPENT is not set 9.461 -# CONFIG_CRYPTO_AES_586 is not set 9.462 -# CONFIG_CRYPTO_CAST5 is not set 9.463 -# CONFIG_CRYPTO_CAST6 is not set 9.464 -# CONFIG_CRYPTO_TEA is not set 9.465 -# CONFIG_CRYPTO_ARC4 is not set 9.466 -# CONFIG_CRYPTO_KHAZAD is not set 9.467 -# CONFIG_CRYPTO_DEFLATE is not set 9.468 -# CONFIG_CRYPTO_MICHAEL_MIC is not set 9.469 -CONFIG_CRYPTO_CRC32C=m 9.470 -# CONFIG_CRYPTO_TEST is not set 9.471 - 9.472 -# 9.473 -# Library routines 9.474 -# 9.475 -# CONFIG_CRC_CCITT is not set 9.476 -# CONFIG_CRC32 is not set 9.477 -CONFIG_LIBCRC32C=m 9.478 -CONFIG_ZLIB_INFLATE=y
10.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig Mon Oct 25 12:45:34 2004 +0000 10.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 10.3 @@ -1,937 +0,0 @@ 10.4 -# 10.5 -# For a description of the syntax of this configuration file, 10.6 -# see Documentation/kbuild/kconfig-language.txt. 10.7 -# 10.8 - 10.9 -menu "X86 Processor Configuration" 10.10 - 10.11 -config XENARCH 10.12 - string 10.13 - default i386 10.14 - 10.15 -config MMU 10.16 - bool 10.17 - default y 10.18 - 10.19 -config SBUS 10.20 - bool 10.21 - 10.22 -config UID16 10.23 - bool 10.24 - default y 10.25 - 10.26 -config GENERIC_ISA_DMA 10.27 - bool 10.28 - default y 10.29 - 10.30 - 10.31 -choice 10.32 - prompt "Processor family" 10.33 - default M686 10.34 - 10.35 -#config M386 10.36 -# bool "386" 10.37 -# ---help--- 10.38 -# This is the processor type of your CPU. This information is used for 10.39 -# optimizing purposes. In order to compile a kernel that can run on 10.40 -# all x86 CPU types (albeit not optimally fast), you can specify 10.41 -# "386" here. 10.42 -# 10.43 -# The kernel will not necessarily run on earlier architectures than 10.44 -# the one you have chosen, e.g. a Pentium optimized kernel will run on 10.45 -# a PPro, but not necessarily on a i486. 10.46 -# 10.47 -# Here are the settings recommended for greatest speed: 10.48 -# - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 10.49 -# 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels 10.50 -# will run on a 386 class machine. 10.51 -# - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or 10.52 -# SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. 10.53 -# - "586" for generic Pentium CPUs lacking the TSC 10.54 -# (time stamp counter) register. 10.55 -# - "Pentium-Classic" for the Intel Pentium. 10.56 -# - "Pentium-MMX" for the Intel Pentium MMX. 10.57 -# - "Pentium-Pro" for the Intel Pentium Pro. 10.58 -# - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron. 10.59 -# - "Pentium-III" for the Intel Pentium III or Coppermine Celeron. 10.60 -# - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron. 10.61 -# - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). 10.62 -# - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). 10.63 -# - "Crusoe" for the Transmeta Crusoe series. 10.64 -# - "Winchip-C6" for original IDT Winchip. 10.65 -# - "Winchip-2" for IDT Winchip 2. 10.66 -# - "Winchip-2A" for IDT Winchips with 3dNow! capabilities. 10.67 -# - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3. 10.68 -# - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above). 10.69 -# 10.70 -# If you don't know what to do, choose "386". 10.71 - 10.72 -#config M486 10.73 -# bool "486" 10.74 -# help 10.75 -# Select this for a 486 series processor, either Intel or one of the 10.76 -# compatible processors from AMD, Cyrix, IBM, or Intel. Includes DX, 10.77 -# DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or 10.78 -# U5S. 10.79 - 10.80 -#config M586 10.81 -# bool "586/K5/5x86/6x86/6x86MX" 10.82 -# help 10.83 -# Select this for an 586 or 686 series processor such as the AMD K5, 10.84 -# the Intel 5x86 or 6x86, or the Intel 6x86MX. This choice does not 10.85 -# assume the RDTSC (Read Time Stamp Counter) instruction. 10.86 - 10.87 -#config M586TSC 10.88 -# bool "Pentium-Classic" 10.89 -# help 10.90 -# Select this for a Pentium Classic processor with the RDTSC (Read 10.91 -# Time Stamp Counter) instruction for benchmarking. 10.92 - 10.93 -#config M586MMX 10.94 -# bool "Pentium-MMX" 10.95 -# help 10.96 -# Select this for a Pentium with the MMX graphics/multimedia 10.97 -# extended instructions. 10.98 - 10.99 -config M686 10.100 - bool "Pentium-Pro" 10.101 - help 10.102 - Select this for Intel Pentium Pro chips. This enables the use of 10.103 - Pentium Pro extended instructions, and disables the init-time guard 10.104 - against the f00f bug found in earlier Pentiums. 10.105 - 10.106 -config MPENTIUMII 10.107 - bool "Pentium-II/Celeron(pre-Coppermine)" 10.108 - help 10.109 - Select this for Intel chips based on the Pentium-II and 10.110 - pre-Coppermine Celeron core. This option enables an unaligned 10.111 - copy optimization, compiles the kernel with optimization flags 10.112 - tailored for the chip, and applies any applicable Pentium Pro 10.113 - optimizations. 10.114 - 10.115 -config MPENTIUMIII 10.116 - bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon" 10.117 - help 10.118 - Select this for Intel chips based on the Pentium-III and 10.119 - Celeron-Coppermine core. This option enables use of some 10.120 - extended prefetch instructions in addition to the Pentium II 10.121 - extensions. 10.122 - 10.123 -config MPENTIUMM 10.124 - bool "Pentium M" 10.125 - help 10.126 - Select this for Intel Pentium M (not Pentium-4 M) 10.127 - notebook chips. 10.128 - 10.129 -config MPENTIUM4 10.130 - bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon" 10.131 - help 10.132 - Select this for Intel Pentium 4 chips. This includes the 10.133 - Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M 10.134 - (not Pentium M) chips. This option enables compile flags 10.135 - optimized for the chip, uses the correct cache shift, and 10.136 - applies any applicable Pentium III optimizations. 10.137 - 10.138 -config MK6 10.139 - bool "K6/K6-II/K6-III" 10.140 - help 10.141 - Select this for an AMD K6-family processor. Enables use of 10.142 - some extended instructions, and passes appropriate optimization 10.143 - flags to GCC. 10.144 - 10.145 -config MK7 10.146 - bool "Athlon/Duron/K7" 10.147 - help 10.148 - Select this for an AMD Athlon K7-family processor. Enables use of 10.149 - some extended instructions, and passes appropriate optimization 10.150 - flags to GCC. 10.151 - 10.152 -config MK8 10.153 - bool "Opteron/Athlon64/Hammer/K8" 10.154 - help 10.155 - Select this for an AMD Opteron or Athlon64 Hammer-family processor. Enables 10.156 - use of some extended instructions, and passes appropriate optimization 10.157 - flags to GCC. 10.158 - 10.159 -config MCRUSOE 10.160 - bool "Crusoe" 10.161 - help 10.162 - Select this for a Transmeta Crusoe processor. Treats the processor 10.163 - like a 586 with TSC, and sets some GCC optimization flags (like a 10.164 - Pentium Pro with no alignment requirements). 10.165 - 10.166 -#config MWINCHIPC6 10.167 -# bool "Winchip-C6" 10.168 -# help 10.169 -# Select this for an IDT Winchip C6 chip. Linux and GCC 10.170 -# treat this chip as a 586TSC with some extended instructions 10.171 -# and alignment requirements. 10.172 - 10.173 -#config MWINCHIP2 10.174 -# bool "Winchip-2" 10.175 -# help 10.176 -# Select this for an IDT Winchip-2. Linux and GCC 10.177 -# treat this chip as a 586TSC with some extended instructions 10.178 -# and alignment requirements. 10.179 - 10.180 -#config MWINCHIP3D 10.181 -# bool "Winchip-2A/Winchip-3" 10.182 -# help 10.183 -# Select this for an IDT Winchip-2A or 3. Linux and GCC 10.184 -# treat this chip as a 586TSC with some extended instructions 10.185 -# and alignment reqirements. Also enable out of order memory 10.186 -# stores for this CPU, which can increase performance of some 10.187 -# operations. 10.188 - 10.189 -config MCYRIXIII 10.190 - bool "CyrixIII/VIA-C3" 10.191 - help 10.192 - Select this for a Cyrix III or C3 chip. Presently Linux and GCC 10.193 - treat this chip as a generic 586. Whilst the CPU is 686 class, 10.194 - it lacks the cmov extension which gcc assumes is present when 10.195 - generating 686 code. 10.196 - Note that Nehemiah (Model 9) and above will not boot with this 10.197 - kernel due to them lacking the 3DNow! instructions used in earlier 10.198 - incarnations of the CPU. 10.199 - 10.200 -config MVIAC3_2 10.201 - bool "VIA C3-2 (Nehemiah)" 10.202 - help 10.203 - Select this for a VIA C3 "Nehemiah". Selecting this enables usage 10.204 - of SSE and tells gcc to treat the CPU as a 686. 10.205 - Note, this kernel will not boot on older (pre model 9) C3s. 10.206 - 10.207 -endchoice 10.208 - 10.209 -config X86_GENERIC 10.210 - bool "Generic x86 support" 10.211 - help 10.212 - Instead of just including optimizations for the selected 10.213 - x86 variant (e.g. PII, Crusoe or Athlon), include some more 10.214 - generic optimizations as well. This will make the kernel 10.215 - perform better on x86 CPUs other than that selected. 10.216 - 10.217 - This is really intended for distributors who need more 10.218 - generic optimizations. 10.219 - 10.220 -# 10.221 -# Define implied options from the CPU selection here 10.222 -# 10.223 -config X86_CMPXCHG 10.224 - bool 10.225 - depends on !M386 10.226 - default y 10.227 - 10.228 -config X86_XADD 10.229 - bool 10.230 - depends on !M386 10.231 - default y 10.232 - 10.233 -config X86_L1_CACHE_SHIFT 10.234 - int 10.235 - default "7" if MPENTIUM4 || X86_GENERIC 10.236 - default "4" if X86_ELAN || M486 || M386 10.237 - default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 10.238 - default "6" if MK7 || MK8 || MPENTIUMM 10.239 - 10.240 -config RWSEM_GENERIC_SPINLOCK 10.241 - bool 10.242 - depends on M386 10.243 - default y 10.244 - 10.245 -config RWSEM_XCHGADD_ALGORITHM 10.246 - bool 10.247 - depends on !M386 10.248 - default y 10.249 - 10.250 -config X86_PPRO_FENCE 10.251 - bool 10.252 - depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 10.253 - default y 10.254 - 10.255 -config X86_F00F_BUG 10.256 - bool 10.257 - depends on M586MMX || M586TSC || M586 || M486 || M386 10.258 - default y 10.259 - 10.260 -config X86_WP_WORKS_OK 10.261 - bool 10.262 - depends on !M386 10.263 - default y 10.264 - 10.265 -config X86_INVLPG 10.266 - bool 10.267 - depends on !M386 10.268 - default y 10.269 - 10.270 -config X86_BSWAP 10.271 - bool 10.272 - depends on !M386 10.273 - default y 10.274 - 10.275 -config X86_POPAD_OK 10.276 - bool 10.277 - depends on !M386 10.278 - default y 10.279 - 10.280 -config X86_ALIGNMENT_16 10.281 - bool 10.282 - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 10.283 - default y 10.284 - 10.285 -config X86_GOOD_APIC 10.286 - bool 10.287 - depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 10.288 - default y 10.289 - 10.290 -config X86_INTEL_USERCOPY 10.291 - bool 10.292 - depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 10.293 - default y 10.294 - 10.295 -config X86_USE_PPRO_CHECKSUM 10.296 - bool 10.297 - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 10.298 - default y 10.299 - 10.300 -config X86_USE_3DNOW 10.301 - bool 10.302 - depends on MCYRIXIII || MK7 10.303 - default y 10.304 - 10.305 -config X86_OOSTORE 10.306 - bool 10.307 - depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR 10.308 - default y 10.309 - 10.310 -config HPET_TIMER 10.311 - bool 10.312 - default n 10.313 -#config HPET_TIMER 10.314 -# bool "HPET Timer Support" 10.315 -# help 10.316 -# This enables the use of the HPET for the kernel's internal timer. 10.317 -# HPET is the next generation timer replacing legacy 8254s. 10.318 -# You can safely choose Y here. However, HPET will only be 10.319 -# activated if the platform and the BIOS support this feature. 10.320 -# Otherwise the 8254 will be used for timing services. 10.321 -# 10.322 -# Choose N to continue using the legacy 8254 timer. 10.323 - 10.324 -config HPET_EMULATE_RTC 10.325 - def_bool HPET_TIMER && RTC=y 10.326 - 10.327 -config SMP 10.328 - bool 10.329 - default n 10.330 -#config SMP 10.331 -# bool "Symmetric multi-processing support" 10.332 -# ---help--- 10.333 -# This enables support for systems with more than one CPU. If you have 10.334 -# a system with only one CPU, like most personal computers, say N. If 10.335 -# you have a system with more than one CPU, say Y. 10.336 -# 10.337 -# If you say N here, the kernel will run on single and multiprocessor 10.338 -# machines, but will use only one CPU of a multiprocessor machine. If 10.339 -# you say Y here, the kernel will run on many, but not all, 10.340 -# singleprocessor machines. On a singleprocessor machine, the kernel 10.341 -# will run faster if you say N here. 10.342 -# 10.343 -# Note that if you say Y here and choose architecture "586" or 10.344 -# "Pentium" under "Processor family", the kernel will not work on 486 10.345 -# architectures. Similarly, multiprocessor kernels for the "PPro" 10.346 -# architecture may not work on all Pentium based boards. 10.347 -# 10.348 -# People using multiprocessor machines who say Y here should also say 10.349 -# Y to "Enhanced Real Time Clock Support", below. The "Advanced Power 10.350 -# Management" code will be disabled if you say Y here. 10.351 -# 10.352 -# See also the <file:Documentation/smp.txt>, 10.353 -# <file:Documentation/i386/IO-APIC.txt>, 10.354 -# <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at 10.355 -# <http://www.tldp.org/docs.html#howto>. 10.356 -# 10.357 -# If you don't know what to do here, say N. 10.358 - 10.359 -config NR_CPUS 10.360 - int "Maximum number of CPUs (2-255)" 10.361 - range 2 255 10.362 - depends on SMP 10.363 - default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 10.364 - default "8" 10.365 - help 10.366 - This allows you to specify the maximum number of CPUs which this 10.367 - kernel will support. The maximum supported value is 255 and the 10.368 - minimum value which makes sense is 2. 10.369 - 10.370 - This is purely to save memory - each supported CPU adds 10.371 - approximately eight kilobytes to the kernel image. 10.372 - 10.373 -config SCHED_SMT 10.374 - bool "SMT (Hyperthreading) scheduler support" 10.375 - depends on SMP 10.376 - default off 10.377 - help 10.378 - SMT scheduler support improves the CPU scheduler's decision making 10.379 - when dealing with Intel Pentium 4 chips with HyperThreading at a 10.380 - cost of slightly increased overhead in some places. If unsure say 10.381 - N here. 10.382 - 10.383 -config PREEMPT 10.384 - bool "Preemptible Kernel" 10.385 - help 10.386 - This option reduces the latency of the kernel when reacting to 10.387 - real-time or interactive events by allowing a low priority process to 10.388 - be preempted even if it is in kernel mode executing a system call. 10.389 - This allows applications to run more reliably even when the system is 10.390 - under load. 10.391 - 10.392 - Say Y here if you are building a kernel for a desktop, embedded 10.393 - or real-time system. Say N if you are unsure. 10.394 - 10.395 -#config X86_TSC 10.396 -# bool 10.397 -# depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ 10.398 -# default y 10.399 - 10.400 -#config X86_MCE 10.401 -# bool "Machine Check Exception" 10.402 -# depends on !X86_VOYAGER 10.403 -# ---help--- 10.404 -# Machine Check Exception support allows the processor to notify the 10.405 -# kernel if it detects a problem (e.g. overheating, component failure). 10.406 -# The action the kernel takes depends on the severity of the problem, 10.407 -# ranging from a warning message on the console, to halting the machine. 10.408 -# Your processor must be a Pentium or newer to support this - check the 10.409 -# flags in /proc/cpuinfo for mce. Note that some older Pentium systems 10.410 -# have a design flaw which leads to false MCE events - hence MCE is 10.411 -# disabled on all P5 processors, unless explicitly enabled with "mce" 10.412 -# as a boot argument. Similarly, if MCE is built in and creates a 10.413 -# problem on some new non-standard machine, you can boot with "nomce" 10.414 -# to disable it. MCE support simply ignores non-MCE processors like 10.415 -# the 386 and 486, so nearly everyone can say Y here. 10.416 - 10.417 -#config X86_MCE_NONFATAL 10.418 -# tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" 10.419 -# depends on X86_MCE 10.420 -# help 10.421 -# Enabling this feature starts a timer that triggers every 5 seconds which 10.422 -# will look at the machine check registers to see if anything happened. 10.423 -# Non-fatal problems automatically get corrected (but still logged). 10.424 -# Disable this if you don't want to see these messages. 10.425 -# Seeing the messages this option prints out may be indicative of dying hardware, 10.426 -# or out-of-spec (ie, overclocked) hardware. 10.427 -# This option only does something on certain CPUs. 10.428 -# (AMD Athlon/Duron and Intel Pentium 4) 10.429 - 10.430 -#config X86_MCE_P4THERMAL 10.431 -# bool "check for P4 thermal throttling interrupt." 10.432 -# depends on X86_MCE && (X86_UP_APIC || SMP) 10.433 -# help 10.434 -# Enabling this feature will cause a message to be printed when the P4 10.435 -# enters thermal throttling. 10.436 - 10.437 -#config MICROCODE 10.438 -# tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support" 10.439 -# ---help--- 10.440 -# If you say Y here and also to "/dev file system support" in the 10.441 -# 'File systems' section, you will be able to update the microcode on 10.442 -# Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II, 10.443 -# Pentium III, Pentium 4, Xeon etc. You will obviously need the 10.444 -# actual microcode binary data itself which is not shipped with the 10.445 -# Linux kernel. 10.446 -# 10.447 -# For latest news and information on obtaining all the required 10.448 -# ingredients for this driver, check: 10.449 -# <http://www.urbanmyth.org/microcode/>. 10.450 -# 10.451 -# To compile this driver as a module, choose M here: the 10.452 -# module will be called microcode. 10.453 - 10.454 -#config X86_MSR 10.455 -# tristate "/dev/cpu/*/msr - Model-specific register support" 10.456 -# help 10.457 -# This device gives privileged processes access to the x86 10.458 -# Model-Specific Registers (MSRs). It is a character device with 10.459 -# major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. 10.460 -# MSR accesses are directed to a specific CPU on multi-processor 10.461 -# systems. 10.462 - 10.463 -config X86_CPUID 10.464 - tristate "/dev/cpu/*/cpuid - CPU information support" 10.465 - help 10.466 - This device gives processes access to the x86 CPUID instruction to 10.467 - be executed on a specific processor. It is a character device 10.468 - with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 10.469 - /dev/cpu/31/cpuid. 10.470 - 10.471 -source "drivers/firmware/Kconfig" 10.472 - 10.473 -choice 10.474 - prompt "High Memory Support" 10.475 - default NOHIGHMEM 10.476 - 10.477 -config NOHIGHMEM 10.478 - bool "off" 10.479 - ---help--- 10.480 - Linux can use up to 64 Gigabytes of physical memory on x86 systems. 10.481 - However, the address space of 32-bit x86 processors is only 4 10.482 - Gigabytes large. That means that, if you have a large amount of 10.483 - physical memory, not all of it can be "permanently mapped" by the 10.484 - kernel. The physical memory that's not permanently mapped is called 10.485 - "high memory". 10.486 - 10.487 - If you are compiling a kernel which will never run on a machine with 10.488 - more than 1 Gigabyte total physical RAM, answer "off" here (default 10.489 - choice and suitable for most users). This will result in a "3GB/1GB" 10.490 - split: 3GB are mapped so that each process sees a 3GB virtual memory 10.491 - space and the remaining part of the 4GB virtual memory space is used 10.492 - by the kernel to permanently map as much physical memory as 10.493 - possible. 10.494 - 10.495 - If the machine has between 1 and 4 Gigabytes physical RAM, then 10.496 - answer "4GB" here. 10.497 - 10.498 - If more than 4 Gigabytes is used then answer "64GB" here. This 10.499 - selection turns Intel PAE (Physical Address Extension) mode on. 10.500 - PAE implements 3-level paging on IA32 processors. PAE is fully 10.501 - supported by Linux, PAE mode is implemented on all recent Intel 10.502 - processors (Pentium Pro and better). NOTE: If you say "64GB" here, 10.503 - then the kernel will not boot on CPUs that don't support PAE! 10.504 - 10.505 - The actual amount of total physical memory will either be 10.506 - auto detected or can be forced by using a kernel command line option 10.507 - such as "mem=256M". (Try "man bootparam" or see the documentation of 10.508 - your boot loader (lilo or loadlin) about how to pass options to the 10.509 - kernel at boot time.) 10.510 - 10.511 - If unsure, say "off". 10.512 - 10.513 -config HIGHMEM4G 10.514 - bool "4GB" 10.515 - help 10.516 - Select this if you have a 32-bit processor and between 1 and 4 10.517 - gigabytes of physical RAM. 10.518 - 10.519 -#config HIGHMEM64G 10.520 -# bool "64GB" 10.521 -# help 10.522 -# Select this if you have a 32-bit processor and more than 4 10.523 -# gigabytes of physical RAM. 10.524 - 10.525 -endchoice 10.526 - 10.527 -config HIGHMEM 10.528 - bool 10.529 - depends on HIGHMEM64G || HIGHMEM4G 10.530 - default y 10.531 - 10.532 -config X86_PAE 10.533 - bool 10.534 - depends on HIGHMEM64G 10.535 - default y 10.536 - 10.537 -# Common NUMA Features 10.538 -config NUMA 10.539 - bool "Numa Memory Allocation and Scheduler Support" 10.540 - depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI)) 10.541 - default n if X86_PC 10.542 - default y if (X86_NUMAQ || X86_SUMMIT) 10.543 - 10.544 -# Need comments to help the hapless user trying to turn on NUMA support 10.545 -comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" 10.546 - depends on X86_NUMAQ && (!HIGHMEM64G || !SMP) 10.547 - 10.548 -comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 10.549 - depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) 10.550 - 10.551 -config DISCONTIGMEM 10.552 - bool 10.553 - depends on NUMA 10.554 - default y 10.555 - 10.556 -config HAVE_ARCH_BOOTMEM_NODE 10.557 - bool 10.558 - depends on NUMA 10.559 - default y 10.560 - 10.561 -#config HIGHPTE 10.562 -# bool "Allocate 3rd-level pagetables from highmem" 10.563 -# depends on HIGHMEM4G || HIGHMEM64G 10.564 -# help 10.565 -# The VM uses one page table entry for each page of physical memory. 10.566 -# For systems with a lot of RAM, this can be wasteful of precious 10.567 -# low memory. Setting this option will put user-space page table 10.568 -# entries in high memory. 10.569 - 10.570 -#config MTRR 10.571 -# bool "MTRR (Memory Type Range Register) support" 10.572 -# ---help--- 10.573 -# On Intel P6 family processors (Pentium Pro, Pentium II and later) 10.574 -# the Memory Type Range Registers (MTRRs) may be used to control 10.575 -# processor access to memory ranges. This is most useful if you have 10.576 -# a video (VGA) card on a PCI or AGP bus. Enabling write-combining 10.577 -# allows bus write transfers to be combined into a larger transfer 10.578 -# before bursting over the PCI/AGP bus. This can increase performance 10.579 -# of image write operations 2.5 times or more. Saying Y here creates a 10.580 -# /proc/mtrr file which may be used to manipulate your processor's 10.581 -# MTRRs. Typically the X server should use this. 10.582 -# 10.583 -# This code has a reasonably generic interface so that similar 10.584 -# control registers on other processors can be easily supported 10.585 -# as well: 10.586 -# 10.587 -# The Cyrix 6x86, 6x86MX and M II processors have Address Range 10.588 -# Registers (ARRs) which provide a similar functionality to MTRRs. For 10.589 -# these, the ARRs are used to emulate the MTRRs. 10.590 -# The AMD K6-2 (stepping 8 and above) and K6-3 processors have two 10.591 -# MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing 10.592 -# write-combining. All of these processors are supported by this code 10.593 -# and it makes sense to say Y here if you have one of them. 10.594 -# 10.595 -# Saying Y here also fixes a problem with buggy SMP BIOSes which only 10.596 -# set the MTRRs for the boot CPU and not for the secondary CPUs. This 10.597 -# can lead to all sorts of problems, so it's good to say Y here. 10.598 -# 10.599 -# You can safely say Y even if your machine doesn't have MTRRs, you'll 10.600 -# just add about 9 KB to your kernel. 10.601 -# 10.602 -# See <file:Documentation/mtrr.txt> for more information. 10.603 - 10.604 -config IRQBALANCE 10.605 - bool "Enable kernel irq balancing" 10.606 - depends on SMP && X86_IO_APIC 10.607 - default y 10.608 - help 10.609 - The default yes will allow the kernel to do irq load balancing. 10.610 - Saying no will keep the kernel from doing irq load balancing. 10.611 - 10.612 -config HAVE_DEC_LOCK 10.613 - bool 10.614 - depends on (SMP || PREEMPT) && X86_CMPXCHG 10.615 - default y 10.616 - 10.617 -# turning this on wastes a bunch of space. 10.618 -# Summit needs it only when NUMA is on 10.619 -config BOOT_IOREMAP 10.620 - bool 10.621 - depends on (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI)) 10.622 - default y 10.623 - 10.624 -config REGPARM 10.625 - bool "Use register arguments (EXPERIMENTAL)" 10.626 - depends on EXPERIMENTAL 10.627 - default n 10.628 - help 10.629 - Compile the kernel with -mregparm=3. This uses an different ABI 10.630 - and passes the first three arguments of a function call in registers. 10.631 - This will probably break binary only modules. 10.632 - 10.633 - This feature is only enabled for gcc-3.0 and later - earlier compilers 10.634 - generate incorrect output with certain kernel constructs when 10.635 - -mregparm=3 is used. 10.636 - 10.637 - 10.638 -if XEN_PHYSDEV_ACCESS 10.639 - 10.640 -menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" 10.641 - 10.642 -config X86_VISWS_APIC 10.643 - bool 10.644 - depends on X86_VISWS 10.645 - default y 10.646 - 10.647 -config X86_LOCAL_APIC 10.648 - bool 10.649 - depends on (X86_VISWS || SMP) && !X86_VOYAGER 10.650 - default y 10.651 - 10.652 -config X86_IO_APIC 10.653 - bool 10.654 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 10.655 - default y 10.656 - 10.657 -config PCI 10.658 - bool "PCI support" if !X86_VISWS 10.659 - depends on !X86_VOYAGER 10.660 - default y if X86_VISWS 10.661 - help 10.662 - Find out whether you have a PCI motherboard. PCI is the name of a 10.663 - bus system, i.e. the way the CPU talks to the other stuff inside 10.664 - your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 10.665 - VESA. If you have PCI, say Y, otherwise N. 10.666 - 10.667 - The PCI-HOWTO, available from 10.668 - <http://www.tldp.org/docs.html#howto>, contains valuable 10.669 - information about which PCI hardware does work under Linux and which 10.670 - doesn't. 10.671 - 10.672 -#choice 10.673 -# prompt "PCI access mode" 10.674 -# depends on PCI && !X86_VISWS 10.675 -# default PCI_GOANY 10.676 -# ---help--- 10.677 -# On PCI systems, the BIOS can be used to detect the PCI devices and 10.678 -# determine their configuration. However, some old PCI motherboards 10.679 -# have BIOS bugs and may crash if this is done. Also, some embedded 10.680 -# PCI-based systems don't have any BIOS at all. Linux can also try to 10.681 -# detect the PCI hardware directly without using the BIOS. 10.682 -# 10.683 -# With this option, you can specify how Linux should detect the 10.684 -# PCI devices. If you choose "BIOS", the BIOS will be used, 10.685 -# if you choose "Direct", the BIOS won't be used, and if you 10.686 -# choose "MMConfig", then PCI Express MMCONFIG will be used. 10.687 -# If you choose "Any", the kernel will try MMCONFIG, then the 10.688 -# direct access method and falls back to the BIOS if that doesn't 10.689 -# work. If unsure, go with the default, which is "Any". 10.690 -# 10.691 -#config PCI_GOBIOS 10.692 -# bool "BIOS" 10.693 -# 10.694 -#config PCI_GOMMCONFIG 10.695 -# bool "MMConfig" 10.696 -# 10.697 -#config PCI_GODIRECT 10.698 -# bool "Direct" 10.699 -# 10.700 -#config PCI_GOANY 10.701 -# bool "Any" 10.702 -# 10.703 -#endchoice 10.704 -# 10.705 -#config PCI_BIOS 10.706 -# bool 10.707 -# depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY) 10.708 -# default y 10.709 -# 10.710 -#config PCI_DIRECT 10.711 -# bool 10.712 -# depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS) 10.713 -# default y 10.714 - 10.715 -config PCI_DIRECT 10.716 - bool 10.717 - depends on PCI 10.718 - default y 10.719 - 10.720 -source "drivers/pci/Kconfig" 10.721 - 10.722 -config ISA 10.723 - bool "ISA support" 10.724 - depends on !(X86_VOYAGER || X86_VISWS) 10.725 - help 10.726 - Find out whether you have ISA slots on your motherboard. ISA is the 10.727 - name of a bus system, i.e. the way the CPU talks to the other stuff 10.728 - inside your box. Other bus systems are PCI, EISA, MicroChannel 10.729 - (MCA) or VESA. ISA is an older system, now being displaced by PCI; 10.730 - newer boards don't support it. If you have ISA, say Y, otherwise N. 10.731 - 10.732 -config EISA 10.733 - bool "EISA support" 10.734 - depends on ISA 10.735 - ---help--- 10.736 - The Extended Industry Standard Architecture (EISA) bus was 10.737 - developed as an open alternative to the IBM MicroChannel bus. 10.738 - 10.739 - The EISA bus provided some of the features of the IBM MicroChannel 10.740 - bus while maintaining backward compatibility with cards made for 10.741 - the older ISA bus. The EISA bus saw limited use between 1988 and 10.742 - 1995 when it was made obsolete by the PCI bus. 10.743 - 10.744 - Say Y here if you are building a kernel for an EISA-based machine. 10.745 - 10.746 - Otherwise, say N. 10.747 - 10.748 -source "drivers/eisa/Kconfig" 10.749 - 10.750 -config MCA 10.751 - bool "MCA support" 10.752 - depends on !(X86_VISWS || X86_VOYAGER) 10.753 - help 10.754 - MicroChannel Architecture is found in some IBM PS/2 machines and 10.755 - laptops. It is a bus system similar to PCI or ISA. See 10.756 - <file:Documentation/mca.txt> (and especially the web page given 10.757 - there) before attempting to build an MCA bus kernel. 10.758 - 10.759 -config MCA 10.760 - depends on X86_VOYAGER 10.761 - default y if X86_VOYAGER 10.762 - 10.763 -source "drivers/mca/Kconfig" 10.764 - 10.765 -config SCx200 10.766 - tristate "NatSemi SCx200 support" 10.767 - depends on !X86_VOYAGER 10.768 - help 10.769 - This provides basic support for the National Semiconductor SCx200 10.770 - processor. Right now this is just a driver for the GPIO pins. 10.771 - 10.772 - If you don't know what to do here, say N. 10.773 - 10.774 - This support is also available as a module. If compiled as a 10.775 - module, it will be called scx200. 10.776 - 10.777 -source "drivers/pcmcia/Kconfig" 10.778 - 10.779 -source "drivers/pci/hotplug/Kconfig" 10.780 - 10.781 -endmenu 10.782 - 10.783 -endif 10.784 - 10.785 -menu "Kernel hacking" 10.786 - 10.787 -config DEBUG_KERNEL 10.788 - bool "Kernel debugging" 10.789 - help 10.790 - Say Y here if you are developing drivers or trying to debug and 10.791 - identify kernel problems. 10.792 - 10.793 -config EARLY_PRINTK 10.794 - bool "Early printk" if EMBEDDED 10.795 - default y 10.796 - help 10.797 - Write kernel log output directly into the VGA buffer or to a serial 10.798 - port. 10.799 - 10.800 - This is useful for kernel debugging when your machine crashes very 10.801 - early before the console code is initialized. For normal operation 10.802 - it is not recommended because it looks ugly and doesn't cooperate 10.803 - with klogd/syslogd or the X server. You should normally N here, 10.804 - unless you want to debug such a crash. 10.805 - 10.806 -config DEBUG_STACKOVERFLOW 10.807 - bool "Check for stack overflows" 10.808 - depends on DEBUG_KERNEL 10.809 - 10.810 -config DEBUG_STACK_USAGE 10.811 - bool "Stack utilization instrumentation" 10.812 - depends on DEBUG_KERNEL 10.813 - help 10.814 - Enables the display of the minimum amount of free stack which each 10.815 - task has ever had available in the sysrq-T and sysrq-P debug output. 10.816 - 10.817 - This option will slow down process creation somewhat. 10.818 - 10.819 -config DEBUG_SLAB 10.820 - bool "Debug memory allocations" 10.821 - depends on DEBUG_KERNEL 10.822 - help 10.823 - Say Y here to have the kernel do limited verification on memory 10.824 - allocation as well as poisoning memory on free to catch use of freed 10.825 - memory. 10.826 - 10.827 -config MAGIC_SYSRQ 10.828 - bool "Magic SysRq key" 10.829 - depends on DEBUG_KERNEL 10.830 - help 10.831 - If you say Y here, you will have some control over the system even 10.832 - if the system crashes for example during kernel debugging (e.g., you 10.833 - will be able to flush the buffer cache to disk, reboot the system 10.834 - immediately or dump some status information). This is accomplished 10.835 - by pressing various keys while holding SysRq (Alt+PrintScreen). It 10.836 - also works on a serial console (on PC hardware at least), if you 10.837 - send a BREAK and then within 5 seconds a command keypress. The 10.838 - keys are documented in <file:Documentation/sysrq.txt>. Don't say Y 10.839 - unless you really know what this hack does. 10.840 - 10.841 -config DEBUG_SPINLOCK 10.842 - bool "Spinlock debugging" 10.843 - depends on DEBUG_KERNEL 10.844 - help 10.845 - Say Y here and build SMP to catch missing spinlock initialization 10.846 - and certain other kinds of spinlock errors commonly made. This is 10.847 - best used in conjunction with the NMI watchdog so that spinlock 10.848 - deadlocks are also debuggable. 10.849 - 10.850 -config DEBUG_PAGEALLOC 10.851 - bool "Page alloc debugging" 10.852 - depends on DEBUG_KERNEL 10.853 - help 10.854 - Unmap pages from the kernel linear mapping after free_pages(). 10.855 - This results in a large slowdown, but helps to find certain types 10.856 - of memory corruptions. 10.857 - 10.858 -config DEBUG_HIGHMEM 10.859 - bool "Highmem debugging" 10.860 - depends on DEBUG_KERNEL && HIGHMEM 10.861 - help 10.862 - This options enables addition error checking for high memory systems. 10.863 - Disable for production systems. 10.864 - 10.865 -config DEBUG_INFO 10.866 - bool "Compile the kernel with debug info" 10.867 - depends on DEBUG_KERNEL 10.868 - help 10.869 - If you say Y here the resulting kernel image will include 10.870 - debugging info resulting in a larger kernel image. 10.871 - Say Y here only if you plan to use gdb to debug the kernel. 10.872 - If you don't debug the kernel, you can say N. 10.873 - 10.874 -config DEBUG_SPINLOCK_SLEEP 10.875 - bool "Sleep-inside-spinlock checking" 10.876 - help 10.877 - If you say Y here, various routines which may sleep will become very 10.878 - noisy if they are called with a spinlock held. 10.879 - 10.880 -config FRAME_POINTER 10.881 - bool "Compile the kernel with frame pointers" 10.882 - help 10.883 - If you say Y here the resulting kernel image will be slightly larger 10.884 - and slower, but it will give very useful debugging information. 10.885 - If you don't debug the kernel, you can say N, but we may not be able 10.886 - to solve problems without frame pointers. 10.887 - 10.888 -config 4KSTACKS 10.889 - bool "Use 4Kb for kernel stacks instead of 8Kb" 10.890 - help 10.891 - If you say Y here the kernel will use a 4Kb stacksize for the 10.892 - kernel stack attached to each process/thread. This facilitates 10.893 - running more threads on a system and also reduces the pressure 10.894 - on the VM subsystem for higher order allocations. This option 10.895 - will also use IRQ stacks to compensate for the reduced stackspace. 10.896 - 10.897 -config X86_FIND_SMP_CONFIG 10.898 - bool 10.899 - depends on X86_LOCAL_APIC || X86_VOYAGER 10.900 - default y 10.901 - 10.902 -config X86_MPPARSE 10.903 - bool 10.904 - depends on X86_LOCAL_APIC && !X86_VISWS 10.905 - default y 10.906 - 10.907 -endmenu 10.908 - 10.909 -config X86_SMP 10.910 - bool 10.911 - depends on SMP && !X86_VOYAGER 10.912 - default y 10.913 - 10.914 -config X86_HT 10.915 - bool 10.916 - depends on SMP && !(X86_VISWS || X86_VOYAGER) 10.917 - default y 10.918 - 10.919 -config X86_BIOS_REBOOT 10.920 - bool 10.921 - depends on !(X86_VISWS || X86_VOYAGER) 10.922 - default y 10.923 - 10.924 -config X86_TRAMPOLINE 10.925 - bool 10.926 - depends on X86_SMP || (X86_VOYAGER && SMP) 10.927 - default y 10.928 - 10.929 -# std_resources is overridden for pc9800, but that's not 10.930 -# a currently selectable arch choice 10.931 -config X86_STD_RESOURCES 10.932 - bool 10.933 - default y 10.934 - 10.935 -config PC 10.936 - bool 10.937 - depends on X86 && !EMBEDDED 10.938 - default y 10.939 - 10.940 -endmenu
11.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile Mon Oct 25 12:45:34 2004 +0000 11.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 11.3 @@ -1,98 +0,0 @@ 11.4 -# 11.5 -# i386/Makefile 11.6 -# 11.7 -# This file is included by the global makefile so that you can add your own 11.8 -# architecture-specific flags and dependencies. Remember to do have actions 11.9 -# for "archclean" cleaning up for this architecture. 11.10 -# 11.11 -# This file is subject to the terms and conditions of the GNU General Public 11.12 -# License. See the file "COPYING" in the main directory of this archive 11.13 -# for more details. 11.14 -# 11.15 -# Copyright (C) 1994 by Linus Torvalds 11.16 -# 11.17 -# 19990713 Artur Skawina <skawina@geocities.com> 11.18 -# Added '-march' and '-mpreferred-stack-boundary' support 11.19 -# 11.20 - 11.21 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 11.22 - 11.23 -LDFLAGS := -m elf_i386 11.24 -LDFLAGS_vmlinux := 11.25 -CHECK := $(CHECK) -D__i386__=1 11.26 - 11.27 -CFLAGS += -pipe -msoft-float 11.28 - 11.29 -# prevent gcc from keeping the stack 16 byte aligned 11.30 -CFLAGS += $(call check_gcc,-mpreferred-stack-boundary=2,) 11.31 - 11.32 -align := $(subst -functions=0,,$(call check_gcc,-falign-functions=0,-malign-functions=0)) 11.33 - 11.34 -cflags-$(CONFIG_M386) += -march=i386 11.35 -cflags-$(CONFIG_M486) += -march=i486 11.36 -cflags-$(CONFIG_M586) += -march=i586 11.37 -cflags-$(CONFIG_M586TSC) += -march=i586 11.38 -cflags-$(CONFIG_M586MMX) += $(call check_gcc,-march=pentium-mmx,-march=i586) 11.39 -cflags-$(CONFIG_M686) += -march=i686 11.40 -cflags-$(CONFIG_MPENTIUMII) += $(call check_gcc,-march=pentium2,-march=i686) 11.41 -cflags-$(CONFIG_MPENTIUMIII) += $(call check_gcc,-march=pentium3,-march=i686) 11.42 -cflags-$(CONFIG_MPENTIUMM) += $(call check_gcc,-march=pentium3,-march=i686) 11.43 -cflags-$(CONFIG_MPENTIUM4) += $(call check_gcc,-march=pentium4,-march=i686) 11.44 -cflags-$(CONFIG_MK6) += -march=k6 11.45 -# Please note, that patches that add -march=athlon-xp and friends are pointless. 11.46 -# They make zero difference whatsosever to performance at this time. 11.47 -cflags-$(CONFIG_MK7) += $(call check_gcc,-march=athlon,-march=i686 $(align)-functions=4) 11.48 -cflags-$(CONFIG_MK8) += $(call check_gcc,-march=k8,$(call check_gcc,-march=athlon,-march=i686 $(align)-functions=4)) 11.49 -cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 11.50 -cflags-$(CONFIG_MWINCHIPC6) += $(call check_gcc,-march=winchip-c6,-march=i586) 11.51 -cflags-$(CONFIG_MWINCHIP2) += $(call check_gcc,-march=winchip2,-march=i586) 11.52 -cflags-$(CONFIG_MWINCHIP3D) += $(call check_gcc,-march=winchip2,-march=i586) 11.53 -cflags-$(CONFIG_MCYRIXIII) += $(call check_gcc,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 11.54 -cflags-$(CONFIG_MVIAC3_2) += $(call check_gcc,-march=c3-2,-march=i686) 11.55 - 11.56 -# AMD Elan support 11.57 -cflags-$(CONFIG_X86_ELAN) += -march=i486 11.58 - 11.59 -# -mregparm=3 works ok on gcc-3.0 and later 11.60 -# 11.61 -GCC_VERSION := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) 11.62 -cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) 11.63 - 11.64 -# Disable unit-at-a-time mode, it makes gcc use a lot more stack 11.65 -# due to the lack of sharing of stacklots. 11.66 -CFLAGS += $(call check_gcc,-fno-unit-at-a-time,) 11.67 - 11.68 -CFLAGS += $(cflags-y) 11.69 - 11.70 -head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o 11.71 - 11.72 -libs-y += arch/i386/lib/ 11.73 -core-y += arch/xen/i386/kernel/ \ 11.74 - arch/xen/i386/mm/ \ 11.75 - arch/i386/crypto/ 11.76 -# \ 11.77 -# arch/xen/$(mcore-y)/ 11.78 -drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ 11.79 -drivers-$(CONFIG_PCI) += arch/xen/i386/pci/ 11.80 -# must be linked after kernel/ 11.81 -drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ 11.82 -drivers-$(CONFIG_PM) += arch/i386/power/ 11.83 - 11.84 -# for clean 11.85 -obj- += kernel/ mm/ pci/ 11.86 -#obj- += ../../i386/lib/ ../../i386/mm/ 11.87 -#../../i386/$(mcore-y)/ 11.88 -#obj- += ../../i386/pci/ ../../i386/oprofile/ ../../i386/power/ 11.89 - 11.90 -xenflags-y += -Iinclude/asm-xen/asm-i386/mach-xen 11.91 -CFLAGS += $(xenflags-y) 11.92 -AFLAGS += $(xenflags-y) 11.93 - 11.94 -prepare: include/asm-$(XENARCH)/asm_offsets.h 11.95 -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h 11.96 - 11.97 -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \ 11.98 - include/linux/version.h include/config/MARKER 11.99 - 11.100 -include/asm-$(XENARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s 11.101 - $(call filechk,gen-asm-offsets)
12.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile Mon Oct 25 12:45:34 2004 +0000 12.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 12.3 @@ -1,91 +0,0 @@ 12.4 -# 12.5 -# Makefile for the linux kernel. 12.6 -# 12.7 - 12.8 -XENARCH := $(subst ",,$(CONFIG_XENARCH)) 12.9 - 12.10 -CFLAGS += -Iarch/$(XENARCH)/kernel 12.11 - 12.12 -extra-y := head.o init_task.o vmlinux.lds.s 12.13 - 12.14 -obj-y := traps.o irq.o ldt.o setup.o entry.o time.o pci-dma.o process.o \ 12.15 - ioport.o signal.o i386_ksyms.o 12.16 - 12.17 -c-obj-y := semaphore.o vm86.o \ 12.18 - ptrace.o sys_i386.o \ 12.19 - i387.o dmi_scan.o bootflag.o \ 12.20 - doublefault.o 12.21 -s-obj-y := 12.22 - 12.23 -obj-y += cpu/ 12.24 -obj-y += timers/ 12.25 -c-obj-$(CONFIG_ACPI_BOOT) += acpi/ 12.26 -#c-obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o 12.27 -c-obj-$(CONFIG_MCA) += mca.o 12.28 -c-obj-$(CONFIG_X86_MSR) += msr.o 12.29 -c-obj-$(CONFIG_X86_CPUID) += cpuid.o 12.30 -c-obj-$(CONFIG_MICROCODE) += microcode.o 12.31 -c-obj-$(CONFIG_APM) += apm.o 12.32 -c-obj-$(CONFIG_X86_SMP) += smp.o smpboot.o 12.33 -c-obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o 12.34 -c-obj-$(CONFIG_X86_MPPARSE) += mpparse.o 12.35 -c-obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o 12.36 -c-obj-$(CONFIG_X86_IO_APIC) += io_apic.o 12.37 -c-obj-$(CONFIG_X86_NUMAQ) += numaq.o 12.38 -c-obj-$(CONFIG_X86_SUMMIT_NUMA) += summit.o 12.39 -c-obj-$(CONFIG_MODULES) += module.o 12.40 -obj-y += sysenter.o 12.41 -obj-y += vsyscall.o 12.42 -c-obj-$(CONFIG_ACPI_SRAT) += srat.o 12.43 -c-obj-$(CONFIG_HPET_TIMER) += time_hpet.o 12.44 -c-obj-$(CONFIG_EFI) += efi.o efi_stub.o 12.45 -c-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 12.46 - 12.47 -EXTRA_AFLAGS := -traditional 12.48 - 12.49 -c-obj-$(CONFIG_SCx200) += scx200.o 12.50 - 12.51 -AFLAGS_vmlinux.lds.o += -U$(XENARCH) 12.52 - 12.53 -# vsyscall.o contains the vsyscall DSO images as __initdata. 12.54 -# We must build both images before we can assemble it. 12.55 -# Note: kbuild does not track this dependency due to usage of .incbin 12.56 -$(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so 12.57 -targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) 12.58 - 12.59 -# The DSO images are built using a special linker script. 12.60 -quiet_cmd_syscall = SYSCALL $@ 12.61 - cmd_syscall = $(CC) -nostdlib $(SYSCFLAGS_$(@F)) \ 12.62 - -Wl,-T,$(filter-out FORCE,$^) -o $@ 12.63 - 12.64 -vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 12.65 -SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) 12.66 -SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) 12.67 - 12.68 -$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ 12.69 -$(obj)/vsyscall-%.so: $(obj)/vsyscall.lds $(obj)/vsyscall-%.o FORCE 12.70 - $(call if_changed,syscall) 12.71 - 12.72 -# We also create a special relocatable object that should mirror the symbol 12.73 -# table and layout of the linked DSO. With ld -R we can then refer to 12.74 -# these symbols in the kernel code rather than hand-coded addresses. 12.75 -extra-y += vsyscall-syms.o 12.76 -$(obj)/built-in.o: $(obj)/vsyscall-syms.o 12.77 -$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o 12.78 - 12.79 -SYSCFLAGS_vsyscall-syms.o = -r 12.80 -$(obj)/vsyscall-syms.o: $(obj)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE 12.81 - $(call if_changed,syscall) 12.82 - 12.83 -c-link := init_task.o 12.84 -s-link := vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o 12.85 - 12.86 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): 12.87 - @ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@ 12.88 - 12.89 -$(obj)/vsyscall-int80.S: $(obj)/vsyscall-sigreturn.S 12.90 - 12.91 -obj-y += $(c-obj-y) $(s-obj-y) 12.92 - 12.93 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) 12.94 -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link))
13.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile Mon Oct 25 12:45:34 2004 +0000 13.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 13.3 @@ -1,31 +0,0 @@ 13.4 -# 13.5 -# Makefile for x86-compatible CPU details and quirks 13.6 -# 13.7 - 13.8 -CFLAGS += -Iarch/i386/kernel/cpu 13.9 - 13.10 -obj-y := common.o 13.11 -c-obj-y += proc.o 13.12 - 13.13 -c-obj-y += amd.o 13.14 -c-obj-y += cyrix.o 13.15 -c-obj-y += centaur.o 13.16 -c-obj-y += transmeta.o 13.17 -c-obj-y += intel.o 13.18 -c-obj-y += rise.o 13.19 -c-obj-y += nexgen.o 13.20 -c-obj-y += umc.o 13.21 - 13.22 -#obj-$(CONFIG_X86_MCE) += ../../../../i386/kernel/cpu/mcheck/ 13.23 - 13.24 -#obj-$(CONFIG_MTRR) += ../../../../i386/kernel/cpu/mtrr/ 13.25 -#obj-$(CONFIG_CPU_FREQ) += ../../../../i386/kernel/cpu/cpufreq/ 13.26 - 13.27 -c-link := 13.28 - 13.29 -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): 13.30 - @ln -fsn $(srctree)/arch/i386/kernel/cpu/$(notdir $@) $@ 13.31 - 13.32 -obj-y += $(c-obj-y) 13.33 - 13.34 -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link))
14.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c Mon Oct 25 12:45:34 2004 +0000 14.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 14.3 @@ -1,601 +0,0 @@ 14.4 -#include <linux/init.h> 14.5 -#include <linux/string.h> 14.6 -#include <linux/delay.h> 14.7 -#include <linux/smp.h> 14.8 -#include <asm/semaphore.h> 14.9 -#include <asm/processor.h> 14.10 -#include <asm/i387.h> 14.11 -#include <asm/msr.h> 14.12 -#include <asm/io.h> 14.13 -#include <asm/mmu_context.h> 14.14 -#include <asm-xen/hypervisor.h> 14.15 - 14.16 -#include "cpu.h" 14.17 - 14.18 -static int cachesize_override __initdata = -1; 14.19 -static int disable_x86_fxsr __initdata = 0; 14.20 -static int disable_x86_serial_nr __initdata = 1; 14.21 - 14.22 -struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; 14.23 - 14.24 -extern void mcheck_init(struct cpuinfo_x86 *c); 14.25 - 14.26 -extern void machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c); 14.27 - 14.28 -extern int disable_pse; 14.29 - 14.30 -static void default_init(struct cpuinfo_x86 * c) 14.31 -{ 14.32 - /* Not much we can do here... */ 14.33 - /* Check if at least it has cpuid */ 14.34 - if (c->cpuid_level == -1) { 14.35 - /* No cpuid. It must be an ancient CPU */ 14.36 - if (c->x86 == 4) 14.37 - strcpy(c->x86_model_id, "486"); 14.38 - else if (c->x86 == 3) 14.39 - strcpy(c->x86_model_id, "386"); 14.40 - } 14.41 -} 14.42 - 14.43 -static struct cpu_dev default_cpu = { 14.44 - .c_init = default_init, 14.45 -}; 14.46 -static struct cpu_dev * this_cpu = &default_cpu; 14.47 - 14.48 -static int __init cachesize_setup(char *str) 14.49 -{ 14.50 - get_option (&str, &cachesize_override); 14.51 - return 1; 14.52 -} 14.53 -__setup("cachesize=", cachesize_setup); 14.54 - 14.55 -int __init get_model_name(struct cpuinfo_x86 *c) 14.56 -{ 14.57 - unsigned int *v; 14.58 - char *p, *q; 14.59 - 14.60 - if (cpuid_eax(0x80000000) < 0x80000004) 14.61 - return 0; 14.62 - 14.63 - v = (unsigned int *) c->x86_model_id; 14.64 - cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); 14.65 - cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); 14.66 - cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); 14.67 - c->x86_model_id[48] = 0; 14.68 - 14.69 - /* Intel chips right-justify this string for some dumb reason; 14.70 - undo that brain damage */ 14.71 - p = q = &c->x86_model_id[0]; 14.72 - while ( *p == ' ' ) 14.73 - p++; 14.74 - if ( p != q ) { 14.75 - while ( *p ) 14.76 - *q++ = *p++; 14.77 - while ( q <= &c->x86_model_id[48] ) 14.78 - *q++ = '\0'; /* Zero-pad the rest */ 14.79 - } 14.80 - 14.81 - return 1; 14.82 -} 14.83 - 14.84 - 14.85 -void __init display_cacheinfo(struct cpuinfo_x86 *c) 14.86 -{ 14.87 - unsigned int n, dummy, ecx, edx, l2size; 14.88 - 14.89 - n = cpuid_eax(0x80000000); 14.90 - 14.91 - if (n >= 0x80000005) { 14.92 - cpuid(0x80000005, &dummy, &dummy, &ecx, &edx); 14.93 - printk(KERN_INFO "CPU: L1 I Cache: %dK (%d bytes/line), D cache %dK (%d bytes/line)\n", 14.94 - edx>>24, edx&0xFF, ecx>>24, ecx&0xFF); 14.95 - c->x86_cache_size=(ecx>>24)+(edx>>24); 14.96 - } 14.97 - 14.98 - if (n < 0x80000006) /* Some chips just has a large L1. */ 14.99 - return; 14.100 - 14.101 - ecx = cpuid_ecx(0x80000006); 14.102 - l2size = ecx >> 16; 14.103 - 14.104 - /* do processor-specific cache resizing */ 14.105 - if (this_cpu->c_size_cache) 14.106 - l2size = this_cpu->c_size_cache(c,l2size); 14.107 - 14.108 - /* Allow user to override all this if necessary. */ 14.109 - if (cachesize_override != -1) 14.110 - l2size = cachesize_override; 14.111 - 14.112 - if ( l2size == 0 ) 14.113 - return; /* Again, no L2 cache is possible */ 14.114 - 14.115 - c->x86_cache_size = l2size; 14.116 - 14.117 - printk(KERN_INFO "CPU: L2 Cache: %dK (%d bytes/line)\n", 14.118 - l2size, ecx & 0xFF); 14.119 -} 14.120 - 14.121 -/* Naming convention should be: <Name> [(<Codename>)] */ 14.122 -/* This table only is used unless init_<vendor>() below doesn't set it; */ 14.123 -/* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */ 14.124 - 14.125 -/* Look up CPU names by table lookup. */ 14.126 -static char __init *table_lookup_model(struct cpuinfo_x86 *c) 14.127 -{ 14.128 - struct cpu_model_info *info; 14.129 - 14.130 - if ( c->x86_model >= 16 ) 14.131 - return NULL; /* Range check */ 14.132 - 14.133 - if (!this_cpu) 14.134 - return NULL; 14.135 - 14.136 - info = this_cpu->c_models; 14.137 - 14.138 - while (info && info->family) { 14.139 - if (info->family == c->x86) 14.140 - return info->model_names[c->x86_model]; 14.141 - info++; 14.142 - } 14.143 - return NULL; /* Not found */ 14.144 -} 14.145 - 14.146 - 14.147 -void __init get_cpu_vendor(struct cpuinfo_x86 *c, int early) 14.148 -{ 14.149 - char *v = c->x86_vendor_id; 14.150 - int i; 14.151 - 14.152 - for (i = 0; i < X86_VENDOR_NUM; i++) { 14.153 - if (cpu_devs[i]) { 14.154 - if (!strcmp(v,cpu_devs[i]->c_ident[0]) || 14.155 - (cpu_devs[i]->c_ident[1] && 14.156 - !strcmp(v,cpu_devs[i]->c_ident[1]))) { 14.157 - c->x86_vendor = i; 14.158 - if (!early) 14.159 - this_cpu = cpu_devs[i]; 14.160 - break; 14.161 - } 14.162 - } 14.163 - } 14.164 -} 14.165 - 14.166 - 14.167 -static int __init x86_fxsr_setup(char * s) 14.168 -{ 14.169 - disable_x86_fxsr = 1; 14.170 - return 1; 14.171 -} 14.172 -__setup("nofxsr", x86_fxsr_setup); 14.173 - 14.174 - 14.175 -/* Standard macro to see if a specific flag is changeable */ 14.176 -static inline int flag_is_changeable_p(u32 flag) 14.177 -{ 14.178 - u32 f1, f2; 14.179 - 14.180 - asm("pushfl\n\t" 14.181 - "pushfl\n\t" 14.182 - "popl %0\n\t" 14.183 - "movl %0,%1\n\t" 14.184 - "xorl %2,%0\n\t" 14.185 - "pushl %0\n\t" 14.186 - "popfl\n\t" 14.187 - "pushfl\n\t" 14.188 - "popl %0\n\t" 14.189 - "popfl\n\t" 14.190 - : "=&r" (f1), "=&r" (f2) 14.191 - : "ir" (flag)); 14.192 - 14.193 - return ((f1^f2) & flag) != 0; 14.194 -} 14.195 - 14.196 - 14.197 -/* Probe for the CPUID instruction */ 14.198 -int __init have_cpuid_p(void) 14.199 -{ 14.200 - return flag_is_changeable_p(X86_EFLAGS_ID); 14.201 -} 14.202 - 14.203 -/* Do minimum CPU detection early. 14.204 - Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment. 14.205 - The others are not touched to avoid unwanted side effects. */ 14.206 -void __init early_cpu_detect(void) 14.207 -{ 14.208 - struct cpuinfo_x86 *c = &boot_cpu_data; 14.209 - 14.210 - c->x86_cache_alignment = 32; 14.211 - 14.212 - if (!have_cpuid_p()) 14.213 - return; 14.214 - 14.215 - /* Get vendor name */ 14.216 - cpuid(0x00000000, &c->cpuid_level, 14.217 - (int *)&c->x86_vendor_id[0], 14.218 - (int *)&c->x86_vendor_id[8], 14.219 - (int *)&c->x86_vendor_id[4]); 14.220 - 14.221 - get_cpu_vendor(c, 1); 14.222 - 14.223 - c->x86 = 4; 14.224 - if (c->cpuid_level >= 0x00000001) { 14.225 - u32 junk, tfms, cap0, misc; 14.226 - cpuid(0x00000001, &tfms, &misc, &junk, &cap0); 14.227 - c->x86 = (tfms >> 8) & 15; 14.228 - c->x86_model = (tfms >> 4) & 15; 14.229 - if (c->x86 == 0xf) { 14.230 - c->x86 += (tfms >> 20) & 0xff; 14.231 - c->x86_model += ((tfms >> 16) & 0xF) << 4; 14.232 - } 14.233 - c->x86_mask = tfms & 15; 14.234 - if (cap0 & (1<<19)) 14.235 - c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8; 14.236 - } 14.237 - 14.238 - early_intel_workaround(c); 14.239 -} 14.240 - 14.241 -void __init generic_identify(struct cpuinfo_x86 * c) 14.242 -{ 14.243 - u32 tfms, xlvl; 14.244 - int junk; 14.245 - 14.246 - if (have_cpuid_p()) { 14.247 - /* Get vendor name */ 14.248 - cpuid(0x00000000, &c->cpuid_level, 14.249 - (int *)&c->x86_vendor_id[0], 14.250 - (int *)&c->x86_vendor_id[8], 14.251 - (int *)&c->x86_vendor_id[4]); 14.252 - 14.253 - get_cpu_vendor(c, 0); 14.254 - /* Initialize the standard set of capabilities */ 14.255 - /* Note that the vendor-specific code below might override */ 14.256 - 14.257 - /* Intel-defined flags: level 0x00000001 */ 14.258 - if ( c->cpuid_level >= 0x00000001 ) { 14.259 - u32 capability, excap; 14.260 - cpuid(0x00000001, &tfms, &junk, &excap, &capability); 14.261 - c->x86_capability[0] = capability; 14.262 - c->x86_capability[4] = excap; 14.263 - c->x86 = (tfms >> 8) & 15; 14.264 - c->x86_model = (tfms >> 4) & 15; 14.265 - if (c->x86 == 0xf) { 14.266 - c->x86 += (tfms >> 20) & 0xff; 14.267 - c->x86_model += ((tfms >> 16) & 0xF) << 4; 14.268 - } 14.269 - c->x86_mask = tfms & 15; 14.270 - } else { 14.271 - /* Have CPUID level 0 only - unheard of */ 14.272 - c->x86 = 4; 14.273 - } 14.274 - 14.275 - /* AMD-defined flags: level 0x80000001 */ 14.276 - xlvl = cpuid_eax(0x80000000); 14.277 - if ( (xlvl & 0xffff0000) == 0x80000000 ) { 14.278 - if ( xlvl >= 0x80000001 ) 14.279 - c->x86_capability[1] = cpuid_edx(0x80000001); 14.280 - if ( xlvl >= 0x80000004 ) 14.281 - get_model_name(c); /* Default name */ 14.282 - } 14.283 - } 14.284 -} 14.285 - 14.286 -static void __init squash_the_stupid_serial_number(struct cpuinfo_x86 *c) 14.287 -{ 14.288 - if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) { 14.289 - /* Disable processor serial number */ 14.290 - unsigned long lo,hi; 14.291 - rdmsr(MSR_IA32_BBL_CR_CTL,lo,hi); 14.292 - lo |= 0x200000; 14.293 - wrmsr(MSR_IA32_BBL_CR_CTL,lo,hi); 14.294 - printk(KERN_NOTICE "CPU serial number disabled.\n"); 14.295 - clear_bit(X86_FEATURE_PN, c->x86_capability); 14.296 - 14.297 - /* Disabling the serial number may affect the cpuid level */ 14.298 - c->cpuid_level = cpuid_eax(0); 14.299 - } 14.300 -} 14.301 - 14.302 -static int __init x86_serial_nr_setup(char *s) 14.303 -{ 14.304 - disable_x86_serial_nr = 0; 14.305 - return 1; 14.306 -} 14.307 -__setup("serialnumber", x86_serial_nr_setup); 14.308 - 14.309 - 14.310 - 14.311 -/* 14.312 - * This does the hard work of actually picking apart the CPU stuff... 14.313 - */ 14.314 -void __init identify_cpu(struct cpuinfo_x86 *c) 14.315 -{ 14.316 - int i; 14.317 - 14.318 - c->loops_per_jiffy = loops_per_jiffy; 14.319 - c->x86_cache_size = -1; 14.320 - c->x86_vendor = X86_VENDOR_UNKNOWN; 14.321 - c->cpuid_level = -1; /* CPUID not detected */ 14.322 - c->x86_model = c->x86_mask = 0; /* So far unknown... */ 14.323 - c->x86_vendor_id[0] = '\0'; /* Unset */ 14.324 - c->x86_model_id[0] = '\0'; /* Unset */ 14.325 - memset(&c->x86_capability, 0, sizeof c->x86_capability); 14.326 - 14.327 - if (!have_cpuid_p()) { 14.328 - /* First of all, decide if this is a 486 or higher */ 14.329 - /* It's a 486 if we can modify the AC flag */ 14.330 - if ( flag_is_changeable_p(X86_EFLAGS_AC) ) 14.331 - c->x86 = 4; 14.332 - else 14.333 - c->x86 = 3; 14.334 - } 14.335 - 14.336 - generic_identify(c); 14.337 - 14.338 - printk(KERN_DEBUG "CPU: After generic identify, caps: %08lx %08lx %08lx %08lx\n", 14.339 - c->x86_capability[0], 14.340 - c->x86_capability[1], 14.341 - c->x86_capability[2], 14.342 - c->x86_capability[3]); 14.343 - 14.344 - if (this_cpu->c_identify) { 14.345 - this_cpu->c_identify(c); 14.346 - 14.347 - printk(KERN_DEBUG "CPU: After vendor identify, caps: %08lx %08lx %08lx %08lx\n", 14.348 - c->x86_capability[0], 14.349 - c->x86_capability[1], 14.350 - c->x86_capability[2], 14.351 - c->x86_capability[3]); 14.352 -} 14.353 - 14.354 - /* 14.355 - * Vendor-specific initialization. In this section we 14.356 - * canonicalize the feature flags, meaning if there are 14.357 - * features a certain CPU supports which CPUID doesn't 14.358 - * tell us, CPUID claiming incorrect flags, or other bugs, 14.359 - * we handle them here. 14.360 - * 14.361 - * At the end of this section, c->x86_capability better 14.362 - * indicate the features this CPU genuinely supports! 14.363 - */ 14.364 - if (this_cpu->c_init) 14.365 - this_cpu->c_init(c); 14.366 - 14.367 - /* Disable the PN if appropriate */ 14.368 - squash_the_stupid_serial_number(c); 14.369 - 14.370 - /* 14.371 - * The vendor-specific functions might have changed features. Now 14.372 - * we do "generic changes." 14.373 - */ 14.374 - 14.375 - /* TSC disabled? */ 14.376 - if ( tsc_disable ) 14.377 - clear_bit(X86_FEATURE_TSC, c->x86_capability); 14.378 - 14.379 - /* FXSR disabled? */ 14.380 - if (disable_x86_fxsr) { 14.381 - clear_bit(X86_FEATURE_FXSR, c->x86_capability); 14.382 - clear_bit(X86_FEATURE_XMM, c->x86_capability); 14.383 - } 14.384 - 14.385 - if (disable_pse) 14.386 - clear_bit(X86_FEATURE_PSE, c->x86_capability); 14.387 - 14.388 - /* If the model name is still unset, do table lookup. */ 14.389 - if ( !c->x86_model_id[0] ) { 14.390 - char *p; 14.391 - p = table_lookup_model(c); 14.392 - if ( p ) 14.393 - strcpy(c->x86_model_id, p); 14.394 - else 14.395 - /* Last resort... */ 14.396 - sprintf(c->x86_model_id, "%02x/%02x", 14.397 - c->x86_vendor, c->x86_model); 14.398 - } 14.399 - 14.400 - machine_specific_modify_cpu_capabilities(c); 14.401 - 14.402 - /* Now the feature flags better reflect actual CPU features! */ 14.403 - 14.404 - printk(KERN_DEBUG "CPU: After all inits, caps: %08lx %08lx %08lx %08lx\n", 14.405 - c->x86_capability[0], 14.406 - c->x86_capability[1], 14.407 - c->x86_capability[2], 14.408 - c->x86_capability[3]); 14.409 - 14.410 - /* 14.411 - * On SMP, boot_cpu_data holds the common feature set between 14.412 - * all CPUs; so make sure that we indicate which features are 14.413 - * common between the CPUs. The first time this routine gets 14.414 - * executed, c == &boot_cpu_data. 14.415 - */ 14.416 - if ( c != &boot_cpu_data ) { 14.417 - /* AND the already accumulated flags with these */ 14.418 - for ( i = 0 ; i < NCAPINTS ; i++ ) 14.419 - boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; 14.420 - } 14.421 - 14.422 - /* Init Machine Check Exception if available. */ 14.423 -#ifdef CONFIG_X86_MCE 14.424 - mcheck_init(c); 14.425 -#endif 14.426 -} 14.427 -/* 14.428 - * Perform early boot up checks for a valid TSC. See arch/i386/kernel/time.c 14.429 - */ 14.430 - 14.431 -void __init dodgy_tsc(void) 14.432 -{ 14.433 - if (( boot_cpu_data.x86_vendor == X86_VENDOR_CYRIX ) || 14.434 - ( boot_cpu_data.x86_vendor == X86_VENDOR_NSC )) 14.435 - cpu_devs[X86_VENDOR_CYRIX]->c_init(&boot_cpu_data); 14.436 -} 14.437 - 14.438 -void __init print_cpu_info(struct cpuinfo_x86 *c) 14.439 -{ 14.440 - char *vendor = NULL; 14.441 - 14.442 - if (c->x86_vendor < X86_VENDOR_NUM) 14.443 - vendor = this_cpu->c_vendor; 14.444 - else if (c->cpuid_level >= 0) 14.445 - vendor = c->x86_vendor_id; 14.446 - 14.447 - if (vendor && strncmp(c->x86_model_id, vendor, strlen(vendor))) 14.448 - printk("%s ", vendor); 14.449 - 14.450 - if (!c->x86_model_id[0]) 14.451 - printk("%d86", c->x86); 14.452 - else 14.453 - printk("%s", c->x86_model_id); 14.454 - 14.455 - if (c->x86_mask || c->cpuid_level >= 0) 14.456 - printk(" stepping %02x\n", c->x86_mask); 14.457 - else 14.458 - printk("\n"); 14.459 -} 14.460 - 14.461 -unsigned long cpu_initialized __initdata = 0; 14.462 - 14.463 -/* This is hacky. :) 14.464 - * We're emulating future behavior. 14.465 - * In the future, the cpu-specific init functions will be called implicitly 14.466 - * via the magic of initcalls. 14.467 - * They will insert themselves into the cpu_devs structure. 14.468 - * Then, when cpu_init() is called, we can just iterate over that array. 14.469 - */ 14.470 - 14.471 -extern int intel_cpu_init(void); 14.472 -extern int cyrix_init_cpu(void); 14.473 -extern int nsc_init_cpu(void); 14.474 -extern int amd_init_cpu(void); 14.475 -extern int centaur_init_cpu(void); 14.476 -extern int transmeta_init_cpu(void); 14.477 -extern int rise_init_cpu(void); 14.478 -extern int nexgen_init_cpu(void); 14.479 -extern int umc_init_cpu(void); 14.480 -void early_cpu_detect(void); 14.481 - 14.482 -void __init early_cpu_init(void) 14.483 -{ 14.484 - intel_cpu_init(); 14.485 - cyrix_init_cpu(); 14.486 - nsc_init_cpu(); 14.487 - amd_init_cpu(); 14.488 - centaur_init_cpu(); 14.489 - transmeta_init_cpu(); 14.490 - rise_init_cpu(); 14.491 - nexgen_init_cpu(); 14.492 - umc_init_cpu(); 14.493 - early_cpu_detect(); 14.494 - 14.495 -#ifdef CONFIG_DEBUG_PAGEALLOC 14.496 - /* pse is not compatible with on-the-fly unmapping, 14.497 - * disable it even if the cpus claim to support it. 14.498 - */ 14.499 - clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability); 14.500 - disable_pse = 1; 14.501 -#endif 14.502 -} 14.503 - 14.504 -void __init cpu_gdt_init(struct Xgt_desc_struct *gdt_descr) 14.505 -{ 14.506 - unsigned long frames[gdt_descr->size >> PAGE_SHIFT]; 14.507 - unsigned long va; 14.508 - int f; 14.509 - 14.510 - for (va = gdt_descr->address, f = 0; 14.511 - va < gdt_descr->address + gdt_descr->size; 14.512 - va += PAGE_SIZE, f++) { 14.513 - frames[f] = virt_to_machine(va) >> PAGE_SHIFT; 14.514 - protect_page(swapper_pg_dir, (void *)va, PROT_ON); 14.515 - } 14.516 - flush_page_update_queue(); 14.517 - if (HYPERVISOR_set_gdt(frames, gdt_descr->size / 8)) 14.518 - BUG(); 14.519 - lgdt_finish(); 14.520 -} 14.521 - 14.522 -/* 14.523 - * cpu_init() initializes state that is per-CPU. Some data is already 14.524 - * initialized (naturally) in the bootstrap process, such as the GDT 14.525 - * and IDT. We reload them nevertheless, this function acts as a 14.526 - * 'CPU state barrier', nothing should get across. 14.527 - */ 14.528 -void __init cpu_init (void) 14.529 -{ 14.530 - int cpu = smp_processor_id(); 14.531 - struct tss_struct * t = init_tss + cpu; 14.532 - struct thread_struct *thread = ¤t->thread; 14.533 - 14.534 - if (test_and_set_bit(cpu, &cpu_initialized)) { 14.535 - printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); 14.536 - for (;;) local_irq_enable(); 14.537 - } 14.538 - printk(KERN_INFO "Initializing CPU#%d\n", cpu); 14.539 - 14.540 - if (cpu_has_vme || cpu_has_de) 14.541 - clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); 14.542 - if (tsc_disable && cpu_has_tsc) { 14.543 - printk(KERN_NOTICE "Disabling TSC...\n"); 14.544 - /**** FIX-HPA: DOES THIS REALLY BELONG HERE? ****/ 14.545 - clear_bit(X86_FEATURE_TSC, boot_cpu_data.x86_capability); 14.546 - set_in_cr4(X86_CR4_TSD); 14.547 - } 14.548 - 14.549 - /* 14.550 - * Initialize the per-CPU GDT with the boot GDT, 14.551 - * and set up the GDT descriptor: 14.552 - */ 14.553 - if (cpu) { 14.554 - cpu_gdt_descr[cpu].size = GDT_SIZE; 14.555 - cpu_gdt_descr[cpu].address = 0; /* XXXcl alloc page */ 14.556 - BUG(); /* XXXcl SMP */ 14.557 - memcpy((void *)cpu_gdt_descr[cpu].address, 14.558 - (void *)cpu_gdt_descr[0].address, GDT_SIZE); 14.559 - } 14.560 - /* 14.561 - * Set up the per-thread TLS descriptor cache: 14.562 - */ 14.563 - memcpy(thread->tls_array, &get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN], 14.564 - GDT_ENTRY_TLS_ENTRIES * 8); 14.565 - 14.566 - cpu_gdt_init(&cpu_gdt_descr[cpu]); 14.567 - 14.568 - /* 14.569 - * Delete NT 14.570 - */ 14.571 - __asm__("pushfl ; andl $0xffffbfff,(%esp) ; popfl"); 14.572 - 14.573 - /* 14.574 - * Set up and load the per-CPU TSS and LDT 14.575 - */ 14.576 - atomic_inc(&init_mm.mm_count); 14.577 - current->active_mm = &init_mm; 14.578 - if (current->mm) 14.579 - BUG(); 14.580 - enter_lazy_tlb(&init_mm, current); 14.581 - 14.582 - load_esp0(t, thread); 14.583 - 14.584 - load_LDT(&init_mm.context); 14.585 - flush_page_update_queue(); 14.586 - 14.587 - /* Clear %fs and %gs. */ 14.588 - asm volatile ("xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs"); 14.589 - 14.590 - /* Clear all 6 debug registers: */ 14.591 - 14.592 -#define CD(register) HYPERVISOR_set_debugreg(register, 0) 14.593 - 14.594 - CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7); 14.595 - 14.596 -#undef CD 14.597 - 14.598 - /* 14.599 - * Force FPU initialization: 14.600 - */ 14.601 - current_thread_info()->status = 0; 14.602 - current->used_math = 0; 14.603 - mxcsr_feature_mask_init(); 14.604 -}
15.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S Mon Oct 25 12:45:34 2004 +0000 15.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 15.3 @@ -1,1029 +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/hypervisor-ifs/hypervisor-if.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 -EFLAGS = 0x30 15.71 -OLDESP = 0x34 15.72 -OLDSS = 0x38 15.73 - 15.74 -CF_MASK = 0x00000001 15.75 -TF_MASK = 0x00000100 15.76 -IF_MASK = 0x00000200 15.77 -DF_MASK = 0x00000400 15.78 -NT_MASK = 0x00004000 15.79 -VM_MASK = 0x00020000 15.80 - 15.81 -/* Offsets into shared_info_t. */ 15.82 -#define evtchn_upcall_pending /* 0 */ 15.83 -#define evtchn_upcall_mask 1 15.84 - 15.85 -#define XEN_BLOCK_EVENTS(reg) movb $1,evtchn_upcall_mask(reg) 15.86 -#define XEN_UNBLOCK_EVENTS(reg) movb $0,evtchn_upcall_mask(reg) 15.87 -#define XEN_TEST_PENDING(reg) testb $0xFF,evtchn_upcall_pending(%reg) 15.88 - 15.89 -#ifdef CONFIG_PREEMPT 15.90 -#define preempt_stop movl HYPERVISOR_shared_info,%esi ; \ 15.91 - XEN_BLOCK_EVENTS(%esi) 15.92 -#else 15.93 -#define preempt_stop 15.94 -#define resume_kernel restore_all 15.95 -#endif 15.96 - 15.97 -#define SAVE_ALL \ 15.98 - cld; \ 15.99 - pushl %es; \ 15.100 - pushl %ds; \ 15.101 - pushl %eax; \ 15.102 - pushl %ebp; \ 15.103 - pushl %edi; \ 15.104 - pushl %esi; \ 15.105 - pushl %edx; \ 15.106 - pushl %ecx; \ 15.107 - pushl %ebx; \ 15.108 - movl $(__KERNEL_DS), %edx; \ 15.109 - movl %edx, %ds; \ 15.110 - movl %edx, %es; 15.111 - # XXXcl USER? 15.112 - 15.113 -#define RESTORE_INT_REGS \ 15.114 - popl %ebx; \ 15.115 - popl %ecx; \ 15.116 - popl %edx; \ 15.117 - popl %esi; \ 15.118 - popl %edi; \ 15.119 - popl %ebp; \ 15.120 - popl %eax 15.121 - 15.122 -#define RESTORE_REGS \ 15.123 - RESTORE_INT_REGS; \ 15.124 -1: popl %ds; \ 15.125 -2: popl %es; \ 15.126 -.section .fixup,"ax"; \ 15.127 -3: movl $0,(%esp); \ 15.128 - jmp 1b; \ 15.129 -4: movl $0,(%esp); \ 15.130 - jmp 2b; \ 15.131 -.previous; \ 15.132 -.section __ex_table,"a";\ 15.133 - .align 4; \ 15.134 - .long 1b,3b; \ 15.135 - .long 2b,4b; \ 15.136 -.previous 15.137 - 15.138 - 15.139 -#define RESTORE_ALL \ 15.140 - RESTORE_REGS \ 15.141 - addl $4, %esp; \ 15.142 -1: iret; \ 15.143 -.section .fixup,"ax"; \ 15.144 -2: movl $(__USER_DS), %edx; \ 15.145 - movl %edx, %ds; \ 15.146 - movl %edx, %es; \ 15.147 - pushl $11; \ 15.148 - call do_exit; \ 15.149 -.previous; \ 15.150 -.section __ex_table,"a";\ 15.151 - .align 4; \ 15.152 - .long 1b,2b; \ 15.153 -.previous 15.154 - 15.155 - 15.156 - 15.157 -ENTRY(lcall7) 15.158 - pushfl # We get a different stack layout with call 15.159 - # gates, which has to be cleaned up later.. 15.160 - pushl %eax 15.161 - SAVE_ALL 15.162 - movl %esp, %ebp 15.163 - pushl %ebp 15.164 - pushl $0x7 15.165 -do_lcall: 15.166 - movl EIP(%ebp), %eax # due to call gates, this is eflags, not eip.. 15.167 - movl CS(%ebp), %edx # this is eip.. 15.168 - movl EFLAGS(%ebp), %ecx # and this is cs.. 15.169 - movl %eax,EFLAGS(%ebp) # 15.170 - movl %edx,EIP(%ebp) # Now we move them to their "normal" places 15.171 - movl %ecx,CS(%ebp) # 15.172 - GET_THREAD_INFO_WITH_ESP(%ebp) # GET_THREAD_INFO 15.173 - movl TI_exec_domain(%ebp), %edx # Get the execution domain 15.174 - call *EXEC_DOMAIN_handler(%edx) # Call the handler for the domain 15.175 - addl $4, %esp 15.176 - popl %eax 15.177 - jmp resume_userspace 15.178 - 15.179 -ENTRY(lcall27) 15.180 - pushfl # We get a different stack layout with call 15.181 - # gates, which has to be cleaned up later.. 15.182 - pushl %eax 15.183 - SAVE_ALL 15.184 - movl %esp, %ebp 15.185 - pushl %ebp 15.186 - pushl $0x27 15.187 - jmp do_lcall 15.188 - 15.189 - 15.190 -ENTRY(ret_from_fork) 15.191 - pushl %eax 15.192 - call schedule_tail 15.193 - GET_THREAD_INFO(%ebp) 15.194 - popl %eax 15.195 - jmp syscall_exit 15.196 - 15.197 -/* 15.198 - * Return to user mode is not as complex as all this looks, 15.199 - * but we want the default path for a system call return to 15.200 - * go as quickly as possible which is why some of this is 15.201 - * less clear than it otherwise should be. 15.202 - */ 15.203 - 15.204 - # userspace resumption stub bypassing syscall exit tracing 15.205 - ALIGN 15.206 -ret_from_exception: 15.207 - preempt_stop 15.208 -ret_from_intr: 15.209 - GET_THREAD_INFO(%ebp) 15.210 - movl EFLAGS(%esp), %eax # mix EFLAGS and CS 15.211 - movb CS(%esp), %al 15.212 - testl $(VM_MASK | 2), %eax 15.213 - jz resume_kernel # returning to kernel or vm86-space 15.214 -ENTRY(resume_userspace) 15.215 - movl HYPERVISOR_shared_info,%esi 15.216 - XEN_BLOCK_EVENTS(%esi) # make tests atomic 15.217 - # make sure we don't miss an interrupt 15.218 - # setting need_resched or sigpending 15.219 - # between sampling and the iret 15.220 -ret_syscall_tests: 15.221 - movl TI_flags(%ebp), %ecx 15.222 - andl $_TIF_WORK_MASK, %ecx # is there any work to be done on 15.223 - # int/exception return? 15.224 - jne work_pending 15.225 - jmp restore_all_enable_events 15.226 - 15.227 -#ifdef CONFIG_PREEMPT 15.228 -ENTRY(resume_kernel) 15.229 - movl HYPERVISOR_shared_info,%esi 15.230 - cmpl $0,TI_preempt_count(%ebp) # non-zero preempt_count ? 15.231 - jnz restore_all_enable_events 15.232 -need_resched: 15.233 - movl TI_flags(%ebp), %ecx # need_resched set ? 15.234 - testb $_TIF_NEED_RESCHED, %cl 15.235 - jz restore_all_enable_events 15.236 - testl $IF_MASK,EFLAGS(%esp) # interrupts off (exception path) ? 15.237 - jz restore_all_enable_events 15.238 - movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp) 15.239 - XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks 15.240 - call schedule 15.241 - movl $0,TI_preempt_count(%ebp) 15.242 - movl HYPERVISOR_shared_info,%esi 15.243 - XEN_BLOCK_EVENTS(%esi) # make tests atomic 15.244 - jmp need_resched 15.245 -#endif 15.246 - 15.247 -/* SYSENTER_RETURN points to after the "sysenter" instruction in 15.248 - the vsyscall page. See vsyscall-sysentry.S, which defines the symbol. */ 15.249 - 15.250 - # sysenter call handler stub 15.251 -ENTRY(sysenter_entry) 15.252 - movl TSS_sysenter_esp0(%esp),%esp 15.253 -sysenter_past_esp: 15.254 - sti 15.255 - pushl $(__USER_DS) 15.256 - pushl %ebp 15.257 - pushfl 15.258 - pushl $(__USER_CS) 15.259 - pushl $SYSENTER_RETURN 15.260 - 15.261 -/* 15.262 - * Load the potential sixth argument from user stack. 15.263 - * Careful about security. 15.264 - */ 15.265 - cmpl $__PAGE_OFFSET-3,%ebp 15.266 - jae syscall_fault 15.267 -1: movl (%ebp),%ebp 15.268 -.section __ex_table,"a" 15.269 - .align 4 15.270 - .long 1b,syscall_fault 15.271 -.previous 15.272 - 15.273 - pushl %eax 15.274 - SAVE_ALL 15.275 - GET_THREAD_INFO(%ebp) 15.276 - cmpl $(nr_syscalls), %eax 15.277 - jae syscall_badsys 15.278 - 15.279 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 15.280 - jnz syscall_trace_entry 15.281 - call *sys_call_table(,%eax,4) 15.282 - movl %eax,EAX(%esp) 15.283 - cli 15.284 - movl TI_flags(%ebp), %ecx 15.285 - testw $_TIF_ALLWORK_MASK, %cx 15.286 - jne syscall_exit_work 15.287 -/* if something modifies registers it must also disable sysexit */ 15.288 - movl EIP(%esp), %edx 15.289 - movl OLDESP(%esp), %ecx 15.290 - sti 15.291 - sysexit 15.292 - 15.293 - 15.294 - # system call handler stub 15.295 -ENTRY(system_call) 15.296 - pushl %eax # save orig_eax 15.297 - SAVE_ALL 15.298 - GET_THREAD_INFO(%ebp) 15.299 - cmpl $(nr_syscalls), %eax 15.300 - jae syscall_badsys 15.301 - # system call tracing in operation 15.302 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 15.303 - jnz syscall_trace_entry 15.304 -syscall_call: 15.305 - call *sys_call_table(,%eax,4) 15.306 - movl %eax,EAX(%esp) # store the return value 15.307 -syscall_exit: 15.308 - movl HYPERVISOR_shared_info,%esi 15.309 - XEN_BLOCK_EVENTS(%esi) # make tests atomic 15.310 - # make sure we don't miss an interrupt 15.311 - # setting need_resched or sigpending 15.312 - # between sampling and the iret 15.313 - movl TI_flags(%ebp), %ecx 15.314 - testw $_TIF_ALLWORK_MASK, %cx # current->work 15.315 - jne syscall_exit_work 15.316 - jmp restore_all_enable_events 15.317 - 15.318 - ALIGN 15.319 -restore_all: 15.320 - RESTORE_ALL 15.321 - 15.322 - # perform work that needs to be done immediately before resumption 15.323 - ALIGN 15.324 -work_pending: 15.325 - XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks 15.326 - testb $_TIF_NEED_RESCHED, %cl 15.327 - jz work_notifysig 15.328 -work_resched: 15.329 - call schedule 15.330 - movl HYPERVISOR_shared_info,%esi 15.331 - XEN_BLOCK_EVENTS(%esi) # make tests atomic 15.332 - # make sure we don't miss an interrupt 15.333 - # setting need_resched or sigpending 15.334 - # between sampling and the iret 15.335 - movl TI_flags(%ebp), %ecx 15.336 - andl $_TIF_WORK_MASK, %ecx # is there any work to be done other 15.337 - # than syscall tracing? 15.338 - jz restore_all_enable_events 15.339 - # XXXcl sti missing??? 15.340 - XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks 15.341 - testb $_TIF_NEED_RESCHED, %cl 15.342 - jnz work_resched 15.343 - 15.344 -work_notifysig: # deal with pending signals and 15.345 - # notify-resume requests 15.346 - testl $VM_MASK, EFLAGS(%esp) 15.347 - movl %esp, %eax 15.348 - jne work_notifysig_v86 # returning to kernel-space or 15.349 - # vm86-space 15.350 - xorl %edx, %edx 15.351 - call do_notify_resume 15.352 - movl HYPERVISOR_shared_info,%esi 15.353 - jmp restore_all_enable_events 15.354 - 15.355 - ALIGN 15.356 -work_notifysig_v86: 15.357 - pushl %ecx 15.358 - call save_v86_state 15.359 - popl %ecx 15.360 - movl %eax, %esp 15.361 - xorl %edx, %edx 15.362 - call do_notify_resume 15.363 - movl HYPERVISOR_shared_info,%esi 15.364 - jmp restore_all_enable_events 15.365 - 15.366 - # perform syscall exit tracing 15.367 - ALIGN 15.368 -syscall_trace_entry: 15.369 - movl $-ENOSYS,EAX(%esp) 15.370 - movl %esp, %eax 15.371 - xorl %edx,%edx 15.372 - call do_syscall_trace 15.373 - movl ORIG_EAX(%esp), %eax 15.374 - cmpl $(nr_syscalls), %eax 15.375 - jnae syscall_call 15.376 - jmp syscall_exit 15.377 - 15.378 - # perform syscall exit tracing 15.379 - ALIGN 15.380 -syscall_exit_work: 15.381 - movl HYPERVISOR_shared_info,%esi 15.382 - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT), %cl 15.383 - jz work_pending 15.384 - XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks 15.385 - # could let do_syscall_trace() call 15.386 - # schedule() instead 15.387 - movl %esp, %eax 15.388 - movl $1, %edx 15.389 - call do_syscall_trace 15.390 - jmp resume_userspace 15.391 - 15.392 - ALIGN 15.393 -syscall_fault: 15.394 - pushl %eax # save orig_eax 15.395 - SAVE_ALL 15.396 - GET_THREAD_INFO(%ebp) 15.397 - movl $-EFAULT,EAX(%esp) 15.398 - jmp resume_userspace 15.399 - 15.400 - ALIGN 15.401 -syscall_badsys: 15.402 - movl $-ENOSYS,EAX(%esp) 15.403 - jmp resume_userspace 15.404 - 15.405 -ENTRY(divide_error) 15.406 - pushl $0 # no error code 15.407 - pushl $do_divide_error 15.408 - ALIGN 15.409 -error_code: 15.410 - pushl %ds 15.411 - pushl %eax 15.412 - xorl %eax, %eax 15.413 - pushl %ebp 15.414 - pushl %edi 15.415 - pushl %esi 15.416 - pushl %edx 15.417 - decl %eax # eax = -1 15.418 - pushl %ecx 15.419 - pushl %ebx 15.420 - cld 15.421 - movl %es, %ecx 15.422 - movl ORIG_EAX(%esp), %esi # get the error code 15.423 - movl ES(%esp), %edi # get the function address 15.424 - movl %eax, ORIG_EAX(%esp) 15.425 - movl %ecx, ES(%esp) 15.426 - movl %esp, %edx 15.427 - pushl %esi # push the error code 15.428 - pushl %edx # push the pt_regs pointer 15.429 - movl $(__KERNEL_DS), %edx # XXXcl USER? 15.430 - movl %edx, %ds 15.431 - movl %edx, %es 15.432 - call *%edi 15.433 - addl $8, %esp 15.434 - jmp ret_from_exception 15.435 - 15.436 -# A note on the "critical region" in our callback handler. 15.437 -# We want to avoid stacking callback handlers due to events occurring 15.438 -# during handling of the last event. To do this, we keep events disabled 15.439 -# until we've done all processing. HOWEVER, we must enable events before 15.440 -# popping the stack frame (can't be done atomically) and so it would still 15.441 -# be possible to get enough handler activations to overflow the stack. 15.442 -# Although unlikely, bugs of that kind are hard to track down, so we'd 15.443 -# like to avoid the possibility. 15.444 -# So, on entry to the handler we detect whether we interrupted an 15.445 -# existing activation in its critical region -- if so, we pop the current 15.446 -# activation and restart the handler using the previous one. 15.447 -ENTRY(hypervisor_callback) 15.448 - pushl %eax 15.449 - SAVE_ALL 15.450 - GET_THREAD_INFO(%ebp) 15.451 - movl EIP(%esp),%eax 15.452 - cmpl $scrit,%eax 15.453 - jb 11f 15.454 - cmpl $ecrit,%eax 15.455 - jb critical_region_fixup 15.456 -11: push %esp 15.457 - call evtchn_do_upcall 15.458 - add $4,%esp 15.459 - movl HYPERVISOR_shared_info,%esi 15.460 - movb CS(%esp),%cl 15.461 - test $2,%cl # slow return to ring 2 or 3 15.462 - jne ret_syscall_tests 15.463 -restore_all_enable_events: 15.464 -safesti:XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks 15.465 -scrit: /**** START OF CRITICAL REGION ****/ 15.466 - testb $1,evtchn_upcall_pending(%esi) 15.467 - jnz 14f # process more events if necessary... 15.468 - RESTORE_ALL 15.469 -14: XEN_BLOCK_EVENTS(%esi) 15.470 - jmp 11b 15.471 -ecrit: /**** END OF CRITICAL REGION ****/ 15.472 -# [How we do the fixup]. We want to merge the current stack frame with the 15.473 -# just-interrupted frame. How we do this depends on where in the critical 15.474 -# region the interrupted handler was executing, and so how many saved 15.475 -# registers are in each frame. We do this quickly using the lookup table 15.476 -# 'critical_fixup_table'. For each byte offset in the critical region, it 15.477 -# provides the number of bytes which have already been popped from the 15.478 -# interrupted stack frame. 15.479 -critical_region_fixup: 15.480 - addl $critical_fixup_table-scrit,%eax 15.481 - movzbl (%eax),%eax # %eax contains num bytes popped 15.482 - mov %esp,%esi 15.483 - add %eax,%esi # %esi points at end of src region 15.484 - mov %esp,%edi 15.485 - add $0x34,%edi # %edi points at end of dst region 15.486 - mov %eax,%ecx 15.487 - shr $2,%ecx # convert words to bytes 15.488 - je 16f # skip loop if nothing to copy 15.489 -15: subl $4,%esi # pre-decrementing copy loop 15.490 - subl $4,%edi 15.491 - movl (%esi),%eax 15.492 - movl %eax,(%edi) 15.493 - loop 15b 15.494 -16: movl %edi,%esp # final %edi is top of merged stack 15.495 - jmp 11b 15.496 - 15.497 -critical_fixup_table: 15.498 - .byte 0x00,0x00,0x00 # testb $0xff,(%esi) 15.499 - .byte 0x00,0x00 # jnz 14f 15.500 - .byte 0x00 # pop %ebx 15.501 - .byte 0x04 # pop %ecx 15.502 - .byte 0x08 # pop %edx 15.503 - .byte 0x0c # pop %esi 15.504 - .byte 0x10 # pop %edi 15.505 - .byte 0x14 # pop %ebp 15.506 - .byte 0x18 # pop %eax 15.507 - .byte 0x1c # pop %ds 15.508 - .byte 0x20 # pop %es 15.509 - .byte 0x24,0x24,0x24 # add $4,%esp 15.510 - .byte 0x28 # iret 15.511 - .byte 0x00,0x00,0x00,0x00 # movb $1,1(%esi) 15.512 - .byte 0x00,0x00 # jmp 11b 15.513 - 15.514 -# Hypervisor uses this for application faults while it executes. 15.515 -ENTRY(failsafe_callback) 15.516 - pushal 15.517 - call install_safe_pf_handler 15.518 - movl 32(%esp),%ebx 15.519 -1: movl %ebx,%ds 15.520 - movl 36(%esp),%ebx 15.521 -2: movl %ebx,%es 15.522 - movl 40(%esp),%ebx 15.523 -3: movl %ebx,%fs 15.524 - movl 44(%esp),%ebx 15.525 -4: movl %ebx,%gs 15.526 - call install_normal_pf_handler 15.527 - popal 15.528 - addl $16,%esp 15.529 -5: iret 15.530 -.section .fixup,"ax"; \ 15.531 -6: xorl %ebx,%ebx; \ 15.532 - jmp 1b; \ 15.533 -7: xorl %ebx,%ebx; \ 15.534 - jmp 2b; \ 15.535 -8: xorl %ebx,%ebx; \ 15.536 - jmp 3b; \ 15.537 -9: xorl %ebx,%ebx; \ 15.538 - jmp 4b; \ 15.539 -10: pushl %ss; \ 15.540 - popl %ds; \ 15.541 - pushl %ss; \ 15.542 - popl %es; \ 15.543 - pushl $11; \ 15.544 - call do_exit; \ 15.545 -.previous; \ 15.546 -.section __ex_table,"a";\ 15.547 - .align 4; \ 15.548 - .long 1b,6b; \ 15.549 - .long 2b,7b; \ 15.550 - .long 3b,8b; \ 15.551 - .long 4b,9b; \ 15.552 - .long 5b,10b; \ 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 $0 15.600 - pushl $do_debug 15.601 - jmp error_code 15.602 - 15.603 -#if 0 15.604 -/* 15.605 - * NMI is doubly nasty. It can happen _while_ we're handling 15.606 - * a debug fault, and the debug fault hasn't yet been able to 15.607 - * clear up the stack. So we first check whether we got an 15.608 - * NMI on the sysenter entry path, but after that we need to 15.609 - * check whether we got an NMI on the debug path where the debug 15.610 - * fault happened on the sysenter path. 15.611 - */ 15.612 -ENTRY(nmi) 15.613 - cmpl $sysenter_entry,(%esp) 15.614 - je nmi_stack_fixup 15.615 - pushl %eax 15.616 - movl %esp,%eax 15.617 - /* Do not access memory above the end of our stack page, 15.618 - * it might not exist. 15.619 - */ 15.620 - andl $(THREAD_SIZE-1),%eax 15.621 - cmpl $(THREAD_SIZE-20),%eax 15.622 - popl %eax 15.623 - jae nmi_stack_correct 15.624 - cmpl $sysenter_entry,12(%esp) 15.625 - je nmi_debug_stack_check 15.626 -nmi_stack_correct: 15.627 - pushl %eax 15.628 - SAVE_ALL 15.629 - movl %esp, %edx 15.630 - pushl $0 15.631 - pushl %edx 15.632 - call do_nmi 15.633 - addl $8, %esp 15.634 - RESTORE_ALL 15.635 - 15.636 -nmi_stack_fixup: 15.637 - FIX_STACK(12,nmi_stack_correct, 1) 15.638 - jmp nmi_stack_correct 15.639 -nmi_debug_stack_check: 15.640 - cmpw $__KERNEL_CS,16(%esp) 15.641 - jne nmi_stack_correct 15.642 - cmpl $debug - 1,(%esp) 15.643 - jle nmi_stack_correct 15.644 - cmpl $debug_esp_fix_insn,(%esp) 15.645 - jle nmi_debug_stack_fixup 15.646 -nmi_debug_stack_fixup: 15.647 - FIX_STACK(24,nmi_stack_correct, 1) 15.648 - jmp nmi_stack_correct 15.649 -#endif 15.650 - 15.651 -ENTRY(int3) 15.652 - pushl $0 15.653 - pushl $do_int3 15.654 - jmp error_code 15.655 - 15.656 -ENTRY(overflow) 15.657 - pushl $0 15.658 - pushl $do_overflow 15.659 - jmp error_code 15.660 - 15.661 -ENTRY(bounds) 15.662 - pushl $0 15.663 - pushl $do_bounds 15.664 - jmp error_code 15.665 - 15.666 -ENTRY(invalid_op) 15.667 - pushl $0 15.668 - pushl $do_invalid_op 15.669 - jmp error_code 15.670 - 15.671 -ENTRY(coprocessor_segment_overrun) 15.672 - pushl $0 15.673 - pushl $do_coprocessor_segment_overrun 15.674 - jmp error_code 15.675 - 15.676 -ENTRY(double_fault) 15.677 - pushl $do_double_fault 15.678 - jmp error_code 15.679 - 15.680 -ENTRY(invalid_TSS) 15.681 - pushl $do_invalid_TSS 15.682 - jmp error_code 15.683 - 15.684 -ENTRY(segment_not_present) 15.685 - pushl $do_segment_not_present 15.686 - jmp error_code 15.687 - 15.688 -ENTRY(stack_segment) 15.689 - pushl $do_stack_segment 15.690 - jmp error_code 15.691 - 15.692 -ENTRY(general_protection) 15.693 - pushl $do_general_protection 15.694 - jmp error_code 15.695 - 15.696 -ENTRY(alignment_check) 15.697 - pushl $do_alignment_check 15.698 - jmp error_code 15.699 - 15.700 -# This handler is special, because it gets an extra value on its stack, 15.701 -# which is the linear faulting address. 15.702 -#define PAGE_FAULT_STUB(_name1, _name2) \ 15.703 -ENTRY(_name1) \ 15.704 - pushl %ds ; \ 15.705 - pushl %eax ; \ 15.706 - xorl %eax,%eax ; \ 15.707 - pushl %ebp ; \ 15.708 - pushl %edi ; \ 15.709 - pushl %esi ; \ 15.710 - pushl %edx ; \ 15.711 - decl %eax /* eax = -1 */ ; \ 15.712 - pushl %ecx ; \ 15.713 - pushl %ebx ; \ 15.714 - GET_THREAD_INFO(%ebp) ; \ 15.715 - cld ; \ 15.716 - movl %es,%ecx ; \ 15.717 - movl ORIG_EAX(%esp), %esi /* get the error code */ ; \ 15.718 - movl ES(%esp), %edi /* get the faulting address */ ; \ 15.719 - movl %eax, ORIG_EAX(%esp) ; \ 15.720 - movl %ecx, ES(%esp) ; \ 15.721 - movl %esp,%edx ; \ 15.722 - pushl %edi /* push the faulting address */ ; \ 15.723 - pushl %esi /* push the error code */ ; \ 15.724 - pushl %edx /* push the pt_regs pointer */ ; \ 15.725 - movl $(__KERNEL_DS),%edx ; \ 15.726 - movl %edx,%ds ; \ 15.727 - movl %edx,%es ; \ 15.728 - call _name2 ; \ 15.729 - addl $12,%esp ; \ 15.730 - jmp ret_from_exception ; 15.731 -PAGE_FAULT_STUB(page_fault, do_page_fault) 15.732 -PAGE_FAULT_STUB(safe_page_fault, do_safe_page_fault) 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_ni_syscall /* disable 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 - 15.1032 -syscall_table_size=(.-sys_call_table)
16.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S Mon Oct 25 12:45:34 2004 +0000 16.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 16.3 @@ -1,171 +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 -#ifdef CONFIG_XEN_WRITABLE_PAGETABLES 16.11 - .ascii ",PT_MODE_WRITABLE" 16.12 -#endif 16.13 - .byte 0 16.14 - 16.15 -.text 16.16 -#include <linux/threads.h> 16.17 -#include <linux/linkage.h> 16.18 -#include <asm/segment.h> 16.19 -#include <asm/thread_info.h> 16.20 -#include <asm/asm_offsets.h> 16.21 -#include <asm/hypervisor-ifs/arch-x86_32.h> 16.22 - 16.23 -/* 16.24 - * References to members of the new_cpu_data structure. 16.25 - */ 16.26 - 16.27 -#define X86 new_cpu_data+CPUINFO_x86 16.28 -#define X86_VENDOR new_cpu_data+CPUINFO_x86_vendor 16.29 -#define X86_MODEL new_cpu_data+CPUINFO_x86_model 16.30 -#define X86_MASK new_cpu_data+CPUINFO_x86_mask 16.31 -#define X86_HARD_MATH new_cpu_data+CPUINFO_hard_math 16.32 -#define X86_CPUID new_cpu_data+CPUINFO_cpuid_level 16.33 -#define X86_CAPABILITY new_cpu_data+CPUINFO_x86_capability 16.34 -#define X86_VENDOR_ID new_cpu_data+CPUINFO_x86_vendor_id 16.35 - 16.36 -ENTRY(startup_32) 16.37 - cld 16.38 - 16.39 - /* Set up the stack pointer */ 16.40 - lss stack_start,%esp 16.41 - 16.42 - /* Copy the necessary stuff from xen_start_info structure. */ 16.43 - mov $xen_start_info_union,%edi 16.44 - mov $128,%ecx 16.45 - rep movsl 16.46 - 16.47 -checkCPUtype: 16.48 - 16.49 - /* get vendor info */ 16.50 - xorl %eax,%eax # call CPUID with 0 -> return vendor ID 16.51 - cpuid 16.52 - movl %eax,X86_CPUID # save CPUID level 16.53 - movl %ebx,X86_VENDOR_ID # lo 4 chars 16.54 - movl %edx,X86_VENDOR_ID+4 # next 4 chars 16.55 - movl %ecx,X86_VENDOR_ID+8 # last 4 chars 16.56 - 16.57 - movl $1,%eax # Use the CPUID instruction to get CPU type 16.58 - cpuid 16.59 - movb %al,%cl # save reg for future use 16.60 - andb $0x0f,%ah # mask processor family 16.61 - movb %ah,X86 16.62 - andb $0xf0,%al # mask model 16.63 - shrb $4,%al 16.64 - movb %al,X86_MODEL 16.65 - andb $0x0f,%cl # mask mask revision 16.66 - movb %cl,X86_MASK 16.67 - movl %edx,X86_CAPABILITY 16.68 - 16.69 - xorl %eax,%eax # Clear FS/GS and LDT 16.70 - movl %eax,%fs 16.71 - movl %eax,%gs 16.72 - cld # gcc2 wants the direction flag cleared at all times 16.73 - 16.74 - call start_kernel 16.75 -L6: 16.76 - jmp L6 # main should never return here, but 16.77 - # just in case, we know what happens. 16.78 - 16.79 -ENTRY(lgdt_finish) 16.80 - movl $(__KERNEL_DS),%eax # reload all the segment registers 16.81 - movw %ax,%ss # after changing gdt. 16.82 - 16.83 - movl $(__USER_DS),%eax # DS/ES contains default USER segment 16.84 - movw %ax,%ds 16.85 - movw %ax,%es 16.86 - 16.87 - popl %eax # reload CS by intersegment return 16.88 - pushl $(__KERNEL_CS) 16.89 - pushl %eax 16.90 - lret 16.91 - 16.92 -ENTRY(stack_start) 16.93 - .long init_thread_union+THREAD_SIZE 16.94 - .long __BOOT_DS 16.95 - 16.96 -# XXXcl 16.97 -.globl idt_descr 16.98 -.globl cpu_gdt_descr 16.99 - 16.100 - ALIGN 16.101 - .word 0 # 32-bit align idt_desc.address 16.102 -idt_descr: 16.103 - .word IDT_ENTRIES*8-1 # idt contains 256 entries 16.104 - .long idt_table 16.105 -# XXXcl 16.106 - 16.107 -# boot GDT descriptor (later on used by CPU#0): 16.108 - .word 0 # 32 bit align gdt_desc.address 16.109 -cpu_gdt_descr: 16.110 - .word GDT_SIZE 16.111 - .long cpu_gdt_table 16.112 - 16.113 - .fill NR_CPUS-1,8,0 # space for the other GDT descriptors 16.114 - 16.115 -.org 0x1000 16.116 -ENTRY(empty_zero_page) 16.117 - 16.118 -.org 0x2000 16.119 -ENTRY(swapper_pg_dir) 16.120 - 16.121 -.org 0x3000 16.122 -ENTRY(cpu_gdt_table) 16.123 - .quad 0x0000000000000000 /* NULL descriptor */ 16.124 - .quad 0x0000000000000000 /* 0x0b reserved */ 16.125 - .quad 0x0000000000000000 /* 0x13 reserved */ 16.126 - .quad 0x0000000000000000 /* 0x1b reserved */ 16.127 - .quad 0x0000000000000000 /* 0x20 unused */ 16.128 - .quad 0x0000000000000000 /* 0x28 unused */ 16.129 - .quad 0x0000000000000000 /* 0x33 TLS entry 1 */ 16.130 - .quad 0x0000000000000000 /* 0x3b TLS entry 2 */ 16.131 - .quad 0x0000000000000000 /* 0x43 TLS entry 3 */ 16.132 - .quad 0x0000000000000000 /* 0x4b reserved */ 16.133 - .quad 0x0000000000000000 /* 0x53 reserved */ 16.134 - .quad 0x0000000000000000 /* 0x5b reserved */ 16.135 - 16.136 - .quad 0x00cfbb000000c3ff /* 0x60 kernel 4GB code at 0x00000000 */ 16.137 - .quad 0x00cfb3000000c3ff /* 0x68 kernel 4GB data at 0x00000000 */ 16.138 - .quad 0x00cffb000000c3ff /* 0x73 user 4GB code at 0x00000000 */ 16.139 - .quad 0x00cff3000000c3ff /* 0x7b user 4GB data at 0x00000000 */ 16.140 - 16.141 - .quad 0x0000000000000000 /* 0x80 TSS descriptor */ 16.142 - .quad 0x0000000000000000 /* 0x88 LDT descriptor */ 16.143 - 16.144 - /* Segments used for calling PnP BIOS */ 16.145 - .quad 0x0000000000000000 /* 0x90 32-bit code */ 16.146 - .quad 0x0000000000000000 /* 0x98 16-bit code */ 16.147 - .quad 0x0000000000000000 /* 0xa0 16-bit data */ 16.148 - .quad 0x0000000000000000 /* 0xa8 16-bit data */ 16.149 - .quad 0x0000000000000000 /* 0xb0 16-bit data */ 16.150 - /* 16.151 - * The APM segments have byte granularity and their bases 16.152 - * and limits are set at run time. 16.153 - */ 16.154 - .quad 0x0000000000000000 /* 0xb8 APM CS code */ 16.155 - .quad 0x0000000000000000 /* 0xc0 APM CS 16 code (16 bit) */ 16.156 - .quad 0x0000000000000000 /* 0xc8 APM DS data */ 16.157 - 16.158 - .quad 0x0000000000000000 /* 0xd0 - unused */ 16.159 - .quad 0x0000000000000000 /* 0xd8 - unused */ 16.160 - .quad 0x0000000000000000 /* 0xe0 - unused */ 16.161 - .quad 0x0000000000000000 /* 0xe8 - unused */ 16.162 - .quad 0x0000000000000000 /* 0xf0 - unused */ 16.163 - .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */ 16.164 - .fill GDT_ENTRIES-32,8,0 16.165 - 16.166 -.org 0x4000 16.167 -ENTRY(default_ldt) 16.168 - 16.169 -.org 0x5000 16.170 -/* 16.171 - * Real beginning of normal "text" segment 16.172 - */ 16.173 -ENTRY(stext) 16.174 -ENTRY(_stext)
17.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c Mon Oct 25 12:45:34 2004 +0000 17.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 17.3 @@ -1,200 +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/hardirq.h> 17.30 -#include <asm/delay.h> 17.31 -#include <asm/irq.h> 17.32 -#include <asm/mmx.h> 17.33 -#include <asm/desc.h> 17.34 -#include <asm/pgtable.h> 17.35 -#include <asm/tlbflush.h> 17.36 -#include <asm/nmi.h> 17.37 -#include <asm/ist.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(dump_extended_fpu); 17.78 -EXPORT_SYMBOL_GPL(kernel_fpu_begin); 17.79 -EXPORT_SYMBOL(__ioremap); 17.80 -EXPORT_SYMBOL(ioremap_nocache); 17.81 -EXPORT_SYMBOL(iounmap); 17.82 -EXPORT_SYMBOL(enable_irq); 17.83 -EXPORT_SYMBOL(disable_irq); 17.84 -EXPORT_SYMBOL(disable_irq_nosync); 17.85 -EXPORT_SYMBOL(probe_irq_mask); 17.86 -EXPORT_SYMBOL(kernel_thread); 17.87 -EXPORT_SYMBOL(pm_idle); 17.88 -#ifdef CONFIG_APM 17.89 -EXPORT_SYMBOL(pm_power_off); 17.90 -#endif 17.91 -EXPORT_SYMBOL(get_cmos_time); 17.92 -EXPORT_SYMBOL(cpu_khz); 17.93 -EXPORT_SYMBOL(apm_info); 17.94 - 17.95 -EXPORT_SYMBOL_NOVERS(__down_failed); 17.96 -EXPORT_SYMBOL_NOVERS(__down_failed_interruptible); 17.97 -EXPORT_SYMBOL_NOVERS(__down_failed_trylock); 17.98 -EXPORT_SYMBOL_NOVERS(__up_wakeup); 17.99 -/* Networking helper routines. */ 17.100 -EXPORT_SYMBOL(csum_partial_copy_generic); 17.101 -/* Delay loops */ 17.102 -EXPORT_SYMBOL(__ndelay); 17.103 -EXPORT_SYMBOL(__udelay); 17.104 -EXPORT_SYMBOL(__delay); 17.105 -EXPORT_SYMBOL(__const_udelay); 17.106 - 17.107 -EXPORT_SYMBOL_NOVERS(__get_user_1); 17.108 -EXPORT_SYMBOL_NOVERS(__get_user_2); 17.109 -EXPORT_SYMBOL_NOVERS(__get_user_4); 17.110 - 17.111 -EXPORT_SYMBOL(strpbrk); 17.112 -EXPORT_SYMBOL(strstr); 17.113 - 17.114 -EXPORT_SYMBOL(strncpy_from_user); 17.115 -EXPORT_SYMBOL(__strncpy_from_user); 17.116 -EXPORT_SYMBOL(clear_user); 17.117 -EXPORT_SYMBOL(__clear_user); 17.118 -EXPORT_SYMBOL(__copy_from_user_ll); 17.119 -EXPORT_SYMBOL(__copy_to_user_ll); 17.120 -EXPORT_SYMBOL(strnlen_user); 17.121 - 17.122 -EXPORT_SYMBOL(dma_alloc_coherent); 17.123 -EXPORT_SYMBOL(dma_free_coherent); 17.124 - 17.125 -#ifdef CONFIG_PCI 17.126 -EXPORT_SYMBOL(pcibios_penalize_isa_irq); 17.127 -EXPORT_SYMBOL(pci_mem_start); 17.128 -#endif 17.129 - 17.130 -#ifdef CONFIG_PCI_BIOS 17.131 -EXPORT_SYMBOL(pcibios_set_irq_routing); 17.132 -EXPORT_SYMBOL(pcibios_get_irq_routing_table); 17.133 -#endif 17.134 - 17.135 -#ifdef CONFIG_X86_USE_3DNOW 17.136 -EXPORT_SYMBOL(_mmx_memcpy); 17.137 -EXPORT_SYMBOL(mmx_clear_page); 17.138 -EXPORT_SYMBOL(mmx_copy_page); 17.139 -#endif 17.140 - 17.141 -#ifdef CONFIG_X86_HT 17.142 -EXPORT_SYMBOL(smp_num_siblings); 17.143 -EXPORT_SYMBOL(cpu_sibling_map); 17.144 -#endif 17.145 - 17.146 -#ifdef CONFIG_SMP 17.147 -EXPORT_SYMBOL(cpu_data); 17.148 -EXPORT_SYMBOL(cpu_online_map); 17.149 -EXPORT_SYMBOL(cpu_callout_map); 17.150 -EXPORT_SYMBOL_NOVERS(__write_lock_failed); 17.151 -EXPORT_SYMBOL_NOVERS(__read_lock_failed); 17.152 - 17.153 -/* Global SMP stuff */ 17.154 -EXPORT_SYMBOL(synchronize_irq); 17.155 -EXPORT_SYMBOL(smp_call_function); 17.156 - 17.157 -/* TLB flushing */ 17.158 -EXPORT_SYMBOL(flush_tlb_page); 17.159 -EXPORT_SYMBOL_GPL(flush_tlb_all); 17.160 -#endif 17.161 - 17.162 -#ifdef CONFIG_X86_IO_APIC 17.163 -EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector); 17.164 -#endif 17.165 - 17.166 -#ifdef CONFIG_MCA 17.167 -EXPORT_SYMBOL(machine_id); 17.168 -#endif 17.169 - 17.170 -#ifdef CONFIG_VT 17.171 -EXPORT_SYMBOL(screen_info); 17.172 -#endif 17.173 - 17.174 -EXPORT_SYMBOL(get_wchan); 17.175 - 17.176 -EXPORT_SYMBOL(rtc_lock); 17.177 - 17.178 -EXPORT_SYMBOL_GPL(set_nmi_callback); 17.179 -EXPORT_SYMBOL_GPL(unset_nmi_callback); 17.180 - 17.181 -#undef memcmp 17.182 -extern int memcmp(const void *,const void *,__kernel_size_t); 17.183 -EXPORT_SYMBOL_NOVERS(memcmp); 17.184 - 17.185 -#ifdef CONFIG_HAVE_DEC_LOCK 17.186 -EXPORT_SYMBOL(atomic_dec_and_lock); 17.187 -#endif 17.188 - 17.189 -EXPORT_SYMBOL(__PAGE_KERNEL); 17.190 - 17.191 -#ifdef CONFIG_HIGHMEM 17.192 -EXPORT_SYMBOL(kmap); 17.193 -EXPORT_SYMBOL(kunmap); 17.194 -EXPORT_SYMBOL(kmap_atomic); 17.195 -EXPORT_SYMBOL(kunmap_atomic); 17.196 -EXPORT_SYMBOL(kmap_atomic_to_page); 17.197 -#endif 17.198 - 17.199 -#if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) 17.200 -EXPORT_SYMBOL(ist_info); 17.201 -#endif 17.202 - 17.203 -EXPORT_SYMBOL(csum_partial);
18.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c Mon Oct 25 12:45:34 2004 +0000 18.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 18.3 @@ -1,49 +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/hypervisor-ifs/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 - printk(KERN_INFO "ioperm not fully supported - %s\n", 18.50 - turn_on ? "set iopl to 3" : "ignore resource release"); 18.51 - return turn_on ? sys_iopl(3) : 0; 18.52 -}
19.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c Mon Oct 25 12:45:34 2004 +0000 19.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 19.3 @@ -1,1199 +0,0 @@ 19.4 -/* 19.5 - * linux/arch/i386/kernel/irq.c 19.6 - * 19.7 - * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar 19.8 - * 19.9 - * This file contains the code used by various IRQ handling routines: 19.10 - * asking for different IRQ's should be done through these routines 19.11 - * instead of just grabbing them. Thus setups with different IRQ numbers 19.12 - * shouldn't result in any weird surprises, and installing new handlers 19.13 - * should be easier. 19.14 - */ 19.15 - 19.16 -/* 19.17 - * (mostly architecture independent, will move to kernel/irq.c in 2.5.) 19.18 - * 19.19 - * IRQs are in fact implemented a bit like signal handlers for the kernel. 19.20 - * Naturally it's not a 1:1 relation, but there are similarities. 19.21 - */ 19.22 - 19.23 -#include <linux/config.h> 19.24 -#include <linux/errno.h> 19.25 -#include <linux/module.h> 19.26 -#include <linux/signal.h> 19.27 -#include <linux/sched.h> 19.28 -#include <linux/ioport.h> 19.29 -#include <linux/interrupt.h> 19.30 -#include <linux/timex.h> 19.31 -#include <linux/slab.h> 19.32 -#include <linux/random.h> 19.33 -#include <linux/smp_lock.h> 19.34 -#include <linux/init.h> 19.35 -#include <linux/kernel_stat.h> 19.36 -#include <linux/irq.h> 19.37 -#include <linux/proc_fs.h> 19.38 -#include <linux/seq_file.h> 19.39 -#include <linux/kallsyms.h> 19.40 - 19.41 -#include <asm/atomic.h> 19.42 -#include <asm/io.h> 19.43 -#include <asm/smp.h> 19.44 -#include <asm/system.h> 19.45 -#include <asm/bitops.h> 19.46 -#include <asm/uaccess.h> 19.47 -#include <asm/delay.h> 19.48 -#include <asm/desc.h> 19.49 -#include <asm/irq.h> 19.50 - 19.51 -/* 19.52 - * Linux has a controller-independent x86 interrupt architecture. 19.53 - * every controller has a 'controller-template', that is used 19.54 - * by the main code to do the right thing. Each driver-visible 19.55 - * interrupt source is transparently wired to the apropriate 19.56 - * controller. Thus drivers need not be aware of the 19.57 - * interrupt-controller. 19.58 - * 19.59 - * Various interrupt controllers we handle: 8259 PIC, SMP IO-APIC, 19.60 - * PIIX4's internal 8259 PIC and SGI's Visual Workstation Cobalt (IO-)APIC. 19.61 - * (IO-APICs assumed to be messaging to Pentium local-APICs) 19.62 - * 19.63 - * the code is designed to be easily extended with new/different 19.64 - * interrupt controllers, without having to do assembly magic. 19.65 - */ 19.66 - 19.67 -/* 19.68 - * Controller mappings for all interrupt sources: 19.69 - */ 19.70 -irq_desc_t irq_desc[NR_IRQS] __cacheline_aligned = { 19.71 - [0 ... NR_IRQS-1] = { 19.72 - .handler = &no_irq_type, 19.73 - .lock = SPIN_LOCK_UNLOCKED 19.74 - } 19.75 -}; 19.76 - 19.77 -static void register_irq_proc (unsigned int irq); 19.78 - 19.79 -/* 19.80 - * per-CPU IRQ handling stacks 19.81 - */ 19.82 -#ifdef CONFIG_4KSTACKS 19.83 -union irq_ctx *hardirq_ctx[NR_CPUS]; 19.84 -union irq_ctx *softirq_ctx[NR_CPUS]; 19.85 -#endif 19.86 - 19.87 -/* 19.88 - * Special irq handlers. 19.89 - */ 19.90 - 19.91 -irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) 19.92 -{ return IRQ_NONE; } 19.93 - 19.94 -/* 19.95 - * Generic no controller code 19.96 - */ 19.97 - 19.98 -static void enable_none(unsigned int irq) { } 19.99 -static unsigned int startup_none(unsigned int irq) { return 0; } 19.100 -static void disable_none(unsigned int irq) { } 19.101 -static void ack_none(unsigned int irq) 19.102 -{ 19.103 -/* 19.104 - * 'what should we do if we get a hw irq event on an illegal vector'. 19.105 - * each architecture has to answer this themselves, it doesn't deserve 19.106 - * a generic callback i think. 19.107 - */ 19.108 -#ifdef CONFIG_X86 19.109 - printk("unexpected IRQ trap at vector %02x\n", irq); 19.110 -#ifdef CONFIG_X86_LOCAL_APIC 19.111 - /* 19.112 - * Currently unexpected vectors happen only on SMP and APIC. 19.113 - * We _must_ ack these because every local APIC has only N 19.114 - * irq slots per priority level, and a 'hanging, unacked' IRQ 19.115 - * holds up an irq slot - in excessive cases (when multiple 19.116 - * unexpected vectors occur) that might lock up the APIC 19.117 - * completely. 19.118 - */ 19.119 - ack_APIC_irq(); 19.120 -#endif 19.121 -#endif 19.122 -} 19.123 - 19.124 -/* startup is the same as "enable", shutdown is same as "disable" */ 19.125 -#define shutdown_none disable_none 19.126 -#define end_none enable_none 19.127 - 19.128 -struct hw_interrupt_type no_irq_type = { 19.129 - "none", 19.130 - startup_none, 19.131 - shutdown_none, 19.132 - enable_none, 19.133 - disable_none, 19.134 - ack_none, 19.135 - end_none 19.136 -}; 19.137 - 19.138 -atomic_t irq_err_count; 19.139 -#if defined(CONFIG_X86_IO_APIC) && defined(APIC_MISMATCH_DEBUG) 19.140 -atomic_t irq_mis_count; 19.141 -#endif 19.142 - 19.143 -/* 19.144 - * Generic, controller-independent functions: 19.145 - */ 19.146 - 19.147 -int show_interrupts(struct seq_file *p, void *v) 19.148 -{ 19.149 - int i = *(loff_t *) v, j; 19.150 - struct irqaction * action; 19.151 - unsigned long flags; 19.152 - 19.153 - if (i == 0) { 19.154 - seq_printf(p, " "); 19.155 - for (j=0; j<NR_CPUS; j++) 19.156 - if (cpu_online(j)) 19.157 - seq_printf(p, "CPU%d ",j); 19.158 - seq_putc(p, '\n'); 19.159 - } 19.160 - 19.161 - if (i < NR_IRQS) { 19.162 - spin_lock_irqsave(&irq_desc[i].lock, flags); 19.163 - action = irq_desc[i].action; 19.164 - if (!action) 19.165 - goto skip; 19.166 - seq_printf(p, "%3d: ",i); 19.167 -#ifndef CONFIG_SMP 19.168 - seq_printf(p, "%10u ", kstat_irqs(i)); 19.169 -#else 19.170 - for (j = 0; j < NR_CPUS; j++) 19.171 - if (cpu_online(j)) 19.172 - seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); 19.173 -#endif 19.174 - seq_printf(p, " %14s", irq_desc[i].handler->typename); 19.175 - seq_printf(p, " %s", action->name); 19.176 - 19.177 - for (action=action->next; action; action = action->next) 19.178 - seq_printf(p, ", %s", action->name); 19.179 - 19.180 - seq_putc(p, '\n'); 19.181 -skip: 19.182 - spin_unlock_irqrestore(&irq_desc[i].lock, flags); 19.183 - } else if (i == NR_IRQS) { 19.184 - seq_printf(p, "NMI: "); 19.185 - for (j = 0; j < NR_CPUS; j++) 19.186 - if (cpu_online(j)) 19.187 - seq_printf(p, "%10u ", nmi_count(j)); 19.188 - seq_putc(p, '\n'); 19.189 -#ifdef CONFIG_X86_LOCAL_APIC 19.190 - seq_printf(p, "LOC: "); 19.191 - for (j = 0; j < NR_CPUS; j++) 19.192 - if (cpu_online(j)) 19.193 - seq_printf(p, "%10u ", irq_stat[j].apic_timer_irqs); 19.194 - seq_putc(p, '\n'); 19.195 -#endif 19.196 - seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); 19.197 -#if defined(CONFIG_X86_IO_APIC) && defined(APIC_MISMATCH_DEBUG) 19.198 - seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count)); 19.199 -#endif 19.200 - } 19.201 - return 0; 19.202 -} 19.203 - 19.204 - 19.205 - 19.206 - 19.207 -#ifdef CONFIG_SMP 19.208 -inline void synchronize_irq(unsigned int irq) 19.209 -{ 19.210 - while (irq_desc[irq].status & IRQ_INPROGRESS) 19.211 - cpu_relax(); 19.212 -} 19.213 -#endif 19.214 - 19.215 -/* 19.216 - * This should really return information about whether 19.217 - * we should do bottom half handling etc. Right now we 19.218 - * end up _always_ checking the bottom half, which is a 19.219 - * waste of time and is not what some drivers would 19.220 - * prefer. 19.221 - */ 19.222 -asmlinkage int handle_IRQ_event(unsigned int irq, 19.223 - struct pt_regs *regs, struct irqaction *action) 19.224 -{ 19.225 - int status = 1; /* Force the "do bottom halves" bit */ 19.226 - int retval = 0; 19.227 - 19.228 - if (!(action->flags & SA_INTERRUPT)) 19.229 - local_irq_enable(); 19.230 - 19.231 - do { 19.232 - status |= action->flags; 19.233 - retval |= action->handler(irq, action->dev_id, regs); 19.234 - action = action->next; 19.235 - } while (action); 19.236 - if (status & SA_SAMPLE_RANDOM) 19.237 - add_interrupt_randomness(irq); 19.238 - local_irq_disable(); 19.239 - return retval; 19.240 -} 19.241 - 19.242 -static void __report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) 19.243 -{ 19.244 - struct irqaction *action; 19.245 - 19.246 - if (action_ret != IRQ_HANDLED && action_ret != IRQ_NONE) { 19.247 - printk(KERN_ERR "irq event %d: bogus return value %x\n", 19.248 - irq, action_ret); 19.249 - } else { 19.250 - printk(KERN_ERR "irq %d: nobody cared!\n", irq); 19.251 - } 19.252 - dump_stack(); 19.253 - printk(KERN_ERR "handlers:\n"); 19.254 - action = desc->action; 19.255 - do { 19.256 - printk(KERN_ERR "[<%p>]", action->handler); 19.257 - print_symbol(" (%s)", 19.258 - (unsigned long)action->handler); 19.259 - printk("\n"); 19.260 - action = action->next; 19.261 - } while (action); 19.262 -} 19.263 - 19.264 -static void report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) 19.265 -{ 19.266 - static int count = 100; 19.267 - 19.268 - if (count) { 19.269 - count--; 19.270 - __report_bad_irq(irq, desc, action_ret); 19.271 - } 19.272 -} 19.273 - 19.274 -static int noirqdebug; 19.275 - 19.276 -static int __init noirqdebug_setup(char *str) 19.277 -{ 19.278 - noirqdebug = 1; 19.279 - printk("IRQ lockup detection disabled\n"); 19.280 - return 1; 19.281 -} 19.282 - 19.283 -__setup("noirqdebug", noirqdebug_setup); 19.284 - 19.285 -/* 19.286 - * If 99,900 of the previous 100,000 interrupts have not been handled then 19.287 - * assume that the IRQ is stuck in some manner. Drop a diagnostic and try to 19.288 - * turn the IRQ off. 19.289 - * 19.290 - * (The other 100-of-100,000 interrupts may have been a correctly-functioning 19.291 - * device sharing an IRQ with the failing one) 19.292 - * 19.293 - * Called under desc->lock 19.294 - */ 19.295 -static void note_interrupt(int irq, irq_desc_t *desc, irqreturn_t action_ret) 19.296 -{ 19.297 - if (action_ret != IRQ_HANDLED) { 19.298 - desc->irqs_unhandled++; 19.299 - if (action_ret != IRQ_NONE) 19.300 - report_bad_irq(irq, desc, action_ret); 19.301 - } 19.302 - 19.303 - desc->irq_count++; 19.304 - if (desc->irq_count < 100000) 19.305 - return; 19.306 - 19.307 - desc->irq_count = 0; 19.308 - if (desc->irqs_unhandled > 99900) { 19.309 - /* 19.310 - * The interrupt is stuck 19.311 - */ 19.312 - __report_bad_irq(irq, desc, action_ret); 19.313 - /* 19.314 - * Now kill the IRQ 19.315 - */ 19.316 - printk(KERN_EMERG "Disabling IRQ #%d\n", irq); 19.317 - desc->status |= IRQ_DISABLED; 19.318 - desc->handler->disable(irq); 19.319 - } 19.320 - desc->irqs_unhandled = 0; 19.321 -} 19.322 - 19.323 -/* 19.324 - * Generic enable/disable code: this just calls 19.325 - * down into the PIC-specific version for the actual 19.326 - * hardware disable after having gotten the irq 19.327 - * controller lock. 19.328 - */ 19.329 - 19.330 -/** 19.331 - * disable_irq_nosync - disable an irq without waiting 19.332 - * @irq: Interrupt to disable 19.333 - * 19.334 - * Disable the selected interrupt line. Disables and Enables are 19.335 - * nested. 19.336 - * Unlike disable_irq(), this function does not ensure existing 19.337 - * instances of the IRQ handler have completed before returning. 19.338 - * 19.339 - * This function may be called from IRQ context. 19.340 - */ 19.341 - 19.342 -inline void disable_irq_nosync(unsigned int irq) 19.343 -{ 19.344 - irq_desc_t *desc = irq_desc + irq; 19.345 - unsigned long flags; 19.346 - 19.347 - spin_lock_irqsave(&desc->lock, flags); 19.348 - if (!desc->depth++) { 19.349 - desc->status |= IRQ_DISABLED; 19.350 - desc->handler->disable(irq); 19.351 - } 19.352 - spin_unlock_irqrestore(&desc->lock, flags); 19.353 -} 19.354 - 19.355 -/** 19.356 - * disable_irq - disable an irq and wait for completion 19.357 - * @irq: Interrupt to disable 19.358 - * 19.359 - * Disable the selected interrupt line. Enables and Disables are 19.360 - * nested. 19.361 - * This function waits for any pending IRQ handlers for this interrupt 19.362 - * to complete before returning. If you use this function while 19.363 - * holding a resource the IRQ handler may need you will deadlock. 19.364 - * 19.365 - * This function may be called - with care - from IRQ context. 19.366 - */ 19.367 - 19.368 -void disable_irq(unsigned int irq) 19.369 -{ 19.370 - irq_desc_t *desc = irq_desc + irq; 19.371 - disable_irq_nosync(irq); 19.372 - if (desc->action) 19.373 - synchronize_irq(irq); 19.374 -} 19.375 - 19.376 -/** 19.377 - * enable_irq - enable handling of an irq 19.378 - * @irq: Interrupt to enable 19.379 - * 19.380 - * Undoes the effect of one call to disable_irq(). If this 19.381 - * matches the last disable, processing of interrupts on this 19.382 - * IRQ line is re-enabled. 19.383 - * 19.384 - * This function may be called from IRQ context. 19.385 - */ 19.386 - 19.387 -void enable_irq(unsigned int irq) 19.388 -{ 19.389 - irq_desc_t *desc = irq_desc + irq; 19.390 - unsigned long flags; 19.391 - 19.392 - spin_lock_irqsave(&desc->lock, flags); 19.393 - switch (desc->depth) { 19.394 - case 1: { 19.395 - unsigned int status = desc->status & ~IRQ_DISABLED; 19.396 - desc->status = status; 19.397 - if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { 19.398 - desc->status = status | IRQ_REPLAY; 19.399 - hw_resend_irq(desc->handler,irq); 19.400 - } 19.401 - desc->handler->enable(irq); 19.402 - /* fall-through */ 19.403 - } 19.404 - default: 19.405 - desc->depth--; 19.406 - break; 19.407 - case 0: 19.408 - printk("enable_irq(%u) unbalanced from %p\n", irq, 19.409 - __builtin_return_address(0)); 19.410 - } 19.411 - spin_unlock_irqrestore(&desc->lock, flags); 19.412 -} 19.413 - 19.414 -/* 19.415 - * do_IRQ handles all normal device IRQ's (the special 19.416 - * SMP cross-CPU interrupts have their own specific 19.417 - * handlers). 19.418 - */ 19.419 -asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) 19.420 -{ 19.421 - /* 19.422 - * We ack quickly, we don't want the irq controller 19.423 - * thinking we're snobs just because some other CPU has 19.424 - * disabled global interrupts (we have already done the 19.425 - * INT_ACK cycles, it's too late to try to pretend to the 19.426 - * controller that we aren't taking the interrupt). 19.427 - * 19.428 - * 0 return value means that this irq is already being 19.429 - * handled by some other CPU. (or is disabled) 19.430 - */ 19.431 - irq_desc_t *desc = irq_desc + irq; 19.432 - struct irqaction * action; 19.433 - unsigned int status; 19.434 - 19.435 - irq_enter(); 19.436 - 19.437 -#ifdef CONFIG_DEBUG_STACKOVERFLOW 19.438 - /* Debugging check for stack overflow: is there less than 1KB free? */ 19.439 - { 19.440 - long esp; 19.441 - 19.442 - __asm__ __volatile__("andl %%esp,%0" : 19.443 - "=r" (esp) : "0" (THREAD_SIZE - 1)); 19.444 - if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) { 19.445 - printk("do_IRQ: stack overflow: %ld\n", 19.446 - esp - sizeof(struct thread_info)); 19.447 - dump_stack(); 19.448 - } 19.449 - } 19.450 -#endif 19.451 - kstat_this_cpu.irqs[irq]++; 19.452 - spin_lock(&desc->lock); 19.453 - desc->handler->ack(irq); 19.454 - /* 19.455 - REPLAY is when Linux resends an IRQ that was dropped earlier 19.456 - WAITING is used by probe to mark irqs that are being tested 19.457 - */ 19.458 - status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING); 19.459 - status |= IRQ_PENDING; /* we _want_ to handle it */ 19.460 - 19.461 - /* 19.462 - * If the IRQ is disabled for whatever reason, we cannot 19.463 - * use the action we have. 19.464 - */ 19.465 - action = NULL; 19.466 - if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) { 19.467 - action = desc->action; 19.468 - status &= ~IRQ_PENDING; /* we commit to handling */ 19.469 - status |= IRQ_INPROGRESS; /* we are handling it */ 19.470 - } 19.471 - desc->status = status; 19.472 - 19.473 - /* 19.474 - * If there is no IRQ handler or it was disabled, exit early. 19.475 - Since we set PENDING, if another processor is handling 19.476 - a different instance of this same irq, the other processor 19.477 - will take care of it. 19.478 - */ 19.479 - if (unlikely(!action)) 19.480 - goto out; 19.481 - 19.482 - /* 19.483 - * Edge triggered interrupts need to remember 19.484 - * pending events. 19.485 - * This applies to any hw interrupts that allow a second 19.486 - * instance of the same irq to arrive while we are in do_IRQ 19.487 - * or in the handler. But the code here only handles the _second_ 19.488 - * instance of the irq, not the third or fourth. So it is mostly 19.489 - * useful for irq hardware that does not mask cleanly in an 19.490 - * SMP environment. 19.491 - */ 19.492 -#ifdef CONFIG_4KSTACKS 19.493 - 19.494 - for (;;) { 19.495 - irqreturn_t action_ret; 19.496 - u32 *isp; 19.497 - union irq_ctx * curctx; 19.498 - union irq_ctx * irqctx; 19.499 - 19.500 - curctx = (union irq_ctx *) current_thread_info(); 19.501 - irqctx = hardirq_ctx[smp_processor_id()]; 19.502 - 19.503 - spin_unlock(&desc->lock); 19.504 - 19.505 - /* 19.506 - * this is where we switch to the IRQ stack. However, if we are already using 19.507 - * the IRQ stack (because we interrupted a hardirq handler) we can't do that 19.508 - * and just have to keep using the current stack (which is the irq stack already 19.509 - * after all) 19.510 - */ 19.511 - 19.512 - if (curctx == irqctx) 19.513 - action_ret = handle_IRQ_event(irq, regs, action); 19.514 - else { 19.515 - /* build the stack frame on the IRQ stack */ 19.516 - isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); 19.517 - irqctx->tinfo.task = curctx->tinfo.task; 19.518 - irqctx->tinfo.previous_esp = current_stack_pointer(); 19.519 - 19.520 - *--isp = (u32) action; 19.521 - *--isp = (u32) regs; 19.522 - *--isp = (u32) irq; 19.523 - 19.524 - asm volatile( 19.525 - " xchgl %%ebx,%%esp \n" 19.526 - " call handle_IRQ_event \n" 19.527 - " xchgl %%ebx,%%esp \n" 19.528 - : "=a"(action_ret) 19.529 - : "b"(isp) 19.530 - : "memory", "cc", "edx", "ecx" 19.531 - ); 19.532 - 19.533 - 19.534 - } 19.535 - spin_lock(&desc->lock); 19.536 - if (!noirqdebug) 19.537 - note_interrupt(irq, desc, action_ret); 19.538 - if (curctx != irqctx) 19.539 - irqctx->tinfo.task = NULL; 19.540 - if (likely(!(desc->status & IRQ_PENDING))) 19.541 - break; 19.542 - desc->status &= ~IRQ_PENDING; 19.543 - } 19.544 - 19.545 -#else 19.546 - 19.547 - for (;;) { 19.548 - irqreturn_t action_ret; 19.549 - 19.550 - spin_unlock(&desc->lock); 19.551 - 19.552 - action_ret = handle_IRQ_event(irq, regs, action); 19.553 - 19.554 - spin_lock(&desc->lock); 19.555 - if (!noirqdebug) 19.556 - note_interrupt(irq, desc, action_ret); 19.557 - if (likely(!(desc->status & IRQ_PENDING))) 19.558 - break; 19.559 - desc->status &= ~IRQ_PENDING; 19.560 - } 19.561 -#endif 19.562 - desc->status &= ~IRQ_INPROGRESS; 19.563 - 19.564 -out: 19.565 - /* 19.566 - * The ->end() handler has to deal with interrupts which got 19.567 - * disabled while the handler was running. 19.568 - */ 19.569 - desc->handler->end(irq); 19.570 - spin_unlock(&desc->lock); 19.571 - 19.572 - irq_exit(); 19.573 - 19.574 - return 1; 19.575 -} 19.576 - 19.577 -int can_request_irq(unsigned int irq, unsigned long irqflags) 19.578 -{ 19.579 - struct irqaction *action; 19.580 - 19.581 - if (irq >= NR_IRQS) 19.582 - return 0; 19.583 - action = irq_desc[irq].action; 19.584 - if (action) { 19.585 - if (irqflags & action->flags & SA_SHIRQ) 19.586 - action = NULL; 19.587 - } 19.588 - return !action; 19.589 -} 19.590 - 19.591 -/** 19.592 - * request_irq - allocate an interrupt line 19.593 - * @irq: Interrupt line to allocate 19.594 - * @handler: Function to be called when the IRQ occurs 19.595 - * @irqflags: Interrupt type flags 19.596 - * @devname: An ascii name for the claiming device 19.597 - * @dev_id: A cookie passed back to the handler function 19.598 - * 19.599 - * This call allocates interrupt resources and enables the 19.600 - * interrupt line and IRQ handling. From the point this 19.601 - * call is made your handler function may be invoked. Since 19.602 - * your handler function must clear any interrupt the board 19.603 - * raises, you must take care both to initialise your hardware 19.604 - * and to set up the interrupt handler in the right order. 19.605 - * 19.606 - * Dev_id must be globally unique. Normally the address of the 19.607 - * device data structure is used as the cookie. Since the handler 19.608 - * receives this value it makes sense to use it. 19.609 - * 19.610 - * If your interrupt is shared you must pass a non NULL dev_id 19.611 - * as this is required when freeing the interrupt. 19.612 - * 19.613 - * Flags: 19.614 - * 19.615 - * SA_SHIRQ Interrupt is shared 19.616 - * 19.617 - * SA_INTERRUPT Disable local interrupts while processing 19.618 - * 19.619 - * SA_SAMPLE_RANDOM The interrupt can be used for entropy 19.620 - * 19.621 - */ 19.622 - 19.623 -int request_irq(unsigned int irq, 19.624 - irqreturn_t (*handler)(int, void *, struct pt_regs *), 19.625 - unsigned long irqflags, 19.626 - const char * devname, 19.627 - void *dev_id) 19.628 -{ 19.629 - int retval; 19.630 - struct irqaction * action; 19.631 - 19.632 -#if 1 19.633 - /* 19.634 - * Sanity-check: shared interrupts should REALLY pass in 19.635 - * a real dev-ID, otherwise we'll have trouble later trying 19.636 - * to figure out which interrupt is which (messes up the 19.637 - * interrupt freeing logic etc). 19.638 - */ 19.639 - if (irqflags & SA_SHIRQ) { 19.640 - if (!dev_id) 19.641 - printk("Bad boy: %s (at 0x%x) called us without a dev_id!\n", devname, (&irq)[-1]); 19.642 - } 19.643 -#endif 19.644 - 19.645 - if (irq >= NR_IRQS) 19.646 - return -EINVAL; 19.647 - if (!handler) 19.648 - return -EINVAL; 19.649 - 19.650 - action = (struct irqaction *) 19.651 - kmalloc(sizeof(struct irqaction), GFP_ATOMIC); 19.652 - if (!action) 19.653 - return -ENOMEM; 19.654 - 19.655 - action->handler = handler; 19.656 - action->flags = irqflags; 19.657 - cpus_clear(action->mask); 19.658 - action->name = devname; 19.659 - action->next = NULL; 19.660 - action->dev_id = dev_id; 19.661 - 19.662 - retval = setup_irq(irq, action); 19.663 - if (retval) 19.664 - kfree(action); 19.665 - return retval; 19.666 -} 19.667 - 19.668 -EXPORT_SYMBOL(request_irq); 19.669 - 19.670 -/** 19.671 - * free_irq - free an interrupt 19.672 - * @irq: Interrupt line to free 19.673 - * @dev_id: Device identity to free 19.674 - * 19.675 - * Remove an interrupt handler. The handler is removed and if the 19.676 - * interrupt line is no longer in use by any driver it is disabled. 19.677 - * On a shared IRQ the caller must ensure the interrupt is disabled 19.678 - * on the card it drives before calling this function. The function 19.679 - * does not return until any executing interrupts for this IRQ 19.680 - * have completed. 19.681 - * 19.682 - * This function must not be called from interrupt context. 19.683 - */ 19.684 - 19.685 -void free_irq(unsigned int irq, void *dev_id) 19.686 -{ 19.687 - irq_desc_t *desc; 19.688 - struct irqaction **p; 19.689 - unsigned long flags; 19.690 - 19.691 - if (irq >= NR_IRQS) 19.692 - return; 19.693 - 19.694 - desc = irq_desc + irq; 19.695 - spin_lock_irqsave(&desc->lock,flags); 19.696 - p = &desc->action; 19.697 - for (;;) { 19.698 - struct irqaction * action = *p; 19.699 - 19.700 - if (action) { 19.701 - struct irqaction **pp = p; 19.702 - p = &action->next; 19.703 - if (action->dev_id != dev_id) 19.704 - continue; 19.705 - 19.706 - /* Found it - now remove it from the list of entries */ 19.707 - *pp = action->next; 19.708 - if (!desc->action) { 19.709 - desc->status |= IRQ_DISABLED; 19.710 - desc->handler->shutdown(irq); 19.711 - } 19.712 - spin_unlock_irqrestore(&desc->lock,flags); 19.713 - 19.714 - /* Wait to make sure it's not being used on another CPU */ 19.715 - synchronize_irq(irq); 19.716 - 19.717 -#define SA_STATIC_ACTION 0x01000000 /* Is it our duty to free the action? */ 19.718 - if (!(action->flags & SA_STATIC_ACTION)) 19.719 - kfree(action); 19.720 - return; 19.721 - } 19.722 - printk("Trying to free free IRQ%d\n",irq); 19.723 - spin_unlock_irqrestore(&desc->lock,flags); 19.724 - return; 19.725 - } 19.726 -} 19.727 - 19.728 -EXPORT_SYMBOL(free_irq); 19.729 - 19.730 -/* 19.731 - * IRQ autodetection code.. 19.732 - * 19.733 - * This depends on the fact that any interrupt that 19.734 - * comes in on to an unassigned handler will get stuck 19.735 - * with "IRQ_WAITING" cleared and the interrupt 19.736 - * disabled. 19.737 - */ 19.738 - 19.739 -static DECLARE_MUTEX(probe_sem); 19.740 - 19.741 -/** 19.742 - * probe_irq_on - begin an interrupt autodetect 19.743 - * 19.744 - * Commence probing for an interrupt. The interrupts are scanned 19.745 - * and a mask of potential interrupt lines is returned. 19.746 - * 19.747 - */ 19.748 - 19.749 -unsigned long probe_irq_on(void) 19.750 -{ 19.751 - unsigned int i; 19.752 - irq_desc_t *desc; 19.753 - unsigned long val; 19.754 - unsigned long delay; 19.755 - 19.756 - down(&probe_sem); 19.757 - /* 19.758 - * something may have generated an irq long ago and we want to 19.759 - * flush such a longstanding irq before considering it as spurious. 19.760 - */ 19.761 - for (i = NR_PIRQS-1; i > 0; i--) { 19.762 - desc = irq_desc + i; 19.763 - 19.764 - spin_lock_irq(&desc->lock); 19.765 - if (!irq_desc[i].action) 19.766 - irq_desc[i].handler->startup(i); 19.767 - spin_unlock_irq(&desc->lock); 19.768 - } 19.769 - 19.770 - /* Wait for longstanding interrupts to trigger. */ 19.771 - for (delay = jiffies + HZ/50; time_after(delay, jiffies); ) 19.772 - /* about 20ms delay */ barrier(); 19.773 - 19.774 - /* 19.775 - * enable any unassigned irqs 19.776 - * (we must startup again here because if a longstanding irq 19.777 - * happened in the previous stage, it may have masked itself) 19.778 - */ 19.779 - for (i = NR_PIRQS-1; i > 0; i--) { 19.780 - desc = irq_desc + i; 19.781 - 19.782 - spin_lock_irq(&desc->lock); 19.783 - if (!desc->action) { 19.784 - desc->status |= IRQ_AUTODETECT | IRQ_WAITING; 19.785 - if (desc->handler->startup(i)) 19.786 - desc->status |= IRQ_PENDING; 19.787 - } 19.788 - spin_unlock_irq(&desc->lock); 19.789 - } 19.790 - 19.791 - /* 19.792 - * Wait for spurious interrupts to trigger 19.793 - */ 19.794 - for (delay = jiffies + HZ/10; time_after(delay, jiffies); ) 19.795 - /* about 100ms delay */ barrier(); 19.796 - 19.797 - /* 19.798 - * Now filter out any obviously spurious interrupts 19.799 - */ 19.800 - val = 0; 19.801 - for (i = 0; i < NR_PIRQS; i++) { 19.802 - irq_desc_t *desc = irq_desc + i; 19.803 - unsigned int status; 19.804 - 19.805 - spin_lock_irq(&desc->lock); 19.806 - status = desc->status; 19.807 - 19.808 - if (status & IRQ_AUTODETECT) { 19.809 - /* It triggered already - consider it spurious. */ 19.810 - if (!(status & IRQ_WAITING)) { 19.811 - desc->status = status & ~IRQ_AUTODETECT; 19.812 - desc->handler->shutdown(i); 19.813 - } else 19.814 - if (i < 32) 19.815 - val |= 1 << i; 19.816 - } 19.817 - spin_unlock_irq(&desc->lock); 19.818 - } 19.819 - 19.820 - return val; 19.821 -} 19.822 - 19.823 -EXPORT_SYMBOL(probe_irq_on); 19.824 - 19.825 -/* 19.826 - * Return a mask of triggered interrupts (this 19.827 - * can handle only legacy ISA interrupts). 19.828 - */ 19.829 - 19.830 -/** 19.831 - * probe_irq_mask - scan a bitmap of interrupt lines 19.832 - * @val: mask of interrupts to consider 19.833 - * 19.834 - * Scan the ISA bus interrupt lines and return a bitmap of 19.835 - * active interrupts. The interrupt probe logic state is then 19.836 - * returned to its previous value. 19.837 - * 19.838 - * Note: we need to scan all the irq's even though we will 19.839 - * only return ISA irq numbers - just so that we reset them 19.840 - * all to a known state. 19.841 - */ 19.842 -unsigned int probe_irq_mask(unsigned long val) 19.843 -{ 19.844 - int i; 19.845 - unsigned int mask; 19.846 - 19.847 - mask = 0; 19.848 - for (i = 0; i < NR_PIRQS; i++) { 19.849 - irq_desc_t *desc = irq_desc + i; 19.850 - unsigned int status; 19.851 - 19.852 - spin_lock_irq(&desc->lock); 19.853 - status = desc->status; 19.854 - 19.855 - if (status & IRQ_AUTODETECT) { 19.856 - if (i < 16 && !(status & IRQ_WAITING)) 19.857 - mask |= 1 << i; 19.858 - 19.859 - desc->status = status & ~IRQ_AUTODETECT; 19.860 - desc->handler->shutdown(i); 19.861 - } 19.862 - spin_unlock_irq(&desc->lock); 19.863 - } 19.864 - up(&probe_sem); 19.865 - 19.866 - return mask & val; 19.867 -} 19.868 - 19.869 -/* 19.870 - * Return the one interrupt that triggered (this can 19.871 - * handle any interrupt source). 19.872 - */ 19.873 - 19.874 -/** 19.875 - * probe_irq_off - end an interrupt autodetect 19.876 - * @val: mask of potential interrupts (unused) 19.877 - * 19.878 - * Scans the unused interrupt lines and returns the line which 19.879 - * appears to have triggered the interrupt. If no interrupt was 19.880 - * found then zero is returned. If more than one interrupt is 19.881 - * found then minus the first candidate is returned to indicate 19.882 - * their is doubt. 19.883 - * 19.884 - * The interrupt probe logic state is returned to its previous 19.885 - * value. 19.886 - * 19.887 - * BUGS: When used in a module (which arguably shouldnt happen) 19.888 - * nothing prevents two IRQ probe callers from overlapping. The 19.889 - * results of this are non-optimal. 19.890 - */ 19.891 - 19.892 -int probe_irq_off(unsigned long val) 19.893 -{ 19.894 - int i, irq_found, nr_irqs; 19.895 - 19.896 - nr_irqs = 0; 19.897 - irq_found = 0; 19.898 - for (i = 0; i < NR_PIRQS; i++) { 19.899 - irq_desc_t *desc = irq_desc + i; 19.900 - unsigned int status; 19.901 - 19.902 - spin_lock_irq(&desc->lock); 19.903 - status = desc->status; 19.904 - 19.905 - if (status & IRQ_AUTODETECT) { 19.906 - if (!(status & IRQ_WAITING)) { 19.907 - if (!nr_irqs) 19.908 - irq_found = i; 19.909 - nr_irqs++; 19.910 - } 19.911 - desc->status = status & ~IRQ_AUTODETECT; 19.912 - desc->handler->shutdown(i); 19.913 - } 19.914 - spin_unlock_irq(&desc->lock); 19.915 - } 19.916 - up(&probe_sem); 19.917 - 19.918 - if (nr_irqs > 1) 19.919 - irq_found = -irq_found; 19.920 - return irq_found; 19.921 -} 19.922 - 19.923 -EXPORT_SYMBOL(probe_irq_off); 19.924 - 19.925 -/* this was setup_x86_irq but it seems pretty generic */ 19.926 -int setup_irq(unsigned int irq, struct irqaction * new) 19.927 -{ 19.928 - int shared = 0; 19.929 - unsigned long flags; 19.930 - struct irqaction *old, **p; 19.931 - irq_desc_t *desc = irq_desc + irq; 19.932 - 19.933 - if (desc->handler == &no_irq_type) 19.934 - return -ENOSYS; 19.935 - /* 19.936 - * Some drivers like serial.c use request_irq() heavily, 19.937 - * so we have to be careful not to interfere with a 19.938 - * running system. 19.939 - */ 19.940 - if (new->flags & SA_SAMPLE_RANDOM) { 19.941 - /* 19.942 - * This function might sleep, we want to call it first, 19.943 - * outside of the atomic block. 19.944 - * Yes, this might clear the entropy pool if the wrong 19.945 - * driver is attempted to be loaded, without actually 19.946 - * installing a new handler, but is this really a problem, 19.947 - * only the sysadmin is able to do this. 19.948 - */ 19.949 - rand_initialize_irq(irq); 19.950 - } 19.951 - 19.952 - /* 19.953 - * The following block of code has to be executed atomically 19.954 - */ 19.955 - spin_lock_irqsave(&desc->lock,flags); 19.956 - p = &desc->action; 19.957 - if ((old = *p) != NULL) { 19.958 - /* Can't share interrupts unless both agree to */ 19.959 - if (!(old->flags & new->flags & SA_SHIRQ)) { 19.960 - spin_unlock_irqrestore(&desc->lock,flags); 19.961 - return -EBUSY; 19.962 - } 19.963 - 19.964 - /* add new interrupt at end of irq queue */ 19.965 - do { 19.966 - p = &old->next; 19.967 - old = *p; 19.968 - } while (old); 19.969 - shared = 1; 19.970 - } 19.971 - 19.972 - *p = new; 19.973 - 19.974 - if (!shared) { 19.975 - desc->depth = 0; 19.976 - desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS); 19.977 - desc->handler->startup(irq); 19.978 - } 19.979 - spin_unlock_irqrestore(&desc->lock,flags); 19.980 - 19.981 - register_irq_proc(irq); 19.982 - return 0; 19.983 -} 19.984 - 19.985 -static struct proc_dir_entry * root_irq_dir; 19.986 -static struct proc_dir_entry * irq_dir [NR_IRQS]; 19.987 - 19.988 -#ifdef CONFIG_SMP 19.989 - 19.990 -static struct proc_dir_entry *smp_affinity_entry[NR_IRQS]; 19.991 - 19.992 -cpumask_t irq_affinity[NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; 19.993 - 19.994 -static int irq_affinity_read_proc(char *page, char **start, off_t off, 19.995 - int count, int *eof, void *data) 19.996 -{ 19.997 - int len = cpumask_scnprintf(page, count, irq_affinity[(long)data]); 19.998 - if (count - len < 2) 19.999 - return -EINVAL; 19.1000 - len += sprintf(page + len, "\n"); 19.1001 - return len; 19.1002 -} 19.1003 - 19.1004 -static int irq_affinity_write_proc(struct file *file, const char __user *buffer, 19.1005 - unsigned long count, void *data) 19.1006 -{ 19.1007 - int irq = (long)data, full_count = count, err; 19.1008 - cpumask_t new_value, tmp; 19.1009 - 19.1010 - if (!irq_desc[irq].handler->set_affinity) 19.1011 - return -EIO; 19.1012 - 19.1013 - err = cpumask_parse(buffer, count, new_value); 19.1014 - if (err) 19.1015 - return err; 19.1016 - 19.1017 - /* 19.1018 - * Do not allow disabling IRQs completely - it's a too easy 19.1019 - * way to make the system unusable accidentally :-) At least 19.1020 - * one online CPU still has to be targeted. 19.1021 - */ 19.1022 - cpus_and(tmp, new_value, cpu_online_map); 19.1023 - if (cpus_empty(tmp)) 19.1024 - return -EINVAL; 19.1025 - 19.1026 - irq_affinity[irq] = new_value; 19.1027 - irq_desc[irq].handler->set_affinity(irq, 19.1028 - cpumask_of_cpu(first_cpu(new_value))); 19.1029 - 19.1030 - return full_count; 19.1031 -} 19.1032 - 19.1033 -#endif 19.1034 - 19.1035 -static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, 19.1036 - int count, int *eof, void *data) 19.1037 -{ 19.1038 - int len = cpumask_scnprintf(page, count, *(cpumask_t *)data); 19.1039 - if (count - len < 2) 19.1040 - return -EINVAL; 19.1041 - len += sprintf(page + len, "\n"); 19.1042 - return len; 19.1043 -} 19.1044 - 19.1045 -static int prof_cpu_mask_write_proc (struct file *file, const char __user *buffer, 19.1046 - unsigned long count, void *data) 19.1047 -{ 19.1048 - cpumask_t *mask = (cpumask_t *)data; 19.1049 - unsigned long full_count = count, err; 19.1050 - cpumask_t new_value; 19.1051 - 19.1052 - err = cpumask_parse(buffer, count, new_value); 19.1053 - if (err) 19.1054 - return err; 19.1055 - 19.1056 - *mask = new_value; 19.1057 - return full_count; 19.1058 -} 19.1059 - 19.1060 -#define MAX_NAMELEN 10 19.1061 - 19.1062 -static void register_irq_proc (unsigned int irq) 19.1063 -{ 19.1064 - char name [MAX_NAMELEN]; 19.1065 - 19.1066 - if (!root_irq_dir || (irq_desc[irq].handler == &no_irq_type) || 19.1067 - irq_dir[irq]) 19.1068 - return; 19.1069 - 19.1070 - memset(name, 0, MAX_NAMELEN); 19.1071 - sprintf(name, "%d", irq); 19.1072 - 19.1073 - /* create /proc/irq/1234 */ 19.1074 - irq_dir[irq] = proc_mkdir(name, root_irq_dir); 19.1075 - 19.1076 -#ifdef CONFIG_SMP 19.1077 - { 19.1078 - struct proc_dir_entry *entry; 19.1079 - 19.1080 - /* create /proc/irq/1234/smp_affinity */ 19.1081 - entry = create_proc_entry("smp_affinity", 0600, irq_dir[irq]); 19.1082 - 19.1083 - if (entry) { 19.1084 - entry->nlink = 1; 19.1085 - entry->data = (void *)(long)irq; 19.1086 - entry->read_proc = irq_affinity_read_proc; 19.1087 - entry->write_proc = irq_affinity_write_proc; 19.1088 - } 19.1089 - 19.1090 - smp_affinity_entry[irq] = entry; 19.1091 - } 19.1092 -#endif 19.1093 -} 19.1094 - 19.1095 -unsigned long prof_cpu_mask = -1; 19.1096 - 19.1097 -void init_irq_proc (void) 19.1098 -{ 19.1099 - struct proc_dir_entry *entry; 19.1100 - int i; 19.1101 - 19.1102 - /* create /proc/irq */ 19.1103 - root_irq_dir = proc_mkdir("irq", NULL); 19.1104 - 19.1105 - /* create /proc/irq/prof_cpu_mask */ 19.1106 - entry = create_proc_entry("prof_cpu_mask", 0600, root_irq_dir); 19.1107 - 19.1108 - if (!entry) 19.1109 - return; 19.1110 - 19.1111 - entry->nlink = 1; 19.1112 - entry->data = (void *)&prof_cpu_mask; 19.1113 - entry->read_proc = prof_cpu_mask_read_proc; 19.1114 - entry->write_proc = prof_cpu_mask_write_proc; 19.1115 - 19.1116 - /* 19.1117 - * Create entries for all existing IRQs. 19.1118 - */ 19.1119 - for (i = 0; i < NR_IRQS; i++) 19.1120 - register_irq_proc(i); 19.1121 -} 19.1122 - 19.1123 - 19.1124 -#ifdef CONFIG_4KSTACKS 19.1125 -/* 19.1126 - * These should really be __section__(".bss.page_aligned") as well, but 19.1127 - * gcc's 3.0 and earlier don't handle that correctly. 19.1128 - */ 19.1129 -static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); 19.1130 -static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); 19.1131 - 19.1132 -/* 19.1133 - * allocate per-cpu stacks for hardirq and for softirq processing 19.1134 - */ 19.1135 -void irq_ctx_init(int cpu) 19.1136 -{ 19.1137 - union irq_ctx *irqctx; 19.1138 - 19.1139 - if (hardirq_ctx[cpu]) 19.1140 - return; 19.1141 - 19.1142 - irqctx = (union irq_ctx*) &hardirq_stack[cpu*THREAD_SIZE]; 19.1143 - irqctx->tinfo.task = NULL; 19.1144 - irqctx->tinfo.exec_domain = NULL; 19.1145 - irqctx->tinfo.cpu = cpu; 19.1146 - irqctx->tinfo.preempt_count = HARDIRQ_OFFSET; 19.1147 - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); 19.1148 - 19.1149 - hardirq_ctx[cpu] = irqctx; 19.1150 - 19.1151 - irqctx = (union irq_ctx*) &softirq_stack[cpu*THREAD_SIZE]; 19.1152 - irqctx->tinfo.task = NULL; 19.1153 - irqctx->tinfo.exec_domain = NULL; 19.1154 - irqctx->tinfo.cpu = cpu; 19.1155 - irqctx->tinfo.preempt_count = SOFTIRQ_OFFSET; 19.1156 - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); 19.1157 - 19.1158 - softirq_ctx[cpu] = irqctx; 19.1159 - 19.1160 - printk("CPU %u irqstacks, hard=%p soft=%p\n", 19.1161 - cpu,hardirq_ctx[cpu],softirq_ctx[cpu]); 19.1162 -} 19.1163 - 19.1164 -extern asmlinkage void __do_softirq(void); 19.1165 - 19.1166 -asmlinkage void do_softirq(void) 19.1167 -{ 19.1168 - unsigned long flags; 19.1169 - struct thread_info *curctx; 19.1170 - union irq_ctx *irqctx; 19.1171 - u32 *isp; 19.1172 - 19.1173 - if (in_interrupt()) 19.1174 - return; 19.1175 - 19.1176 - local_irq_save(flags); 19.1177 - 19.1178 - if (local_softirq_pending()) { 19.1179 - curctx = current_thread_info(); 19.1180 - irqctx = softirq_ctx[smp_processor_id()]; 19.1181 - irqctx->tinfo.task = curctx->task; 19.1182 - irqctx->tinfo.previous_esp = current_stack_pointer(); 19.1183 - 19.1184 - /* build the stack frame on the softirq stack */ 19.1185 - isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); 19.1186 - 19.1187 - 19.1188 - asm volatile( 19.1189 - " xchgl %%ebx,%%esp \n" 19.1190 - " call __do_softirq \n" 19.1191 - " movl %%ebx,%%esp \n" 19.1192 - : "=b"(isp) 19.1193 - : "0"(isp) 19.1194 - : "memory", "cc", "edx", "ecx", "eax" 19.1195 - ); 19.1196 - } 19.1197 - 19.1198 - local_irq_restore(flags); 19.1199 -} 19.1200 - 19.1201 -EXPORT_SYMBOL(do_softirq); 19.1202 -#endif
20.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c Mon Oct 25 12:45:34 2004 +0000 20.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 20.3 @@ -1,265 +0,0 @@ 20.4 -/* 20.5 - * linux/kernel/ldt.c 20.6 - * 20.7 - * Copyright (C) 1992 Krishna Balasubramanian and Linus Torvalds 20.8 - * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com> 20.9 - */ 20.10 - 20.11 -#include <linux/errno.h> 20.12 -#include <linux/sched.h> 20.13 -#include <linux/string.h> 20.14 -#include <linux/mm.h> 20.15 -#include <linux/smp.h> 20.16 -#include <linux/smp_lock.h> 20.17 -#include <linux/vmalloc.h> 20.18 -#include <linux/slab.h> 20.19 - 20.20 -#include <asm/uaccess.h> 20.21 -#include <asm/system.h> 20.22 -#include <asm/ldt.h> 20.23 -#include <asm/desc.h> 20.24 - 20.25 -#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ 20.26 -static void flush_ldt(void *null) 20.27 -{ 20.28 - if (current->active_mm) { 20.29 - load_LDT(¤t->active_mm->context); 20.30 - flush_page_update_queue(); 20.31 - } 20.32 -} 20.33 -#endif 20.34 - 20.35 -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) 20.36 -{ 20.37 - void *oldldt; 20.38 - void *newldt; 20.39 - int oldsize; 20.40 - 20.41 - if (mincount <= pc->size) 20.42 - return 0; 20.43 - oldsize = pc->size; 20.44 - mincount = (mincount+511)&(~511); 20.45 - if (mincount*LDT_ENTRY_SIZE > PAGE_SIZE) 20.46 - newldt = vmalloc(mincount*LDT_ENTRY_SIZE); 20.47 - else 20.48 - newldt = kmalloc(mincount*LDT_ENTRY_SIZE, GFP_KERNEL); 20.49 - 20.50 - if (!newldt) 20.51 - return -ENOMEM; 20.52 - 20.53 - if (oldsize) 20.54 - memcpy(newldt, pc->ldt, oldsize*LDT_ENTRY_SIZE); 20.55 - oldldt = pc->ldt; 20.56 - memset(newldt+oldsize*LDT_ENTRY_SIZE, 0, (mincount-oldsize)*LDT_ENTRY_SIZE); 20.57 - pc->ldt = newldt; 20.58 - wmb(); 20.59 - pc->size = mincount; 20.60 - wmb(); 20.61 - 20.62 - if (reload) { 20.63 -#ifdef CONFIG_SMP 20.64 - cpumask_t mask; 20.65 - preempt_disable(); 20.66 -#endif 20.67 - make_pages_readonly(pc->ldt, (pc->size * LDT_ENTRY_SIZE) / 20.68 - PAGE_SIZE); 20.69 - load_LDT(pc); 20.70 - flush_page_update_queue(); 20.71 -#ifdef CONFIG_SMP 20.72 - mask = cpumask_of_cpu(smp_processor_id()); 20.73 - if (!cpus_equal(current->mm->cpu_vm_mask, mask)) 20.74 - smp_call_function(flush_ldt, NULL, 1, 1); 20.75 - preempt_enable(); 20.76 -#endif 20.77 - } 20.78 - if (oldsize) { 20.79 - make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) / 20.80 - PAGE_SIZE); 20.81 - flush_page_update_queue(); 20.82 - if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE) 20.83 - vfree(oldldt); 20.84 - else 20.85 - kfree(oldldt); 20.86 - } 20.87 - return 0; 20.88 -} 20.89 - 20.90 -static inline int copy_ldt(mm_context_t *new, mm_context_t *old) 20.91 -{ 20.92 - int err = alloc_ldt(new, old->size, 0); 20.93 - if (err < 0) 20.94 - return err; 20.95 - memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE); 20.96 - make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) / 20.97 - PAGE_SIZE); 20.98 - flush_page_update_queue(); 20.99 - return 0; 20.100 -} 20.101 - 20.102 -/* 20.103 - * we do not have to muck with descriptors here, that is 20.104 - * done in switch_mm() as needed. 20.105 - */ 20.106 -int init_new_context(struct task_struct *tsk, struct mm_struct *mm) 20.107 -{ 20.108 - struct mm_struct * old_mm; 20.109 - int retval = 0; 20.110 - 20.111 - init_MUTEX(&mm->context.sem); 20.112 - mm->context.size = 0; 20.113 - old_mm = current->mm; 20.114 - if (old_mm && old_mm->context.size > 0) { 20.115 - down(&old_mm->context.sem); 20.116 - retval = copy_ldt(&mm->context, &old_mm->context); 20.117 - up(&old_mm->context.sem); 20.118 - } 20.119 - return retval; 20.120 -} 20.121 - 20.122 -/* 20.123 - * No need to lock the MM as we are the last user 20.124 - */ 20.125 -void destroy_context(struct mm_struct *mm) 20.126 -{ 20.127 - if (mm->context.size) { 20.128 - if (mm == current->active_mm) 20.129 - clear_LDT(); 20.130 - make_pages_writable(mm->context.ldt, 20.131 - (mm->context.size * LDT_ENTRY_SIZE) / 20.132 - PAGE_SIZE); 20.133 - flush_page_update_queue(); 20.134 - if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE) 20.135 - vfree(mm->context.ldt); 20.136 - else 20.137 - kfree(mm->context.ldt); 20.138 - mm->context.size = 0; 20.139 - } 20.140 -} 20.141 - 20.142 -static int read_ldt(void __user * ptr, unsigned long bytecount) 20.143 -{ 20.144 - int err; 20.145 - unsigned long size; 20.146 - struct mm_struct * mm = current->mm; 20.147 - 20.148 - if (!mm->context.size) 20.149 - return 0; 20.150 - if (bytecount > LDT_ENTRY_SIZE*LDT_ENTRIES) 20.151 - bytecount = LDT_ENTRY_SIZE*LDT_ENTRIES; 20.152 - 20.153 - down(&mm->context.sem); 20.154 - size = mm->context.size*LDT_ENTRY_SIZE; 20.155 - if (size > bytecount) 20.156 - size = bytecount; 20.157 - 20.158 - err = 0; 20.159 - if (copy_to_user(ptr, mm->context.ldt, size)) 20.160 - err = -EFAULT; 20.161 - up(&mm->context.sem); 20.162 - if (err < 0) 20.163 - return err; 20.164 - if (size != bytecount) { 20.165 - /* zero-fill the rest */ 20.166 - clear_user(ptr+size, bytecount-size); 20.167 - } 20.168 - return bytecount; 20.169 -} 20.170 - 20.171 -static int read_default_ldt(void __user * ptr, unsigned long bytecount) 20.172 -{ 20.173 - int err; 20.174 - unsigned long size; 20.175 - void *address; 20.176 - 20.177 - err = 0; 20.178 - address = &default_ldt[0]; 20.179 - size = 5*sizeof(struct desc_struct); 20.180 - if (size > bytecount) 20.181 - size = bytecount; 20.182 - 20.183 - err = size; 20.184 - if (copy_to_user(ptr, address, size)) 20.185 - err = -EFAULT; 20.186 - 20.187 - return err; 20.188 -} 20.189 - 20.190 -static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode) 20.191 -{ 20.192 - struct mm_struct * mm = current->mm; 20.193 - __u32 entry_1, entry_2, *lp; 20.194 - unsigned long phys_lp; 20.195 - int error; 20.196 - struct user_desc ldt_info; 20.197 - 20.198 - error = -EINVAL; 20.199 - if (bytecount != sizeof(ldt_info)) 20.200 - goto out; 20.201 - error = -EFAULT; 20.202 - if (copy_from_user(&ldt_info, ptr, sizeof(ldt_info))) 20.203 - goto out; 20.204 - 20.205 - error = -EINVAL; 20.206 - if (ldt_info.entry_number >= LDT_ENTRIES) 20.207 - goto out; 20.208 - if (ldt_info.contents == 3) { 20.209 - if (oldmode) 20.210 - goto out; 20.211 - if (ldt_info.seg_not_present == 0) 20.212 - goto out; 20.213 - } 20.214 - 20.215 - down(&mm->context.sem); 20.216 - if (ldt_info.entry_number >= mm->context.size) { 20.217 - error = alloc_ldt(¤t->mm->context, ldt_info.entry_number+1, 1); 20.218 - if (error < 0) 20.219 - goto out_unlock; 20.220 - } 20.221 - 20.222 - lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->context.ldt); 20.223 - phys_lp = arbitrary_virt_to_phys(lp); 20.224 - 20.225 - /* Allow LDTs to be cleared by the user. */ 20.226 - if (ldt_info.base_addr == 0 && ldt_info.limit == 0) { 20.227 - if (oldmode || LDT_empty(&ldt_info)) { 20.228 - entry_1 = 0; 20.229 - entry_2 = 0; 20.230 - goto install; 20.231 - } 20.232 - } 20.233 - 20.234 - entry_1 = LDT_entry_a(&ldt_info); 20.235 - entry_2 = LDT_entry_b(&ldt_info); 20.236 - if (oldmode) 20.237 - entry_2 &= ~(1 << 20); 20.238 - 20.239 - /* Install the new entry ... */ 20.240 -install: 20.241 - error = HYPERVISOR_update_descriptor(phys_lp, entry_1, entry_2); 20.242 - 20.243 -out_unlock: 20.244 - up(&mm->context.sem); 20.245 -out: 20.246 - return error; 20.247 -} 20.248 - 20.249 -asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) 20.250 -{ 20.251 - int ret = -ENOSYS; 20.252 - 20.253 - switch (func) { 20.254 - case 0: 20.255 - ret = read_ldt(ptr, bytecount); 20.256 - break; 20.257 - case 1: 20.258 - ret = write_ldt(ptr, bytecount, 1); 20.259 - break; 20.260 - case 2: 20.261 - ret = read_default_ldt(ptr, bytecount); 20.262 - break; 20.263 - case 0x11: 20.264 - ret = write_ldt(ptr, bytecount, 0); 20.265 - break; 20.266 - } 20.267 - return ret; 20.268 -}
21.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c Mon Oct 25 12:45:34 2004 +0000 21.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 21.3 @@ -1,106 +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 - 21.20 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.21 -#define pte_offset_kernel pte_offset 21.22 -void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, 21.23 - dma_addr_t *dma_handle) 21.24 -#else 21.25 -void *dma_alloc_coherent(struct device *dev, size_t size, 21.26 - dma_addr_t *dma_handle, int gfp) 21.27 -#endif 21.28 -{ 21.29 - void *ret; 21.30 - unsigned int order = get_order(size); 21.31 - unsigned long vstart; 21.32 - 21.33 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.34 - int gfp = GFP_ATOMIC; 21.35 - 21.36 - if (hwdev == NULL || ((u32)hwdev->dma_mask < 0xffffffff)) 21.37 - gfp |= GFP_DMA; 21.38 -#else 21.39 - /* ignore region specifiers */ 21.40 - gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); 21.41 - 21.42 - if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) 21.43 - gfp |= GFP_DMA; 21.44 -#endif 21.45 - 21.46 - vstart = __get_free_pages(gfp, order); 21.47 - ret = (void *)vstart; 21.48 - if (ret == NULL) 21.49 - return ret; 21.50 - 21.51 - /* 21.52 - * Ensure multi-page extents are contiguous in machine memory. 21.53 - * This code could be cleaned up some, and the number of 21.54 - * hypercalls reduced. 21.55 - */ 21.56 - if (size > PAGE_SIZE) { 21.57 - pgd_t *pgd; 21.58 - pmd_t *pmd; 21.59 - pte_t *pte; 21.60 - unsigned long pfn, i; 21.61 - scrub_pages(vstart, 1 << order); 21.62 - /* 1. Zap current PTEs, giving away the underlying pages. */ 21.63 - for (i = 0; i < (1<<order); i++) { 21.64 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 21.65 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 21.66 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 21.67 - pfn = pte->pte_low >> PAGE_SHIFT; 21.68 - queue_l1_entry_update(pte, 0); 21.69 - phys_to_machine_mapping[(__pa(ret)>>PAGE_SHIFT)+i] = 21.70 - INVALID_P2M_ENTRY; 21.71 - flush_page_update_queue(); 21.72 - if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation, 21.73 - &pfn, 1, 0) != 1) BUG(); 21.74 - } 21.75 - /* 2. Get a new contiguous memory extent. */ 21.76 - if (HYPERVISOR_dom_mem_op(MEMOP_increase_reservation, 21.77 - &pfn, 1, order) != 1) BUG(); 21.78 - /* 3. Map the new extent in place of old pages. */ 21.79 - for (i = 0; i < (1<<order); i++) { 21.80 - pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE))); 21.81 - pmd = pmd_offset(pgd, (vstart + (i*PAGE_SIZE))); 21.82 - pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 21.83 - queue_l1_entry_update( 21.84 - pte, ((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL); 21.85 - queue_machphys_update( 21.86 - pfn+i, (__pa(ret)>>PAGE_SHIFT)+i); 21.87 - phys_to_machine_mapping[(__pa(ret)>>PAGE_SHIFT)+i] = 21.88 - pfn+i; 21.89 - } 21.90 - /* Flush updates through and flush the TLB. */ 21.91 - xen_tlb_flush(); 21.92 - } 21.93 - 21.94 - memset(ret, 0, size); 21.95 - *dma_handle = virt_to_bus(ret); 21.96 - 21.97 - return ret; 21.98 -} 21.99 - 21.100 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 21.101 -void pci_free_consistent(struct pci_dev *hwdev, size_t size, 21.102 - void *vaddr, dma_addr_t dma_handle) 21.103 -#else 21.104 -void dma_free_coherent(struct device *dev, size_t size, 21.105 - void *vaddr, dma_addr_t dma_handle) 21.106 -#endif 21.107 -{ 21.108 - free_pages((unsigned long)vaddr, get_order(size)); 21.109 -}
22.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c Mon Oct 25 12:45:34 2004 +0000 22.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 22.3 @@ -1,827 +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/version.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/hypervisor-ifs/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 -/* 22.66 - * Return saved PC of a blocked thread. 22.67 - */ 22.68 -unsigned long thread_saved_pc(struct task_struct *tsk) 22.69 -{ 22.70 - return ((unsigned long *)tsk->thread.esp)[3]; 22.71 -} 22.72 - 22.73 -/* 22.74 - * Powermanagement idle function, if any.. 22.75 - */ 22.76 -void (*pm_idle)(void); 22.77 - 22.78 -void disable_hlt(void) 22.79 -{ 22.80 - hlt_counter++; 22.81 -} 22.82 - 22.83 -EXPORT_SYMBOL(disable_hlt); 22.84 - 22.85 -void enable_hlt(void) 22.86 -{ 22.87 - hlt_counter--; 22.88 -} 22.89 - 22.90 -EXPORT_SYMBOL(enable_hlt); 22.91 - 22.92 -/* 22.93 - * We use this if we don't have any better 22.94 - * idle routine.. 22.95 - */ 22.96 -void default_idle(void) 22.97 -{ 22.98 - if (!hlt_counter && current_cpu_data.hlt_works_ok) { 22.99 - local_irq_disable(); 22.100 - if (!need_resched()) 22.101 - safe_halt(); 22.102 - else 22.103 - local_irq_enable(); 22.104 - } 22.105 -} 22.106 - 22.107 -/* 22.108 - * On SMP it's slightly faster (but much more power-consuming!) 22.109 - * to poll the ->work.need_resched flag instead of waiting for the 22.110 - * cross-CPU IPI to arrive. Use this option with caution. 22.111 - */ 22.112 -static void poll_idle (void) 22.113 -{ 22.114 - int oldval; 22.115 - 22.116 - local_irq_enable(); 22.117 - 22.118 - /* 22.119 - * Deal with another CPU just having chosen a thread to 22.120 - * run here: 22.121 - */ 22.122 - oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED); 22.123 - 22.124 - if (!oldval) { 22.125 - set_thread_flag(TIF_POLLING_NRFLAG); 22.126 - asm volatile( 22.127 - "2:" 22.128 - "testl %0, %1;" 22.129 - "rep; nop;" 22.130 - "je 2b;" 22.131 - : : "i"(_TIF_NEED_RESCHED), "m" (current_thread_info()->flags)); 22.132 - 22.133 - clear_thread_flag(TIF_POLLING_NRFLAG); 22.134 - } else { 22.135 - set_need_resched(); 22.136 - } 22.137 -} 22.138 - 22.139 -/* 22.140 - * The idle thread. There's no useful work to be 22.141 - * done, so just try to conserve power and have a 22.142 - * low exit latency (ie sit in a loop waiting for 22.143 - * somebody to say that they'd like to reschedule) 22.144 - */ 22.145 -void cpu_idle (void) 22.146 -{ 22.147 - /* endless idle loop with no priority at all */ 22.148 - while (1) { 22.149 - while (!need_resched()) { 22.150 - void (*idle)(void) = pm_idle; 22.151 - 22.152 - if (!idle) 22.153 - idle = default_idle; 22.154 - 22.155 - irq_stat[smp_processor_id()].idle_timestamp = jiffies; 22.156 - idle(); 22.157 - } 22.158 - schedule(); 22.159 - } 22.160 -} 22.161 - 22.162 -/* 22.163 - * This uses new MONITOR/MWAIT instructions on P4 processors with PNI, 22.164 - * which can obviate IPI to trigger checking of need_resched. 22.165 - * We execute MONITOR against need_resched and enter optimized wait state 22.166 - * through MWAIT. Whenever someone changes need_resched, we would be woken 22.167 - * up from MWAIT (without an IPI). 22.168 - */ 22.169 -static void mwait_idle(void) 22.170 -{ 22.171 - local_irq_enable(); 22.172 - 22.173 - if (!need_resched()) { 22.174 - set_thread_flag(TIF_POLLING_NRFLAG); 22.175 - do { 22.176 - __monitor((void *)¤t_thread_info()->flags, 0, 0); 22.177 - if (need_resched()) 22.178 - break; 22.179 - __mwait(0, 0); 22.180 - } while (!need_resched()); 22.181 - clear_thread_flag(TIF_POLLING_NRFLAG); 22.182 - } 22.183 -} 22.184 - 22.185 -void __init select_idle_routine(const struct cpuinfo_x86 *c) 22.186 -{ 22.187 - if (cpu_has(c, X86_FEATURE_MWAIT)) { 22.188 - printk("monitor/mwait feature present.\n"); 22.189 - /* 22.190 - * Skip, if setup has overridden idle. 22.191 - * Also, take care of system with asymmetric CPUs. 22.192 - * Use, mwait_idle only if all cpus support it. 22.193 - * If not, we fallback to default_idle() 22.194 - */ 22.195 - if (!pm_idle) { 22.196 - printk("using mwait in idle threads.\n"); 22.197 - pm_idle = mwait_idle; 22.198 - } 22.199 - return; 22.200 - } 22.201 - if (!pm_idle) 22.202 - pm_idle = default_idle; 22.203 - return; 22.204 -} 22.205 - 22.206 -static int __init idle_setup (char *str) 22.207 -{ 22.208 - if (!strncmp(str, "poll", 4)) { 22.209 - printk("using polling idle threads.\n"); 22.210 - pm_idle = poll_idle; 22.211 -#ifdef CONFIG_X86_SMP 22.212 - if (smp_num_siblings > 1) 22.213 - printk("WARNING: polling idle and HT enabled, performance may degrade.\n"); 22.214 -#endif 22.215 - } else if (!strncmp(str, "halt", 4)) { 22.216 - printk("using halt in idle threads.\n"); 22.217 - pm_idle = default_idle; 22.218 - } 22.219 - 22.220 - return 1; 22.221 -} 22.222 - 22.223 -__setup("idle=", idle_setup); 22.224 - 22.225 -void show_regs(struct pt_regs * regs) 22.226 -{ 22.227 - printk("\n"); 22.228 - printk("Pid: %d, comm: %20s\n", current->pid, current->comm); 22.229 - printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id()); 22.230 - print_symbol("EIP is at %s\n", regs->eip); 22.231 - 22.232 - if (regs->xcs & 2) 22.233 - printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); 22.234 - printk(" EFLAGS: %08lx %s (%s)\n",regs->eflags, print_tainted(),UTS_RELEASE); 22.235 - printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", 22.236 - regs->eax,regs->ebx,regs->ecx,regs->edx); 22.237 - printk("ESI: %08lx EDI: %08lx EBP: %08lx", 22.238 - regs->esi, regs->edi, regs->ebp); 22.239 - printk(" DS: %04x ES: %04x\n", 22.240 - 0xffff & regs->xds,0xffff & regs->xes); 22.241 - 22.242 - show_trace(NULL, ®s->esp); 22.243 -} 22.244 - 22.245 -/* 22.246 - * This gets run with %ebx containing the 22.247 - * function to call, and %edx containing 22.248 - * the "args". 22.249 - */ 22.250 -extern void kernel_thread_helper(void); 22.251 -__asm__(".section .text\n" 22.252 - ".align 4\n" 22.253 - "kernel_thread_helper:\n\t" 22.254 - "movl %edx,%eax\n\t" 22.255 - "pushl %edx\n\t" 22.256 - "call *%ebx\n\t" 22.257 - "pushl %eax\n\t" 22.258 - "call do_exit\n" 22.259 - ".previous"); 22.260 - 22.261 -/* 22.262 - * Create a kernel thread 22.263 - */ 22.264 -int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) 22.265 -{ 22.266 - struct pt_regs regs; 22.267 - 22.268 - memset(®s, 0, sizeof(regs)); 22.269 - 22.270 - regs.ebx = (unsigned long) fn; 22.271 - regs.edx = (unsigned long) arg; 22.272 - 22.273 - regs.xds = __USER_DS; 22.274 - regs.xes = __USER_DS; 22.275 - regs.orig_eax = -1; 22.276 - regs.eip = (unsigned long) kernel_thread_helper; 22.277 - regs.xcs = __KERNEL_CS; 22.278 - regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; 22.279 - 22.280 - /* Ok, create the new process.. */ 22.281 - return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); 22.282 -} 22.283 - 22.284 -/* 22.285 - * Free current thread data structures etc.. 22.286 - */ 22.287 -void exit_thread(void) 22.288 -{ 22.289 - struct task_struct *tsk = current; 22.290 - 22.291 - /* The process may have allocated an io port bitmap... nuke it. */ 22.292 - if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) { 22.293 - int cpu = get_cpu(); 22.294 - struct tss_struct *tss = init_tss + cpu; 22.295 - kfree(tsk->thread.io_bitmap_ptr); 22.296 - tsk->thread.io_bitmap_ptr = NULL; 22.297 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 22.298 - put_cpu(); 22.299 - } 22.300 -} 22.301 - 22.302 -void flush_thread(void) 22.303 -{ 22.304 - struct task_struct *tsk = current; 22.305 - 22.306 - memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8); 22.307 - memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); 22.308 - /* 22.309 - * Forget coprocessor state.. 22.310 - */ 22.311 - clear_fpu(tsk); 22.312 - tsk->used_math = 0; 22.313 -} 22.314 - 22.315 -void release_thread(struct task_struct *dead_task) 22.316 -{ 22.317 - if (dead_task->mm) { 22.318 - // temporary debugging check 22.319 - if (dead_task->mm->context.size) { 22.320 - printk("WARNING: dead process %8s still has LDT? <%p/%d>\n", 22.321 - dead_task->comm, 22.322 - dead_task->mm->context.ldt, 22.323 - dead_task->mm->context.size); 22.324 - BUG(); 22.325 - } 22.326 - } 22.327 - 22.328 - release_x86_irqs(dead_task); 22.329 -} 22.330 - 22.331 -/* 22.332 - * This gets called before we allocate a new thread and copy 22.333 - * the current task into it. 22.334 - */ 22.335 -void prepare_to_copy(struct task_struct *tsk) 22.336 -{ 22.337 - unlazy_fpu(tsk); 22.338 -} 22.339 - 22.340 -int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, 22.341 - unsigned long unused, 22.342 - struct task_struct * p, struct pt_regs * regs) 22.343 -{ 22.344 - struct pt_regs * childregs; 22.345 - struct task_struct *tsk; 22.346 - int err; 22.347 - unsigned long eflags; 22.348 - 22.349 - childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; 22.350 - *childregs = *regs; 22.351 - childregs->eax = 0; 22.352 - childregs->esp = esp; 22.353 - p->set_child_tid = p->clear_child_tid = NULL; 22.354 - 22.355 - p->thread.esp = (unsigned long) childregs; 22.356 - p->thread.esp0 = (unsigned long) (childregs+1); 22.357 - 22.358 - p->thread.eip = (unsigned long) ret_from_fork; 22.359 - 22.360 - savesegment(fs,p->thread.fs); 22.361 - savesegment(gs,p->thread.gs); 22.362 - 22.363 - tsk = current; 22.364 - if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) { 22.365 - p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); 22.366 - if (!p->thread.io_bitmap_ptr) 22.367 - return -ENOMEM; 22.368 - memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, 22.369 - IO_BITMAP_BYTES); 22.370 - } 22.371 - 22.372 - /* 22.373 - * Set a new TLS for the child thread? 22.374 - */ 22.375 - if (clone_flags & CLONE_SETTLS) { 22.376 - struct desc_struct *desc; 22.377 - struct user_desc info; 22.378 - int idx; 22.379 - 22.380 - err = -EFAULT; 22.381 - if (copy_from_user(&info, (void __user *)childregs->esi, sizeof(info))) 22.382 - goto out; 22.383 - err = -EINVAL; 22.384 - if (LDT_empty(&info)) 22.385 - goto out; 22.386 - 22.387 - idx = info.entry_number; 22.388 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.389 - goto out; 22.390 - 22.391 - desc = p->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 22.392 - desc->a = LDT_entry_a(&info); 22.393 - desc->b = LDT_entry_b(&info); 22.394 - } 22.395 - 22.396 - 22.397 - __asm__ __volatile__ ( "pushfl; popl %0" : "=r" (eflags) : ); 22.398 - p->thread.io_pl = (eflags >> 12) & 3; 22.399 - 22.400 - err = 0; 22.401 - out: 22.402 - if (err && p->thread.io_bitmap_ptr) 22.403 - kfree(p->thread.io_bitmap_ptr); 22.404 - return err; 22.405 -} 22.406 - 22.407 -/* 22.408 - * fill in the user structure for a core dump.. 22.409 - */ 22.410 -void dump_thread(struct pt_regs * regs, struct user * dump) 22.411 -{ 22.412 - int i; 22.413 - 22.414 -/* changed the size calculations - should hopefully work better. lbt */ 22.415 - dump->magic = CMAGIC; 22.416 - dump->start_code = 0; 22.417 - dump->start_stack = regs->esp & ~(PAGE_SIZE - 1); 22.418 - dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT; 22.419 - dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT; 22.420 - dump->u_dsize -= dump->u_tsize; 22.421 - dump->u_ssize = 0; 22.422 - for (i = 0; i < 8; i++) 22.423 - dump->u_debugreg[i] = current->thread.debugreg[i]; 22.424 - 22.425 - if (dump->start_stack < TASK_SIZE) 22.426 - dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT; 22.427 - 22.428 - dump->regs.ebx = regs->ebx; 22.429 - dump->regs.ecx = regs->ecx; 22.430 - dump->regs.edx = regs->edx; 22.431 - dump->regs.esi = regs->esi; 22.432 - dump->regs.edi = regs->edi; 22.433 - dump->regs.ebp = regs->ebp; 22.434 - dump->regs.eax = regs->eax; 22.435 - dump->regs.ds = regs->xds; 22.436 - dump->regs.es = regs->xes; 22.437 - savesegment(fs,dump->regs.fs); 22.438 - savesegment(gs,dump->regs.gs); 22.439 - dump->regs.orig_eax = regs->orig_eax; 22.440 - dump->regs.eip = regs->eip; 22.441 - dump->regs.cs = regs->xcs; 22.442 - dump->regs.eflags = regs->eflags; 22.443 - dump->regs.esp = regs->esp; 22.444 - dump->regs.ss = regs->xss; 22.445 - 22.446 - dump->u_fpvalid = dump_fpu (regs, &dump->i387); 22.447 -} 22.448 - 22.449 -/* 22.450 - * Capture the user space registers if the task is not running (in user space) 22.451 - */ 22.452 -int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) 22.453 -{ 22.454 - struct pt_regs ptregs; 22.455 - 22.456 - ptregs = *(struct pt_regs *) 22.457 - ((unsigned long)tsk->thread_info+THREAD_SIZE - sizeof(ptregs)); 22.458 - ptregs.xcs &= 0xffff; 22.459 - ptregs.xds &= 0xffff; 22.460 - ptregs.xes &= 0xffff; 22.461 - ptregs.xss &= 0xffff; 22.462 - 22.463 - elf_core_copy_regs(regs, &ptregs); 22.464 - 22.465 - return 1; 22.466 -} 22.467 - 22.468 -/* 22.469 - * This special macro can be used to load a debugging register 22.470 - */ 22.471 -#define loaddebug(thread,register) \ 22.472 - HYPERVISOR_set_debugreg((register), \ 22.473 - (thread->debugreg[register])) 22.474 - 22.475 -/* 22.476 - * switch_to(x,yn) should switch tasks from x to y. 22.477 - * 22.478 - * We fsave/fwait so that an exception goes off at the right time 22.479 - * (as a call from the fsave or fwait in effect) rather than to 22.480 - * the wrong process. Lazy FP saving no longer makes any sense 22.481 - * with modern CPU's, and this simplifies a lot of things (SMP 22.482 - * and UP become the same). 22.483 - * 22.484 - * NOTE! We used to use the x86 hardware context switching. The 22.485 - * reason for not using it any more becomes apparent when you 22.486 - * try to recover gracefully from saved state that is no longer 22.487 - * valid (stale segment register values in particular). With the 22.488 - * hardware task-switch, there is no way to fix up bad state in 22.489 - * a reasonable manner. 22.490 - * 22.491 - * The fact that Intel documents the hardware task-switching to 22.492 - * be slow is a fairly red herring - this code is not noticeably 22.493 - * faster. However, there _is_ some room for improvement here, 22.494 - * so the performance issues may eventually be a valid point. 22.495 - * More important, however, is the fact that this allows us much 22.496 - * more flexibility. 22.497 - * 22.498 - * The return value (in %eax) will be the "prev" task after 22.499 - * the task-switch, and shows up in ret_from_fork in entry.S, 22.500 - * for example. 22.501 - */ 22.502 -struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 22.503 -{ 22.504 - struct thread_struct *prev = &prev_p->thread, 22.505 - *next = &next_p->thread; 22.506 - int cpu = smp_processor_id(); 22.507 - struct tss_struct *tss = init_tss + cpu; 22.508 - dom0_op_t op; 22.509 - 22.510 - /* NB. No need to disable interrupts as already done in sched.c */ 22.511 - /* __cli(); */ 22.512 - 22.513 - /* 22.514 - * Save away %fs and %gs. No need to save %es and %ds, as 22.515 - * those are always kernel segments while inside the kernel. 22.516 - */ 22.517 - asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs)); 22.518 - asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs)); 22.519 - 22.520 - /* 22.521 - * We clobber FS and GS here so that we avoid a GPF when 22.522 - * restoring previous task's FS/GS values in Xen when the LDT 22.523 - * is switched. If we don't do this then we can end up 22.524 - * erroneously re-flushing the page-update queue when we 22.525 - * 'execute_multicall_list'. 22.526 - */ 22.527 - __asm__ __volatile__ ( 22.528 - "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs" : : : 22.529 - "eax" ); 22.530 - 22.531 - MULTICALL_flush_page_update_queue(); 22.532 - 22.533 - /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 22.534 - 22.535 - /* 22.536 - * This is basically '__unlazy_fpu', except that we queue a 22.537 - * multicall to indicate FPU task switch, rather than 22.538 - * synchronously trapping to Xen. 22.539 - */ 22.540 - if (prev_p->thread_info->status & TS_USEDFPU) { 22.541 - save_init_fpu(prev_p); 22.542 - queue_multicall0(__HYPERVISOR_fpu_taskswitch); 22.543 - } 22.544 - 22.545 - /* 22.546 - * Reload esp0, LDT and the page table pointer: 22.547 - * This is load_esp0(tss, next) with a multicall. 22.548 - */ 22.549 - tss->esp0 = next->esp0; 22.550 - /* This can only happen when SEP is enabled, no need to test 22.551 - * "SEP"arately */ 22.552 - if (unlikely(tss->ss1 != next->sysenter_cs)) { 22.553 - tss->ss1 = next->sysenter_cs; 22.554 - wrmsr(MSR_IA32_SYSENTER_CS, next->sysenter_cs, 0); 22.555 - } 22.556 - queue_multicall2(__HYPERVISOR_stack_switch, tss->ss0, tss->esp0); 22.557 - 22.558 - /* 22.559 - * Load the per-thread Thread-Local Storage descriptor. 22.560 - * This is load_TLS(next, cpu) with multicalls. 22.561 - */ 22.562 -#define C(i) do { \ 22.563 - if (unlikely(next->tls_array[i].a != prev->tls_array[i].a || \ 22.564 - next->tls_array[i].b != prev->tls_array[i].b)) \ 22.565 - queue_multicall3(__HYPERVISOR_update_descriptor, \ 22.566 - virt_to_machine(&get_cpu_gdt_table(cpu) \ 22.567 - [GDT_ENTRY_TLS_MIN + i]), \ 22.568 - ((u32 *)&next->tls_array[i])[0], \ 22.569 - ((u32 *)&next->tls_array[i])[1]); \ 22.570 -} while (0) 22.571 - C(0); C(1); C(2); 22.572 -#undef C 22.573 - 22.574 - if (xen_start_info.flags & SIF_PRIVILEGED) { 22.575 - op.cmd = DOM0_IOPL; 22.576 - op.u.iopl.domain = DOMID_SELF; 22.577 - op.u.iopl.iopl = next->io_pl; 22.578 - queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op); 22.579 - } 22.580 - 22.581 - /* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */ 22.582 - execute_multicall_list(); 22.583 - /* __sti(); */ 22.584 - 22.585 - /* 22.586 - * Restore %fs and %gs if needed. 22.587 - */ 22.588 - if (unlikely(prev->fs | prev->gs | next->fs | next->gs)) { 22.589 - loadsegment(fs, next->fs); 22.590 - loadsegment(gs, next->gs); 22.591 - } 22.592 - 22.593 - /* 22.594 - * Now maybe reload the debug registers 22.595 - */ 22.596 - if (unlikely(next->debugreg[7])) { 22.597 - loaddebug(next, 0); 22.598 - loaddebug(next, 1); 22.599 - loaddebug(next, 2); 22.600 - loaddebug(next, 3); 22.601 - /* no 4 and 5 */ 22.602 - loaddebug(next, 6); 22.603 - loaddebug(next, 7); 22.604 - } 22.605 - 22.606 - if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) { 22.607 - if (next->io_bitmap_ptr) { 22.608 - /* 22.609 - * 4 cachelines copy ... not good, but not that 22.610 - * bad either. Anyone got something better? 22.611 - * This only affects processes which use ioperm(). 22.612 - * [Putting the TSSs into 4k-tlb mapped regions 22.613 - * and playing VM tricks to switch the IO bitmap 22.614 - * is not really acceptable.] 22.615 - */ 22.616 - memcpy(tss->io_bitmap, next->io_bitmap_ptr, 22.617 - IO_BITMAP_BYTES); 22.618 - tss->io_bitmap_base = IO_BITMAP_OFFSET; 22.619 - } else 22.620 - /* 22.621 - * a bitmap offset pointing outside of the TSS limit 22.622 - * causes a nicely controllable SIGSEGV if a process 22.623 - * tries to use a port IO instruction. The first 22.624 - * sys_ioperm() call sets up the bitmap properly. 22.625 - */ 22.626 - tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; 22.627 - } 22.628 - return prev_p; 22.629 -} 22.630 - 22.631 -asmlinkage int sys_fork(struct pt_regs regs) 22.632 -{ 22.633 - return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 22.634 -} 22.635 - 22.636 -asmlinkage int sys_clone(struct pt_regs regs) 22.637 -{ 22.638 - unsigned long clone_flags; 22.639 - unsigned long newsp; 22.640 - int __user *parent_tidptr, *child_tidptr; 22.641 - 22.642 - clone_flags = regs.ebx; 22.643 - newsp = regs.ecx; 22.644 - parent_tidptr = (int __user *)regs.edx; 22.645 - child_tidptr = (int __user *)regs.edi; 22.646 - if (!newsp) 22.647 - newsp = regs.esp; 22.648 - return do_fork(clone_flags & ~CLONE_IDLETASK, newsp, ®s, 0, parent_tidptr, child_tidptr); 22.649 -} 22.650 - 22.651 -/* 22.652 - * This is trivial, and on the face of it looks like it 22.653 - * could equally well be done in user mode. 22.654 - * 22.655 - * Not so, for quite unobvious reasons - register pressure. 22.656 - * In user mode vfork() cannot have a stack frame, and if 22.657 - * done by calling the "clone()" system call directly, you 22.658 - * do not have enough call-clobbered registers to hold all 22.659 - * the information you need. 22.660 - */ 22.661 -asmlinkage int sys_vfork(struct pt_regs regs) 22.662 -{ 22.663 - return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs.esp, ®s, 0, NULL, NULL); 22.664 -} 22.665 - 22.666 -/* 22.667 - * sys_execve() executes a new program. 22.668 - */ 22.669 -asmlinkage int sys_execve(struct pt_regs regs) 22.670 -{ 22.671 - int error; 22.672 - char * filename; 22.673 - 22.674 - filename = getname((char __user *) regs.ebx); 22.675 - error = PTR_ERR(filename); 22.676 - if (IS_ERR(filename)) 22.677 - goto out; 22.678 - error = do_execve(filename, 22.679 - (char __user * __user *) regs.ecx, 22.680 - (char __user * __user *) regs.edx, 22.681 - ®s); 22.682 - if (error == 0) { 22.683 - current->ptrace &= ~PT_DTRACE; 22.684 - /* Make sure we don't return using sysenter.. */ 22.685 - set_thread_flag(TIF_IRET); 22.686 - } 22.687 - putname(filename); 22.688 -out: 22.689 - return error; 22.690 -} 22.691 - 22.692 -#define top_esp (THREAD_SIZE - sizeof(unsigned long)) 22.693 -#define top_ebp (THREAD_SIZE - 2*sizeof(unsigned long)) 22.694 - 22.695 -unsigned long get_wchan(struct task_struct *p) 22.696 -{ 22.697 - unsigned long ebp, esp, eip; 22.698 - unsigned long stack_page; 22.699 - int count = 0; 22.700 - if (!p || p == current || p->state == TASK_RUNNING) 22.701 - return 0; 22.702 - stack_page = (unsigned long)p->thread_info; 22.703 - esp = p->thread.esp; 22.704 - if (!stack_page || esp < stack_page || esp > top_esp+stack_page) 22.705 - return 0; 22.706 - /* include/asm-i386/system.h:switch_to() pushes ebp last. */ 22.707 - ebp = *(unsigned long *) esp; 22.708 - do { 22.709 - if (ebp < stack_page || ebp > top_ebp+stack_page) 22.710 - return 0; 22.711 - eip = *(unsigned long *) (ebp+4); 22.712 - if (!in_sched_functions(eip)) 22.713 - return eip; 22.714 - ebp = *(unsigned long *) ebp; 22.715 - } while (count++ < 16); 22.716 - return 0; 22.717 -} 22.718 - 22.719 -/* 22.720 - * sys_alloc_thread_area: get a yet unused TLS descriptor index. 22.721 - */ 22.722 -static int get_free_idx(void) 22.723 -{ 22.724 - struct thread_struct *t = ¤t->thread; 22.725 - int idx; 22.726 - 22.727 - for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++) 22.728 - if (desc_empty(t->tls_array + idx)) 22.729 - return idx + GDT_ENTRY_TLS_MIN; 22.730 - return -ESRCH; 22.731 -} 22.732 - 22.733 -/* 22.734 - * Set a given TLS descriptor: 22.735 - */ 22.736 -asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) 22.737 -{ 22.738 - struct thread_struct *t = ¤t->thread; 22.739 - struct user_desc info; 22.740 - struct desc_struct *desc; 22.741 - int cpu, idx; 22.742 - 22.743 - if (copy_from_user(&info, u_info, sizeof(info))) 22.744 - return -EFAULT; 22.745 - idx = info.entry_number; 22.746 - 22.747 - /* 22.748 - * index -1 means the kernel should try to find and 22.749 - * allocate an empty descriptor: 22.750 - */ 22.751 - if (idx == -1) { 22.752 - idx = get_free_idx(); 22.753 - if (idx < 0) 22.754 - return idx; 22.755 - if (put_user(idx, &u_info->entry_number)) 22.756 - return -EFAULT; 22.757 - } 22.758 - 22.759 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.760 - return -EINVAL; 22.761 - 22.762 - desc = t->tls_array + idx - GDT_ENTRY_TLS_MIN; 22.763 - 22.764 - /* 22.765 - * We must not get preempted while modifying the TLS. 22.766 - */ 22.767 - cpu = get_cpu(); 22.768 - 22.769 - if (LDT_empty(&info)) { 22.770 - desc->a = 0; 22.771 - desc->b = 0; 22.772 - } else { 22.773 - desc->a = LDT_entry_a(&info); 22.774 - desc->b = LDT_entry_b(&info); 22.775 - } 22.776 - load_TLS(t, cpu); 22.777 - 22.778 - put_cpu(); 22.779 - 22.780 - return 0; 22.781 -} 22.782 - 22.783 -/* 22.784 - * Get the current Thread-Local Storage area: 22.785 - */ 22.786 - 22.787 -#define GET_BASE(desc) ( \ 22.788 - (((desc)->a >> 16) & 0x0000ffff) | \ 22.789 - (((desc)->b << 16) & 0x00ff0000) | \ 22.790 - ( (desc)->b & 0xff000000) ) 22.791 - 22.792 -#define GET_LIMIT(desc) ( \ 22.793 - ((desc)->a & 0x0ffff) | \ 22.794 - ((desc)->b & 0xf0000) ) 22.795 - 22.796 -#define GET_32BIT(desc) (((desc)->b >> 22) & 1) 22.797 -#define GET_CONTENTS(desc) (((desc)->b >> 10) & 3) 22.798 -#define GET_WRITABLE(desc) (((desc)->b >> 9) & 1) 22.799 -#define GET_LIMIT_PAGES(desc) (((desc)->b >> 23) & 1) 22.800 -#define GET_PRESENT(desc) (((desc)->b >> 15) & 1) 22.801 -#define GET_USEABLE(desc) (((desc)->b >> 20) & 1) 22.802 - 22.803 -asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) 22.804 -{ 22.805 - struct user_desc info; 22.806 - struct desc_struct *desc; 22.807 - int idx; 22.808 - 22.809 - if (get_user(idx, &u_info->entry_number)) 22.810 - return -EFAULT; 22.811 - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 22.812 - return -EINVAL; 22.813 - 22.814 - desc = current->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; 22.815 - 22.816 - info.entry_number = idx; 22.817 - info.base_addr = GET_BASE(desc); 22.818 - info.limit = GET_LIMIT(desc); 22.819 - info.seg_32bit = GET_32BIT(desc); 22.820 - info.contents = GET_CONTENTS(desc); 22.821 - info.read_exec_only = !GET_WRITABLE(desc); 22.822 - info.limit_in_pages = GET_LIMIT_PAGES(desc); 22.823 - info.seg_not_present = !GET_PRESENT(desc); 22.824 - info.useable = GET_USEABLE(desc); 22.825 - 22.826 - if (copy_to_user(u_info, &info, sizeof(info))) 22.827 - return -EFAULT; 22.828 - return 0; 22.829 -} 22.830 -
23.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c Mon Oct 25 12:45:34 2004 +0000 23.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 23.3 @@ -1,1471 +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 - 23.57 -int disable_pse __initdata = 0; 23.58 - 23.59 -/* 23.60 - * Machine setup.. 23.61 - */ 23.62 - 23.63 -#ifdef CONFIG_EFI 23.64 -int efi_enabled = 0; 23.65 -EXPORT_SYMBOL(efi_enabled); 23.66 -#endif 23.67 - 23.68 -/* cpu data as detected by the assembly code in head.S */ 23.69 -struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 23.70 -/* common cpu data for all cpus */ 23.71 -struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 0, 1, 0, -1 }; 23.72 - 23.73 -unsigned long mmu_cr4_features; 23.74 -EXPORT_SYMBOL_GPL(mmu_cr4_features); 23.75 - 23.76 -#ifdef CONFIG_ACPI_INTERPRETER 23.77 - int acpi_disabled = 0; 23.78 -#else 23.79 - int acpi_disabled = 1; 23.80 -#endif 23.81 -EXPORT_SYMBOL(acpi_disabled); 23.82 - 23.83 -#ifdef CONFIG_ACPI_BOOT 23.84 -int __initdata acpi_force = 0; 23.85 -extern acpi_interrupt_flags acpi_sci_flags; 23.86 -#endif 23.87 - 23.88 -int MCA_bus; 23.89 -/* for MCA, but anyone else can use it if they want */ 23.90 -unsigned int machine_id; 23.91 -unsigned int machine_submodel_id; 23.92 -unsigned int BIOS_revision; 23.93 -unsigned int mca_pentium_flag; 23.94 - 23.95 -/* For PCI or other memory-mapped resources */ 23.96 -unsigned long pci_mem_start = 0x10000000; 23.97 - 23.98 -/* user-defined highmem size */ 23.99 -static unsigned int highmem_pages = -1; 23.100 - 23.101 -/* 23.102 - * Setup options 23.103 - */ 23.104 -struct drive_info_struct { char dummy[32]; } drive_info; 23.105 -struct screen_info screen_info; 23.106 -struct apm_info apm_info; 23.107 -struct sys_desc_table_struct { 23.108 - unsigned short length; 23.109 - unsigned char table[0]; 23.110 -}; 23.111 -struct edid_info edid_info; 23.112 -struct ist_info ist_info; 23.113 -struct e820map e820; 23.114 - 23.115 -unsigned char aux_device_present; 23.116 - 23.117 -extern void early_cpu_init(void); 23.118 -extern void dmi_scan_machine(void); 23.119 -extern void generic_apic_probe(char *); 23.120 -extern int root_mountflags; 23.121 - 23.122 -unsigned long saved_videomode; 23.123 - 23.124 -#define RAMDISK_IMAGE_START_MASK 0x07FF 23.125 -#define RAMDISK_PROMPT_FLAG 0x8000 23.126 -#define RAMDISK_LOAD_FLAG 0x4000 23.127 - 23.128 -static char command_line[COMMAND_LINE_SIZE]; 23.129 - 23.130 -unsigned char __initdata boot_params[PARAM_SIZE]; 23.131 - 23.132 -static struct resource data_resource = { 23.133 - .name = "Kernel data", 23.134 - .start = 0, 23.135 - .end = 0, 23.136 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.137 -}; 23.138 - 23.139 -static struct resource code_resource = { 23.140 - .name = "Kernel code", 23.141 - .start = 0, 23.142 - .end = 0, 23.143 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.144 -}; 23.145 - 23.146 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.147 -static struct resource system_rom_resource = { 23.148 - .name = "System ROM", 23.149 - .start = 0xf0000, 23.150 - .end = 0xfffff, 23.151 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.152 -}; 23.153 - 23.154 -static struct resource extension_rom_resource = { 23.155 - .name = "Extension ROM", 23.156 - .start = 0xe0000, 23.157 - .end = 0xeffff, 23.158 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.159 -}; 23.160 - 23.161 -static struct resource adapter_rom_resources[] = { { 23.162 - .name = "Adapter ROM", 23.163 - .start = 0xc8000, 23.164 - .end = 0, 23.165 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.166 -}, { 23.167 - .name = "Adapter ROM", 23.168 - .start = 0, 23.169 - .end = 0, 23.170 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.171 -}, { 23.172 - .name = "Adapter ROM", 23.173 - .start = 0, 23.174 - .end = 0, 23.175 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.176 -}, { 23.177 - .name = "Adapter ROM", 23.178 - .start = 0, 23.179 - .end = 0, 23.180 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.181 -}, { 23.182 - .name = "Adapter ROM", 23.183 - .start = 0, 23.184 - .end = 0, 23.185 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.186 -}, { 23.187 - .name = "Adapter ROM", 23.188 - .start = 0, 23.189 - .end = 0, 23.190 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.191 -} }; 23.192 - 23.193 -#define ADAPTER_ROM_RESOURCES \ 23.194 - (sizeof adapter_rom_resources / sizeof adapter_rom_resources[0]) 23.195 - 23.196 -static struct resource video_rom_resource = { 23.197 - .name = "Video ROM", 23.198 - .start = 0xc0000, 23.199 - .end = 0xc7fff, 23.200 - .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM 23.201 -}; 23.202 -#endif 23.203 - 23.204 -static struct resource video_ram_resource = { 23.205 - .name = "Video RAM area", 23.206 - .start = 0xa0000, 23.207 - .end = 0xbffff, 23.208 - .flags = IORESOURCE_BUSY | IORESOURCE_MEM 23.209 -}; 23.210 - 23.211 -static struct resource standard_io_resources[] = { { 23.212 - .name = "dma1", 23.213 - .start = 0x0000, 23.214 - .end = 0x001f, 23.215 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.216 -}, { 23.217 - .name = "pic1", 23.218 - .start = 0x0020, 23.219 - .end = 0x0021, 23.220 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.221 -}, { 23.222 - .name = "timer", 23.223 - .start = 0x0040, 23.224 - .end = 0x005f, 23.225 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.226 -}, { 23.227 - .name = "keyboard", 23.228 - .start = 0x0060, 23.229 - .end = 0x006f, 23.230 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.231 -}, { 23.232 - .name = "dma page reg", 23.233 - .start = 0x0080, 23.234 - .end = 0x008f, 23.235 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.236 -}, { 23.237 - .name = "pic2", 23.238 - .start = 0x00a0, 23.239 - .end = 0x00a1, 23.240 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.241 -}, { 23.242 - .name = "dma2", 23.243 - .start = 0x00c0, 23.244 - .end = 0x00df, 23.245 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.246 -}, { 23.247 - .name = "fpu", 23.248 - .start = 0x00f0, 23.249 - .end = 0x00ff, 23.250 - .flags = IORESOURCE_BUSY | IORESOURCE_IO 23.251 -} }; 23.252 - 23.253 -#define STANDARD_IO_RESOURCES \ 23.254 - (sizeof standard_io_resources / sizeof standard_io_resources[0]) 23.255 - 23.256 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.257 -#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) 23.258 - 23.259 -static int __init romchecksum(unsigned char *rom, unsigned long length) 23.260 -{ 23.261 - unsigned char *p, sum = 0; 23.262 - 23.263 - for (p = rom; p < rom + length; p++) 23.264 - sum += *p; 23.265 - return sum == 0; 23.266 -} 23.267 - 23.268 -static void __init probe_roms(void) 23.269 -{ 23.270 - unsigned long start, length, upper; 23.271 - unsigned char *rom; 23.272 - int i; 23.273 - 23.274 - /* video rom */ 23.275 - upper = adapter_rom_resources[0].start; 23.276 - for (start = video_rom_resource.start; start < upper; start += 2048) { 23.277 - rom = isa_bus_to_virt(start); 23.278 - if (!romsignature(rom)) 23.279 - continue; 23.280 - 23.281 - video_rom_resource.start = start; 23.282 - 23.283 - /* 0 < length <= 0x7f * 512, historically */ 23.284 - length = rom[2] * 512; 23.285 - 23.286 - /* if checksum okay, trust length byte */ 23.287 - if (length && romchecksum(rom, length)) 23.288 - video_rom_resource.end = start + length - 1; 23.289 - 23.290 - request_resource(&iomem_resource, &video_rom_resource); 23.291 - break; 23.292 - } 23.293 - 23.294 - start = (video_rom_resource.end + 1 + 2047) & ~2047UL; 23.295 - if (start < upper) 23.296 - start = upper; 23.297 - 23.298 - /* system rom */ 23.299 - request_resource(&iomem_resource, &system_rom_resource); 23.300 - upper = system_rom_resource.start; 23.301 - 23.302 - /* check for extension rom (ignore length byte!) */ 23.303 - rom = isa_bus_to_virt(extension_rom_resource.start); 23.304 - if (romsignature(rom)) { 23.305 - length = extension_rom_resource.end - extension_rom_resource.start + 1; 23.306 - if (romchecksum(rom, length)) { 23.307 - request_resource(&iomem_resource, &extension_rom_resource); 23.308 - upper = extension_rom_resource.start; 23.309 - } 23.310 - } 23.311 - 23.312 - /* check for adapter roms on 2k boundaries */ 23.313 - for (i = 0; i < ADAPTER_ROM_RESOURCES && start < upper; start += 2048) { 23.314 - rom = isa_bus_to_virt(start); 23.315 - if (!romsignature(rom)) 23.316 - continue; 23.317 - 23.318 - /* 0 < length <= 0x7f * 512, historically */ 23.319 - length = rom[2] * 512; 23.320 - 23.321 - /* but accept any length that fits if checksum okay */ 23.322 - if (!length || start + length > upper || !romchecksum(rom, length)) 23.323 - continue; 23.324 - 23.325 - adapter_rom_resources[i].start = start; 23.326 - adapter_rom_resources[i].end = start + length - 1; 23.327 - request_resource(&iomem_resource, &adapter_rom_resources[i]); 23.328 - 23.329 - start = adapter_rom_resources[i++].end & ~2047UL; 23.330 - } 23.331 -} 23.332 -#endif 23.333 - 23.334 -/* 23.335 - * Point at the empty zero page to start with. We map the real shared_info 23.336 - * page as soon as fixmap is up and running. 23.337 - */ 23.338 -shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; 23.339 -EXPORT_SYMBOL(HYPERVISOR_shared_info); 23.340 - 23.341 -unsigned long *phys_to_machine_mapping, *pfn_to_mfn_frame_list; 23.342 -EXPORT_SYMBOL(phys_to_machine_mapping); 23.343 - 23.344 -multicall_entry_t multicall_list[8]; 23.345 -int nr_multicall_ents = 0; 23.346 - 23.347 -/* Raw start-of-day parameters from the hypervisor. */ 23.348 -union xen_start_info_union xen_start_info_union; 23.349 - 23.350 -extern void (*pm_idle)(void); 23.351 - 23.352 -static void __init limit_regions(unsigned long long size) 23.353 -{ 23.354 - unsigned long long current_addr = 0; 23.355 - int i; 23.356 - 23.357 - if (efi_enabled) { 23.358 - for (i = 0; i < memmap.nr_map; i++) { 23.359 - current_addr = memmap.map[i].phys_addr + 23.360 - (memmap.map[i].num_pages << 12); 23.361 - if (memmap.map[i].type == EFI_CONVENTIONAL_MEMORY) { 23.362 - if (current_addr >= size) { 23.363 - memmap.map[i].num_pages -= 23.364 - (((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT); 23.365 - memmap.nr_map = i + 1; 23.366 - return; 23.367 - } 23.368 - } 23.369 - } 23.370 - } 23.371 - for (i = 0; i < e820.nr_map; i++) { 23.372 - if (e820.map[i].type == E820_RAM) { 23.373 - current_addr = e820.map[i].addr + e820.map[i].size; 23.374 - if (current_addr >= size) { 23.375 - e820.map[i].size -= current_addr-size; 23.376 - e820.nr_map = i + 1; 23.377 - return; 23.378 - } 23.379 - } 23.380 - } 23.381 -} 23.382 - 23.383 -static void __init add_memory_region(unsigned long long start, 23.384 - unsigned long long size, int type) 23.385 -{ 23.386 - int x; 23.387 - 23.388 - if (!efi_enabled) { 23.389 - x = e820.nr_map; 23.390 - 23.391 - if (x == E820MAX) { 23.392 - printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); 23.393 - return; 23.394 - } 23.395 - 23.396 - e820.map[x].addr = start; 23.397 - e820.map[x].size = size; 23.398 - e820.map[x].type = type; 23.399 - e820.nr_map++; 23.400 - } 23.401 -} /* add_memory_region */ 23.402 - 23.403 -#define E820_DEBUG 1 23.404 - 23.405 -static void __init print_memory_map(char *who) 23.406 -{ 23.407 - int i; 23.408 - 23.409 - for (i = 0; i < e820.nr_map; i++) { 23.410 - printk(" %s: %016Lx - %016Lx ", who, 23.411 - e820.map[i].addr, 23.412 - e820.map[i].addr + e820.map[i].size); 23.413 - switch (e820.map[i].type) { 23.414 - case E820_RAM: printk("(usable)\n"); 23.415 - break; 23.416 - case E820_RESERVED: 23.417 - printk("(reserved)\n"); 23.418 - break; 23.419 - case E820_ACPI: 23.420 - printk("(ACPI data)\n"); 23.421 - break; 23.422 - case E820_NVS: 23.423 - printk("(ACPI NVS)\n"); 23.424 - break; 23.425 - default: printk("type %lu\n", e820.map[i].type); 23.426 - break; 23.427 - } 23.428 - } 23.429 -} 23.430 - 23.431 -#if 0 23.432 -/* 23.433 - * Sanitize the BIOS e820 map. 23.434 - * 23.435 - * Some e820 responses include overlapping entries. The following 23.436 - * replaces the original e820 map with a new one, removing overlaps. 23.437 - * 23.438 - */ 23.439 -struct change_member { 23.440 - struct e820entry *pbios; /* pointer to original bios entry */ 23.441 - unsigned long long addr; /* address for this change point */ 23.442 -}; 23.443 -struct change_member change_point_list[2*E820MAX] __initdata; 23.444 -struct change_member *change_point[2*E820MAX] __initdata; 23.445 -struct e820entry *overlap_list[E820MAX] __initdata; 23.446 -struct e820entry new_bios[E820MAX] __initdata; 23.447 - 23.448 -static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map) 23.449 -{ 23.450 - struct change_member *change_tmp; 23.451 - unsigned long current_type, last_type; 23.452 - unsigned long long last_addr; 23.453 - int chgidx, still_changing; 23.454 - int overlap_entries; 23.455 - int new_bios_entry; 23.456 - int old_nr, new_nr, chg_nr; 23.457 - int i; 23.458 - 23.459 - /* 23.460 - Visually we're performing the following (1,2,3,4 = memory types)... 23.461 - 23.462 - Sample memory map (w/overlaps): 23.463 - ____22__________________ 23.464 - ______________________4_ 23.465 - ____1111________________ 23.466 - _44_____________________ 23.467 - 11111111________________ 23.468 - ____________________33__ 23.469 - ___________44___________ 23.470 - __________33333_________ 23.471 - ______________22________ 23.472 - ___________________2222_ 23.473 - _________111111111______ 23.474 - _____________________11_ 23.475 - _________________4______ 23.476 - 23.477 - Sanitized equivalent (no overlap): 23.478 - 1_______________________ 23.479 - _44_____________________ 23.480 - ___1____________________ 23.481 - ____22__________________ 23.482 - ______11________________ 23.483 - _________1______________ 23.484 - __________3_____________ 23.485 - ___________44___________ 23.486 - _____________33_________ 23.487 - _______________2________ 23.488 - ________________1_______ 23.489 - _________________4______ 23.490 - ___________________2____ 23.491 - ____________________33__ 23.492 - ______________________4_ 23.493 - */ 23.494 - 23.495 - /* if there's only one memory region, don't bother */ 23.496 - if (*pnr_map < 2) 23.497 - return -1; 23.498 - 23.499 - old_nr = *pnr_map; 23.500 - 23.501 - /* bail out if we find any unreasonable addresses in bios map */ 23.502 - for (i=0; i<old_nr; i++) 23.503 - if (biosmap[i].addr + biosmap[i].size < biosmap[i].addr) 23.504 - return -1; 23.505 - 23.506 - /* create pointers for initial change-point information (for sorting) */ 23.507 - for (i=0; i < 2*old_nr; i++) 23.508 - change_point[i] = &change_point_list[i]; 23.509 - 23.510 - /* record all known change-points (starting and ending addresses), 23.511 - omitting those that are for empty memory regions */ 23.512 - chgidx = 0; 23.513 - for (i=0; i < old_nr; i++) { 23.514 - if (biosmap[i].size != 0) { 23.515 - change_point[chgidx]->addr = biosmap[i].addr; 23.516 - change_point[chgidx++]->pbios = &biosmap[i]; 23.517 - change_point[chgidx]->addr = biosmap[i].addr + biosmap[i].size; 23.518 - change_point[chgidx++]->pbios = &biosmap[i]; 23.519 - } 23.520 - } 23.521 - chg_nr = chgidx; /* true number of change-points */ 23.522 - 23.523 - /* sort change-point list by memory addresses (low -> high) */ 23.524 - still_changing = 1; 23.525 - while (still_changing) { 23.526 - still_changing = 0; 23.527 - for (i=1; i < chg_nr; i++) { 23.528 - /* if <current_addr> > <last_addr>, swap */ 23.529 - /* or, if current=<start_addr> & last=<end_addr>, swap */ 23.530 - if ((change_point[i]->addr < change_point[i-1]->addr) || 23.531 - ((change_point[i]->addr == change_point[i-1]->addr) && 23.532 - (change_point[i]->addr == change_point[i]->pbios->addr) && 23.533 - (change_point[i-1]->addr != change_point[i-1]->pbios->addr)) 23.534 - ) 23.535 - { 23.536 - change_tmp = change_point[i]; 23.537 - change_point[i] = change_point[i-1]; 23.538 - change_point[i-1] = change_tmp; 23.539 - still_changing=1; 23.540 - } 23.541 - } 23.542 - } 23.543 - 23.544 - /* create a new bios memory map, removing overlaps */ 23.545 - overlap_entries=0; /* number of entries in the overlap table */ 23.546 - new_bios_entry=0; /* index for creating new bios map entries */ 23.547 - last_type = 0; /* start with undefined memory type */ 23.548 - last_addr = 0; /* start with 0 as last starting address */ 23.549 - /* loop through change-points, determining affect on the new bios map */ 23.550 - for (chgidx=0; chgidx < chg_nr; chgidx++) 23.551 - { 23.552 - /* keep track of all overlapping bios entries */ 23.553 - if (change_point[chgidx]->addr == change_point[chgidx]->pbios->addr) 23.554 - { 23.555 - /* add map entry to overlap list (> 1 entry implies an overlap) */ 23.556 - overlap_list[overlap_entries++]=change_point[chgidx]->pbios; 23.557 - } 23.558 - else 23.559 - { 23.560 - /* remove entry from list (order independent, so swap with last) */ 23.561 - for (i=0; i<overlap_entries; i++) 23.562 - { 23.563 - if (overlap_list[i] == change_point[chgidx]->pbios) 23.564 - overlap_list[i] = overlap_list[overlap_entries-1]; 23.565 - } 23.566 - overlap_entries--; 23.567 - } 23.568 - /* if there are overlapping entries, decide which "type" to use */ 23.569 - /* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */ 23.570 - current_type = 0; 23.571 - for (i=0; i<overlap_entries; i++) 23.572 - if (overlap_list[i]->type > current_type) 23.573 - current_type = overlap_list[i]->type; 23.574 - /* continue building up new bios map based on this information */ 23.575 - if (current_type != last_type) { 23.576 - if (last_type != 0) { 23.577 - new_bios[new_bios_entry].size = 23.578 - change_point[chgidx]->addr - last_addr; 23.579 - /* move forward only if the new size was non-zero */ 23.580 - if (new_bios[new_bios_entry].size != 0) 23.581 - if (++new_bios_entry >= E820MAX) 23.582 - break; /* no more space left for new bios entries */ 23.583 - } 23.584 - if (current_type != 0) { 23.585 - new_bios[new_bios_entry].addr = change_point[chgidx]->addr; 23.586 - new_bios[new_bios_entry].type = current_type; 23.587 - last_addr=change_point[chgidx]->addr; 23.588 - } 23.589 - last_type = current_type; 23.590 - } 23.591 - } 23.592 - new_nr = new_bios_entry; /* retain count for new bios entries */ 23.593 - 23.594 - /* copy new bios mapping into original location */ 23.595 - memcpy(biosmap, new_bios, new_nr*sizeof(struct e820entry)); 23.596 - *pnr_map = new_nr; 23.597 - 23.598 - return 0; 23.599 -} 23.600 - 23.601 -/* 23.602 - * Copy the BIOS e820 map into a safe place. 23.603 - * 23.604 - * Sanity-check it while we're at it.. 23.605 - * 23.606 - * If we're lucky and live on a modern system, the setup code 23.607 - * will have given us a memory map that we can use to properly 23.608 - * set up memory. If we aren't, we'll fake a memory map. 23.609 - * 23.610 - * We check to see that the memory map contains at least 2 elements 23.611 - * before we'll use it, because the detection code in setup.S may 23.612 - * not be perfect and most every PC known to man has two memory 23.613 - * regions: one from 0 to 640k, and one from 1mb up. (The IBM 23.614 - * thinkpad 560x, for example, does not cooperate with the memory 23.615 - * detection code.) 23.616 - */ 23.617 -static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) 23.618 -{ 23.619 - /* Only one memory region (or negative)? Ignore it */ 23.620 - if (nr_map < 2) 23.621 - return -1; 23.622 - 23.623 - do { 23.624 - unsigned long long start = biosmap->addr; 23.625 - unsigned long long size = biosmap->size; 23.626 - unsigned long long end = start + size; 23.627 - unsigned long type = biosmap->type; 23.628 - 23.629 - /* Overflow in 64 bits? Ignore the memory map. */ 23.630 - if (start > end) 23.631 - return -1; 23.632 - 23.633 - /* 23.634 - * Some BIOSes claim RAM in the 640k - 1M region. 23.635 - * Not right. Fix it up. 23.636 - */ 23.637 - if (type == E820_RAM) { 23.638 - if (start < 0x100000ULL && end > 0xA0000ULL) { 23.639 - if (start < 0xA0000ULL) 23.640 - add_memory_region(start, 0xA0000ULL-start, type); 23.641 - if (end <= 0x100000ULL) 23.642 - continue; 23.643 - start = 0x100000ULL; 23.644 - size = end - start; 23.645 - } 23.646 - } 23.647 - add_memory_region(start, size, type); 23.648 - } while (biosmap++,--nr_map); 23.649 - return 0; 23.650 -} 23.651 -#endif 23.652 - 23.653 -#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) 23.654 -struct edd edd; 23.655 -#ifdef CONFIG_EDD_MODULE 23.656 -EXPORT_SYMBOL(edd); 23.657 -#endif 23.658 -/** 23.659 - * copy_edd() - Copy the BIOS EDD information 23.660 - * from boot_params into a safe place. 23.661 - * 23.662 - */ 23.663 -static inline void copy_edd(void) 23.664 -{ 23.665 - memcpy(edd.mbr_signature, EDD_MBR_SIGNATURE, sizeof(edd.mbr_signature)); 23.666 - memcpy(edd.edd_info, EDD_BUF, sizeof(edd.edd_info)); 23.667 - edd.mbr_signature_nr = EDD_MBR_SIG_NR; 23.668 - edd.edd_info_nr = EDD_NR; 23.669 -} 23.670 -#else 23.671 -static inline void copy_edd(void) 23.672 -{ 23.673 -} 23.674 -#endif 23.675 - 23.676 -/* 23.677 - * Do NOT EVER look at the BIOS memory size location. 23.678 - * It does not work on many machines. 23.679 - */ 23.680 -#define LOWMEMSIZE() (0x9f000) 23.681 - 23.682 -static void __init parse_cmdline_early (char ** cmdline_p) 23.683 -{ 23.684 - char c = ' ', *to = command_line, *from = saved_command_line; 23.685 - int len = 0; 23.686 - int userdef = 0; 23.687 - 23.688 - memcpy(saved_command_line, xen_start_info.cmd_line, MAX_CMDLINE); 23.689 - /* Save unparsed command line copy for /proc/cmdline */ 23.690 - saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 23.691 - 23.692 - for (;;) { 23.693 - /* 23.694 - * "mem=nopentium" disables the 4MB page tables. 23.695 - * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM 23.696 - * to <mem>, overriding the bios size. 23.697 - * "memmap=XXX[KkmM]@XXX[KkmM]" defines a memory region from 23.698 - * <start> to <start>+<mem>, overriding the bios size. 23.699 - * 23.700 - * HPA tells me bootloaders need to parse mem=, so no new 23.701 - * option should be mem= [also see Documentation/i386/boot.txt] 23.702 - */ 23.703 - if (c == ' ' && !memcmp(from, "mem=", 4)) { 23.704 - if (to != command_line) 23.705 - to--; 23.706 - if (!memcmp(from+4, "nopentium", 9)) { 23.707 - from += 9+4; 23.708 - clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability); 23.709 - disable_pse = 1; 23.710 - } else { 23.711 - /* If the user specifies memory size, we 23.712 - * limit the BIOS-provided memory map to 23.713 - * that size. exactmap can be used to specify 23.714 - * the exact map. mem=number can be used to 23.715 - * trim the existing memory map. 23.716 - */ 23.717 - unsigned long long mem_size; 23.718 - 23.719 - mem_size = memparse(from+4, &from); 23.720 - limit_regions(mem_size); 23.721 - userdef=1; 23.722 - } 23.723 - } 23.724 - 23.725 - if (c == ' ' && !memcmp(from, "memmap=", 7)) { 23.726 - if (to != command_line) 23.727 - to--; 23.728 - if (!memcmp(from+7, "exactmap", 8)) { 23.729 - from += 8+7; 23.730 - e820.nr_map = 0; 23.731 - userdef = 1; 23.732 - } else { 23.733 - /* If the user specifies memory size, we 23.734 - * limit the BIOS-provided memory map to 23.735 - * that size. exactmap can be used to specify 23.736 - * the exact map. mem=number can be used to 23.737 - * trim the existing memory map. 23.738 - */ 23.739 - unsigned long long start_at, mem_size; 23.740 - 23.741 - mem_size = memparse(from+7, &from); 23.742 - if (*from == '@') { 23.743 - start_at = memparse(from+1, &from); 23.744 - add_memory_region(start_at, mem_size, E820_RAM); 23.745 - } else if (*from == '#') { 23.746 - start_at = memparse(from+1, &from); 23.747 - add_memory_region(start_at, mem_size, E820_ACPI); 23.748 - } else if (*from == '$') { 23.749 - start_at = memparse(from+1, &from); 23.750 - add_memory_region(start_at, mem_size, E820_RESERVED); 23.751 - } else { 23.752 - limit_regions(mem_size); 23.753 - userdef=1; 23.754 - } 23.755 - } 23.756 - } 23.757 - 23.758 -#ifdef CONFIG_X86_SMP 23.759 - /* 23.760 - * If the BIOS enumerates physical processors before logical, 23.761 - * maxcpus=N at enumeration-time can be used to disable HT. 23.762 - */ 23.763 - else if (!memcmp(from, "maxcpus=", 8)) { 23.764 - extern unsigned int maxcpus; 23.765 - 23.766 - maxcpus = simple_strtoul(from + 8, NULL, 0); 23.767 - } 23.768 -#endif 23.769 - 23.770 -#ifdef CONFIG_ACPI_BOOT 23.771 - /* "acpi=off" disables both ACPI table parsing and interpreter */ 23.772 - else if (!memcmp(from, "acpi=off", 8)) { 23.773 - disable_acpi(); 23.774 - } 23.775 - 23.776 - /* acpi=force to over-ride black-list */ 23.777 - else if (!memcmp(from, "acpi=force", 10)) { 23.778 - acpi_force = 1; 23.779 - acpi_ht = 1; 23.780 - acpi_disabled = 0; 23.781 - } 23.782 - 23.783 - /* acpi=strict disables out-of-spec workarounds */ 23.784 - else if (!memcmp(from, "acpi=strict", 11)) { 23.785 - acpi_strict = 1; 23.786 - } 23.787 - 23.788 - /* Limit ACPI just to boot-time to enable HT */ 23.789 - else if (!memcmp(from, "acpi=ht", 7)) { 23.790 - if (!acpi_force) 23.791 - disable_acpi(); 23.792 - acpi_ht = 1; 23.793 - } 23.794 - 23.795 - /* "pci=noacpi" disable ACPI IRQ routing and PCI scan */ 23.796 - else if (!memcmp(from, "pci=noacpi", 10)) { 23.797 - acpi_disable_pci(); 23.798 - } 23.799 - /* "acpi=noirq" disables ACPI interrupt routing */ 23.800 - else if (!memcmp(from, "acpi=noirq", 10)) { 23.801 - acpi_noirq_set(); 23.802 - } 23.803 - 23.804 - else if (!memcmp(from, "acpi_sci=edge", 13)) 23.805 - acpi_sci_flags.trigger = 1; 23.806 - 23.807 - else if (!memcmp(from, "acpi_sci=level", 14)) 23.808 - acpi_sci_flags.trigger = 3; 23.809 - 23.810 - else if (!memcmp(from, "acpi_sci=high", 13)) 23.811 - acpi_sci_flags.polarity = 1; 23.812 - 23.813 - else if (!memcmp(from, "acpi_sci=low", 12)) 23.814 - acpi_sci_flags.polarity = 3; 23.815 - 23.816 -#ifdef CONFIG_X86_IO_APIC 23.817 - else if (!memcmp(from, "acpi_skip_timer_override", 24)) 23.818 - acpi_skip_timer_override = 1; 23.819 -#endif 23.820 - 23.821 -#ifdef CONFIG_X86_LOCAL_APIC 23.822 - /* disable IO-APIC */ 23.823 - else if (!memcmp(from, "noapic", 6)) 23.824 - disable_ioapic_setup(); 23.825 -#endif /* CONFIG_X86_LOCAL_APIC */ 23.826 -#endif /* CONFIG_ACPI_BOOT */ 23.827 - 23.828 - /* 23.829 - * highmem=size forces highmem to be exactly 'size' bytes. 23.830 - * This works even on boxes that have no highmem otherwise. 23.831 - * This also works to reduce highmem size on bigger boxes. 23.832 - */ 23.833 - if (c == ' ' && !memcmp(from, "highmem=", 8)) 23.834 - highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT; 23.835 - 23.836 - c = *(from++); 23.837 - if (!c) 23.838 - break; 23.839 - if (COMMAND_LINE_SIZE <= ++len) 23.840 - break; 23.841 - *(to++) = c; 23.842 - } 23.843 - *to = '\0'; 23.844 - *cmdline_p = command_line; 23.845 - if (userdef) { 23.846 - printk(KERN_INFO "user-defined physical RAM map:\n"); 23.847 - print_memory_map("user"); 23.848 - } 23.849 -} 23.850 - 23.851 -/* 23.852 - * Callback for efi_memory_walk. 23.853 - */ 23.854 -static int __init 23.855 -efi_find_max_pfn(unsigned long start, unsigned long end, void *arg) 23.856 -{ 23.857 - unsigned long *max_pfn = arg, pfn; 23.858 - 23.859 - if (start < end) { 23.860 - pfn = PFN_UP(end -1); 23.861 - if (pfn > *max_pfn) 23.862 - *max_pfn = pfn; 23.863 - } 23.864 - return 0; 23.865 -} 23.866 - 23.867 - 23.868 -/* 23.869 - * Find the highest page frame number we have available 23.870 - */ 23.871 -void __init find_max_pfn(void) 23.872 -{ 23.873 - int i; 23.874 - 23.875 - max_pfn = 0; 23.876 - if (efi_enabled) { 23.877 - efi_memmap_walk(efi_find_max_pfn, &max_pfn); 23.878 - return; 23.879 - } 23.880 - 23.881 - for (i = 0; i < e820.nr_map; i++) { 23.882 - unsigned long start, end; 23.883 - /* RAM? */ 23.884 - if (e820.map[i].type != E820_RAM) 23.885 - continue; 23.886 - start = PFN_UP(e820.map[i].addr); 23.887 - end = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 23.888 - if (start >= end) 23.889 - continue; 23.890 - if (end > max_pfn) 23.891 - max_pfn = end; 23.892 - } 23.893 -} 23.894 - 23.895 -/* 23.896 - * Determine low and high memory ranges: 23.897 - */ 23.898 -unsigned long __init find_max_low_pfn(void) 23.899 -{ 23.900 - unsigned long max_low_pfn; 23.901 - 23.902 - max_low_pfn = max_pfn; 23.903 - if (max_low_pfn > MAXMEM_PFN) { 23.904 - if (highmem_pages == -1) 23.905 - highmem_pages = max_pfn - MAXMEM_PFN; 23.906 - if (highmem_pages + MAXMEM_PFN < max_pfn) 23.907 - max_pfn = MAXMEM_PFN + highmem_pages; 23.908 - if (highmem_pages + MAXMEM_PFN > max_pfn) { 23.909 - 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.910 - highmem_pages = 0; 23.911 - } 23.912 - max_low_pfn = MAXMEM_PFN; 23.913 -#ifndef CONFIG_HIGHMEM 23.914 - /* Maximum memory usable is what is directly addressable */ 23.915 - printk(KERN_WARNING "Warning only %ldMB will be used.\n", 23.916 - MAXMEM>>20); 23.917 - if (max_pfn > MAX_NONPAE_PFN) 23.918 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 23.919 - else 23.920 - printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n"); 23.921 - max_pfn = MAXMEM_PFN; 23.922 -#else /* !CONFIG_HIGHMEM */ 23.923 -#ifndef CONFIG_X86_PAE 23.924 - if (max_pfn > MAX_NONPAE_PFN) { 23.925 - max_pfn = MAX_NONPAE_PFN; 23.926 - printk(KERN_WARNING "Warning only 4GB will be used.\n"); 23.927 - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); 23.928 - } 23.929 -#endif /* !CONFIG_X86_PAE */ 23.930 -#endif /* !CONFIG_HIGHMEM */ 23.931 - } else { 23.932 - if (highmem_pages == -1) 23.933 - highmem_pages = 0; 23.934 -#ifdef CONFIG_HIGHMEM 23.935 - if (highmem_pages >= max_pfn) { 23.936 - 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.937 - highmem_pages = 0; 23.938 - } 23.939 - if (highmem_pages) { 23.940 - if (max_low_pfn-highmem_pages < 64*1024*1024/PAGE_SIZE){ 23.941 - printk(KERN_ERR "highmem size %uMB results in smaller than 64MB lowmem, ignoring it.\n", pages_to_mb(highmem_pages)); 23.942 - highmem_pages = 0; 23.943 - } 23.944 - max_low_pfn -= highmem_pages; 23.945 - } 23.946 -#else 23.947 - if (highmem_pages) 23.948 - printk(KERN_ERR "ignoring highmem size on non-highmem kernel!\n"); 23.949 -#endif 23.950 - } 23.951 - return max_low_pfn; 23.952 -} 23.953 - 23.954 -#ifndef CONFIG_DISCONTIGMEM 23.955 - 23.956 -/* 23.957 - * Free all available memory for boot time allocation. Used 23.958 - * as a callback function by efi_memory_walk() 23.959 - */ 23.960 - 23.961 -static int __init 23.962 -free_available_memory(unsigned long start, unsigned long end, void *arg) 23.963 -{ 23.964 - /* check max_low_pfn */ 23.965 - if (start >= ((max_low_pfn + 1) << PAGE_SHIFT)) 23.966 - return 0; 23.967 - if (end >= ((max_low_pfn + 1) << PAGE_SHIFT)) 23.968 - end = (max_low_pfn + 1) << PAGE_SHIFT; 23.969 - if (start < end) 23.970 - free_bootmem(start, end - start); 23.971 - 23.972 - return 0; 23.973 -} 23.974 -/* 23.975 - * Register fully available low RAM pages with the bootmem allocator. 23.976 - */ 23.977 -static void __init register_bootmem_low_pages(unsigned long max_low_pfn) 23.978 -{ 23.979 - int i; 23.980 - 23.981 - if (efi_enabled) { 23.982 - efi_memmap_walk(free_available_memory, NULL); 23.983 - return; 23.984 - } 23.985 - for (i = 0; i < e820.nr_map; i++) { 23.986 - unsigned long curr_pfn, last_pfn, size; 23.987 - /* 23.988 - * Reserve usable low memory 23.989 - */ 23.990 - if (e820.map[i].type != E820_RAM) 23.991 - continue; 23.992 - /* 23.993 - * We are rounding up the start address of usable memory: 23.994 - */ 23.995 - curr_pfn = PFN_UP(e820.map[i].addr); 23.996 - if (curr_pfn >= max_low_pfn) 23.997 - continue; 23.998 - /* 23.999 - * ... and at the end of the usable range downwards: 23.1000 - */ 23.1001 - last_pfn = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 23.1002 - 23.1003 - if (last_pfn > max_low_pfn) 23.1004 - last_pfn = max_low_pfn; 23.1005 - 23.1006 - /* 23.1007 - * .. finally, did all the rounding and playing 23.1008 - * around just make the area go away? 23.1009 - */ 23.1010 - if (last_pfn <= curr_pfn) 23.1011 - continue; 23.1012 - 23.1013 - size = last_pfn - curr_pfn; 23.1014 - free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size)); 23.1015 - } 23.1016 -} 23.1017 - 23.1018 -static unsigned long __init setup_memory(void) 23.1019 -{ 23.1020 - unsigned long bootmap_size, start_pfn, max_low_pfn; 23.1021 - 23.1022 - /* 23.1023 - * partially used pages are not usable - thus 23.1024 - * we are rounding upwards: 23.1025 - */ 23.1026 - start_pfn = PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames; 23.1027 - 23.1028 - find_max_pfn(); 23.1029 - 23.1030 - max_low_pfn = find_max_low_pfn(); 23.1031 - 23.1032 -#ifdef CONFIG_HIGHMEM 23.1033 - highstart_pfn = highend_pfn = max_pfn; 23.1034 - if (max_pfn > max_low_pfn) { 23.1035 - highstart_pfn = max_low_pfn; 23.1036 - } 23.1037 - printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", 23.1038 - pages_to_mb(highend_pfn - highstart_pfn)); 23.1039 -#endif 23.1040 - printk(KERN_NOTICE "%ldMB LOWMEM available.\n", 23.1041 - pages_to_mb(max_low_pfn)); 23.1042 - /* 23.1043 - * Initialize the boot-time allocator (with low memory only): 23.1044 - */ 23.1045 - bootmap_size = init_bootmem(start_pfn, max_low_pfn); 23.1046 - 23.1047 - register_bootmem_low_pages(max_low_pfn); 23.1048 - 23.1049 - /* 23.1050 - * Reserve the bootmem bitmap itself as well. We do this in two 23.1051 - * steps (first step was init_bootmem()) because this catches 23.1052 - * the (very unlikely) case of us accidentally initializing the 23.1053 - * bootmem allocator with an invalid RAM area. 23.1054 - */ 23.1055 - reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(start_pfn) + 23.1056 - bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY)); 23.1057 - 23.1058 - /* could be an AMD 768MPX chipset. Reserve a page before VGA to prevent 23.1059 - PCI prefetch into it (errata #56). Usually the page is reserved anyways, 23.1060 - unless you have no PS/2 mouse plugged in. */ 23.1061 - if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && 23.1062 - boot_cpu_data.x86 == 6) 23.1063 - reserve_bootmem(0xa0000 - 4096, 4096); 23.1064 - 23.1065 -#ifdef CONFIG_SMP 23.1066 - /* 23.1067 - * But first pinch a few for the stack/trampoline stuff 23.1068 - * FIXME: Don't need the extra page at 4K, but need to fix 23.1069 - * trampoline before removing it. (see the GDT stuff) 23.1070 - */ 23.1071 - reserve_bootmem(PAGE_SIZE, PAGE_SIZE); 23.1072 -#endif 23.1073 -#ifdef CONFIG_ACPI_SLEEP 23.1074 - /* 23.1075 - * Reserve low memory region for sleep support. 23.1076 - */ 23.1077 - acpi_reserve_bootmem(); 23.1078 -#endif 23.1079 -#ifdef CONFIG_X86_FIND_SMP_CONFIG 23.1080 - /* 23.1081 - * Find and reserve possible boot-time SMP configuration: 23.1082 - */ 23.1083 - find_smp_config(); 23.1084 -#endif 23.1085 - 23.1086 -#ifdef CONFIG_BLK_DEV_INITRD 23.1087 - if (xen_start_info.mod_start) { 23.1088 - if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 23.1089 - /*reserve_bootmem(INITRD_START, INITRD_SIZE);*/ 23.1090 - initrd_start = INITRD_START + PAGE_OFFSET; 23.1091 - initrd_end = initrd_start+INITRD_SIZE; 23.1092 - initrd_below_start_ok = 1; 23.1093 - } 23.1094 - else { 23.1095 - printk(KERN_ERR "initrd extends beyond end of memory " 23.1096 - "(0x%08lx > 0x%08lx)\ndisabling initrd\n", 23.1097 - INITRD_START + INITRD_SIZE, 23.1098 - max_low_pfn << PAGE_SHIFT); 23.1099 - initrd_start = 0; 23.1100 - } 23.1101 - } 23.1102 -#endif 23.1103 - 23.1104 - phys_to_machine_mapping = (unsigned long *)xen_start_info.mfn_list; 23.1105 - 23.1106 - return max_low_pfn; 23.1107 -} 23.1108 -#else 23.1109 -extern unsigned long setup_memory(void); 23.1110 -#endif /* !CONFIG_DISCONTIGMEM */ 23.1111 - 23.1112 -/* 23.1113 - * Request address space for all standard RAM and ROM resources 23.1114 - * and also for regions reported as reserved by the e820. 23.1115 - */ 23.1116 -static void __init 23.1117 -legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource) 23.1118 -{ 23.1119 - int i; 23.1120 - 23.1121 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.1122 - probe_roms(); 23.1123 -#endif 23.1124 - for (i = 0; i < e820.nr_map; i++) { 23.1125 - struct resource *res; 23.1126 - if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) 23.1127 - continue; 23.1128 - res = alloc_bootmem_low(sizeof(struct resource)); 23.1129 - switch (e820.map[i].type) { 23.1130 - case E820_RAM: res->name = "System RAM"; break; 23.1131 - case E820_ACPI: res->name = "ACPI Tables"; break; 23.1132 - case E820_NVS: res->name = "ACPI Non-volatile Storage"; break; 23.1133 - default: res->name = "reserved"; 23.1134 - } 23.1135 - res->start = e820.map[i].addr; 23.1136 - res->end = res->start + e820.map[i].size - 1; 23.1137 - res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; 23.1138 - request_resource(&iomem_resource, res); 23.1139 - if (e820.map[i].type == E820_RAM) { 23.1140 - /* 23.1141 - * We don't know which RAM region contains kernel data, 23.1142 - * so we try it repeatedly and let the resource manager 23.1143 - * test it. 23.1144 - */ 23.1145 - request_resource(res, code_resource); 23.1146 - request_resource(res, data_resource); 23.1147 - } 23.1148 - } 23.1149 -} 23.1150 - 23.1151 -/* 23.1152 - * Request address space for all standard resources 23.1153 - */ 23.1154 -static void __init register_memory(unsigned long max_low_pfn) 23.1155 -{ 23.1156 - unsigned long low_mem_size; 23.1157 - int i; 23.1158 - 23.1159 - if (efi_enabled) 23.1160 - efi_initialize_iomem_resources(&code_resource, &data_resource); 23.1161 - else 23.1162 - legacy_init_iomem_resources(&code_resource, &data_resource); 23.1163 - 23.1164 - /* EFI systems may still have VGA */ 23.1165 - request_resource(&iomem_resource, &video_ram_resource); 23.1166 - 23.1167 - /* request I/O space for devices used on all i[345]86 PCs */ 23.1168 - for (i = 0; i < STANDARD_IO_RESOURCES; i++) 23.1169 - request_resource(&ioport_resource, &standard_io_resources[i]); 23.1170 - 23.1171 - /* Tell the PCI layer not to allocate too close to the RAM area.. */ 23.1172 - low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff; 23.1173 - if (low_mem_size > pci_mem_start) 23.1174 - pci_mem_start = low_mem_size; 23.1175 -} 23.1176 - 23.1177 -/* Use inline assembly to define this because the nops are defined 23.1178 - as inline assembly strings in the include files and we cannot 23.1179 - get them easily into strings. */ 23.1180 -asm("\t.data\nintelnops: " 23.1181 - GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 23.1182 - GENERIC_NOP7 GENERIC_NOP8); 23.1183 -asm("\t.data\nk8nops: " 23.1184 - K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 23.1185 - K8_NOP7 K8_NOP8); 23.1186 -asm("\t.data\nk7nops: " 23.1187 - K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 23.1188 - K7_NOP7 K7_NOP8); 23.1189 - 23.1190 -extern unsigned char intelnops[], k8nops[], k7nops[]; 23.1191 -static unsigned char *intel_nops[ASM_NOP_MAX+1] = { 23.1192 - NULL, 23.1193 - intelnops, 23.1194 - intelnops + 1, 23.1195 - intelnops + 1 + 2, 23.1196 - intelnops + 1 + 2 + 3, 23.1197 - intelnops + 1 + 2 + 3 + 4, 23.1198 - intelnops + 1 + 2 + 3 + 4 + 5, 23.1199 - intelnops + 1 + 2 + 3 + 4 + 5 + 6, 23.1200 - intelnops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1201 -}; 23.1202 -static unsigned char *k8_nops[ASM_NOP_MAX+1] = { 23.1203 - NULL, 23.1204 - k8nops, 23.1205 - k8nops + 1, 23.1206 - k8nops + 1 + 2, 23.1207 - k8nops + 1 + 2 + 3, 23.1208 - k8nops + 1 + 2 + 3 + 4, 23.1209 - k8nops + 1 + 2 + 3 + 4 + 5, 23.1210 - k8nops + 1 + 2 + 3 + 4 + 5 + 6, 23.1211 - k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1212 -}; 23.1213 -static unsigned char *k7_nops[ASM_NOP_MAX+1] = { 23.1214 - NULL, 23.1215 - k7nops, 23.1216 - k7nops + 1, 23.1217 - k7nops + 1 + 2, 23.1218 - k7nops + 1 + 2 + 3, 23.1219 - k7nops + 1 + 2 + 3 + 4, 23.1220 - k7nops + 1 + 2 + 3 + 4 + 5, 23.1221 - k7nops + 1 + 2 + 3 + 4 + 5 + 6, 23.1222 - k7nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, 23.1223 -}; 23.1224 -static struct nop { 23.1225 - int cpuid; 23.1226 - unsigned char **noptable; 23.1227 -} noptypes[] = { 23.1228 - { X86_FEATURE_K8, k8_nops }, 23.1229 - { X86_FEATURE_K7, k7_nops }, 23.1230 - { -1, NULL } 23.1231 -}; 23.1232 - 23.1233 -/* Replace instructions with better alternatives for this CPU type. 23.1234 - 23.1235 - This runs before SMP is initialized to avoid SMP problems with 23.1236 - self modifying code. This implies that assymetric systems where 23.1237 - APs have less capabilities than the boot processor are not handled. 23.1238 - In this case boot with "noreplacement". */ 23.1239 -void apply_alternatives(void *start, void *end) 23.1240 -{ 23.1241 - struct alt_instr *a; 23.1242 - int diff, i, k; 23.1243 - unsigned char **noptable = intel_nops; 23.1244 - for (i = 0; noptypes[i].cpuid >= 0; i++) { 23.1245 - if (boot_cpu_has(noptypes[i].cpuid)) { 23.1246 - noptable = noptypes[i].noptable; 23.1247 - break; 23.1248 - } 23.1249 - } 23.1250 - for (a = start; (void *)a < end; a++) { 23.1251 - if (!boot_cpu_has(a->cpuid)) 23.1252 - continue; 23.1253 - BUG_ON(a->replacementlen > a->instrlen); 23.1254 - memcpy(a->instr, a->replacement, a->replacementlen); 23.1255 - diff = a->instrlen - a->replacementlen; 23.1256 - /* Pad the rest with nops */ 23.1257 - for (i = a->replacementlen; diff > 0; diff -= k, i += k) { 23.1258 - k = diff; 23.1259 - if (k > ASM_NOP_MAX) 23.1260 - k = ASM_NOP_MAX; 23.1261 - memcpy(a->instr + i, noptable[k], k); 23.1262 - } 23.1263 - } 23.1264 -} 23.1265 - 23.1266 -static int no_replacement __initdata = 0; 23.1267 - 23.1268 -void __init alternative_instructions(void) 23.1269 -{ 23.1270 - extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; 23.1271 - if (no_replacement) 23.1272 - return; 23.1273 - apply_alternatives(__alt_instructions, __alt_instructions_end); 23.1274 -} 23.1275 - 23.1276 -static int __init noreplacement_setup(char *s) 23.1277 -{ 23.1278 - no_replacement = 1; 23.1279 - return 0; 23.1280 -} 23.1281 - 23.1282 -__setup("noreplacement", noreplacement_setup); 23.1283 - 23.1284 -static char * __init machine_specific_memory_setup(void); 23.1285 - 23.1286 -/* 23.1287 - * Determine if we were loaded by an EFI loader. If so, then we have also been 23.1288 - * passed the efi memmap, systab, etc., so we should use these data structures 23.1289 - * for initialization. Note, the efi init code path is determined by the 23.1290 - * global efi_enabled. This allows the same kernel image to be used on existing 23.1291 - * systems (with a traditional BIOS) as well as on EFI systems. 23.1292 - */ 23.1293 -void __init setup_arch(char **cmdline_p) 23.1294 -{ 23.1295 - int i,j; 23.1296 - 23.1297 - unsigned long max_low_pfn; 23.1298 - 23.1299 - HYPERVISOR_vm_assist(VMASST_CMD_enable, 23.1300 - VMASST_TYPE_4gb_segments); 23.1301 - 23.1302 - pm_idle = xen_cpu_idle; 23.1303 - 23.1304 - memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data)); 23.1305 - early_cpu_init(); 23.1306 - 23.1307 - /* 23.1308 - * FIXME: This isn't an official loader_type right 23.1309 - * now but does currently work with elilo. 23.1310 - * If we were configured as an EFI kernel, check to make 23.1311 - * sure that we were loaded correctly from elilo and that 23.1312 - * the system table is valid. If not, then initialize normally. 23.1313 - */ 23.1314 -#ifdef CONFIG_EFI 23.1315 - if ((LOADER_TYPE == 0x50) && EFI_SYSTAB) 23.1316 - efi_enabled = 1; 23.1317 -#endif 23.1318 - 23.1319 - ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); /*old_decode_dev(ORIG_ROOT_DEV);*/ 23.1320 - drive_info = DRIVE_INFO; 23.1321 - screen_info = SCREEN_INFO; 23.1322 - edid_info = EDID_INFO; 23.1323 - apm_info.bios = APM_BIOS_INFO; 23.1324 - ist_info = IST_INFO; 23.1325 - saved_videomode = VIDEO_MODE; 23.1326 - if( SYS_DESC_TABLE.length != 0 ) { 23.1327 - MCA_bus = SYS_DESC_TABLE.table[3] &0x2; 23.1328 - machine_id = SYS_DESC_TABLE.table[0]; 23.1329 - machine_submodel_id = SYS_DESC_TABLE.table[1]; 23.1330 - BIOS_revision = SYS_DESC_TABLE.table[2]; 23.1331 - } 23.1332 - aux_device_present = AUX_DEVICE_INFO; 23.1333 - 23.1334 -#ifdef CONFIG_XEN_PHYSDEV_ACCESS 23.1335 - /* This is drawn from a dump from vgacon:startup in standard Linux. */ 23.1336 - screen_info.orig_video_mode = 3; 23.1337 - screen_info.orig_video_isVGA = 1; 23.1338 - screen_info.orig_video_lines = 25; 23.1339 - screen_info.orig_video_cols = 80; 23.1340 - screen_info.orig_video_ega_bx = 3; 23.1341 - screen_info.orig_video_points = 16; 23.1342 -#endif 23.1343 - 23.1344 -#ifdef CONFIG_BLK_DEV_RAM 23.1345 - rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; 23.1346 - rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0); 23.1347 - rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0); 23.1348 -#endif 23.1349 - ARCH_SETUP 23.1350 - if (efi_enabled) 23.1351 - efi_init(); 23.1352 - else { 23.1353 - printk(KERN_INFO "BIOS-provided physical RAM map:\n"); 23.1354 - print_memory_map(machine_specific_memory_setup()); 23.1355 - } 23.1356 - 23.1357 - copy_edd(); 23.1358 - 23.1359 - if (!MOUNT_ROOT_RDONLY) 23.1360 - root_mountflags &= ~MS_RDONLY; 23.1361 - init_mm.start_code = (unsigned long) _text; 23.1362 - init_mm.end_code = (unsigned long) _etext; 23.1363 - init_mm.end_data = (unsigned long) _edata; 23.1364 - init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT; 23.1365 - 23.1366 - code_resource.start = virt_to_phys(_text); 23.1367 - code_resource.end = virt_to_phys(_etext)-1; 23.1368 - data_resource.start = virt_to_phys(_etext); 23.1369 - data_resource.end = virt_to_phys(_edata)-1; 23.1370 - 23.1371 - parse_cmdline_early(cmdline_p); 23.1372 - 23.1373 - max_low_pfn = setup_memory(); 23.1374 - 23.1375 - /* 23.1376 - * NOTE: before this point _nobody_ is allowed to allocate 23.1377 - * any memory using the bootmem allocator. 23.1378 - */ 23.1379 - 23.1380 -#ifdef CONFIG_SMP 23.1381 - smp_alloc_memory(); /* AP processor realmode stacks in low memory*/ 23.1382 -#endif 23.1383 - paging_init(); 23.1384 - 23.1385 - pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE); 23.1386 - for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ ) 23.1387 - { 23.1388 - pfn_to_mfn_frame_list[j] = 23.1389 - virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT; 23.1390 - } 23.1391 - HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list = 23.1392 - virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT; 23.1393 - 23.1394 - 23.1395 -#ifdef CONFIG_EARLY_PRINTK 23.1396 - { 23.1397 - char *s = strstr(*cmdline_p, "earlyprintk="); 23.1398 - if (s) { 23.1399 - extern void setup_early_printk(char *); 23.1400 - 23.1401 - setup_early_printk(s); 23.1402 - printk("early console enabled\n"); 23.1403 - } 23.1404 - } 23.1405 -#endif 23.1406 - 23.1407 - 23.1408 - dmi_scan_machine(); 23.1409 - 23.1410 -#ifdef CONFIG_X86_GENERICARCH 23.1411 - generic_apic_probe(*cmdline_p); 23.1412 -#endif 23.1413 - if (efi_enabled) 23.1414 - efi_map_memmap(); 23.1415 - 23.1416 - /* 23.1417 - * Parse the ACPI tables for possible boot-time SMP configuration. 23.1418 - */ 23.1419 - acpi_boot_init(); 23.1420 - 23.1421 -#ifdef CONFIG_X86_LOCAL_APIC 23.1422 - if (smp_found_config) 23.1423 - get_smp_config(); 23.1424 -#endif 23.1425 - 23.1426 - register_memory(max_low_pfn); 23.1427 - 23.1428 - /* If we are a privileged guest OS then we should request IO privs. */ 23.1429 - if (xen_start_info.flags & SIF_PRIVILEGED) { 23.1430 - dom0_op_t op; 23.1431 - op.cmd = DOM0_IOPL; 23.1432 - op.u.iopl.domain = DOMID_SELF; 23.1433 - op.u.iopl.iopl = 1; 23.1434 - if (HYPERVISOR_dom0_op(&op) != 0) 23.1435 - panic("Unable to obtain IOPL, despite SIF_PRIVILEGED"); 23.1436 - current->thread.io_pl = 1; 23.1437 - } 23.1438 - 23.1439 - if (xen_start_info.flags & SIF_INITDOMAIN) { 23.1440 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 23.1441 - panic("Xen granted us console access " 23.1442 - "but not privileged status"); 23.1443 - 23.1444 -#ifdef CONFIG_VT 23.1445 -#if defined(CONFIG_VGA_CONSOLE) 23.1446 - if (!efi_enabled || 23.1447 - (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) 23.1448 - conswitchp = &vga_con; 23.1449 -#elif defined(CONFIG_DUMMY_CONSOLE) 23.1450 - conswitchp = &dummy_con; 23.1451 -#endif 23.1452 -#endif 23.1453 - } else { 23.1454 -#ifdef CONFIG_XEN_PRIVILEGED_GUEST 23.1455 - extern const struct consw xennull_con; 23.1456 - extern int console_use_vt; 23.1457 -#if defined(CONFIG_VGA_CONSOLE) 23.1458 - /* disable VGA driver */ 23.1459 - ORIG_VIDEO_ISVGA = VIDEO_TYPE_VLFB; 23.1460 -#endif 23.1461 - conswitchp = &xennull_con; 23.1462 - console_use_vt = 0; 23.1463 -#endif 23.1464 - } 23.1465 -} 23.1466 - 23.1467 -#include "setup_arch_post.h" 23.1468 -/* 23.1469 - * Local Variables: 23.1470 - * mode:c 23.1471 - * c-file-style:"k&r" 23.1472 - * c-basic-offset:8 23.1473 - * End: 23.1474 - */
24.1 --- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c Mon Oct 25 12:45:34 2004 +0000 24.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 24.3 @@ -1,628 +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/elf.h> 24.26 -#include <asm/processor.h> 24.27 -#include <asm/ucontext.h> 24.28 -#include <asm/uaccess.h> 24.29 -#include <asm/i387.h> 24.30 -#include "sigframe.h" 24.31 - 24.32 -#define DEBUG_SIG 0 24.33 - 24.34 -#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 24.35 - 24.36 -/* 24.37 - * Atomically swap in the new signal mask, and wait for a signal. 24.38 - */ 24.39 -asmlinkage int 24.40 -sys_sigsuspend(int history0, int history1, old_sigset_t mask) 24.41 -{ 24.42 - struct pt_regs * regs = (struct pt_regs *) &history0; 24.43 - sigset_t saveset; 24.44 - 24.45 - mask &= _BLOCKABLE; 24.46 - spin_lock_irq(¤t->sighand->siglock); 24.47 - saveset = current->blocked; 24.48 - siginitset(¤t->blocked, mask); 24.49 - recalc_sigpending(); 24.50 - spin_unlock_irq(¤t->sighand->siglock); 24.51 - 24.52 - regs->eax = -EINTR; 24.53 - while (1) { 24.54 - current->state = TASK_INTERRUPTIBLE; 24.55 - schedule(); 24.56 - if (do_signal(regs, &saveset)) 24.57 <