diff options
author | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2006-01-30 17:18:27 +0000 |
---|---|---|
committer | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2006-01-30 17:18:27 +0000 |
commit | 66ee4af4535bd5a7162043dacf67527f678f6c67 (patch) | |
tree | 98e23b23fe6f55d5e4cb7fe904ff13ccc7e6a311 | |
parent | 840b5b507198d2e658a32366e37afd8a2fcae0ce (diff) | |
download | xen-66ee4af4535bd5a7162043dacf67527f678f6c67.tar.gz xen-66ee4af4535bd5a7162043dacf67527f678f6c67.tar.bz2 xen-66ee4af4535bd5a7162043dacf67527f678f6c67.zip |
Update linux sparse tree to subarch layout.
Sparse tree is based on 2.6.12 branch of linux-2.6-xen.hg.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
--HG--
rename : linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 => buildconfigs/linux-defconfig_xen0_x86_32
rename : linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64 => buildconfigs/linux-defconfig_xen0_x86_64
rename : linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 => buildconfigs/linux-defconfig_xenU_x86_32
rename : linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_64 => buildconfigs/linux-defconfig_xenU_x86_64
rename : linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_32 => buildconfigs/linux-defconfig_xen_x86_32
rename : linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_64 => buildconfigs/linux-defconfig_xen_x86_64
rename : linux-2.6-xen-sparse/arch/xen/i386/Kconfig => linux-2.6-xen-sparse/arch/i386/Kconfig
rename : linux-2.6-xen-sparse/arch/xen/i386/Makefile => linux-2.6-xen-sparse/arch/i386/Makefile
rename : linux-2.6-xen-sparse/arch/xen/boot/Makefile => linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/Makefile => linux-2.6-xen-sparse/arch/i386/kernel/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/Makefile => linux-2.6-xen-sparse/arch/i386/kernel/acpi/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c => linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/apic.c => linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/Makefile => linux-2.6-xen-sparse/arch/i386/kernel/cpu/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/common.c => linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile => linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c => linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/entry.S => linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/fixup.c => linux-2.6-xen-sparse/arch/i386/kernel/fixup.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S => linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c => linux-2.6-xen-sparse/arch/i386/kernel/i386_ksyms-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/init_task.c => linux-2.6-xen-sparse/arch/i386/kernel/init_task-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/io_apic.c => linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/ioport.c => linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/irq.c => linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/ldt.c => linux-2.6-xen-sparse/arch/i386/kernel/ldt-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/microcode.c => linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/mpparse.c => linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/pci-dma.c => linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c => linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/quirks.c => linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c => linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/signal.c => linux-2.6-xen-sparse/arch/i386/kernel/signal-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/smp.c => linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c => linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c => linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c => linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall-note.S => linux-2.6-xen-sparse/arch/i386/kernel/vsyscall-note-xen.S
rename : linux-2.6-xen-sparse/arch/xen/i386/mach-default/Makefile => linux-2.6-xen-sparse/arch/i386/mach-xen/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/Makefile => linux-2.6-xen-sparse/arch/i386/mm/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c => linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/highmem.c => linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c => linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/init.c => linux-2.6-xen-sparse/arch/i386/mm/init-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c => linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c => linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/pci/Makefile => linux-2.6-xen-sparse/arch/i386/pci/Makefile
rename : linux-2.6-xen-sparse/arch/xen/i386/pci/i386.c => linux-2.6-xen-sparse/arch/i386/pci/i386-xen.c
rename : linux-2.6-xen-sparse/arch/xen/i386/pci/irq.c => linux-2.6-xen-sparse/arch/i386/pci/irq-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/Kconfig => linux-2.6-xen-sparse/arch/x86_64/Kconfig
rename : linux-2.6-xen-sparse/arch/xen/x86_64/Makefile => linux-2.6-xen-sparse/arch/x86_64/Makefile
rename : linux-2.6-xen-sparse/arch/xen/x86_64/ia32/Makefile => linux-2.6-xen-sparse/arch/x86_64/ia32/Makefile
rename : linux-2.6-xen-sparse/arch/xen/x86_64/ia32/ia32entry.S => linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S
rename : linux-2.6-xen-sparse/arch/xen/x86_64/ia32/syscall32.c => linux-2.6-xen-sparse/arch/x86_64/ia32/syscall32-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/ia32/vsyscall-int80.S => linux-2.6-xen-sparse/arch/x86_64/ia32/vsyscall-int80.S
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/Makefile => linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/acpi/Makefile => linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/apic.c => linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c => linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/early_printk.c => linux-2.6-xen-sparse/arch/x86_64/kernel/early_printk-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S => linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic.c => linux-2.6-xen-sparse/arch/x86_64/kernel/genapic-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic_xen.c => linux-2.6-xen-sparse/arch/x86_64/kernel/genapic_xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S => linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c => linux-2.6-xen-sparse/arch/x86_64/kernel/head64-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/io_apic.c => linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ioport.c => linux-2.6-xen-sparse/arch/x86_64/kernel/ioport-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/irq.c => linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ldt.c => linux-2.6-xen-sparse/arch/x86_64/kernel/ldt-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/mpparse.c => linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/pci-nommu.c => linux-2.6-xen-sparse/arch/x86_64/kernel/pci-nommu-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/process.c => linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c => linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup64.c => linux-2.6-xen-sparse/arch/x86_64/kernel/setup64-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/signal.c => linux-2.6-xen-sparse/arch/x86_64/kernel/signal-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smp.c => linux-2.6-xen-sparse/arch/x86_64/kernel/smp-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/traps.c => linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/vsyscall.c => linux-2.6-xen-sparse/arch/x86_64/kernel/vsyscall-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/x8664_ksyms.c => linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/kernel/xen_entry.S => linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S
rename : linux-2.6-xen-sparse/arch/xen/x86_64/mm/Makefile => linux-2.6-xen-sparse/arch/x86_64/mm/Makefile
rename : linux-2.6-xen-sparse/arch/xen/x86_64/mm/fault.c => linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c => linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/mm/pageattr.c => linux-2.6-xen-sparse/arch/x86_64/mm/pageattr-xen.c
rename : linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile => linux-2.6-xen-sparse/arch/x86_64/pci/Makefile
rename : linux-2.6-xen-sparse/arch/xen/kernel/Makefile => linux-2.6-xen-sparse/drivers/xen/core/Makefile
rename : linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c => linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/features.c => linux-2.6-xen-sparse/drivers/xen/core/features.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c => linux-2.6-xen-sparse/drivers/xen/core/gnttab.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/reboot.c => linux-2.6-xen-sparse/drivers/xen/core/reboot.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/skbuff.c => linux-2.6-xen-sparse/drivers/xen/core/skbuff.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c => linux-2.6-xen-sparse/drivers/xen/core/smpboot.c
rename : linux-2.6-xen-sparse/arch/xen/kernel/xen_proc.c => linux-2.6-xen-sparse/drivers/xen/core/xen_proc.c
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/agp.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/agp.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/desc.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/dma-mapping.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/fixmap.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/fixmap.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/floppy.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/floppy.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/highmem.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/highmem.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/hw_irq.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hw_irq.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypervisor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/io.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/kmap_types.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/kmap_types.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu_context.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/page.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/page.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/param.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/param.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pci.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pci.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgalloc.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgalloc.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level-defs.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/processor.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/processor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/ptrace.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ptrace.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/scatterlist.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/scatterlist.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/segment.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/segment.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/setup.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/smp.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/smp.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/spinlock.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/spinlock.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/swiotlb.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/swiotlb.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/system.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/system.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/tlbflush.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/tlbflush.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/vga.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/vga.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/irq_vectors.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/mach_traps.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h => linux-2.6-xen-sparse/include/asm-ia64/fixmap.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h => linux-2.6-xen-sparse/include/asm-ia64/hypercall.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypervisor.h => linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-ia64/synch_bitops.h => linux-2.6-xen-sparse/include/asm-ia64/synch_bitops.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/arch_hooks.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/arch_hooks.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/bootsetup.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/desc.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/dma-mapping.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/dma-mapping.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/fixmap.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/floppy.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/floppy.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hw_irq.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hw_irq.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypervisor.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypervisor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/io.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/irq.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irq.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/nmi.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/nmi.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/page.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/page.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/param.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/param.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pci.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pci.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgalloc.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgtable.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/processor.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/ptrace.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/segment.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/segment.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/smp.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/synch_bitops.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/synch_bitops.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/system.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/system.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/timer.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/timer.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/tlbflush.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/tlbflush.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/vga.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/vga.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/xor.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/xor.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/io_ports.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/io_ports.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/irq_vectors.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/irq_vectors.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_time.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_time.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_timer.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_timer.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h
rename : linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_pre.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_pre.h
rename : linux-2.6-xen-sparse/include/asm-xen/balloon.h => linux-2.6-xen-sparse/include/xen/balloon.h
rename : linux-2.6-xen-sparse/include/asm-xen/driver_util.h => linux-2.6-xen-sparse/include/xen/driver_util.h
rename : linux-2.6-xen-sparse/include/asm-xen/evtchn.h => linux-2.6-xen-sparse/include/xen/evtchn.h
rename : linux-2.6-xen-sparse/include/asm-xen/features.h => linux-2.6-xen-sparse/include/xen/features.h
rename : linux-2.6-xen-sparse/include/asm-xen/foreign_page.h => linux-2.6-xen-sparse/include/xen/foreign_page.h
rename : linux-2.6-xen-sparse/include/asm-xen/gnttab.h => linux-2.6-xen-sparse/include/xen/gnttab.h
rename : linux-2.6-xen-sparse/include/asm-xen/net_driver_util.h => linux-2.6-xen-sparse/include/xen/net_driver_util.h
rename : linux-2.6-xen-sparse/include/asm-xen/linux-public/evtchn.h => linux-2.6-xen-sparse/include/xen/public/evtchn.h
rename : linux-2.6-xen-sparse/include/asm-xen/linux-public/privcmd.h => linux-2.6-xen-sparse/include/xen/public/privcmd.h
rename : linux-2.6-xen-sparse/include/asm-xen/tpmfe.h => linux-2.6-xen-sparse/include/xen/tpmfe.h
rename : linux-2.6-xen-sparse/include/asm-xen/xen_proc.h => linux-2.6-xen-sparse/include/xen/xen_proc.h
rename : linux-2.6-xen-sparse/include/asm-xen/xenbus.h => linux-2.6-xen-sparse/include/xen/xenbus.h
rename : linux-2.6-xen-sparse/include/asm-xen/xencons.h => linux-2.6-xen-sparse/include/xen/xencons.h
-rw-r--r-- | buildconfigs/Rules.mk | 8 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xen0_x86_32 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32) | 268 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xen0_x86_64 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64) | 224 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xenU_x86_32 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32) | 143 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xenU_x86_64 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_64) | 178 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xen_x86_32 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_32) | 416 | ||||
-rw-r--r-- | buildconfigs/linux-defconfig_xen_x86_64 (renamed from linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_64) | 232 | ||||
-rw-r--r-- | buildconfigs/mk.linux-2.6-xen | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/Kconfig (renamed from linux-2.6-xen-sparse/arch/xen/i386/Kconfig) | 771 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/Makefile | 192 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile | 21 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/Makefile | 93 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/acpi/Makefile | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/apic.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/apm.c | 2428 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/cpu/Makefile | 24 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/common.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/Makefile | 12 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/early_printk-xen.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/entry.S) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/fixup.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/fixup.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/i386_ksyms-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/init_task-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/init_task.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/io_apic.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/ioport.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/irq.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/ldt-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/ldt.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/microcode.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/mpparse.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/pci-dma.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/quirks.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c) | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/signal-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/signal.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/smp.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c | 85 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c | 1182 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/traps.c | 1077 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/vmlinux.lds.S | 141 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/kernel/vsyscall-note-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall-note.S) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mach-xen/Makefile | 7 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mach-xen/topology.c | 97 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/Makefile | 18 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/highmem.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/init-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/init.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/pci/Makefile | 19 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/pci/i386-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/pci/i386.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/i386/pci/irq-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/i386/pci/irq.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/um/kernel/physmem.c | 480 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/Kconfig (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/Kconfig) | 204 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/Makefile | 135 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/ia32/Makefile | 46 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/ia32/ia32entry.S) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/ia32/syscall32-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/ia32/syscall32.c) | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/ia32/vsyscall-int80.S (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/ia32/vsyscall-int80.S) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile | 63 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile | 5 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/apic.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/early_printk-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/early_printk.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/genapic-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/genapic_xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic_xen.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/head64-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/i387.c | 155 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/io_apic.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/ioport-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ioport.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/irq.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/ldt-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ldt.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/mpparse.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/pci-nommu-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/pci-nommu.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/process.c) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c) | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/setup64-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup64.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/signal-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/signal.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/smp-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smp.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/traps.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/vsyscall-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/vsyscall.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/x8664_ksyms.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/kernel/xen_entry.S) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/mm/Makefile | 21 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/mm/fault.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/mm/pageattr-xen.c (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/mm/pageattr.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/x86_64/pci/Makefile (renamed from linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile-BUS) | 12 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/Kconfig.debug | 129 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/Kconfig.drivers | 98 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/Makefile | 93 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/boot/Makefile | 11 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 | 1405 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_ia64 | 1261 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/Makefile | 108 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/kernel/Makefile | 100 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/Makefile | 13 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/Makefile | 31 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile | 16 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall.S | 15 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/mach-default/Makefile | 12 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/mm/Makefile | 24 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/i386/pci/Makefile | 33 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/Makefile | 93 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/ia32/Makefile | 66 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/kernel/Makefile | 71 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/kernel/acpi/Makefile | 20 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/mm/Makefile | 31 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile | 39 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/Kconfig | 71 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/Makefile | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/acpi/tables.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/char/tpm/Kconfig | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/char/tpm/Kconfig.domU | 30 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/char/tpm/Makefile | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/char/tty_io.c | 24 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/firmware/Kconfig | 61 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/pci/Kconfig | 60 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/serial/Kconfig | 846 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/Kconfig (renamed from linux-2.6-xen-sparse/arch/xen/Kconfig) | 117 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/Makefile | 1 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/common.h | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/interface.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkfront/block.h | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blktap/common.h | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blktap/interface.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/console/console.c | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/Makefile (renamed from linux-2.6-xen-sparse/arch/xen/kernel/Makefile) | 9 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/evtchn.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c) | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/features.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/features.c) | 12 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/gnttab.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c) | 13 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/reboot.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/reboot.c) | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/skbuff.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/skbuff.c) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/smpboot.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c) | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/core/xen_proc.c (renamed from linux-2.6-xen-sparse/arch/xen/kernel/xen_proc.c) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/net_driver_util.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/netback/common.h | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/netback/netback.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c | 16 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/tpmback/common.h | 8 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c | 12 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/util.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c | 10 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/fs/Kconfig | 1730 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/atomic.h | 231 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/bitops.h | 457 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-default/mach_traps.h | 53 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/agp.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/agp.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/desc.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/dma-mapping.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/fixmap.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/fixmap.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/floppy.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/floppy.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/highmem.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/highmem.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hw_irq.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/hw_irq.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h) | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypervisor.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/io.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/kmap_types.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/kmap_types.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu_context.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/page.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/page.h) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/param.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/param.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pci.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pci.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgalloc.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgalloc.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level-defs.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/processor.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/processor.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ptrace.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/ptrace.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/scatterlist.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/scatterlist.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/segment.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/segment.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/setup.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/smp.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/smp.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/spinlock.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/spinlock.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/swiotlb.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/swiotlb.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/system.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/system.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/tlbflush.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/tlbflush.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/vga.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/vga.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/irq_vectors.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/mach_traps.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/rwsem.h | 289 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/smp_alt.h | 32 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/spinlock.h | 277 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-i386/system.h | 517 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-ia64/fixmap.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-ia64/hypercall.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypervisor.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-ia64/synch_bitops.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-ia64/synch_bitops.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-um/page.h | 139 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/arch_hooks.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/arch_hooks.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/bootsetup.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/desc.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/dma-mapping.h | 1 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/fixmap.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/floppy.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/floppy.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hw_irq.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hw_irq.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypervisor.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/io.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irq.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/irq.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/nmi.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/nmi.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/page.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/page.h) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/param.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/param.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pci.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pci.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgalloc.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgtable.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/processor.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/ptrace.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/segment.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/segment.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/smp.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/synch_bitops.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/system.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/system.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/timer.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/timer.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/tlbflush.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/tlbflush.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/vga.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/vga.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/xor.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/xor.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/io_ports.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/io_ports.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/irq_vectors.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/irq_vectors.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_time.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_time.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_timer.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_timer.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_pre.h (renamed from linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_pre.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/dma-mapping.h | 1 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypervisor.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/synch_bitops.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/gfp.h | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/highmem.h | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/init.h | 262 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/irq.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/mm.h | 5 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/skbuff.h | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/balloon.h (renamed from linux-2.6-xen-sparse/include/asm-xen/balloon.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/driver_util.h (renamed from linux-2.6-xen-sparse/include/asm-xen/driver_util.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/evtchn.h (renamed from linux-2.6-xen-sparse/include/asm-xen/evtchn.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/features.h (renamed from linux-2.6-xen-sparse/include/asm-xen/features.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/foreign_page.h (renamed from linux-2.6-xen-sparse/include/asm-xen/foreign_page.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/gnttab.h (renamed from linux-2.6-xen-sparse/include/asm-xen/gnttab.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/net_driver_util.h (renamed from linux-2.6-xen-sparse/include/asm-xen/net_driver_util.h) | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/public/evtchn.h (renamed from linux-2.6-xen-sparse/include/asm-xen/linux-public/evtchn.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/public/privcmd.h (renamed from linux-2.6-xen-sparse/include/asm-xen/linux-public/privcmd.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/public/xenstored.h | 89 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/tpmfe.h (renamed from linux-2.6-xen-sparse/include/asm-xen/tpmfe.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/xen_proc.h (renamed from linux-2.6-xen-sparse/include/asm-xen/xen_proc.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/xenbus.h (renamed from linux-2.6-xen-sparse/include/asm-xen/xenbus.h) | 4 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/xen/xencons.h (renamed from linux-2.6-xen-sparse/include/asm-xen/xencons.h) | 0 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/kernel/irq/manage.c | 73 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/lib/Kconfig.debug | 161 | ||||
-rwxr-xr-x | linux-2.6-xen-sparse/mkbuildtree | 6 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/mm/highmem.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/mm/memory.c | 71 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/mm/mmap.c | 1 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/net/core/dev.c | 7 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/net/core/skbuff.c | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/scripts/Makefile.xen | 14 | ||||
-rw-r--r-- | tools/Rules.mk | 2 | ||||
-rw-r--r-- | tools/debugger/pdb/linux-2.6-module/debug.c | 8 | ||||
-rw-r--r-- | tools/debugger/pdb/linux-2.6-module/module.c | 12 | ||||
-rw-r--r-- | tools/guest-headers/Makefile | 2 |
292 files changed, 13264 insertions, 5230 deletions
diff --git a/buildconfigs/Rules.mk b/buildconfigs/Rules.mk index b0a7df71c7..60b4024ae8 100644 --- a/buildconfigs/Rules.mk +++ b/buildconfigs/Rules.mk @@ -12,11 +12,11 @@ ALLSPARSETREES = $(patsubst %-xen-sparse,%,$(wildcard *-xen-sparse)) PRISTINE_SRC_PATH ?= .:.. vpath pristine-% $(PRISTINE_SRC_PATH) -# By default, build Linux with ARCH=xen (overridden by some non arch's) -ifneq ($(XEN_TARGET_ARCH),ia64) -LINUX_ARCH ?= xen +# Let XEN_TARGET_ARCH override ARCH. +ifeq ($(XEN_TARGET_ARCH),x86_32) +LINUX_ARCH ?= i386 else -LINUX_ARCH ?= ia64 +LINUX_ARCH ?= $(XEN_TARGET_ARCH) endif # Expand Linux series to Linux version diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 b/buildconfigs/linux-defconfig_xen0_x86_32 index 763c5bf96a..cb965e1862 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 +++ b/buildconfigs/linux-defconfig_xen0_x86_32 @@ -1,32 +1,13 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.12.6-xen0 -# Mon Nov 7 17:22:05 2005 +# Wed Jan 25 17:29:15 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_BACKEND=y -# CONFIG_XEN_BLKDEV_TAP_BE is not set -CONFIG_XEN_NETDEV_BACKEND=y -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -CONFIG_XEN_X86=y -# CONFIG_XEN_X86_64 is not set -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -79,14 +60,18 @@ CONFIG_OBSOLETE_MODPARM=y CONFIG_KMOD=y # -# X86 Processor Configuration +# Processor type and features # -CONFIG_XENARCH="i386" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y +# CONFIG_X86_PC is not set +CONFIG_X86_XEN=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -121,9 +106,13 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_USE_PPRO_CHECKSUM=y -# CONFIG_HPET_TIMER is not set -# CONFIG_HPET_EMULATE_RTC is not set # CONFIG_SMP is not set +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set # CONFIG_X86_REBOOTFIXUPS is not set CONFIG_MICROCODE=y CONFIG_X86_CPUID=y @@ -132,36 +121,64 @@ CONFIG_SWIOTLB=y # # Firmware Drivers # -# CONFIG_EDD is not set # CONFIG_NOHIGHMEM is not set CONFIG_HIGHMEM4G=y # CONFIG_HIGHMEM64G is not set CONFIG_HIGHMEM=y CONFIG_MTRR=y # CONFIG_REGPARM is not set -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y +CONFIG_SECCOMP=y + +# +# Power management options (ACPI, APM) +# + +# +# ACPI (Advanced Configuration and Power Interface) Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_IBM=m +CONFIG_ACPI_TOSHIBA=m +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +# CONFIG_X86_PM_TIMER is not set +# CONFIG_ACPI_CONTAINER is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set # # Bus options (PCI, PCMCIA, EISA, MCA, ISA) # -CONFIG_X86_UP_APIC=y -CONFIG_X86_UP_IOAPIC=y CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GOMMCONFIG is not set # CONFIG_PCI_GODIRECT is not set CONFIG_PCI_GOANY=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y # CONFIG_PCIEPORTBUS is not set -# CONFIG_PCI_MSI is not set CONFIG_PCI_LEGACY_PROC=y # CONFIG_PCI_NAMES is not set # CONFIG_PCI_DEBUG is not set -CONFIG_ISA_DMA_API=y -CONFIG_ISA=y -# CONFIG_EISA is not set -# CONFIG_MCA is not set # CONFIG_SCx200 is not set # @@ -173,12 +190,6 @@ CONFIG_ISA=y # PCI Hotplug Support # # CONFIG_HOTPLUG_PCI is not set -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_X86_BIOS_REBOOT=y -CONFIG_PC=y -CONFIG_SECCOMP=y -CONFIG_EARLY_PRINTK=y # # Executable file formats @@ -218,7 +229,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # Block devices # CONFIG_BLK_DEV_FD=y -# CONFIG_BLK_DEV_XD is not set # CONFIG_BLK_CPQ_DA is not set CONFIG_BLK_CPQ_CISS_DA=y # CONFIG_CISS_SCSI_TAPE is not set @@ -304,7 +314,6 @@ CONFIG_BLK_DEV_SVWKS=y # CONFIG_BLK_DEV_TRM290 is not set # CONFIG_BLK_DEV_VIA82CXXX is not set # CONFIG_IDE_ARM is not set -# CONFIG_IDE_CHIPSETS is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set CONFIG_IDEDMA_AUTO=y @@ -344,10 +353,7 @@ CONFIG_SCSI_SPI_ATTRS=y # CONFIG_BLK_DEV_3W_XXXX_RAID=y # CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_7000FASST is not set # CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AHA152X is not set -# CONFIG_SCSI_AHA1542 is not set CONFIG_SCSI_AACRAID=y CONFIG_SCSI_AIC7XXX=y CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 @@ -365,7 +371,6 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_IN2000 is not set CONFIG_MEGARAID_NEWGEN=y # CONFIG_MEGARAID_MM is not set CONFIG_SCSI_SATA=y @@ -381,28 +386,17 @@ CONFIG_SCSI_SATA_SIL=y # CONFIG_SCSI_SATA_ULI is not set # CONFIG_SCSI_SATA_VIA is not set # CONFIG_SCSI_SATA_VITESSE is not set -CONFIG_SCSI_BUSLOGIC=y -# CONFIG_SCSI_OMIT_FLASHPOINT is not set # CONFIG_SCSI_CPQFCTS is not set # CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_DTC3280 is not set -# CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA_PIO is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_GENERIC_NCR5380 is not set -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_SYM53C8XX_2 is not set # CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_PAS16 is not set # CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2220I is not set -# CONFIG_SCSI_PSI240I is not set -# CONFIG_SCSI_QLOGIC_FAS is not set # CONFIG_SCSI_QLOGIC_ISP is not set # CONFIG_SCSI_QLOGIC_FC is not set # CONFIG_SCSI_QLOGIC_1280 is not set @@ -413,22 +407,12 @@ CONFIG_SCSI_QLA2XXX=y # CONFIG_SCSI_QLA2322 is not set # CONFIG_SCSI_QLA6312 is not set # CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_SEAGATE is not set -# CONFIG_SCSI_SYM53C416 is not set # CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_T128 is not set -# CONFIG_SCSI_U14_34F is not set -# CONFIG_SCSI_ULTRASTOR is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set # -# Old CD-ROM drivers (not SCSI, not IDE) -# -# CONFIG_CD_NO_IDESCSI is not set - -# # Multi-device support (RAID and LVM) # CONFIG_MD=y @@ -614,17 +598,8 @@ CONFIG_MII=y # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set CONFIG_NET_VENDOR_3COM=y -# CONFIG_EL1 is not set -# CONFIG_EL2 is not set -# CONFIG_ELPLUS is not set -# CONFIG_EL16 is not set -# CONFIG_EL3 is not set -# CONFIG_3C515 is not set CONFIG_VORTEX=y # CONFIG_TYPHOON is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set # # Tulip family network device support @@ -638,19 +613,13 @@ CONFIG_TULIP=y # CONFIG_DE4X5 is not set # CONFIG_WINBOND_840 is not set # CONFIG_DM9102 is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set # CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set CONFIG_NET_PCI=y CONFIG_PCNET32=y # CONFIG_AMD8111_ETH is not set # CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_AC3200 is not set -# CONFIG_APRICOT is not set # CONFIG_B44 is not set # CONFIG_FORCEDETH is not set -# CONFIG_CS89x0 is not set # CONFIG_DGRS is not set # CONFIG_EEPRO100 is not set CONFIG_E100=y @@ -669,7 +638,6 @@ CONFIG_8139TOO_PIO=y # CONFIG_TLAN is not set CONFIG_VIA_RHINE=y # CONFIG_VIA_RHINE_MMIO is not set -# CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) @@ -755,9 +723,6 @@ CONFIG_KEYBOARD_ATKBD=y CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_INPORT is not set -# CONFIG_MOUSE_LOGIBM is not set -# CONFIG_MOUSE_PC110PAD is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TOUCHSCREEN is not set @@ -884,7 +849,6 @@ CONFIG_DRM_SIS=m # Console display driver support # CONFIG_VGA_CONSOLE=y -# CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y # @@ -1015,37 +979,6 @@ CONFIG_USB_MON=y # CONFIG_INFINIBAND is not set # -# Power management options -# - -# -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI=y -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m -CONFIG_ACPI_PROCESSOR=m -CONFIG_ACPI_THERMAL=m -CONFIG_ACPI_ASUS=m -CONFIG_ACPI_IBM=m -CONFIG_ACPI_TOSHIBA=m -# CONFIG_ACPI_CUSTOM_DSDT is not set -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_X86_PM_TIMER is not set -# CONFIG_ACPI_CONTAINER is not set - -# # File systems # CONFIG_EXT2_FS=y @@ -1103,7 +1036,6 @@ CONFIG_SYSFS=y # CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y # CONFIG_TMPFS_XATTR is not set -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -1199,6 +1131,32 @@ CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_UTF8 is not set # +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_KPROBES is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_4KSTACKS is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y + +# # Security options # # CONFIG_KEYS is not set @@ -1237,6 +1195,29 @@ CONFIG_CRYPTO_CRC32C=m # Hardware crypto devices # # CONFIG_CRYPTO_DEV_PADLOCK is not set +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +CONFIG_XEN_PRIVILEGED_GUEST=y +# CONFIG_XEN_UNPRIVILEGED_GUEST is not set +CONFIG_XEN_PHYSDEV_ACCESS=y +CONFIG_XEN_BLKDEV_BACKEND=y +# CONFIG_XEN_BLKDEV_TAP_BE is not set +CONFIG_XEN_NETDEV_BACKEND=y +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set +# CONFIG_XEN_TPMDEV_BACKEND is not set +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -1245,28 +1226,7 @@ CONFIG_CRYPTO_CRC32C=m CONFIG_CRC32=y CONFIG_LIBCRC32C=y CONFIG_ZLIB_INFLATE=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_HIGHMEM is not set -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_FRAME_POINTER is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_PC=y diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64 b/buildconfigs/linux-defconfig_xen0_x86_64 index 4f0c03d416..fbf46f24c8 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64 +++ b/buildconfigs/linux-defconfig_xen0_x86_64 @@ -1,32 +1,18 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.12.6-xen0 -# Mon Nov 7 17:24:18 2005 +# Wed Jan 25 17:27:39 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_BACKEND=y -# CONFIG_XEN_BLKDEV_TAP_BE is not set -CONFIG_XEN_NETDEV_BACKEND=y -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -# CONFIG_XEN_X86 is not set -CONFIG_XEN_X86_64=y -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86_64=y +CONFIG_64BIT=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_X86_CMPXCHG=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -77,82 +63,79 @@ CONFIG_OBSOLETE_MODPARM=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y -CONFIG_XENARCH="x86_64" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y -CONFIG_X86_CMPXCHG=y -CONFIG_X86_L1_CACHE_SHIFT=7 -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_X86_GOOD_APIC=y -# CONFIG_HPET_TIMER is not set -# CONFIG_SMP is not set -CONFIG_MICROCODE=y -# CONFIG_X86_CPUID is not set -CONFIG_SWIOTLB=y -# CONFIG_NUMA is not set -# CONFIG_MTRR is not set -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y -CONFIG_PCI=y -CONFIG_PCI_DIRECT=y -# CONFIG_PCI_MMCONFIG is not set -CONFIG_ISA_DMA_API=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_SECCOMP=y - -# -# X86_64 processor configuration -# -CONFIG_X86_64=y -CONFIG_64BIT=y -CONFIG_EARLY_PRINTK=y # # Processor type and features # +# CONFIG_MK8 is not set # CONFIG_MPSC is not set CONFIG_GENERIC_CPU=y +CONFIG_X86_64_XEN=y CONFIG_X86_L1_CACHE_BYTES=128 -# CONFIG_X86_TSC is not set -CONFIG_X86_XEN_GENAPIC=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_GOOD_APIC=y +CONFIG_MICROCODE=y # CONFIG_X86_MSR is not set -# CONFIG_GART_IOMMU is not set +# CONFIG_X86_CPUID is not set +CONFIG_X86_IO_APIC=y +CONFIG_X86_XEN_GENAPIC=y +CONFIG_X86_LOCAL_APIC=y +# CONFIG_SMP is not set +# CONFIG_NUMA is not set +CONFIG_SWIOTLB=y CONFIG_DUMMY_IOMMU=y -# CONFIG_X86_MCE is not set +CONFIG_SECCOMP=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_ISA_DMA_API=y # # Power management options # -# CONFIG_PM is not set # -# CPU Frequency scaling +# ACPI (Advanced Configuration and Power Interface) Support # -# CONFIG_CPU_FREQ is not set +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_IBM=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +# CONFIG_ACPI_CONTAINER is not set # # Bus options (PCI etc.) # +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +# CONFIG_PCI_MMCONFIG is not set # CONFIG_UNORDERED_IO is not set # # Executable file formats / Emulations # +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=y CONFIG_IA32_EMULATION=y # CONFIG_IA32_AOUT is not set CONFIG_COMPAT=y CONFIG_SYSVIPC_COMPAT=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=y +CONFIG_UID16=y # # Device Drivers @@ -931,33 +914,8 @@ CONFIG_INFINIBAND_IPOIB_DEBUG=y CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y # -# Power management options -# - +# Firmware Drivers # -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI=y -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m -CONFIG_ACPI_PROCESSOR=m -CONFIG_ACPI_THERMAL=m -CONFIG_ACPI_ASUS=m -CONFIG_ACPI_IBM=m -CONFIG_ACPI_TOSHIBA=m -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_ACPI_CONTAINER is not set # # File systems @@ -1017,7 +975,6 @@ CONFIG_SYSFS=y # CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y # CONFIG_TMPFS_XATTR is not set -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -1113,6 +1070,28 @@ CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_UTF8 is not set # +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_CHECKING is not set +# CONFIG_INIT_DEBUG is not set +# CONFIG_KPROBES is not set + +# # Security options # # CONFIG_KEYS is not set @@ -1150,6 +1129,29 @@ CONFIG_CRYPTO_CRC32C=m # # Hardware crypto devices # +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +CONFIG_XEN_PRIVILEGED_GUEST=y +# CONFIG_XEN_UNPRIVILEGED_GUEST is not set +CONFIG_XEN_PHYSDEV_ACCESS=y +CONFIG_XEN_BLKDEV_BACKEND=y +# CONFIG_XEN_BLKDEV_TAP_BE is not set +CONFIG_XEN_NETDEV_BACKEND=y +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set +# CONFIG_XEN_TPMDEV_BACKEND is not set +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -1158,27 +1160,3 @@ CONFIG_CRYPTO_CRC32C=m CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=15 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y -# CONFIG_CHECKING is not set -# CONFIG_INIT_DEBUG is not set diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 b/buildconfigs/linux-defconfig_xenU_x86_32 index 8b1749b253..504426b071 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 +++ b/buildconfigs/linux-defconfig_xenU_x86_32 @@ -1,28 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.12-xenU -# Wed Aug 3 09:57:44 2005 +# Linux kernel version: 2.6.12.6-xenU +# Wed Jan 25 17:29:40 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -# CONFIG_XEN_PRIVILEGED_GUEST is not set -# CONFIG_XEN_PHYSDEV_ACCESS is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -CONFIG_XEN_X86=y -# CONFIG_XEN_X86_64 is not set -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -76,14 +61,18 @@ CONFIG_KMOD=y CONFIG_STOP_MACHINE=y # -# X86 Processor Configuration +# Processor type and features # -CONFIG_XENARCH="i386" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y +# CONFIG_X86_PC is not set +CONFIG_X86_XEN=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -118,34 +107,25 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_USE_PPRO_CHECKSUM=y -# CONFIG_HPET_TIMER is not set -# CONFIG_HPET_EMULATE_RTC is not set CONFIG_SMP=y CONFIG_SMP_ALTERNATIVES=y CONFIG_NR_CPUS=8 -# CONFIG_SCHED_SMT is not set +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set # CONFIG_X86_REBOOTFIXUPS is not set CONFIG_X86_CPUID=y +# CONFIG_SWIOTLB is not set # # Firmware Drivers # -# CONFIG_EDD is not set # CONFIG_NOHIGHMEM is not set CONFIG_HIGHMEM4G=y # CONFIG_HIGHMEM64G is not set CONFIG_HIGHMEM=y CONFIG_HAVE_DEC_LOCK=y # CONFIG_REGPARM is not set -CONFIG_HOTPLUG_CPU=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_X86_SMP=y -CONFIG_X86_BIOS_REBOOT=y -CONFIG_X86_TRAMPOLINE=y -CONFIG_PC=y CONFIG_SECCOMP=y -CONFIG_EARLY_PRINTK=y # # Executable file formats @@ -331,14 +311,6 @@ CONFIG_NETDEVICES=y # CONFIG_SLIP is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 -# CONFIG_TCG_TPM is not set - -# -# Character devices -# # # File systems @@ -395,11 +367,8 @@ CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_SYSFS=y # CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS_XATTR=y -# CONFIG_DEVPTS_FS_SECURITY is not set CONFIG_TMPFS=y # CONFIG_TMPFS_XATTR is not set -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -491,6 +460,30 @@ CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_UTF8 is not set # +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_KPROBES is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_4KSTACKS is not set + +# # Security options # # CONFIG_KEYS is not set @@ -529,6 +522,23 @@ CONFIG_CRYPTO_CRC32C=m # Hardware crypto devices # # CONFIG_CRYPTO_DEV_PADLOCK is not set +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +# CONFIG_XEN_PRIVILEGED_GUEST is not set +CONFIG_XEN_UNPRIVILEGED_GUEST=y +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -537,26 +547,9 @@ CONFIG_CRYPTO_CRC32C=m # CONFIG_CRC32 is not set CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_HIGHMEM is not set -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_FRAME_POINTER is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_X86_SMP=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_PC=y diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_64 b/buildconfigs/linux-defconfig_xenU_x86_64 index 6e2775e24f..f80e34ce61 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_64 +++ b/buildconfigs/linux-defconfig_xenU_x86_64 @@ -1,28 +1,18 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.12-xenU -# Thu Aug 18 11:15:14 2005 +# Linux kernel version: 2.6.12.6-xenU +# Wed Jan 25 17:28:26 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -# CONFIG_XEN_PRIVILEGED_GUEST is not set -# CONFIG_XEN_PHYSDEV_ACCESS is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -# CONFIG_XEN_X86 is not set -CONFIG_XEN_X86_64=y -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86_64=y +CONFIG_64BIT=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_X86_CMPXCHG=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -76,84 +66,47 @@ CONFIG_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y CONFIG_STOP_MACHINE=y -CONFIG_XENARCH="x86_64" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y -CONFIG_X86_CMPXCHG=y -CONFIG_X86_L1_CACHE_SHIFT=7 -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_X86_GOOD_APIC=y -# CONFIG_HPET_TIMER is not set -CONFIG_SMP=y -CONFIG_NR_CPUS=8 -# CONFIG_SCHED_SMT is not set -# CONFIG_MICROCODE is not set -CONFIG_X86_CPUID=y -# CONFIG_NUMA is not set -# CONFIG_MTRR is not set -CONFIG_HAVE_DEC_LOCK=y -# CONFIG_X86_LOCAL_APIC is not set -# CONFIG_X86_IO_APIC is not set -# CONFIG_PCI is not set -CONFIG_ISA_DMA_API=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_SECCOMP=y - -# -# X86_64 processor configuration -# -CONFIG_X86_64=y -CONFIG_64BIT=y -CONFIG_EARLY_PRINTK=y # # Processor type and features # +# CONFIG_MK8 is not set CONFIG_MPSC=y # CONFIG_GENERIC_CPU is not set +CONFIG_X86_64_XEN=y CONFIG_X86_L1_CACHE_BYTES=128 -# CONFIG_X86_TSC is not set -CONFIG_X86_XEN_GENAPIC=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_GOOD_APIC=y +# CONFIG_MICROCODE is not set # CONFIG_X86_MSR is not set -CONFIG_X86_HT=y -# CONFIG_K8_NUMA is not set -# CONFIG_NUMA_EMU is not set +CONFIG_X86_CPUID=y +CONFIG_X86_XEN_GENAPIC=y +CONFIG_SMP=y +# CONFIG_NUMA is not set +CONFIG_HAVE_DEC_LOCK=y +CONFIG_NR_CPUS=8 CONFIG_DUMMY_IOMMU=y -# CONFIG_X86_MCE is not set - -# -# Power management options -# -# CONFIG_PM is not set - -# -# CPU Frequency scaling -# -# CONFIG_CPU_FREQ is not set +CONFIG_SECCOMP=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_ISA_DMA_API=y # # Bus options (PCI etc.) # +# CONFIG_PCI is not set # CONFIG_UNORDERED_IO is not set # # Executable file formats / Emulations # +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=y CONFIG_IA32_EMULATION=y # CONFIG_IA32_AOUT is not set CONFIG_COMPAT=y CONFIG_SYSVIPC_COMPAT=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=y +CONFIG_UID16=y # # Device Drivers @@ -659,12 +612,9 @@ CONFIG_PPPOATM=m # CONFIG_SHAPER is not set CONFIG_NETCONSOLE=m CONFIG_INPUT=m -CONFIG_UNIX98_PTYS=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_TCG_TPM is not set # -# Character devices +# Firmware Drivers # # @@ -678,7 +628,7 @@ CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y # CONFIG_EXT3_FS_POSIX_ACL is not set # CONFIG_EXT3_FS_SECURITY is not set -CONFIG_JBD=m +CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=y @@ -740,12 +690,9 @@ CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_SYSFS=y # CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS_XATTR=y -CONFIG_DEVPTS_FS_SECURITY=y CONFIG_TMPFS=y CONFIG_TMPFS_XATTR=y CONFIG_TMPFS_SECURITY=y -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -870,6 +817,27 @@ CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m # +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_INIT_DEBUG is not set +# CONFIG_KPROBES is not set + +# # Security options # # CONFIG_KEYS is not set @@ -907,6 +875,23 @@ CONFIG_CRYPTO_CRC32C=m # # Hardware crypto devices # +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +# CONFIG_XEN_PRIVILEGED_GUEST is not set +CONFIG_XEN_UNPRIVILEGED_GUEST=y +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -916,24 +901,3 @@ CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=15 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set -# CONFIG_INIT_DEBUG is not set diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_32 b/buildconfigs/linux-defconfig_xen_x86_32 index 1995399ec1..34c4bece1d 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_32 +++ b/buildconfigs/linux-defconfig_xen_x86_32 @@ -1,32 +1,13 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.12.6-xen -# Mon Dec 12 10:42:00 2005 +# Wed Jan 25 17:30:02 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_BACKEND=y -# CONFIG_XEN_BLKDEV_TAP_BE is not set -CONFIG_XEN_NETDEV_BACKEND=y -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -CONFIG_XEN_X86=y -# CONFIG_XEN_X86_64 is not set -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -84,14 +65,18 @@ CONFIG_KMOD=y CONFIG_STOP_MACHINE=y # -# X86 Processor Configuration +# Processor type and features # -CONFIG_XENARCH="i386" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y +# CONFIG_X86_PC is not set +CONFIG_X86_XEN=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -126,12 +111,13 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_USE_PPRO_CHECKSUM=y -# CONFIG_HPET_TIMER is not set -# CONFIG_HPET_EMULATE_RTC is not set CONFIG_SMP=y CONFIG_SMP_ALTERNATIVES=y CONFIG_NR_CPUS=8 -# CONFIG_SCHED_SMT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set # CONFIG_X86_REBOOTFIXUPS is not set CONFIG_MICROCODE=y CONFIG_X86_CPUID=m @@ -140,7 +126,6 @@ CONFIG_SWIOTLB=y # # Firmware Drivers # -CONFIG_EDD=m # CONFIG_NOHIGHMEM is not set CONFIG_HIGHMEM4G=y # CONFIG_HIGHMEM64G is not set @@ -148,28 +133,57 @@ CONFIG_HIGHMEM=y CONFIG_MTRR=y CONFIG_HAVE_DEC_LOCK=y # CONFIG_REGPARM is not set -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y -CONFIG_HOTPLUG_CPU=y +CONFIG_SECCOMP=y + +# +# Power management options (ACPI, APM) +# + +# +# ACPI (Advanced Configuration and Power Interface) Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_IBM=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +# CONFIG_X86_PM_TIMER is not set +# CONFIG_ACPI_CONTAINER is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set # # Bus options (PCI, PCMCIA, EISA, MCA, ISA) # CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GOMMCONFIG is not set # CONFIG_PCI_GODIRECT is not set CONFIG_PCI_GOANY=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y # CONFIG_PCIEPORTBUS is not set -# CONFIG_PCI_MSI is not set # CONFIG_PCI_LEGACY_PROC is not set CONFIG_PCI_NAMES=y # CONFIG_PCI_DEBUG is not set -CONFIG_ISA_DMA_API=y -CONFIG_ISA=y -# CONFIG_EISA is not set -# CONFIG_MCA is not set CONFIG_SCx200=m # @@ -186,9 +200,7 @@ CONFIG_CARDBUS=y CONFIG_YENTA=m CONFIG_PD6729=m CONFIG_I82092=m -CONFIG_I82365=m CONFIG_TCIC=m -CONFIG_PCMCIA_PROBE=y CONFIG_PCCARD_NONSTATIC=m # @@ -202,13 +214,6 @@ CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m CONFIG_HOTPLUG_PCI_SHPC=m # CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_X86_SMP=y -CONFIG_X86_BIOS_REBOOT=y -CONFIG_X86_TRAMPOLINE=y -CONFIG_SECCOMP=y -# CONFIG_EARLY_PRINTK is not set # # Executable file formats @@ -364,15 +369,12 @@ CONFIG_PNP=y # # Protocols # -CONFIG_ISAPNP=y -# CONFIG_PNPBIOS is not set # CONFIG_PNPACPI is not set # # Block devices # CONFIG_BLK_DEV_FD=m -CONFIG_BLK_DEV_XD=m CONFIG_PARIDE=m CONFIG_PARIDE_PARPORT=m @@ -498,7 +500,6 @@ CONFIG_BLK_DEV_SLC90E66=y CONFIG_BLK_DEV_TRM290=m CONFIG_BLK_DEV_VIA82CXXX=y # CONFIG_IDE_ARM is not set -# CONFIG_IDE_CHIPSETS is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set CONFIG_IDEDMA_AUTO=y @@ -539,10 +540,7 @@ CONFIG_SCSI_FC_ATTRS=m # CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m -# CONFIG_SCSI_7000FASST is not set CONFIG_SCSI_ACARD=m -CONFIG_SCSI_AHA152X=m -# CONFIG_SCSI_AHA1542 is not set CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 @@ -560,7 +558,6 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m -CONFIG_SCSI_IN2000=m CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m @@ -577,21 +574,10 @@ CONFIG_SCSI_SATA_SIS=m CONFIG_SCSI_SATA_ULI=m CONFIG_SCSI_SATA_VIA=m CONFIG_SCSI_SATA_VITESSE=m -CONFIG_SCSI_BUSLOGIC=m -# CONFIG_SCSI_OMIT_FLASHPOINT is not set # CONFIG_SCSI_CPQFCTS is not set CONFIG_SCSI_DMX3191D=m -CONFIG_SCSI_DTC3280=m -CONFIG_SCSI_EATA=m -CONFIG_SCSI_EATA_TAGGED_QUEUE=y -CONFIG_SCSI_EATA_LINKED_COMMANDS=y -CONFIG_SCSI_EATA_MAX_TAGS=16 CONFIG_SCSI_EATA_PIO=m CONFIG_SCSI_FUTURE_DOMAIN=m -CONFIG_SCSI_GDTH=m -CONFIG_SCSI_GENERIC_NCR5380=m -CONFIG_SCSI_GENERIC_NCR5380_MMIO=m -CONFIG_SCSI_GENERIC_NCR53C400=y CONFIG_SCSI_IPS=m # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set @@ -599,7 +585,6 @@ CONFIG_SCSI_PPA=m CONFIG_SCSI_IMM=m # CONFIG_SCSI_IZIP_EPP16 is not set # CONFIG_SCSI_IZIP_SLOW_CTR is not set -CONFIG_SCSI_NCR53C406A=m CONFIG_SCSI_SYM53C8XX_2=m CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 @@ -608,11 +593,8 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 CONFIG_SCSI_IPR=m # CONFIG_SCSI_IPR_TRACE is not set # CONFIG_SCSI_IPR_DUMP is not set -CONFIG_SCSI_PAS16=m # CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2220I is not set -CONFIG_SCSI_PSI240I=m -CONFIG_SCSI_QLOGIC_FAS=m CONFIG_SCSI_QLOGIC_ISP=m CONFIG_SCSI_QLOGIC_FC=m CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y @@ -625,16 +607,8 @@ CONFIG_SCSI_QLA2300=m CONFIG_SCSI_QLA2322=m CONFIG_SCSI_QLA6312=m CONFIG_SCSI_LPFC=m -# CONFIG_SCSI_SEAGATE is not set -CONFIG_SCSI_SYM53C416=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m -CONFIG_SCSI_T128=m -CONFIG_SCSI_U14_34F=m -CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y -CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y -CONFIG_SCSI_U14_34F_MAX_TAGS=8 -# CONFIG_SCSI_ULTRASTOR is not set CONFIG_SCSI_NSP32=m CONFIG_SCSI_DEBUG=m @@ -648,21 +622,6 @@ CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m # -# Old CD-ROM drivers (not SCSI, not IDE) -# -CONFIG_CD_NO_IDESCSI=y -CONFIG_AZTCD=m -CONFIG_GSCD=m -# CONFIG_SBPCD is not set -CONFIG_MCDX=m -CONFIG_OPTCD=m -# CONFIG_CM206 is not set -CONFIG_SJCD=m -CONFIG_ISP16_CDI=m -CONFIG_CDU31A=m -CONFIG_CDU535=m - -# # Multi-device support (RAID and LVM) # CONFIG_MD=y @@ -961,10 +920,6 @@ CONFIG_IPX=m # CONFIG_IPX_INTERN is not set CONFIG_ATALK=m CONFIG_DEV_APPLETALK=y -CONFIG_LTPC=m -CONFIG_COPS=m -CONFIG_COPS_DAYNA=y -CONFIG_COPS_TANGENT=y CONFIG_IPDDP=m CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y @@ -1043,10 +998,6 @@ CONFIG_ROSE=m CONFIG_MKISS=m CONFIG_6PACK=m CONFIG_BPQETHER=m -# CONFIG_DMASCC is not set -CONFIG_SCC=m -# CONFIG_SCC_DELAY is not set -# CONFIG_SCC_TRXECHO is not set CONFIG_BAYCOM_SER_FDX=m CONFIG_BAYCOM_SER_HDX=m CONFIG_BAYCOM_PAR=m @@ -1107,13 +1058,8 @@ CONFIG_IRPORT_SIR=m # CONFIG_USB_IRDA=m CONFIG_SIGMATEL_FIR=m -CONFIG_NSC_FIR=m -CONFIG_WINBOND_FIR=m # CONFIG_TOSHIBA_FIR is not set -CONFIG_SMC_IRCC_FIR=m -CONFIG_ALI_FIR=m CONFIG_VLSI_FIR=m -CONFIG_VIA_FIR=m CONFIG_BT=m CONFIG_BT_L2CAP=m CONFIG_BT_SCO=m @@ -1161,7 +1107,6 @@ CONFIG_ARCNET_COM90xx=m CONFIG_ARCNET_COM90xxIO=m CONFIG_ARCNET_RIM_I=m CONFIG_ARCNET_COM20020=m -CONFIG_ARCNET_COM20020_ISA=m CONFIG_ARCNET_COM20020_PCI=m # @@ -1172,23 +1117,8 @@ CONFIG_MII=m CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m CONFIG_NET_VENDOR_3COM=y -CONFIG_EL1=m -CONFIG_EL2=m -# CONFIG_ELPLUS is not set -CONFIG_EL16=m -CONFIG_EL3=m -# CONFIG_3C515 is not set CONFIG_VORTEX=m CONFIG_TYPHOON=m -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -CONFIG_WD80x3=m -CONFIG_ULTRA=m -CONFIG_SMC9194=m -CONFIG_NET_VENDOR_RACAL=y -CONFIG_NI5010=m -CONFIG_NI52=m -# CONFIG_NI65 is not set # # Tulip family network device support @@ -1204,32 +1134,15 @@ CONFIG_WINBOND_840=m CONFIG_DM9102=m CONFIG_PCMCIA_XIRCOM=m # CONFIG_PCMCIA_XIRTULIP is not set -CONFIG_AT1700=m -CONFIG_DEPCA=m CONFIG_HP100=m -CONFIG_NET_ISA=y -CONFIG_E2100=m -CONFIG_EWRK3=m -CONFIG_EEXPRESS=m -CONFIG_EEXPRESS_PRO=m -CONFIG_HPLAN_PLUS=m -CONFIG_HPLAN=m -CONFIG_LP486E=m -CONFIG_ETH16I=m -CONFIG_NE2000=m -CONFIG_ZNET=m -CONFIG_SEEQ8005=m CONFIG_NET_PCI=y CONFIG_PCNET32=m CONFIG_AMD8111_ETH=m # CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=m # CONFIG_ADAPTEC_STARFIRE_NAPI is not set -CONFIG_AC3200=m -CONFIG_APRICOT=m CONFIG_B44=m CONFIG_FORCEDETH=m -CONFIG_CS89x0=m # CONFIG_DGRS is not set CONFIG_EEPRO100=m CONFIG_E100=m @@ -1249,10 +1162,6 @@ CONFIG_SUNDANCE=m CONFIG_TLAN=m CONFIG_VIA_RHINE=m # CONFIG_VIA_RHINE_MMIO is not set -CONFIG_NET_POCKET=y -CONFIG_ATP=m -CONFIG_DE600=m -CONFIG_DE620=m # # Ethernet (1000 Mbit) @@ -1285,16 +1194,12 @@ CONFIG_S2IO=m # Token Ring devices # CONFIG_TR=y -CONFIG_IBMTR=m CONFIG_IBMOL=m CONFIG_IBMLS=m CONFIG_3C359=m CONFIG_TMS380TR=m CONFIG_TMSPCI=m -CONFIG_SKISA=m -CONFIG_PROTEON=m CONFIG_ABYSS=m -# CONFIG_SMCTR is not set # # Wireless LAN (non-hamradio) @@ -1305,8 +1210,6 @@ CONFIG_NET_RADIO=y # Obsolete Wireless cards support (pre-802.11) # CONFIG_STRIP=m -CONFIG_ARLAN=m -CONFIG_WAVELAN=m CONFIG_PCMCIA_WAVELAN=m CONFIG_PCMCIA_NETWAVE=m @@ -1318,7 +1221,6 @@ CONFIG_PCMCIA_RAYCS=m # # Wireless 802.11b ISA/PCI cards support # -CONFIG_AIRO=m CONFIG_HERMES=m CONFIG_PLX_HERMES=m CONFIG_TMD_HERMES=m @@ -1359,13 +1261,10 @@ CONFIG_PCMCIA_IBMTR=m # Wan interfaces # CONFIG_WAN=y -CONFIG_HOSTESS_SV11=m -CONFIG_COSA=m CONFIG_DSCC4=m CONFIG_DSCC4_PCISYNC=y CONFIG_DSCC4_PCI_RST=y CONFIG_LANMEDIA=m -CONFIG_SEALEVEL_4021=m CONFIG_SYNCLINK_SYNCPPP=m CONFIG_HDLC=m CONFIG_HDLC_RAW=y @@ -1378,13 +1277,10 @@ CONFIG_PCI200SYN=m CONFIG_WANXL=m CONFIG_PC300=m CONFIG_PC300_MLPPP=y -CONFIG_N2=m -CONFIG_C101=m CONFIG_FARSYNC=m CONFIG_DLCI=m CONFIG_DLCI_COUNT=24 CONFIG_DLCI_MAX=8 -CONFIG_SDLA=m CONFIG_WAN_ROUTER_DRIVERS=y # CONFIG_VENDOR_SANGOMA is not set CONFIG_CYCLADES_SYNC=m @@ -1499,27 +1395,17 @@ CONFIG_HISAX_MAX_CARDS=8 # # HiSax supported cards # -CONFIG_HISAX_16_0=y CONFIG_HISAX_16_3=y CONFIG_HISAX_TELESPCI=y CONFIG_HISAX_S0BOX=y -CONFIG_HISAX_AVM_A1=y CONFIG_HISAX_FRITZPCI=y CONFIG_HISAX_AVM_A1_PCMCIA=y CONFIG_HISAX_ELSA=y -CONFIG_HISAX_IX1MICROR2=y CONFIG_HISAX_DIEHLDIVA=y -CONFIG_HISAX_ASUSCOM=y -CONFIG_HISAX_TELEINT=y -CONFIG_HISAX_HFCS=y CONFIG_HISAX_SEDLBAUER=y -CONFIG_HISAX_SPORTSTER=y -CONFIG_HISAX_MIC=y CONFIG_HISAX_NETJET=y CONFIG_HISAX_NETJET_U=y CONFIG_HISAX_NICCY=y -CONFIG_HISAX_ISURF=y -CONFIG_HISAX_HSTSAPHIR=y CONFIG_HISAX_BKM_A4T=y CONFIG_HISAX_SCT_QUADRO=y CONFIG_HISAX_GAZEL=y @@ -1549,10 +1435,6 @@ CONFIG_HISAX_HDLC=y # # Active cards # -CONFIG_ISDN_DRV_ICN=m -CONFIG_ISDN_DRV_PCBIT=m -CONFIG_ISDN_DRV_SC=m -CONFIG_ISDN_DRV_ACT2000=m # CONFIG_HYSDN is not set # @@ -1574,10 +1456,8 @@ CONFIG_ISDN_CAPI_CAPIDRV=m # Active AVM cards # CONFIG_CAPI_AVM=y -CONFIG_ISDN_DRV_AVMB1_B1ISA=m CONFIG_ISDN_DRV_AVMB1_B1PCI=m CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y -CONFIG_ISDN_DRV_AVMB1_T1ISA=m CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m CONFIG_ISDN_DRV_AVMB1_AVM_CS=m CONFIG_ISDN_DRV_AVMB1_T1PCI=m @@ -1632,10 +1512,6 @@ CONFIG_KEYBOARD_NEWTON=m CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_SERIAL=m -CONFIG_MOUSE_INPORT=m -# CONFIG_MOUSE_ATIXL is not set -CONFIG_MOUSE_LOGIBM=m -CONFIG_MOUSE_PC110PAD=m CONFIG_MOUSE_VSXXXAA=m CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=m @@ -1758,14 +1634,6 @@ CONFIG_W83877F_WDT=m CONFIG_MACHZ_WDT=m # -# ISA-based Watchdog Cards -# -CONFIG_PCWATCHDOG=m -CONFIG_MIXCOMWD=m -CONFIG_WDT=m -CONFIG_WDT_501=y - -# # PCI-based Watchdog Cards # CONFIG_PCIPCWATCHDOG=m @@ -1850,7 +1718,6 @@ CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m -CONFIG_I2C_ELEKTOR=m CONFIG_I2C_I801=m CONFIG_I2C_I810=m CONFIG_I2C_PIIX4=m @@ -1949,7 +1816,6 @@ CONFIG_VIDEO_DEV=m # Video Adapters # CONFIG_VIDEO_BT848=m -CONFIG_VIDEO_PMS=m CONFIG_VIDEO_BWQCAM=m CONFIG_VIDEO_CQCAM=m CONFIG_VIDEO_W9966=m @@ -1980,23 +1846,9 @@ CONFIG_VIDEO_OVCAMCHIP=m # # Radio Adapters # -CONFIG_RADIO_CADET=m -CONFIG_RADIO_RTRACK=m -CONFIG_RADIO_RTRACK2=m -CONFIG_RADIO_AZTECH=m -CONFIG_RADIO_GEMTEK=m CONFIG_RADIO_GEMTEK_PCI=m CONFIG_RADIO_MAXIRADIO=m CONFIG_RADIO_MAESTRO=m -CONFIG_RADIO_MIROPCM20=m -CONFIG_RADIO_MIROPCM20_RDS=m -CONFIG_RADIO_SF16FMI=m -CONFIG_RADIO_SF16FMR2=m -CONFIG_RADIO_TERRATEC=m -CONFIG_RADIO_TRUST=m -CONFIG_RADIO_TYPHOON=m -CONFIG_RADIO_TYPHOON_PROC_FS=y -CONFIG_RADIO_ZOLTRIX=m # # Digital Video Broadcasting Devices @@ -2164,7 +2016,6 @@ CONFIG_FB_VIRTUAL=m # Console display driver support # CONFIG_VGA_CONSOLE=y -CONFIG_MDA_CONSOLE=m CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=m # CONFIG_FONTS is not set @@ -2199,14 +2050,12 @@ CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_RTCTIMER=m # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set -CONFIG_SND_GENERIC_PM=y # # Generic devices # CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m -CONFIG_SND_OPL4_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_DUMMY=m CONFIG_SND_VIRMIDI=m @@ -2215,41 +2064,6 @@ CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m # -# ISA devices -# -CONFIG_SND_AD1848_LIB=m -CONFIG_SND_CS4231_LIB=m -CONFIG_SND_AD1816A=m -CONFIG_SND_AD1848=m -CONFIG_SND_CS4231=m -CONFIG_SND_CS4232=m -CONFIG_SND_CS4236=m -CONFIG_SND_ES968=m -CONFIG_SND_ES1688=m -CONFIG_SND_ES18XX=m -CONFIG_SND_GUS_SYNTH=m -CONFIG_SND_GUSCLASSIC=m -CONFIG_SND_GUSEXTREME=m -CONFIG_SND_GUSMAX=m -CONFIG_SND_INTERWAVE=m -CONFIG_SND_INTERWAVE_STB=m -CONFIG_SND_OPTI92X_AD1848=m -CONFIG_SND_OPTI92X_CS4231=m -CONFIG_SND_OPTI93X=m -CONFIG_SND_SB8=m -CONFIG_SND_SB16=m -CONFIG_SND_SBAWE=m -CONFIG_SND_SB16_CSP=y -CONFIG_SND_WAVEFRONT=m -CONFIG_SND_ALS100=m -CONFIG_SND_AZT2320=m -CONFIG_SND_CMI8330=m -CONFIG_SND_DT019X=m -CONFIG_SND_OPL3SA2=m -CONFIG_SND_SGALAXY=m -CONFIG_SND_SSCAPE=m - -# # PCI devices # CONFIG_SND_AC97_CODEC=m @@ -2305,9 +2119,6 @@ CONFIG_SND_USB_USX2Y=m # # PCMCIA devices # -CONFIG_SND_VXPOCKET=m -CONFIG_SND_VXP440=m -CONFIG_SND_PDAUDIOCF=m # # Open Sound System @@ -2623,37 +2434,6 @@ CONFIG_USB_G_SERIAL=m # CONFIG_INFINIBAND is not set # -# Power management options -# - -# -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI=y -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m -CONFIG_ACPI_PROCESSOR=m -# CONFIG_ACPI_HOTPLUG_CPU is not set -CONFIG_ACPI_THERMAL=m -CONFIG_ACPI_ASUS=m -CONFIG_ACPI_IBM=m -CONFIG_ACPI_TOSHIBA=m -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_X86_PM_TIMER is not set -# CONFIG_ACPI_CONTAINER is not set - -# # File systems # CONFIG_EXT2_FS=y @@ -2731,7 +2511,6 @@ CONFIG_DEVPTS_FS_SECURITY=y CONFIG_TMPFS=y CONFIG_TMPFS_XATTR=y CONFIG_TMPFS_SECURITY=y -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -2877,6 +2656,32 @@ CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m # +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_KPROBES is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_4KSTACKS is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y + +# # Security options # CONFIG_KEYS=y @@ -2927,6 +2732,29 @@ CONFIG_CRYPTO_TEST=m # Hardware crypto devices # # CONFIG_CRYPTO_DEV_PADLOCK is not set +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +CONFIG_XEN_PRIVILEGED_GUEST=y +# CONFIG_XEN_UNPRIVILEGED_GUEST is not set +CONFIG_XEN_PHYSDEV_ACCESS=y +CONFIG_XEN_BLKDEV_BACKEND=y +# CONFIG_XEN_BLKDEV_TAP_BE is not set +CONFIG_XEN_NETDEV_BACKEND=y +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set +# CONFIG_XEN_TPMDEV_BACKEND is not set +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -2938,28 +2766,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m CONFIG_REED_SOLOMON=m CONFIG_REED_SOLOMON_DEC16=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_HIGHMEM is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_FRAME_POINTER is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_X86_SMP=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_64 b/buildconfigs/linux-defconfig_xen_x86_64 index ef41e78d32..13c00e0e30 100644 --- a/linux-2.6-xen-sparse/arch/xen/configs/xen_defconfig_x86_64 +++ b/buildconfigs/linux-defconfig_xen_x86_64 @@ -1,32 +1,18 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.12.4-xen -# Mon Aug 15 19:54:11 2005 +# Linux kernel version: 2.6.12.6-xen +# Wed Jan 25 17:29:17 2006 # -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_NO_IDLE_HZ=y - -# -# XEN -# -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_BACKEND=y -# CONFIG_XEN_BLKDEV_TAP_BE is not set -CONFIG_XEN_NETDEV_BACKEND=y -# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set -# CONFIG_XEN_TPMDEV_FRONTEND is not set -# CONFIG_XEN_TPMDEV_BACKEND is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_TAP is not set -# CONFIG_XEN_SHADOW_MODE is not set -CONFIG_XEN_SCRUB_PAGES=y -# CONFIG_XEN_X86 is not set -CONFIG_XEN_X86_64=y -CONFIG_HAVE_ARCH_ALLOC_SKB=y -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y +CONFIG_X86_64=y +CONFIG_64BIT=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_X86_CMPXCHG=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -80,88 +66,81 @@ CONFIG_OBSOLETE_MODPARM=y CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_KMOD=y CONFIG_STOP_MACHINE=y -CONFIG_XENARCH="x86_64" -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y -CONFIG_X86_CMPXCHG=y -CONFIG_X86_L1_CACHE_SHIFT=7 -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_X86_GOOD_APIC=y -# CONFIG_HPET_TIMER is not set -CONFIG_SMP=y -CONFIG_NR_CPUS=8 -# CONFIG_SCHED_SMT is not set -CONFIG_MICROCODE=y -# CONFIG_X86_CPUID is not set -# CONFIG_NUMA is not set -# CONFIG_MTRR is not set -CONFIG_HAVE_DEC_LOCK=y -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y -CONFIG_PCI=y -CONFIG_PCI_DIRECT=y -# CONFIG_PCI_MMCONFIG is not set -CONFIG_ISA_DMA_API=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_SECCOMP=y - -# -# X86_64 processor configuration -# -CONFIG_X86_64=y -CONFIG_64BIT=y -CONFIG_EARLY_PRINTK=y # # Processor type and features # +# CONFIG_MK8 is not set # CONFIG_MPSC is not set CONFIG_GENERIC_CPU=y +CONFIG_X86_64_XEN=y CONFIG_X86_L1_CACHE_BYTES=128 -# CONFIG_X86_TSC is not set -CONFIG_X86_XEN_GENAPIC=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_GOOD_APIC=y +CONFIG_MICROCODE=y # CONFIG_X86_MSR is not set -CONFIG_X86_HT=y -# CONFIG_K8_NUMA is not set -# CONFIG_NUMA_EMU is not set -# CONFIG_GART_IOMMU is not set -CONFIG_DUMMY_IOMMU=y +# CONFIG_X86_CPUID is not set +CONFIG_X86_IO_APIC=y +CONFIG_X86_XEN_GENAPIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_SMP=y +# CONFIG_NUMA is not set +CONFIG_HAVE_DEC_LOCK=y +CONFIG_NR_CPUS=8 CONFIG_SWIOTLB=y -# CONFIG_X86_MCE is not set +CONFIG_DUMMY_IOMMU=y +CONFIG_SECCOMP=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_ISA_DMA_API=y # # Power management options # -# CONFIG_PM is not set # -# CPU Frequency scaling +# ACPI (Advanced Configuration and Power Interface) Support # -# CONFIG_CPU_FREQ is not set +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_IBM=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +# CONFIG_ACPI_CONTAINER is not set # # Bus options (PCI etc.) # +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +# CONFIG_PCI_MMCONFIG is not set # CONFIG_UNORDERED_IO is not set # # Executable file formats / Emulations # +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=y CONFIG_IA32_EMULATION=y # CONFIG_IA32_AOUT is not set CONFIG_COMPAT=y CONFIG_SYSVIPC_COMPAT=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=y +CONFIG_UID16=y # # Device Drivers @@ -2101,35 +2080,10 @@ CONFIG_INFINIBAND_IPOIB=m # CONFIG_INFINIBAND_IPOIB_DEBUG is not set # -# Power management options +# Firmware Drivers # # -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI=y -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m -CONFIG_ACPI_PROCESSOR=m -CONFIG_ACPI_THERMAL=m -CONFIG_ACPI_ASUS=m -CONFIG_ACPI_IBM=m -CONFIG_ACPI_TOSHIBA=m -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_ACPI_CONTAINER is not set - -# # File systems # CONFIG_EXT2_FS=y @@ -2207,7 +2161,6 @@ CONFIG_DEVPTS_FS_SECURITY=y CONFIG_TMPFS=y CONFIG_TMPFS_XATTR=y CONFIG_TMPFS_SECURITY=y -# CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y @@ -2342,6 +2295,27 @@ CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m # +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_INIT_DEBUG is not set +# CONFIG_KPROBES is not set + +# # Security options # CONFIG_KEYS=y @@ -2391,6 +2365,29 @@ CONFIG_CRYPTO_CRC32C=m # # Hardware crypto devices # +CONFIG_XEN=y +CONFIG_NO_IDLE_HZ=y + +# +# XEN +# +CONFIG_XEN_PRIVILEGED_GUEST=y +# CONFIG_XEN_UNPRIVILEGED_GUEST is not set +CONFIG_XEN_PHYSDEV_ACCESS=y +CONFIG_XEN_BLKDEV_BACKEND=y +# CONFIG_XEN_BLKDEV_TAP_BE is not set +CONFIG_XEN_NETDEV_BACKEND=y +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set +# CONFIG_XEN_TPMDEV_BACKEND is not set +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_NETDEV_FRONTEND=y +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_TPMDEV_FRONTEND is not set +# CONFIG_XEN_SHADOW_MODE is not set +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_DISABLE_SERIAL=y +CONFIG_HAVE_ARCH_ALLOC_SKB=y +CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y # # Library routines @@ -2400,26 +2397,3 @@ CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=15 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_KPROBES is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y -# CONFIG_INIT_DEBUG is not set diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen index dad9348b0a..1ef0dfa2ce 100644 --- a/buildconfigs/mk.linux-2.6-xen +++ b/buildconfigs/mk.linux-2.6-xen @@ -30,7 +30,7 @@ $(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref CONFIG_VERSION=$$(sed -ne 's/^EXTRAVERSION = //p' $(LINUX_DIR)/Makefile); \ [ -r $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \ cp $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) $(LINUX_DIR)/.config \ - || cp $(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH)$(XEN_SYSTYPE) \ + || cp buildconfigs/linux-defconfig_$(EXTRAVERSION)_$(XEN_TARGET_ARCH)$(XEN_SYSTYPE) \ $(LINUX_DIR)/.config # See if we need to munge config to enable PAE $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk config-update-pae diff --git a/linux-2.6-xen-sparse/arch/xen/i386/Kconfig b/linux-2.6-xen-sparse/arch/i386/Kconfig index d301b89a62..fd903a5457 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/Kconfig +++ b/linux-2.6-xen-sparse/arch/i386/Kconfig @@ -3,11 +3,7 @@ # see Documentation/kbuild/kconfig-language.txt. # -menu "X86 Processor Configuration" - -config XENARCH - string - default i386 +mainmenu "Linux Kernel Configuration" config X86 bool @@ -37,6 +33,128 @@ config GENERIC_IOMAP bool default y +source "init/Kconfig" + +menu "Processor type and features" + +choice + prompt "Subarchitecture Type" + default X86_PC + +config X86_PC + bool "PC-compatible" + help + Choose this option if your computer is a standard PC or compatible. + +config X86_XEN + bool "Xen-compatible" + select X86_UP_APIC if !SMP && XEN_PRIVILEGED_GUEST + select X86_UP_IOAPIC if !SMP && XEN_PRIVILEGED_GUEST + select SWIOTLB if XEN_PHYSDEV_ACCESS + help + Choose this option is you plan to run this kernel on top of Xen + Hypervisor. + +config X86_ELAN + bool "AMD Elan" + help + Select this for an AMD Elan processor. + + Do not use this option for K6/Athlon/Opteron processors! + + If unsure, choose "PC-compatible" instead. + +config X86_VOYAGER + bool "Voyager (NCR)" + help + Voyager is an MCA-based 32-way capable SMP architecture proprietary + to NCR Corp. Machine classes 345x/35xx/4100/51xx are Voyager-based. + + *** WARNING *** + + If you do not specifically know you have a Voyager based machine, + say N here, otherwise the kernel you build will not be bootable. + +config X86_NUMAQ + bool "NUMAQ (IBM/Sequent)" + select DISCONTIGMEM + select NUMA + help + This option is used for getting Linux to run on a (IBM/Sequent) NUMA + multiquad box. This changes the way that processors are bootstrapped, + and uses Clustered Logical APIC addressing mode instead of Flat Logical. + You will need a new lynxer.elf file to flash your firmware with - send + email to <Martin.Bligh@us.ibm.com>. + +config X86_SUMMIT + bool "Summit/EXA (IBM x440)" + depends on SMP + help + This option is needed for IBM systems that use the Summit/EXA chipset. + In particular, it is needed for the x440. + + If you don't have one of these computers, you should say N here. + +config X86_BIGSMP + bool "Support for other sub-arch SMP systems with more than 8 CPUs" + depends on SMP + help + This option is needed for the systems that have more than 8 CPUs + and if the system is not of any sub-arch type above. + + If you don't have such a system, you should say N here. + +config X86_VISWS + bool "SGI 320/540 (Visual Workstation)" + help + The SGI Visual Workstation series is an IA32-based workstation + based on SGI systems chips with some legacy PC hardware attached. + + Say Y here to create a kernel to run on the SGI 320 or 540. + + A kernel compiled for the Visual Workstation will not run on PCs + and vice versa. See <file:Documentation/sgi-visws.txt> for details. + +config X86_GENERICARCH + bool "Generic architecture (Summit, bigsmp, ES7000, default)" + depends on SMP + help + This option compiles in the Summit, bigsmp, ES7000, default subarchitectures. + It is intended for a generic binary kernel. + +config X86_ES7000 + bool "Support for Unisys ES7000 IA32 series" + depends on SMP + help + Support for Unisys ES7000 systems. Say 'Y' here if this kernel is + supposed to run on an IA32-based Unisys ES7000 system. + Only choose this option if you have such a system, otherwise you + should say N here. + +endchoice + +config ACPI_SRAT + bool + default y + depends on NUMA && (X86_SUMMIT || X86_GENERICARCH) + +config X86_SUMMIT_NUMA + bool + default y + depends on NUMA && (X86_SUMMIT || X86_GENERICARCH) + +config X86_CYCLONE_TIMER + bool + default y + depends on X86_SUMMIT || X86_GENERICARCH + +config ES7000_CLUSTERED_APIC + bool + default y + depends on SMP && X86_ES7000 && MPENTIUMIII + +if !X86_ELAN + choice prompt "Processor family" default M686 @@ -238,6 +356,8 @@ config X86_GENERIC This is really intended for distributors who need more generic optimizations. +endif + # # Define implied options from the CPU selection here # @@ -333,21 +453,20 @@ config X86_OOSTORE default y config HPET_TIMER - bool - default n -#config HPET_TIMER -# bool "HPET Timer Support" -# help -# This enables the use of the HPET for the kernel's internal timer. -# HPET is the next generation timer replacing legacy 8254s. -# You can safely choose Y here. However, HPET will only be -# activated if the platform and the BIOS support this feature. -# Otherwise the 8254 will be used for timing services. -# -# Choose N to continue using the legacy 8254 timer. + bool "HPET Timer Support" + depends on !X86_XEN + help + This enables the use of the HPET for the kernel's internal timer. + HPET is the next generation timer replacing legacy 8254s. + You can safely choose Y here. However, HPET will only be + activated if the platform and the BIOS support this feature. + Otherwise the 8254 will be used for timing services. + + Choose N to continue using the legacy 8254 timer. config HPET_EMULATE_RTC - def_bool HPET_TIMER && RTC=y + bool "Provide RTC interrupt" + depends on HPET_TIMER && RTC=y config SMP bool "Symmetric multi-processing support" @@ -407,7 +526,7 @@ config NR_CPUS config SCHED_SMT bool "SMT (Hyperthreading) scheduler support" - depends on SMP + depends on SMP && !X86_XEN default off help SMT scheduler support improves the CPU scheduler's decision making @@ -415,17 +534,18 @@ config SCHED_SMT cost of slightly increased overhead in some places. If unsure say N here. -#config PREEMPT -# bool "Preemptible Kernel" -# help -# This option reduces the latency of the kernel when reacting to -# real-time or interactive events by allowing a low priority process to -# be preempted even if it is in kernel mode executing a system call. -# This allows applications to run more reliably even when the system is -# under load. -# -# Say Y here if you are building a kernel for a desktop, embedded -# or real-time system. Say N if you are unsure. +config PREEMPT + bool "Preemptible Kernel" + depends on !X86_XEN + help + This option reduces the latency of the kernel when reacting to + real-time or interactive events by allowing a low priority process to + be preempted even if it is in kernel mode executing a system call. + This allows applications to run more reliably even when the system is + under load. + + Say Y here if you are building a kernel for a desktop, embedded + or real-time system. Say N if you are unsure. config PREEMPT_BKL bool "Preempt The Big Kernel Lock" @@ -438,47 +558,122 @@ config PREEMPT_BKL Say Y here if you are building a kernel for a desktop system. Say N if you are unsure. -#config X86_TSC -# bool -# depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1) && !X86_NUMAQ -# default y - -#config X86_MCE -# bool "Machine Check Exception" -# depends on !X86_VOYAGER -# ---help--- -# Machine Check Exception support allows the processor to notify the -# kernel if it detects a problem (e.g. overheating, component failure). -# The action the kernel takes depends on the severity of the problem, -# ranging from a warning message on the console, to halting the machine. -# Your processor must be a Pentium or newer to support this - check the -# flags in /proc/cpuinfo for mce. Note that some older Pentium systems -# have a design flaw which leads to false MCE events - hence MCE is -# disabled on all P5 processors, unless explicitly enabled with "mce" -# as a boot argument. Similarly, if MCE is built in and creates a -# problem on some new non-standard machine, you can boot with "nomce" -# to disable it. MCE support simply ignores non-MCE processors like -# the 386 and 486, so nearly everyone can say Y here. - -#config X86_MCE_NONFATAL -# tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" -# depends on X86_MCE -# help -# Enabling this feature starts a timer that triggers every 5 seconds which -# will look at the machine check registers to see if anything happened. -# Non-fatal problems automatically get corrected (but still logged). -# Disable this if you don't want to see these messages. -# Seeing the messages this option prints out may be indicative of dying hardware, -# or out-of-spec (ie, overclocked) hardware. -# This option only does something on certain CPUs. -# (AMD Athlon/Duron and Intel Pentium 4) - -#config X86_MCE_P4THERMAL -# bool "check for P4 thermal throttling interrupt." -# depends on X86_MCE && (X86_UP_APIC || SMP) -# help -# Enabling this feature will cause a message to be printed when the P4 -# enters thermal throttling. +config X86_UP_APIC + bool "Local APIC support on uniprocessors" + depends on !SMP && !(X86_VISWS || X86_VOYAGER || XEN_UNPRIVILEGED_GUEST) + help + A local APIC (Advanced Programmable Interrupt Controller) is an + integrated interrupt controller in the CPU. If you have a single-CPU + system which has a processor with a local APIC, you can say Y here to + enable and use it. If you say Y here even though your machine doesn't + have a local APIC, then the kernel will still run with no slowdown at + all. The local APIC supports CPU-generated self-interrupts (timer, + performance counters), and the NMI watchdog which detects hard + lockups. + +config X86_UP_IOAPIC + bool "IO-APIC support on uniprocessors" + depends on X86_UP_APIC + help + An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an + SMP-capable replacement for PC-style interrupt controllers. Most + SMP systems and many recent uniprocessor systems have one. + + If you have a single-CPU system with an IO-APIC, you can say Y here + to use it. If you say Y here even though your machine doesn't have + an IO-APIC, then the kernel will still run with no slowdown at all. + +config X86_LOCAL_APIC + bool + depends on X86_UP_APIC || ((X86_VISWS || SMP) && !(X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)) + default y + +config X86_IO_APIC + bool + depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)) + default y + +config X86_VISWS_APIC + bool + depends on X86_VISWS + default y + +config X86_TSC + bool + depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1) && !X86_NUMAQ && !X86_XEN + default y + +config X86_MCE + bool "Machine Check Exception" + depends on !(X86_VOYAGER || X86_XEN) + ---help--- + Machine Check Exception support allows the processor to notify the + kernel if it detects a problem (e.g. overheating, component failure). + The action the kernel takes depends on the severity of the problem, + ranging from a warning message on the console, to halting the machine. + Your processor must be a Pentium or newer to support this - check the + flags in /proc/cpuinfo for mce. Note that some older Pentium systems + have a design flaw which leads to false MCE events - hence MCE is + disabled on all P5 processors, unless explicitly enabled with "mce" + as a boot argument. Similarly, if MCE is built in and creates a + problem on some new non-standard machine, you can boot with "nomce" + to disable it. MCE support simply ignores non-MCE processors like + the 386 and 486, so nearly everyone can say Y here. + +config X86_MCE_NONFATAL + tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" + depends on X86_MCE + help + Enabling this feature starts a timer that triggers every 5 seconds which + will look at the machine check registers to see if anything happened. + Non-fatal problems automatically get corrected (but still logged). + Disable this if you don't want to see these messages. + Seeing the messages this option prints out may be indicative of dying hardware, + or out-of-spec (ie, overclocked) hardware. + This option only does something on certain CPUs. + (AMD Athlon/Duron and Intel Pentium 4) + +config X86_MCE_P4THERMAL + bool "check for P4 thermal throttling interrupt." + depends on X86_MCE && (X86_UP_APIC || SMP) && !X86_VISWS + help + Enabling this feature will cause a message to be printed when the P4 + enters thermal throttling. + +config TOSHIBA + tristate "Toshiba Laptop support" + ---help--- + This adds a driver to safely access the System Management Mode of + the CPU on Toshiba portables with a genuine Toshiba BIOS. It does + not work on models with a Phoenix BIOS. The System Management Mode + is used to set the BIOS and power saving options on Toshiba portables. + + For information on utilities to make use of this driver see the + Toshiba Linux utilities web site at: + <http://www.buzzard.org.uk/toshiba/>. + + Say Y if you intend to run this kernel on a Toshiba portable. + Say N otherwise. + +config I8K + tristate "Dell laptop support" + ---help--- + This adds a driver to safely access the System Management Mode + of the CPU on the Dell Inspiron 8000. The System Management Mode + is used to read cpu temperature and cooling fan status and to + control the fans on the I8K portables. + + This driver has been tested only on the Inspiron 8000 but it may + also work with other Dell laptops. You can force loading on other + models by passing the parameter `force=1' to the module. Use at + your own risk. + + For information on utilities to make use of this driver see the + I8K Linux utilities web site at: + <http://people.debian.org/~dz/i8k/> + + Say Y if you intend to run this kernel on a Dell Inspiron 8000. + Say N otherwise. config X86_REBOOTFIXUPS bool "Enable X86 board specific fixups for reboot" @@ -500,7 +695,7 @@ config X86_REBOOTFIXUPS config MICROCODE tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support" - depends on XEN_PRIVILEGED_GUEST + depends on !XEN_UNPRIVILEGED_GUEST ---help--- If you say Y here and also to "/dev file system support" in the 'File systems' section, you will be able to update the microcode on @@ -516,14 +711,15 @@ config MICROCODE To compile this driver as a module, choose M here: the module will be called microcode. -#config X86_MSR -# tristate "/dev/cpu/*/msr - Model-specific register support" -# help -# This device gives privileged processes access to the x86 -# Model-Specific Registers (MSRs). It is a character device with -# major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. -# MSR accesses are directed to a specific CPU on multi-processor -# systems. +config X86_MSR + tristate "/dev/cpu/*/msr - Model-specific register support" + depends on !X86_XEN + help + This device gives privileged processes access to the x86 + Model-Specific Registers (MSRs). It is a character device with + major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. + MSR accesses are directed to a specific CPU on multi-processor + systems. config X86_CPUID tristate "/dev/cpu/*/cpuid - CPU information support" @@ -534,9 +730,8 @@ config X86_CPUID /dev/cpu/31/cpuid. config SWIOTLB - bool - depends on PCI - default y + bool + default n source "drivers/firmware/Kconfig" @@ -638,57 +833,98 @@ config NEED_NODE_MEMMAP_SIZE depends on DISCONTIGMEM default y -#config HIGHPTE -# bool "Allocate 3rd-level pagetables from highmem" -# depends on HIGHMEM4G || HIGHMEM64G -# help -# The VM uses one page table entry for each page of physical memory. -# For systems with a lot of RAM, this can be wasteful of precious -# low memory. Setting this option will put user-space page table -# entries in high memory. +config HIGHPTE + bool "Allocate 3rd-level pagetables from highmem" + depends on (HIGHMEM4G || HIGHMEM64G) && !X86_XEN + help + The VM uses one page table entry for each page of physical memory. + For systems with a lot of RAM, this can be wasteful of precious + low memory. Setting this option will put user-space page table + entries in high memory. + +config MATH_EMULATION + bool "Math emulation" + depends on !X86_XEN + ---help--- + Linux can emulate a math coprocessor (used for floating point + operations) if you don't have one. 486DX and Pentium processors have + a math coprocessor built in, 486SX and 386 do not, unless you added + a 487DX or 387, respectively. (The messages during boot time can + give you some hints here ["man dmesg"].) Everyone needs either a + coprocessor or this emulation. + + If you don't have a math coprocessor, you need to say Y here; if you + say Y here even though you have a coprocessor, the coprocessor will + be used nevertheless. (This behavior can be changed with the kernel + command line option "no387", which comes handy if your coprocessor + is broken. Try "man bootparam" or see the documentation of your boot + loader (lilo or loadlin) about how to pass options to the kernel at + boot time.) This means that it is a good idea to say Y here if you + intend to use this kernel on different machines. + + More information about the internals of the Linux math coprocessor + emulation can be found in <file:arch/i386/math-emu/README>. + + If you are not sure, say Y; apart from resulting in a 66 KB bigger + kernel, it won't hurt. config MTRR - bool - depends on XEN_PRIVILEGED_GUEST - default y - -#config MTRR -# bool "MTRR (Memory Type Range Register) support" -# ---help--- -# On Intel P6 family processors (Pentium Pro, Pentium II and later) -# the Memory Type Range Registers (MTRRs) may be used to control -# processor access to memory ranges. This is most useful if you have -# a video (VGA) card on a PCI or AGP bus. Enabling write-combining -# allows bus write transfers to be combined into a larger transfer -# before bursting over the PCI/AGP bus. This can increase performance -# of image write operations 2.5 times or more. Saying Y here creates a -# /proc/mtrr file which may be used to manipulate your processor's -# MTRRs. Typically the X server should use this. -# -# This code has a reasonably generic interface so that similar -# control registers on other processors can be easily supported -# as well: -# -# The Cyrix 6x86, 6x86MX and M II processors have Address Range -# Registers (ARRs) which provide a similar functionality to MTRRs. For -# these, the ARRs are used to emulate the MTRRs. -# The AMD K6-2 (stepping 8 and above) and K6-3 processors have two -# MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing -# write-combining. All of these processors are supported by this code -# and it makes sense to say Y here if you have one of them. -# -# Saying Y here also fixes a problem with buggy SMP BIOSes which only -# set the MTRRs for the boot CPU and not for the secondary CPUs. This -# can lead to all sorts of problems, so it's good to say Y here. -# -# You can safely say Y even if your machine doesn't have MTRRs, you'll -# just add about 9 KB to your kernel. -# -# See <file:Documentation/mtrr.txt> for more information. + bool "MTRR (Memory Type Range Register) support" + depends on !XEN_UNPRIVILEGED_GUEST + default y if X86_XEN + ---help--- + On Intel P6 family processors (Pentium Pro, Pentium II and later) + the Memory Type Range Registers (MTRRs) may be used to control + processor access to memory ranges. This is most useful if you have + a video (VGA) card on a PCI or AGP bus. Enabling write-combining + allows bus write transfers to be combined into a larger transfer + before bursting over the PCI/AGP bus. This can increase performance + of image write operations 2.5 times or more. Saying Y here creates a + /proc/mtrr file which may be used to manipulate your processor's + MTRRs. Typically the X server should use this. + + This code has a reasonably generic interface so that similar + control registers on other processors can be easily supported + as well: + + The Cyrix 6x86, 6x86MX and M II processors have Address Range + Registers (ARRs) which provide a similar functionality to MTRRs. For + these, the ARRs are used to emulate the MTRRs. + The AMD K6-2 (stepping 8 and above) and K6-3 processors have two + MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing + write-combining. All of these processors are supported by this code + and it makes sense to say Y here if you have one of them. + + Saying Y here also fixes a problem with buggy SMP BIOSes which only + set the MTRRs for the boot CPU and not for the secondary CPUs. This + can lead to all sorts of problems, so it's good to say Y here. + + You can safely say Y even if your machine doesn't have MTRRs, you'll + just add about 9 KB to your kernel. + + See <file:Documentation/mtrr.txt> for more information. + +config EFI + bool "Boot from EFI support (EXPERIMENTAL)" + depends on ACPI && !X86_XEN + default n + ---help--- + This enables the the kernel to boot on EFI platforms using + system configuration information passed to it from the firmware. + This also enables the kernel to use any EFI runtime services that are + available (such as the EFI variable services). + + This option is only useful on systems that have EFI firmware + and will result in a kernel image that is ~8k larger. In addition, + you must use the latest ELILO loader available at + <http://elilo.sourceforge.net> in order to take advantage of + kernel initialization using EFI information (neither GRUB nor LILO know + anything about EFI). However, even with this option, the resultant + kernel should continue to boot on existing non-EFI platforms. config IRQBALANCE bool "Enable kernel irq balancing" - depends on SMP && X86_IO_APIC && !XEN + depends on SMP && X86_IO_APIC && !X86_XEN default y help The default yes will allow the kernel to do irq load balancing. @@ -719,59 +955,189 @@ config REGPARM generate incorrect output with certain kernel constructs when -mregparm=3 is used. -config X86_LOCAL_APIC - bool - depends on XEN_PRIVILEGED_GUEST && (X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER)) +config SECCOMP + bool "Enable seccomp to safely compute untrusted bytecode" + depends on PROC_FS default y + help + This kernel feature is useful for number crunching applications + that may need to compute untrusted bytecode during their + execution. By using pipes or other transports made available to + the process as file descriptors supporting the read/write + syscalls, it's possible to isolate those applications in + their own address space using seccomp. Once seccomp is + enabled via /proc/<pid>/seccomp, it cannot be disabled + and the task is only allowed to execute a few safe syscalls + defined by each seccomp mode. -config X86_IO_APIC - bool - depends on XEN_PRIVILEGED_GUEST && (X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER))) - default y + If unsure, say Y. Only embedded should say N here. -config X86_VISWS_APIC - bool - depends on X86_VISWS - default y +endmenu -config HOTPLUG_CPU - bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" - depends on SMP && HOTPLUG && EXPERIMENTAL - ---help--- - Say Y here to experiment with turning CPUs off and on. CPUs - can be controlled through /sys/devices/system/cpu. - Say N. +menu "Power management options (ACPI, APM)" + depends on !(X86_VOYAGER || XEN_UNPRIVILEGED_GUEST) +if !X86_XEN +source kernel/power/Kconfig +endif -if XEN_PHYSDEV_ACCESS +source "drivers/acpi/Kconfig" -menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" +menu "APM (Advanced Power Management) BIOS Support" +depends on PM && !(X86_VISWS || X86_XEN) -config X86_UP_APIC - bool "Local APIC support on uniprocessors" - depends on !SMP && !(X86_VISWS || X86_VOYAGER) +config APM + tristate "APM (Advanced Power Management) BIOS support" + depends on PM + ---help--- + APM is a BIOS specification for saving power using several different + techniques. This is mostly useful for battery powered laptops with + APM compliant BIOSes. If you say Y here, the system time will be + reset after a RESUME operation, the /proc/apm device will provide + battery status information, and user-space programs will receive + notification of APM "events" (e.g. battery status change). + + If you select "Y" here, you can disable actual use of the APM + BIOS by passing the "apm=off" option to the kernel at boot time. + + Note that the APM support is almost completely disabled for + machines with more than one CPU. + + In order to use APM, you will need supporting software. For location + and more information, read <file:Documentation/pm.txt> and the + Battery Powered Linux mini-HOWTO, available from + <http://www.tldp.org/docs.html#howto>. + + This driver does not spin down disk drives (see the hdparm(8) + manpage ("man 8 hdparm") for that), and it doesn't turn off + VESA-compliant "green" monitors. + + This driver does not support the TI 4000M TravelMate and the ACER + 486/DX4/75 because they don't have compliant BIOSes. Many "green" + desktop machines also don't have compliant BIOSes, and this driver + may cause those machines to panic during the boot phase. + + Generally, if you don't have a battery in your machine, there isn't + much point in using this driver and you should say N. If you get + random kernel OOPSes or reboots that don't seem to be related to + anything, try disabling/enabling this option (or disabling/enabling + APM in your BIOS). + + Some other things you should try when experiencing seemingly random, + "weird" problems: + + 1) make sure that you have enough swap space and that it is + enabled. + 2) pass the "no-hlt" option to the kernel + 3) switch on floating point emulation in the kernel and pass + the "no387" option to the kernel + 4) pass the "floppy=nodma" option to the kernel + 5) pass the "mem=4M" option to the kernel (thereby disabling + all but the first 4 MB of RAM) + 6) make sure that the CPU is not over clocked. + 7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/> + 8) disable the cache from your BIOS settings + 9) install a fan for the video card or exchange video RAM + 10) install a better fan for the CPU + 11) exchange RAM chips + 12) exchange the motherboard. + + To compile this driver as a module, choose M here: the + module will be called apm. + +config APM_IGNORE_USER_SUSPEND + bool "Ignore USER SUSPEND" + depends on APM help - A local APIC (Advanced Programmable Interrupt Controller) is an - integrated interrupt controller in the CPU. If you have a single-CPU - system which has a processor with a local APIC, you can say Y here to - enable and use it. If you say Y here even though your machine doesn't - have a local APIC, then the kernel will still run with no slowdown at - all. The local APIC supports CPU-generated self-interrupts (timer, - performance counters), and the NMI watchdog which detects hard - lockups. + This option will ignore USER SUSPEND requests. On machines with a + compliant APM BIOS, you want to say N. However, on the NEC Versa M + series notebooks, it is necessary to say Y because of a BIOS bug. -config X86_UP_IOAPIC - bool "IO-APIC support on uniprocessors" - depends on X86_UP_APIC +config APM_DO_ENABLE + bool "Enable PM at boot time" + depends on APM + ---help--- + Enable APM features at boot time. From page 36 of the APM BIOS + specification: "When disabled, the APM BIOS does not automatically + power manage devices, enter the Standby State, enter the Suspend + State, or take power saving steps in response to CPU Idle calls." + This driver will make CPU Idle calls when Linux is idle (unless this + feature is turned off -- see "Do CPU IDLE calls", below). This + should always save battery power, but more complicated APM features + will be dependent on your BIOS implementation. You may need to turn + this option off if your computer hangs at boot time when using APM + support, or if it beeps continuously instead of suspending. Turn + this off if you have a NEC UltraLite Versa 33/C or a Toshiba + T400CDT. This is off by default since most machines do fine without + this feature. + +config APM_CPU_IDLE + bool "Make CPU Idle calls when idle" + depends on APM help - An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an - SMP-capable replacement for PC-style interrupt controllers. Most - SMP systems and many recent uniprocessor systems have one. + Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop. + On some machines, this can activate improved power savings, such as + a slowed CPU clock rate, when the machine is idle. These idle calls + are made after the idle loop has run for some length of time (e.g., + 333 mS). On some machines, this will cause a hang at boot time or + whenever the CPU becomes idle. (On machines with more than one CPU, + this option does nothing.) + +config APM_DISPLAY_BLANK + bool "Enable console blanking using APM" + depends on APM + help + Enable console blanking using the APM. Some laptops can use this to + turn off the LCD backlight when the screen blanker of the Linux + virtual console blanks the screen. Note that this is only used by + the virtual console screen blanker, and won't turn off the backlight + when using the X Window system. This also doesn't have anything to + do with your VESA-compliant power-saving monitor. Further, this + option doesn't work for all laptops -- it might not turn off your + backlight at all, or it might print a lot of errors to the console, + especially if you are using gpm. + +config APM_RTC_IS_GMT + bool "RTC stores time in GMT" + depends on APM + help + Say Y here if your RTC (Real Time Clock a.k.a. hardware clock) + stores the time in GMT (Greenwich Mean Time). Say N if your RTC + stores localtime. + + It is in fact recommended to store GMT in your RTC, because then you + don't have to worry about daylight savings time changes. The only + reason not to use GMT in your RTC is if you also run a broken OS + that doesn't understand GMT. + +config APM_ALLOW_INTS + bool "Allow interrupts during APM BIOS calls" + depends on APM + help + Normally we disable external interrupts while we are making calls to + the APM BIOS as a measure to lessen the effects of a badly behaving + BIOS implementation. The BIOS should reenable interrupts if it + needs to. Unfortunately, some BIOSes do not -- especially those in + many of the newer IBM Thinkpads. If you experience hangs when you + suspend, try setting this to Y. Otherwise, say N. + +config APM_REAL_MODE_POWER_OFF + bool "Use real mode APM BIOS call to power off" + depends on APM + help + Use real mode APM BIOS calls to switch off the computer. This is + a work-around for a number of buggy BIOSes. Switch this option on if + your computer crashes instead of powering off properly. - If you have a single-CPU system with an IO-APIC, you can say Y here - to use it. If you say Y here even though your machine doesn't have - an IO-APIC, then the kernel will still run with no slowdown at all. +endmenu + +source "arch/i386/kernel/cpu/cpufreq/Kconfig" + +endmenu + +menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" + depends on !XEN_UNPRIVILEGED_GUEST config PCI bool "PCI support" if !X86_VISWS @@ -807,8 +1173,9 @@ choice direct access method and falls back to the BIOS if that doesn't work. If unsure, go with the default, which is "Any". -#config PCI_GOBIOS -# bool "BIOS" +config PCI_GOBIOS + bool "BIOS" + depends on !X86_XEN config PCI_GOMMCONFIG bool "MMConfig" @@ -821,10 +1188,10 @@ config PCI_GOANY endchoice -#config PCI_BIOS -# bool -# depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY) -# default y +config PCI_BIOS + bool + depends on !(X86_VISWS || X86_XEN) && PCI && (PCI_GOBIOS || PCI_GOANY) + default y config PCI_DIRECT bool @@ -843,11 +1210,12 @@ source "drivers/pci/Kconfig" config ISA_DMA_API bool + depends on !X86_XEN default y config ISA bool "ISA support" - depends on !(X86_VOYAGER || X86_VISWS) + depends on !(X86_VOYAGER || X86_VISWS || X86_XEN) help Find out whether you have ISA slots on your motherboard. ISA is the name of a bus system, i.e. the way the CPU talks to the other stuff @@ -874,7 +1242,7 @@ config EISA source "drivers/eisa/Kconfig" config MCA - bool "MCA support" if !(X86_VISWS || X86_VOYAGER) + bool "MCA support" if !(X86_VISWS || X86_VOYAGER || X86_XEN) default y if X86_VOYAGER help MicroChannel Architecture is found in some IBM PS/2 machines and @@ -902,8 +1270,30 @@ source "drivers/pci/hotplug/Kconfig" endmenu +menu "Executable file formats" + +source "fs/Kconfig.binfmt" + +endmenu + +source "drivers/Kconfig" + +source "fs/Kconfig" + +if !X86_XEN +source "arch/i386/oprofile/Kconfig" endif +source "arch/i386/Kconfig.debug" + +source "security/Kconfig" + +source "crypto/Kconfig" + +source "drivers/xen/Kconfig" + +source "lib/Kconfig" + # # Use the generic interrupt handling code in kernel/irq/: # @@ -920,10 +1310,10 @@ config X86_SMP depends on SMP && !X86_VOYAGER default y -#config X86_HT -# bool -# depends on SMP && !(X86_VISWS || X86_VOYAGER) -# default y +config X86_HT + bool + depends on SMP && !(X86_VISWS || X86_VOYAGER || X86_XEN) + default y config X86_BIOS_REBOOT bool @@ -939,22 +1329,3 @@ config PC bool depends on X86 && !EMBEDDED default y - -config SECCOMP - bool "Enable seccomp to safely compute untrusted bytecode" - depends on PROC_FS - default y - help - This kernel feature is useful for number crunching applications - that may need to compute untrusted bytecode during their - execution. By using pipes or other transports made available to - the process as file descriptors supporting the read/write - syscalls, it's possible to isolate those applications in - their own address space using seccomp. Once seccomp is - enabled via /proc/<pid>/seccomp, it cannot be disabled - and the task is only allowed to execute a few safe syscalls - defined by each seccomp mode. - - If unsure, say Y. Only embedded should say N here. - -endmenu diff --git a/linux-2.6-xen-sparse/arch/i386/Makefile b/linux-2.6-xen-sparse/arch/i386/Makefile new file mode 100644 index 0000000000..fa12d6c032 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/Makefile @@ -0,0 +1,192 @@ +# +# i386/Makefile +# +# This file is included by the global makefile so that you can add your own +# architecture-specific flags and dependencies. Remember to do have actions +# for "archclean" cleaning up for this architecture. +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (C) 1994 by Linus Torvalds +# +# 19990713 Artur Skawina <skawina@geocities.com> +# Added '-march' and '-mpreferred-stack-boundary' support +# +# 20050320 Kianusch Sayah Karadji <kianusch@sk-tech.net> +# Added support for GEODE CPU + +LDFLAGS := -m elf_i386 +OBJCOPYFLAGS := -O binary -R .note -R .comment -S +LDFLAGS_vmlinux := +CHECKFLAGS += -D__i386__ + +CFLAGS += -pipe -msoft-float + +# prevent gcc from keeping the stack 16 byte aligned +CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2) + +align := $(cc-option-align) +cflags-$(CONFIG_M386) += -march=i386 +cflags-$(CONFIG_M486) += -march=i486 +cflags-$(CONFIG_M586) += -march=i586 +cflags-$(CONFIG_M586TSC) += -march=i586 +cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586) +cflags-$(CONFIG_M686) += -march=i686 +cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call cc-option,-mtune=pentium2) +cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call cc-option,-mtune=pentium3) +cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call cc-option,-mtune=pentium3) +cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call cc-option,-mtune=pentium4) +cflags-$(CONFIG_MK6) += -march=k6 +# Please note, that patches that add -march=athlon-xp and friends are pointless. +# They make zero difference whatsosever to performance at this time. +cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4) +cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)) +cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 +cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call cc-option,-mtune=pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 +cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586) +cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586) +cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586) +cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 +cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686) + +# AMD Elan support +cflags-$(CONFIG_X86_ELAN) += -march=i486 + +# Geode GX1 support +cflags-$(CONFIG_MGEODEGX1) += $(call cc-option,-march=pentium-mmx,-march=i486) + +# -mregparm=3 works ok on gcc-3.0 and later +# +GCC_VERSION := $(call cc-version) +cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) + +# Disable unit-at-a-time mode, it makes gcc use a lot more stack +# due to the lack of sharing of stacklots. +CFLAGS += $(call cc-option,-fno-unit-at-a-time) + +CFLAGS += $(cflags-y) + +# Default subarch .c files +mcore-y := mach-default + +# Voyager subarch support +mflags-$(CONFIG_X86_VOYAGER) := -Iinclude/asm-i386/mach-voyager +mcore-$(CONFIG_X86_VOYAGER) := mach-voyager + +# VISWS subarch support +mflags-$(CONFIG_X86_VISWS) := -Iinclude/asm-i386/mach-visws +mcore-$(CONFIG_X86_VISWS) := mach-visws + +# NUMAQ subarch support +mflags-$(CONFIG_X86_NUMAQ) := -Iinclude/asm-i386/mach-numaq +mcore-$(CONFIG_X86_NUMAQ) := mach-default + +# BIGSMP subarch support +mflags-$(CONFIG_X86_BIGSMP) := -Iinclude/asm-i386/mach-bigsmp +mcore-$(CONFIG_X86_BIGSMP) := mach-default + +#Summit subarch support +mflags-$(CONFIG_X86_SUMMIT) := -Iinclude/asm-i386/mach-summit +mcore-$(CONFIG_X86_SUMMIT) := mach-default + +# Xen subarch support +mflags-$(CONFIG_X86_XEN) := -Iinclude/asm-i386/mach-xen +mcore-$(CONFIG_X86_XEN) := mach-xen + +# generic subarchitecture +mflags-$(CONFIG_X86_GENERICARCH) := -Iinclude/asm-i386/mach-generic +mcore-$(CONFIG_X86_GENERICARCH) := mach-default +core-$(CONFIG_X86_GENERICARCH) += arch/i386/mach-generic/ + +# ES7000 subarch support +mflags-$(CONFIG_X86_ES7000) := -Iinclude/asm-i386/mach-es7000 +mcore-$(CONFIG_X86_ES7000) := mach-default +core-$(CONFIG_X86_ES7000) := arch/i386/mach-es7000/ + +# default subarch .h files +mflags-y += -Iinclude/asm-i386/mach-default + +head-y := arch/i386/kernel/head.o arch/i386/kernel/init_task.o + +libs-y += arch/i386/lib/ +core-y += arch/i386/kernel/ \ + arch/i386/mm/ \ + arch/i386/$(mcore-y)/ \ + arch/i386/crypto/ +drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ +drivers-$(CONFIG_PCI) += arch/i386/pci/ +# must be linked after kernel/ +drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ +drivers-$(CONFIG_PM) += arch/i386/power/ + +CFLAGS += $(mflags-y) +AFLAGS += $(mflags-y) + +boot := arch/i386/boot + +.PHONY: zImage bzImage compressed zlilo bzlilo \ + zdisk bzdisk fdimage fdimage144 fdimage288 install kernel_install + +ifdef CONFIG_XEN +CPPFLAGS := -D__KERNEL__ -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(LINUXINCLUDE) +head-y := arch/i386/kernel/head-xen.o arch/i386/kernel/init_task-xen.o +boot := arch/i386/boot-xen +.PHONY: vmlinuz +all: vmlinuz + +vmlinuz: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $@ + +install: vmlinux + $(Q)$(MAKE) $(build)=$(boot) XENGUEST=$(XENGUEST) $@ +else +all: bzImage + +# KBUILD_IMAGE specify target image being built + KBUILD_IMAGE := $(boot)/bzImage +zImage zlilo zdisk: KBUILD_IMAGE := arch/i386/boot/zImage + +zImage bzImage: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) + +compressed: zImage + +zlilo bzlilo: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zlilo + +zdisk bzdisk: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk + +fdimage fdimage144 fdimage288: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@ + +install: vmlinux +install kernel_install: + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install +endif + +prepare: include/asm-$(ARCH)/asm_offsets.h +CLEAN_FILES += include/asm-$(ARCH)/asm_offsets.h + +arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ + include/config/MARKER + +include/asm-$(ARCH)/asm_offsets.h: arch/$(ARCH)/kernel/asm-offsets.s + $(call filechk,gen-asm-offsets) + +archclean: + $(Q)$(MAKE) $(clean)=arch/i386/boot + +define archhelp + echo '* bzImage - Compressed kernel image (arch/$(ARCH)/boot/bzImage)' + echo ' install - Install kernel using' + echo ' (your) ~/bin/installkernel or' + echo ' (distribution) /sbin/installkernel or' + echo ' install to $$(INSTALL_PATH) and run lilo' + echo ' bzdisk - Create a boot floppy in /dev/fd0' + echo ' fdimage - Create a boot floppy image' +endef + +CLEAN_FILES += arch/$(ARCH)/boot/fdimage arch/$(ARCH)/boot/mtools.conf diff --git a/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile b/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile new file mode 100644 index 0000000000..05587b4832 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/boot-xen/Makefile @@ -0,0 +1,21 @@ + +OBJCOPYFLAGS := -g --strip-unneeded + +vmlinuz: vmlinux-stripped FORCE + $(call if_changed,gzip) + +vmlinux-stripped: vmlinux FORCE + $(call if_changed,objcopy) + +INSTALL_ROOT := $(patsubst %/boot,%,$(INSTALL_PATH)) + +XINSTALL_NAME ?= $(KERNELRELEASE) +install: vmlinuz + mkdir -p $(INSTALL_ROOT)/boot + ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(XENGUEST)$(INSTALL_SUFFIX) + rm -f $(INSTALL_ROOT)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) + install -m0644 vmlinuz $(INSTALL_ROOT)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) + install -m0644 vmlinux $(INSTALL_ROOT)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX) + install -m0664 .config $(INSTALL_ROOT)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX) + install -m0664 System.map $(INSTALL_ROOT)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX) + ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL)$(XENGUEST)$(INSTALL_SUFFIX) diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/Makefile b/linux-2.6-xen-sparse/arch/i386/kernel/Makefile new file mode 100644 index 0000000000..3778dd7a48 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/Makefile @@ -0,0 +1,93 @@ +# +# Makefile for the linux kernel. +# + +extra-y := head.o init_task.o vmlinux.lds + +obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o \ + ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ + pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ + doublefault.o quirks.o + +obj-y += cpu/ +obj-y += timers/ +obj-$(CONFIG_ACPI_BOOT) += acpi/ +obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o +obj-$(CONFIG_MCA) += mca.o +obj-$(CONFIG_X86_MSR) += msr.o +obj-$(CONFIG_X86_CPUID) += cpuid.o +obj-$(CONFIG_MICROCODE) += microcode.o +obj-$(CONFIG_APM) += apm.o +obj-$(CONFIG_X86_SMP) += smp.o smpboot.o +obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o +obj-$(CONFIG_X86_MPPARSE) += mpparse.o +obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o +obj-$(CONFIG_X86_IO_APIC) += io_apic.o +obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups.o +obj-$(CONFIG_X86_NUMAQ) += numaq.o +obj-$(CONFIG_X86_SUMMIT_NUMA) += summit.o +obj-$(CONFIG_KPROBES) += kprobes.o +obj-$(CONFIG_MODULES) += module.o +obj-y += sysenter.o vsyscall.o +obj-$(CONFIG_ACPI_SRAT) += srat.o +obj-$(CONFIG_HPET_TIMER) += time_hpet.o +obj-$(CONFIG_EFI) += efi.o efi_stub.o +obj-$(CONFIG_EARLY_PRINTK) += early_printk.o +obj-$(CONFIG_SMP_ALTERNATIVES) += smpalts.o +obj-$(CONFIG_SWIOTLB) += swiotlb.o + +EXTRA_AFLAGS := -traditional + +obj-$(CONFIG_SCx200) += scx200.o + +ifdef CONFIG_XEN +vsyscall_note := vsyscall-note-xen.o +else +vsyscall_note := vsyscall-note.o +endif + +# vsyscall.o contains the vsyscall DSO images as __initdata. +# We must build both images before we can assemble it. +# Note: kbuild does not track this dependency due to usage of .incbin +$(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so +targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) +targets += $(vsyscall_note) vsyscall.lds + +# The DSO images are built using a special linker script. +quiet_cmd_syscall = SYSCALL $@ + cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \ + -Wl,-T,$(filter-out FORCE,$^) -o $@ + +export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH) + +vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 +SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) +SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) + +$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ +$(obj)/vsyscall-%.so: $(src)/vsyscall.lds \ + $(obj)/vsyscall-%.o $(obj)/$(vsyscall_note) FORCE + $(call if_changed,syscall) + +# We also create a special relocatable object that should mirror the symbol +# table and layout of the linked DSO. With ld -R we can then refer to +# these symbols in the kernel code rather than hand-coded addresses. +extra-y += vsyscall-syms.o +$(obj)/built-in.o: $(obj)/vsyscall-syms.o +$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o + +SYSCFLAGS_vsyscall-syms.o = -r +$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds \ + $(obj)/vsyscall-sysenter.o $(obj)/$(vsyscall_note) FORCE + $(call if_changed,syscall) + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen + +obj-y += fixup.o +n-obj-xen := i8259.o doublefault.o timers/ reboot.o smpboot.o trampoline.o + +obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) +obj-y := $(call cherrypickxen, $(obj-y)) +extra-y := $(call cherrypickxen, $(extra-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/acpi/Makefile b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/Makefile new file mode 100644 index 0000000000..a12e568bc3 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/Makefile @@ -0,0 +1,8 @@ +obj-$(CONFIG_ACPI_BOOT) := boot.o +obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o +obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen +obj-y := $(call cherrypickxen, $(obj-y), $(src)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c index 5e5d56cce6..5e5d56cce6 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/acpi/boot-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/apic.c b/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c index 5f071a5956..5f071a5956 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/apic.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/apic-xen.c diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/apm.c b/linux-2.6-xen-sparse/arch/i386/kernel/apm.c new file mode 100644 index 0000000000..5c601bbc1a --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/apm.c @@ -0,0 +1,2428 @@ +/* -*- linux-c -*- + * APM BIOS driver for Linux + * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au) + * + * Initial development of this driver was funded by NEC Australia P/L + * and NEC Corporation + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * October 1995, Rik Faith (faith@cs.unc.edu): + * Minor enhancements and updates (to the patch set) for 1.3.x + * Documentation + * January 1996, Rik Faith (faith@cs.unc.edu): + * Make /proc/apm easy to format (bump driver version) + * March 1996, Rik Faith (faith@cs.unc.edu): + * Prohibit APM BIOS calls unless apm_enabled. + * (Thanks to Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de>) + * April 1996, Stephen Rothwell (sfr@canb.auug.org.au) + * Version 1.0 and 1.1 + * May 1996, Version 1.2 + * Feb 1998, Version 1.3 + * Feb 1998, Version 1.4 + * Aug 1998, Version 1.5 + * Sep 1998, Version 1.6 + * Nov 1998, Version 1.7 + * Jan 1999, Version 1.8 + * Jan 1999, Version 1.9 + * Oct 1999, Version 1.10 + * Nov 1999, Version 1.11 + * Jan 2000, Version 1.12 + * Feb 2000, Version 1.13 + * Nov 2000, Version 1.14 + * Oct 2001, Version 1.15 + * Jan 2002, Version 1.16 + * Oct 2002, Version 1.16ac + * + * History: + * 0.6b: first version in official kernel, Linux 1.3.46 + * 0.7: changed /proc/apm format, Linux 1.3.58 + * 0.8: fixed gcc 2.7.[12] compilation problems, Linux 1.3.59 + * 0.9: only call bios if bios is present, Linux 1.3.72 + * 1.0: use fixed device number, consolidate /proc/apm into this file, + * Linux 1.3.85 + * 1.1: support user-space standby and suspend, power off after system + * halted, Linux 1.3.98 + * 1.2: When resetting RTC after resume, take care so that the time + * is only incorrect by 30-60mS (vs. 1S previously) (Gabor J. Toth + * <jtoth@princeton.edu>); improve interaction between + * screen-blanking and gpm (Stephen Rothwell); Linux 1.99.4 + * 1.2a:Simple change to stop mysterious bug reports with SMP also added + * levels to the printk calls. APM is not defined for SMP machines. + * The new replacment for it is, but Linux doesn't yet support this. + * Alan Cox Linux 2.1.55 + * 1.3: Set up a valid data descriptor 0x40 for buggy BIOS's + * 1.4: Upgraded to support APM 1.2. Integrated ThinkPad suspend patch by + * Dean Gaudet <dgaudet@arctic.org>. + * C. Scott Ananian <cananian@alumni.princeton.edu> Linux 2.1.87 + * 1.5: Fix segment register reloading (in case of bad segments saved + * across BIOS call). + * Stephen Rothwell + * 1.6: Cope with complier/assembler differences. + * Only try to turn off the first display device. + * Fix OOPS at power off with no APM BIOS by Jan Echternach + * <echter@informatik.uni-rostock.de> + * Stephen Rothwell + * 1.7: Modify driver's cached copy of the disabled/disengaged flags + * to reflect current state of APM BIOS. + * Chris Rankin <rankinc@bellsouth.net> + * Reset interrupt 0 timer to 100Hz after suspend + * Chad Miller <cmiller@surfsouth.com> + * Add CONFIG_APM_IGNORE_SUSPEND_BOUNCE + * Richard Gooch <rgooch@atnf.csiro.au> + * Allow boot time disabling of APM + * Make boot messages far less verbose by default + * Make asm safer + * Stephen Rothwell + * 1.8: Add CONFIG_APM_RTC_IS_GMT + * Richard Gooch <rgooch@atnf.csiro.au> + * change APM_NOINTS to CONFIG_APM_ALLOW_INTS + * remove dependency on CONFIG_PROC_FS + * Stephen Rothwell + * 1.9: Fix small typo. <laslo@wodip.opole.pl> + * Try to cope with BIOS's that need to have all display + * devices blanked and not just the first one. + * Ross Paterson <ross@soi.city.ac.uk> + * Fix segment limit setting it has always been wrong as + * the segments needed to have byte granularity. + * Mark a few things __init. + * Add hack to allow power off of SMP systems by popular request. + * Use CONFIG_SMP instead of __SMP__ + * Ignore BOUNCES for three seconds. + * Stephen Rothwell + * 1.10: Fix for Thinkpad return code. + * Merge 2.2 and 2.3 drivers. + * Remove APM dependencies in arch/i386/kernel/process.c + * Remove APM dependencies in drivers/char/sysrq.c + * Reset time across standby. + * Allow more inititialisation on SMP. + * Remove CONFIG_APM_POWER_OFF and make it boot time + * configurable (default on). + * Make debug only a boot time parameter (remove APM_DEBUG). + * Try to blank all devices on any error. + * 1.11: Remove APM dependencies in drivers/char/console.c + * Check nr_running to detect if we are idle (from + * Borislav Deianov <borislav@lix.polytechnique.fr>) + * Fix for bioses that don't zero the top part of the + * entrypoint offset (Mario Sitta <sitta@al.unipmn.it>) + * (reported by Panos Katsaloulis <teras@writeme.com>). + * Real mode power off patch (Walter Hofmann + * <Walter.Hofmann@physik.stud.uni-erlangen.de>). + * 1.12: Remove CONFIG_SMP as the compiler will optimize + * the code away anyway (smp_num_cpus == 1 in UP) + * noted by Artur Skawina <skawina@geocities.com>. + * Make power off under SMP work again. + * Fix thinko with initial engaging of BIOS. + * Make sure power off only happens on CPU 0 + * (Paul "Rusty" Russell <rusty@rustcorp.com.au>). + * Do error notification to user mode if BIOS calls fail. + * Move entrypoint offset fix to ...boot/setup.S + * where it belongs (Cosmos <gis88564@cis.nctu.edu.tw>). + * Remove smp-power-off. SMP users must now specify + * "apm=power-off" on the kernel command line. Suggested + * by Jim Avera <jima@hal.com>, modified by Alan Cox + * <alan@lxorguk.ukuu.org.uk>. + * Register the /proc/apm entry even on SMP so that + * scripts that check for it before doing power off + * work (Jim Avera <jima@hal.com>). + * 1.13: Changes for new pm_ interfaces (Andy Henroid + * <andy_henroid@yahoo.com>). + * Modularize the code. + * Fix the Thinkpad (again) :-( (CONFIG_APM_IGNORE_MULTIPLE_SUSPENDS + * is now the way life works). + * Fix thinko in suspend() (wrong return). + * Notify drivers on critical suspend. + * Make kapmd absorb more idle time (Pavel Machek <pavel@suse.cz> + * modified by sfr). + * Disable interrupts while we are suspended (Andy Henroid + * <andy_henroid@yahoo.com> fixed by sfr). + * Make power off work on SMP again (Tony Hoyle + * <tmh@magenta-logic.com> and <zlatko@iskon.hr>) modified by sfr. + * Remove CONFIG_APM_SUSPEND_BOUNCE. The bounce ignore + * interval is now configurable. + * 1.14: Make connection version persist across module unload/load. + * Enable and engage power management earlier. + * Disengage power management on module unload. + * Changed to use the sysrq-register hack for registering the + * power off function called by magic sysrq based upon discussions + * in irc://irc.openprojects.net/#kernelnewbies + * (Crutcher Dunnavant <crutcher+kernel@datastacks.com>). + * Make CONFIG_APM_REAL_MODE_POWER_OFF run time configurable. + * (Arjan van de Ven <arjanv@redhat.com>) modified by sfr. + * Work around byte swap bug in one of the Vaio's BIOS's + * (Marc Boucher <marc@mbsi.ca>). + * Exposed the disable flag to dmi so that we can handle known + * broken APM (Alan Cox <alan@redhat.com>). + * 1.14ac: If the BIOS says "I slowed the CPU down" then don't spin + * calling it - instead idle. (Alan Cox <alan@redhat.com>) + * If an APM idle fails log it and idle sensibly + * 1.15: Don't queue events to clients who open the device O_WRONLY. + * Don't expect replies from clients who open the device O_RDONLY. + * (Idea from Thomas Hood) + * Minor waitqueue cleanups. (John Fremlin <chief@bandits.org>) + * 1.16: Fix idle calling. (Andreas Steinmetz <ast@domdv.de> et al.) + * Notify listeners of standby or suspend events before notifying + * drivers. Return EBUSY to ioctl() if suspend is rejected. + * (Russell King <rmk@arm.linux.org.uk> and Thomas Hood) + * Ignore first resume after we generate our own resume event + * after a suspend (Thomas Hood) + * Daemonize now gets rid of our controlling terminal (sfr). + * CONFIG_APM_CPU_IDLE now just affects the default value of + * idle_threshold (sfr). + * Change name of kernel apm daemon (as it no longer idles) (sfr). + * 1.16ac: Fix up SMP support somewhat. You can now force SMP on and we + * make _all_ APM calls on the CPU#0. Fix unsafe sign bug. + * TODO: determine if its "boot CPU" or "CPU0" we want to lock to. + * + * APM 1.1 Reference: + * + * Intel Corporation, Microsoft Corporation. Advanced Power Management + * (APM) BIOS Interface Specification, Revision 1.1, September 1993. + * Intel Order Number 241704-001. Microsoft Part Number 781-110-X01. + * + * [This document is available free from Intel by calling 800.628.8686 (fax + * 916.356.6100) or 800.548.4725; or via anonymous ftp from + * ftp://ftp.intel.com/pub/IAL/software_specs/apmv11.doc. It is also + * available from Microsoft by calling 206.882.8080.] + * + * APM 1.2 Reference: + * Intel Corporation, Microsoft Corporation. Advanced Power Management + * (APM) BIOS Interface Specification, Revision 1.2, February 1996. + * + * [This document is available from Microsoft at: + * http://www.microsoft.com/hwdev/busbios/amp_12.htm] + */ + +#include <linux/config.h> +#include <linux/module.h> + +#include <linux/poll.h> +#include <linux/types.h> +#include <linux/stddef.h> +#include <linux/timer.h> +#include <linux/fcntl.h> +#include <linux/slab.h> +#include <linux/stat.h> +#include <linux/proc_fs.h> +#include <linux/miscdevice.h> +#include <linux/apm_bios.h> +#include <linux/init.h> +#include <linux/time.h> +#include <linux/sched.h> +#include <linux/pm.h> +#include <linux/device.h> +#include <linux/kernel.h> +#include <linux/smp.h> +#include <linux/smp_lock.h> +#include <linux/dmi.h> +#include <linux/suspend.h> + +#include <asm/system.h> +#include <asm/uaccess.h> +#include <asm/desc.h> + +#include "io_ports.h" + +extern spinlock_t i8253_lock; +extern unsigned long get_cmos_time(void); +extern void machine_real_restart(unsigned char *, int); + +#if defined(CONFIG_APM_DISPLAY_BLANK) && defined(CONFIG_VT) +extern int (*console_blank_hook)(int); +#endif + +/* + * The apm_bios device is one of the misc char devices. + * This is its minor number. + */ +#define APM_MINOR_DEV 134 + +/* + * See Documentation/Config.help for the configuration options. + * + * Various options can be changed at boot time as follows: + * (We allow underscores for compatibility with the modules code) + * apm=on/off enable/disable APM + * [no-]allow[-_]ints allow interrupts during BIOS calls + * [no-]broken[-_]psr BIOS has a broken GetPowerStatus call + * [no-]realmode[-_]power[-_]off switch to real mode before + * powering off + * [no-]debug log some debugging messages + * [no-]power[-_]off power off on shutdown + * [no-]smp Use apm even on an SMP box + * bounce[-_]interval=<n> number of ticks to ignore suspend + * bounces + * idle[-_]threshold=<n> System idle percentage above which to + * make APM BIOS idle calls. Set it to + * 100 to disable. + * idle[-_]period=<n> Period (in 1/100s of a second) over + * which the idle percentage is + * calculated. + */ + +/* KNOWN PROBLEM MACHINES: + * + * U: TI 4000M TravelMate: BIOS is *NOT* APM compliant + * [Confirmed by TI representative] + * ?: ACER 486DX4/75: uses dseg 0040, in violation of APM specification + * [Confirmed by BIOS disassembly] + * [This may work now ...] + * P: Toshiba 1950S: battery life information only gets updated after resume + * P: Midwest Micro Soundbook Elite DX2/66 monochrome: screen blanking + * broken in BIOS [Reported by Garst R. Reese <reese@isn.net>] + * ?: AcerNote-950: oops on reading /proc/apm - workaround is a WIP + * Neale Banks <neale@lowendale.com.au> December 2000 + * + * Legend: U = unusable with APM patches + * P = partially usable with APM patches + */ + +/* + * Define as 1 to make the driver always call the APM BIOS busy + * routine even if the clock was not reported as slowed by the + * idle routine. Otherwise, define as 0. + */ +#define ALWAYS_CALL_BUSY 1 + +/* + * Define to make the APM BIOS calls zero all data segment registers (so + * that an incorrect BIOS implementation will cause a kernel panic if it + * tries to write to arbitrary memory). + */ +#define APM_ZERO_SEGS + +#include "apm.h" + +/* + * Define to make all _set_limit calls use 64k limits. The APM 1.1 BIOS is + * supposed to provide limit information that it recognizes. Many machines + * do this correctly, but many others do not restrict themselves to their + * claimed limit. When this happens, they will cause a segmentation + * violation in the kernel at boot time. Most BIOS's, however, will + * respect a 64k limit, so we use that. If you want to be pedantic and + * hold your BIOS to its claims, then undefine this. + */ +#define APM_RELAX_SEGMENTS + +/* + * Define to re-initialize the interrupt 0 timer to 100 Hz after a suspend. + * This patched by Chad Miller <cmiller@surfsouth.com>, original code by + * David Chen <chen@ctpa04.mit.edu> + */ +#undef INIT_TIMER_AFTER_SUSPEND + +#ifdef INIT_TIMER_AFTER_SUSPEND +#include <linux/timex.h> +#include <asm/io.h> +#include <linux/delay.h> +#endif + +/* + * Need to poll the APM BIOS every second + */ +#define APM_CHECK_TIMEOUT (HZ) + +/* + * Ignore suspend events for this amount of time after a resume + */ +#define DEFAULT_BOUNCE_INTERVAL (3 * HZ) + +/* + * Maximum number of events stored + */ +#define APM_MAX_EVENTS 20 + +/* + * The per-file APM data + */ +struct apm_user { + int magic; + struct apm_user * next; + int suser: 1; + int writer: 1; + int reader: 1; + int suspend_wait: 1; + int suspend_result; + int suspends_pending; + int standbys_pending; + int suspends_read; + int standbys_read; + int event_head; + int event_tail; + apm_event_t events[APM_MAX_EVENTS]; +}; + +/* + * The magic number in apm_user + */ +#define APM_BIOS_MAGIC 0x4101 + +/* + * idle percentage above which bios idle calls are done + */ +#ifdef CONFIG_APM_CPU_IDLE +#define DEFAULT_IDLE_THRESHOLD 95 +#else +#define DEFAULT_IDLE_THRESHOLD 100 +#endif +#define DEFAULT_IDLE_PERIOD (100 / 3) + +/* + * Local variables + */ +static struct { + unsigned long offset; + unsigned short segment; +} apm_bios_entry; +static int clock_slowed; +static int idle_threshold = DEFAULT_IDLE_THRESHOLD; +static int idle_period = DEFAULT_IDLE_PERIOD; +static int set_pm_idle; +static int suspends_pending; +static int standbys_pending; +static int ignore_sys_suspend; +static int ignore_normal_resume; +static int bounce_interval = DEFAULT_BOUNCE_INTERVAL; + +#ifdef CONFIG_APM_RTC_IS_GMT +# define clock_cmos_diff 0 +# define got_clock_diff 1 +#else +static long clock_cmos_diff; +static int got_clock_diff; +#endif +static int debug; +static int smp; +static int apm_disabled = -1; +#ifdef CONFIG_SMP +static int power_off; +#else +static int power_off = 1; +#endif +#ifdef CONFIG_APM_REAL_MODE_POWER_OFF +static int realmode_power_off = 1; +#else +static int realmode_power_off; +#endif +static int exit_kapmd; +static int kapmd_running; +#ifdef CONFIG_APM_ALLOW_INTS +static int allow_ints = 1; +#else +static int allow_ints; +#endif +static int broken_psr; + +static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); +static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); +static struct apm_user * user_list; +static DEFINE_SPINLOCK(user_list_lock); +static struct desc_struct bad_bios_desc = { 0, 0x00409200 }; + +static char driver_version[] = "1.16ac"; /* no spaces */ + +/* + * APM event names taken from the APM 1.2 specification. These are + * the message codes that the BIOS uses to tell us about events + */ +static char * apm_event_name[] = { + "system standby", + "system suspend", + "normal resume", + "critical resume", + "low battery", + "power status change", + "update time", + "critical suspend", + "user standby", + "user suspend", + "system standby resume", + "capabilities change" +}; +#define NR_APM_EVENT_NAME \ + (sizeof(apm_event_name) / sizeof(apm_event_name[0])) + +typedef struct lookup_t { + int key; + char * msg; +} lookup_t; + +/* + * The BIOS returns a set of standard error codes in AX when the + * carry flag is set. + */ + +static const lookup_t error_table[] = { +/* N/A { APM_SUCCESS, "Operation succeeded" }, */ + { APM_DISABLED, "Power management disabled" }, + { APM_CONNECTED, "Real mode interface already connected" }, + { APM_NOT_CONNECTED, "Interface not connected" }, + { APM_16_CONNECTED, "16 bit interface already connected" }, +/* N/A { APM_16_UNSUPPORTED, "16 bit interface not supported" }, */ + { APM_32_CONNECTED, "32 bit interface already connected" }, + { APM_32_UNSUPPORTED, "32 bit interface not supported" }, + { APM_BAD_DEVICE, "Unrecognized device ID" }, + { APM_BAD_PARAM, "Parameter out of range" }, + { APM_NOT_ENGAGED, "Interface not engaged" }, + { APM_BAD_FUNCTION, "Function not supported" }, + { APM_RESUME_DISABLED, "Resume timer disabled" }, + { APM_BAD_STATE, "Unable to enter requested state" }, +/* N/A { APM_NO_EVENTS, "No events pending" }, */ + { APM_NO_ERROR, "BIOS did not set a return code" }, + { APM_NOT_PRESENT, "No APM present" } +}; +#define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t)) + +/** + * apm_error - display an APM error + * @str: information string + * @err: APM BIOS return code + * + * Write a meaningful log entry to the kernel log in the event of + * an APM error. + */ + +static void apm_error(char *str, int err) +{ + int i; + + for (i = 0; i < ERROR_COUNT; i++) + if (error_table[i].key == err) break; + if (i < ERROR_COUNT) + printk(KERN_NOTICE "apm: %s: %s\n", str, error_table[i].msg); + else + printk(KERN_NOTICE "apm: %s: unknown error code %#2.2x\n", + str, err); +} + +/* + * Lock APM functionality to physical CPU 0 + */ + +#ifdef CONFIG_SMP + +static cpumask_t apm_save_cpus(void) +{ + cpumask_t x = current->cpus_allowed; + /* Some bioses don't like being called from CPU != 0 */ + set_cpus_allowed(current, cpumask_of_cpu(0)); + BUG_ON(smp_processor_id() != 0); + return x; +} + +static inline void apm_restore_cpus(cpumask_t mask) +{ + set_cpus_allowed(current, mask); +} + +#else + +/* + * No CPU lockdown needed on a uniprocessor + */ + +#define apm_save_cpus() (current->cpus_allowed) +#define apm_restore_cpus(x) (void)(x) + +#endif + +/* + * These are the actual BIOS calls. Depending on APM_ZERO_SEGS and + * apm_info.allow_ints, we are being really paranoid here! Not only + * are interrupts disabled, but all the segment registers (except SS) + * are saved and zeroed this means that if the BIOS tries to reference + * any data without explicitly loading the segment registers, the kernel + * will fault immediately rather than have some unforeseen circumstances + * for the rest of the kernel. And it will be very obvious! :-) Doing + * this depends on CS referring to the same physical memory as DS so that + * DS can be zeroed before the call. Unfortunately, we can't do anything + * about the stack segment/pointer. Also, we tell the compiler that + * everything could change. + * + * Also, we KNOW that for the non error case of apm_bios_call, there + * is no useful data returned in the low order 8 bits of eax. + */ +#define APM_DO_CLI \ + if (apm_info.allow_ints) \ + local_irq_enable(); \ + else \ + local_irq_disable(); + +#ifdef APM_ZERO_SEGS +# define APM_DECL_SEGS \ + unsigned int saved_fs; unsigned int saved_gs; +# define APM_DO_SAVE_SEGS \ + savesegment(fs, saved_fs); savesegment(gs, saved_gs) +# define APM_DO_RESTORE_SEGS \ + loadsegment(fs, saved_fs); loadsegment(gs, saved_gs) +#else +# define APM_DECL_SEGS +# define APM_DO_SAVE_SEGS +# define APM_DO_RESTORE_SEGS +#endif + +/** + * apm_bios_call - Make an APM BIOS 32bit call + * @func: APM function to execute + * @ebx_in: EBX register for call entry + * @ecx_in: ECX register for call entry + * @eax: EAX register return + * @ebx: EBX register return + * @ecx: ECX register return + * @edx: EDX register return + * @esi: ESI register return + * + * Make an APM call using the 32bit protected mode interface. The + * caller is responsible for knowing if APM BIOS is configured and + * enabled. This call can disable interrupts for a long period of + * time on some laptops. The return value is in AH and the carry + * flag is loaded into AL. If there is an error, then the error + * code is returned in AH (bits 8-15 of eax) and this function + * returns non-zero. + */ + +static u8 apm_bios_call(u32 func, u32 ebx_in, u32 ecx_in, + u32 *eax, u32 *ebx, u32 *ecx, u32 *edx, u32 *esi) +{ + APM_DECL_SEGS + unsigned long flags; + cpumask_t cpus; + int cpu; + struct desc_struct save_desc_40; + + cpus = apm_save_cpus(); + + cpu = get_cpu(); + save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8]; + get_cpu_gdt_table(cpu)[0x40 / 8] = bad_bios_desc; + + local_save_flags(flags); + APM_DO_CLI; + APM_DO_SAVE_SEGS; + apm_bios_call_asm(func, ebx_in, ecx_in, eax, ebx, ecx, edx, esi); + APM_DO_RESTORE_SEGS; + local_irq_restore(flags); + get_cpu_gdt_table(cpu)[0x40 / 8] = save_desc_40; + put_cpu(); + apm_restore_cpus(cpus); + + return *eax & 0xff; +} + +/** + * apm_bios_call_simple - make a simple APM BIOS 32bit call + * @func: APM function to invoke + * @ebx_in: EBX register value for BIOS call + * @ecx_in: ECX register value for BIOS call + * @eax: EAX register on return from the BIOS call + * + * Make a BIOS call that does only returns one value, or just status. + * If there is an error, then the error code is returned in AH + * (bits 8-15 of eax) and this function returns non-zero. This is + * used for simpler BIOS operations. This call may hold interrupts + * off for a long time on some laptops. + */ + +static u8 apm_bios_call_simple(u32 func, u32 ebx_in, u32 ecx_in, u32 *eax) +{ + u8 error; + APM_DECL_SEGS + unsigned long flags; + cpumask_t cpus; + int cpu; + struct desc_struct save_desc_40; + + + cpus = apm_save_cpus(); + + cpu = get_cpu(); + save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8]; + get_cpu_gdt_table(cpu)[0x40 / 8] = bad_bios_desc; + + local_save_flags(flags); + APM_DO_CLI; + APM_DO_SAVE_SEGS; + error = apm_bios_call_simple_asm(func, ebx_in, ecx_in, eax); + APM_DO_RESTORE_SEGS; + local_irq_restore(flags); + get_cpu_gdt_table(cpu)[0x40 / 8] = save_desc_40; + put_cpu(); + apm_restore_cpus(cpus); + return error; +} + +/** + * apm_driver_version - APM driver version + * @val: loaded with the APM version on return + * + * Retrieve the APM version supported by the BIOS. This is only + * supported for APM 1.1 or higher. An error indicates APM 1.0 is + * probably present. + * + * On entry val should point to a value indicating the APM driver + * version with the high byte being the major and the low byte the + * minor number both in BCD + * + * On return it will hold the BIOS revision supported in the + * same format. + */ + +static int apm_driver_version(u_short *val) +{ + u32 eax; + + if (apm_bios_call_simple(APM_FUNC_VERSION, 0, *val, &eax)) + return (eax >> 8) & 0xff; + *val = eax; + return APM_SUCCESS; +} + +/** + * apm_get_event - get an APM event from the BIOS + * @event: pointer to the event + * @info: point to the event information + * + * The APM BIOS provides a polled information for event + * reporting. The BIOS expects to be polled at least every second + * when events are pending. When a message is found the caller should + * poll until no more messages are present. However, this causes + * problems on some laptops where a suspend event notification is + * not cleared until it is acknowledged. + * + * Additional information is returned in the info pointer, providing + * that APM 1.2 is in use. If no messges are pending the value 0x80 + * is returned (No power management events pending). + */ + +static int apm_get_event(apm_event_t *event, apm_eventinfo_t *info) +{ + u32 eax; + u32 ebx; + u32 ecx; + u32 dummy; + + if (apm_bios_call(APM_FUNC_GET_EVENT, 0, 0, &eax, &ebx, &ecx, + &dummy, &dummy)) + return (eax >> 8) & 0xff; + *event = ebx; + if (apm_info.connection_version < 0x0102) + *info = ~0; /* indicate info not valid */ + else + *info = ecx; + return APM_SUCCESS; +} + +/** + * set_power_state - set the power management state + * @what: which items to transition + * @state: state to transition to + * + * Request an APM change of state for one or more system devices. The + * processor state must be transitioned last of all. what holds the + * class of device in the upper byte and the device number (0xFF for + * all) for the object to be transitioned. + * + * The state holds the state to transition to, which may in fact + * be an acceptance of a BIOS requested state change. + */ + +static int set_power_state(u_short what, u_short state) +{ + u32 eax; + + if (apm_bios_call_simple(APM_FUNC_SET_STATE, what, state, &eax)) + return (eax >> 8) & 0xff; + return APM_SUCCESS; +} + +/** + * set_system_power_state - set system wide power state + * @state: which state to enter + * + * Transition the entire system into a new APM power state. + */ + +static int set_system_power_state(u_short state) +{ + return set_power_state(APM_DEVICE_ALL, state); +} + +/** + * apm_do_idle - perform power saving + * + * This function notifies the BIOS that the processor is (in the view + * of the OS) idle. It returns -1 in the event that the BIOS refuses + * to handle the idle request. On a success the function returns 1 + * if the BIOS did clock slowing or 0 otherwise. + */ + +static int apm_do_idle(void) +{ + u32 eax; + + if (apm_bios_call_simple(APM_FUNC_IDLE, 0, 0, &eax)) { + static unsigned long t; + + /* This always fails on some SMP boards running UP kernels. + * Only report the failure the first 5 times. + */ + if (++t < 5) + { + printk(KERN_DEBUG "apm_do_idle failed (%d)\n", + (eax >> 8) & 0xff); + t = jiffies; + } + return -1; + } + clock_slowed = (apm_info.bios.flags & APM_IDLE_SLOWS_CLOCK) != 0; + return clock_slowed; +} + +/** + * apm_do_busy - inform the BIOS the CPU is busy + * + * Request that the BIOS brings the CPU back to full performance. + */ + +static void apm_do_busy(void) +{ + u32 dummy; + + if (clock_slowed || ALWAYS_CALL_BUSY) { + (void) apm_bios_call_simple(APM_FUNC_BUSY, 0, 0, &dummy); + clock_slowed = 0; + } +} + +/* + * If no process has really been interested in + * the CPU for some time, we want to call BIOS + * power management - we probably want + * to conserve power. + */ +#define IDLE_CALC_LIMIT (HZ * 100) +#define IDLE_LEAKY_MAX 16 + +static void (*original_pm_idle)(void); + +extern void default_idle(void); + +/** + * apm_cpu_idle - cpu idling for APM capable Linux + * + * This is the idling function the kernel executes when APM is available. It + * tries to do BIOS powermanagement based on the average system idle time. + * Furthermore it calls the system default idle routine. + */ + +static void apm_cpu_idle(void) +{ + static int use_apm_idle; /* = 0 */ + static unsigned int last_jiffies; /* = 0 */ + static unsigned int last_stime; /* = 0 */ + + int apm_idle_done = 0; + unsigned int jiffies_since_last_check = jiffies - last_jiffies; + unsigned int bucket; + +recalc: + if (jiffies_since_last_check > IDLE_CALC_LIMIT) { + use_apm_idle = 0; + last_jiffies = jiffies; + last_stime = current->stime; + } else if (jiffies_since_last_check > idle_period) { + unsigned int idle_percentage; + + idle_percentage = current->stime - last_stime; + idle_percentage *= 100; + idle_percentage /= jiffies_since_last_check; + use_apm_idle = (idle_percentage > idle_threshold); + if (apm_info.forbid_idle) + use_apm_idle = 0; + last_jiffies = jiffies; + last_stime = current->stime; + } + + bucket = IDLE_LEAKY_MAX; + + while (!need_resched()) { + if (use_apm_idle) { + unsigned int t; + + t = jiffies; + switch (apm_do_idle()) { + case 0: apm_idle_done = 1; + if (t != jiffies) { + if (bucket) { + bucket = IDLE_LEAKY_MAX; + continue; + } + } else if (bucket) { + bucket--; + continue; + } + break; + case 1: apm_idle_done = 1; + break; + default: /* BIOS refused */ + break; + } + } + if (original_pm_idle) + original_pm_idle(); + else + default_idle(); + jiffies_since_last_check = jiffies - last_jiffies; + if (jiffies_since_last_check > idle_period) + goto recalc; + } + + if (apm_idle_done) + apm_do_busy(); +} + +/** + * apm_power_off - ask the BIOS to power off + * + * Handle the power off sequence. This is the one piece of code we + * will execute even on SMP machines. In order to deal with BIOS + * bugs we support real mode APM BIOS power off calls. We also make + * the SMP call on CPU0 as some systems will only honour this call + * on their first cpu. + */ + +static void apm_power_off(void) +{ + unsigned char po_bios_call[] = { + 0xb8, 0x00, 0x10, /* movw $0x1000,ax */ + 0x8e, 0xd0, /* movw ax,ss */ + 0xbc, 0x00, 0xf0, /* movw $0xf000,sp */ + 0xb8, 0x07, 0x53, /* movw $0x5307,ax */ + 0xbb, 0x01, 0x00, /* movw $0x0001,bx */ + 0xb9, 0x03, 0x00, /* movw $0x0003,cx */ + 0xcd, 0x15 /* int $0x15 */ + }; + + /* + * This may be called on an SMP machine. + */ +#ifdef CONFIG_SMP + /* Some bioses don't like being called from CPU != 0 */ + set_cpus_allowed(current, cpumask_of_cpu(0)); + BUG_ON(smp_processor_id() != 0); +#endif + if (apm_info.realmode_power_off) + { + (void)apm_save_cpus(); + machine_real_restart(po_bios_call, sizeof(po_bios_call)); + } + else + (void) set_system_power_state(APM_STATE_OFF); +} + +#ifdef CONFIG_APM_DO_ENABLE + +/** + * apm_enable_power_management - enable BIOS APM power management + * @enable: enable yes/no + * + * Enable or disable the APM BIOS power services. + */ + +static int apm_enable_power_management(int enable) +{ + u32 eax; + + if ((enable == 0) && (apm_info.bios.flags & APM_BIOS_DISENGAGED)) + return APM_NOT_ENGAGED; + if (apm_bios_call_simple(APM_FUNC_ENABLE_PM, APM_DEVICE_BALL, + enable, &eax)) + return (eax >> 8) & 0xff; + if (enable) + apm_info.bios.flags &= ~APM_BIOS_DISABLED; + else + apm_info.bios.flags |= APM_BIOS_DISABLED; + return APM_SUCCESS; +} +#endif + +/** + * apm_get_power_status - get current power state + * @status: returned status + * @bat: battery info + * @life: estimated life + * + * Obtain the current power status from the APM BIOS. We return a + * status which gives the rough battery status, and current power + * source. The bat value returned give an estimate as a percentage + * of life and a status value for the battery. The estimated life + * if reported is a lifetime in secodnds/minutes at current powwer + * consumption. + */ + +static int apm_get_power_status(u_short *status, u_short *bat, u_short *life) +{ + u32 eax; + u32 ebx; + u32 ecx; + u32 edx; + u32 dummy; + + if (apm_info.get_power_status_broken) + return APM_32_UNSUPPORTED; + if (apm_bios_call(APM_FUNC_GET_STATUS, APM_DEVICE_ALL, 0, + &eax, &ebx, &ecx, &edx, &dummy)) + return (eax >> 8) & 0xff; + *status = ebx; + *bat = ecx; + if (apm_info.get_power_status_swabinminutes) { + *life = swab16((u16)edx); + *life |= 0x8000; + } else + *life = edx; + return APM_SUCCESS; +} + +#if 0 +static int apm_get_battery_status(u_short which, u_short *status, + u_short *bat, u_short *life, u_short *nbat) +{ + u32 eax; + u32 ebx; + u32 ecx; + u32 edx; + u32 esi; + + if (apm_info.connection_version < 0x0102) { + /* pretend we only have one battery. */ + if (which != 1) + return APM_BAD_DEVICE; + *nbat = 1; + return apm_get_power_status(status, bat, life); + } + + if (apm_bios_call(APM_FUNC_GET_STATUS, (0x8000 | (which)), 0, &eax, + &ebx, &ecx, &edx, &esi)) + return (eax >> 8) & 0xff; + *status = ebx; + *bat = ecx; + *life = edx; + *nbat = esi; + return APM_SUCCESS; +} +#endif + +/** + * apm_engage_power_management - enable PM on a device + * @device: identity of device + * @enable: on/off + * + * Activate or deactive power management on either a specific device + * or the entire system (%APM_DEVICE_ALL). + */ + +static int apm_engage_power_management(u_short device, int enable) +{ + u32 eax; + + if ((enable == 0) && (device == APM_DEVICE_ALL) + && (apm_info.bios.flags & APM_BIOS_DISABLED)) + return APM_DISABLED; + if (apm_bios_call_simple(APM_FUNC_ENGAGE_PM, device, enable, &eax)) + return (eax >> 8) & 0xff; + if (device == APM_DEVICE_ALL) { + if (enable) + apm_info.bios.flags &= ~APM_BIOS_DISENGAGED; + else + apm_info.bios.flags |= APM_BIOS_DISENGAGED; + } + return APM_SUCCESS; +} + +#if defined(CONFIG_APM_DISPLAY_BLANK) && defined(CONFIG_VT) + +/** + * apm_console_blank - blank the display + * @blank: on/off + * + * Attempt to blank the console, firstly by blanking just video device + * zero, and if that fails (some BIOSes don't support it) then it blanks + * all video devices. Typically the BIOS will do laptop backlight and + * monitor powerdown for us. + */ + +static int apm_console_blank(int blank) +{ + int error; + u_short state; + + state = blank ? APM_STATE_STANDBY : APM_STATE_READY; + /* Blank the first display device */ + error = set_power_state(0x100, state); + if ((error != APM_SUCCESS) && (error != APM_NO_ERROR)) { + /* try to blank them all instead */ + error = set_power_state(0x1ff, state); + if ((error != APM_SUCCESS) && (error != APM_NO_ERROR)) + /* try to blank device one instead */ + error = set_power_state(0x101, state); + } + if ((error == APM_SUCCESS) || (error == APM_NO_ERROR)) + return 1; + if (error == APM_NOT_ENGAGED) { + static int tried; + int eng_error; + if (tried++ == 0) { + eng_error = apm_engage_power_management(APM_DEVICE_ALL, 1); + if (eng_error) { + apm_error("set display", error); + apm_error("engage interface", eng_error); + return 0; + } else + return apm_console_blank(blank); + } + } + apm_error("set display", error); + return 0; +} +#endif + +static int queue_empty(struct apm_user *as) +{ + return as->event_head == as->event_tail; +} + +static apm_event_t get_queued_event(struct apm_user *as) +{ + as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; + return as->events[as->event_tail]; +} + +static void queue_event(apm_event_t event, struct apm_user *sender) +{ + struct apm_user * as; + + spin_lock(&user_list_lock); + if (user_list == NULL) + goto out; + for (as = user_list; as != NULL; as = as->next) { + if ((as == sender) || (!as->reader)) + continue; + as->event_head = (as->event_head + 1) % APM_MAX_EVENTS; + if (as->event_head == as->event_tail) { + static int notified; + + if (notified++ == 0) + printk(KERN_ERR "apm: an event queue overflowed\n"); + as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; + } + as->events[as->event_head] = event; + if ((!as->suser) || (!as->writer)) + continue; + switch (event) { + case APM_SYS_SUSPEND: + case APM_USER_SUSPEND: + as->suspends_pending++; + suspends_pending++; + break; + + case APM_SYS_STANDBY: + case APM_USER_STANDBY: + as->standbys_pending++; + standbys_pending++; + break; + } + } + wake_up_interruptible(&apm_waitqueue); +out: + spin_unlock(&user_list_lock); +} + +static void set_time(void) +{ + if (got_clock_diff) { /* Must know time zone in order to set clock */ + xtime.tv_sec = get_cmos_time() + clock_cmos_diff; + xtime.tv_nsec = 0; + } +} + +static void get_time_diff(void) +{ +#ifndef CONFIG_APM_RTC_IS_GMT + /* + * Estimate time zone so that set_time can update the clock + */ + clock_cmos_diff = -get_cmos_time(); + clock_cmos_diff += get_seconds(); + got_clock_diff = 1; +#endif +} + +static void reinit_timer(void) +{ +#ifdef INIT_TIMER_AFTER_SUSPEND + unsigned long flags; + extern spinlock_t i8253_lock; + + spin_lock_irqsave(&i8253_lock, flags); + /* set the clock to 100 Hz */ + outb_p(0x34, PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */ + udelay(10); + outb_p(LATCH & 0xff, PIT_CH0); /* LSB */ + udelay(10); + outb(LATCH >> 8, PIT_CH0); /* MSB */ + udelay(10); + spin_unlock_irqrestore(&i8253_lock, flags); +#endif +} + +static int suspend(int vetoable) +{ + int err; + struct apm_user *as; + + if (pm_send_all(PM_SUSPEND, (void *)3)) { + /* Vetoed */ + if (vetoable) { + if (apm_info.connection_version > 0x100) + set_system_power_state(APM_STATE_REJECT); + err = -EBUSY; + ignore_sys_suspend = 0; + printk(KERN_WARNING "apm: suspend was vetoed.\n"); + goto out; + } + printk(KERN_CRIT "apm: suspend was vetoed, but suspending anyway.\n"); + } + + device_suspend(PMSG_SUSPEND); + local_irq_disable(); + device_power_down(PMSG_SUSPEND); + + /* serialize with the timer interrupt */ + write_seqlock(&xtime_lock); + + /* protect against access to timer chip registers */ + spin_lock(&i8253_lock); + + get_time_diff(); + /* + * Irq spinlock must be dropped around set_system_power_state. + * We'll undo any timer changes due to interrupts below. + */ + spin_unlock(&i8253_lock); + write_sequnlock(&xtime_lock); + local_irq_enable(); + + save_processor_state(); + err = set_system_power_state(APM_STATE_SUSPEND); + ignore_normal_resume = 1; + restore_processor_state(); + + local_irq_disable(); + write_seqlock(&xtime_lock); + spin_lock(&i8253_lock); + reinit_timer(); + set_time(); + + spin_unlock(&i8253_lock); + write_sequnlock(&xtime_lock); + + if (err == APM_NO_ERROR) + err = APM_SUCCESS; + if (err != APM_SUCCESS) + apm_error("suspend", err); + err = (err == APM_SUCCESS) ? 0 : -EIO; + device_power_up(); + local_irq_enable(); + device_resume(); + pm_send_all(PM_RESUME, (void *)0); + queue_event(APM_NORMAL_RESUME, NULL); + out: + spin_lock(&user_list_lock); + for (as = user_list; as != NULL; as = as->next) { + as->suspend_wait = 0; + as->suspend_result = err; + } + spin_unlock(&user_list_lock); + wake_up_interruptible(&apm_suspend_waitqueue); + return err; +} + +static void standby(void) +{ + int err; + + local_irq_disable(); + device_power_down(PMSG_SUSPEND); + /* serialize with the timer interrupt */ + write_seqlock(&xtime_lock); + /* If needed, notify drivers here */ + get_time_diff(); + write_sequnlock(&xtime_lock); + local_irq_enable(); + + err = set_system_power_state(APM_STATE_STANDBY); + if ((err != APM_SUCCESS) && (err != APM_NO_ERROR)) + apm_error("standby", err); + + local_irq_disable(); + device_power_up(); + local_irq_enable(); +} + +static apm_event_t get_event(void) +{ + int error; + apm_event_t event; + apm_eventinfo_t info; + + static int notified; + + /* we don't use the eventinfo */ + error = apm_get_event(&event, &info); + if (error == APM_SUCCESS) + return event; + + if ((error != APM_NO_EVENTS) && (notified++ == 0)) + apm_error("get_event", error); + + return 0; +} + +static void check_events(void) +{ + apm_event_t event; + static unsigned long last_resume; + static int ignore_bounce; + + while ((event = get_event()) != 0) { + if (debug) { + if (event <= NR_APM_EVENT_NAME) + printk(KERN_DEBUG "apm: received %s notify\n", + apm_event_name[event - 1]); + else + printk(KERN_DEBUG "apm: received unknown " + "event 0x%02x\n", event); + } + if (ignore_bounce + && ((jiffies - last_resume) > bounce_interval)) + ignore_bounce = 0; + + switch (event) { + case APM_SYS_STANDBY: + case APM_USER_STANDBY: + queue_event(event, NULL); + if (standbys_pending <= 0) + standby(); + break; + + case APM_USER_SUSPEND: +#ifdef CONFIG_APM_IGNORE_USER_SUSPEND + if (apm_info.connection_version > 0x100) + set_system_power_state(APM_STATE_REJECT); + break; +#endif + case APM_SYS_SUSPEND: + if (ignore_bounce) { + if (apm_info.connection_version > 0x100) + set_system_power_state(APM_STATE_REJECT); + break; + } + /* + * If we are already processing a SUSPEND, + * then further SUSPEND events from the BIOS + * will be ignored. We also return here to + * cope with the fact that the Thinkpads keep + * sending a SUSPEND event until something else + * happens! + */ + if (ignore_sys_suspend) + return; + ignore_sys_suspend = 1; + queue_event(event, NULL); + if (suspends_pending <= 0) + (void) suspend(1); + break; + + case APM_NORMAL_RESUME: + case APM_CRITICAL_RESUME: + case APM_STANDBY_RESUME: + ignore_sys_suspend = 0; + last_resume = jiffies; + ignore_bounce = 1; + if ((event != APM_NORMAL_RESUME) + || (ignore_normal_resume == 0)) { + write_seqlock_irq(&xtime_lock); + set_time(); + write_sequnlock_irq(&xtime_lock); + device_resume(); + pm_send_all(PM_RESUME, (void *)0); + queue_event(event, NULL); + } + ignore_normal_resume = 0; + break; + + case APM_CAPABILITY_CHANGE: + case APM_LOW_BATTERY: + case APM_POWER_STATUS_CHANGE: + queue_event(event, NULL); + /* If needed, notify drivers here */ + break; + + case APM_UPDATE_TIME: + write_seqlock_irq(&xtime_lock); + set_time(); + write_sequnlock_irq(&xtime_lock); + break; + + case APM_CRITICAL_SUSPEND: + /* + * We are not allowed to reject a critical suspend. + */ + (void) suspend(0); + break; + } + } +} + +static void apm_event_handler(void) +{ + static int pending_count = 4; + int err; + + if ((standbys_pending > 0) || (suspends_pending > 0)) { + if ((apm_info.connection_version > 0x100) && + (pending_count-- <= 0)) { + pending_count = 4; + if (debug) + printk(KERN_DEBUG "apm: setting state busy\n"); + err = set_system_power_state(APM_STATE_BUSY); + if (err) + apm_error("busy", err); + } + } else + pending_count = 4; + check_events(); +} + +/* + * This is the APM thread main loop. + */ + +static void apm_mainloop(void) +{ + DECLARE_WAITQUEUE(wait, current); + + add_wait_queue(&apm_waitqueue, &wait); + set_current_state(TASK_INTERRUPTIBLE); + for (;;) { + schedule_timeout(APM_CHECK_TIMEOUT); + if (exit_kapmd) + break; + /* + * Ok, check all events, check for idle (and mark us sleeping + * so as not to count towards the load average).. + */ + set_current_state(TASK_INTERRUPTIBLE); + apm_event_handler(); + } + remove_wait_queue(&apm_waitqueue, &wait); +} + +static int check_apm_user(struct apm_user *as, const char *func) +{ + if ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) { + printk(KERN_ERR "apm: %s passed bad filp\n", func); + return 1; + } + return 0; +} + +static ssize_t do_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos) +{ + struct apm_user * as; + int i; + apm_event_t event; + + as = fp->private_data; + if (check_apm_user(as, "read")) + return -EIO; + if ((int)count < sizeof(apm_event_t)) + return -EINVAL; + if ((queue_empty(as)) && (fp->f_flags & O_NONBLOCK)) + return -EAGAIN; + wait_event_interruptible(apm_waitqueue, !queue_empty(as)); + i = count; + while ((i >= sizeof(event)) && !queue_empty(as)) { + event = get_queued_event(as); + if (copy_to_user(buf, &event, sizeof(event))) { + if (i < count) + break; + return -EFAULT; + } + switch (event) { + case APM_SYS_SUSPEND: + case APM_USER_SUSPEND: + as->suspends_read++; + break; + + case APM_SYS_STANDBY: + case APM_USER_STANDBY: + as->standbys_read++; + break; + } + buf += sizeof(event); + i -= sizeof(event); + } + if (i < count) + return count - i; + if (signal_pending(current)) + return -ERESTARTSYS; + return 0; +} + +static unsigned int do_poll(struct file *fp, poll_table * wait) +{ + struct apm_user * as; + + as = fp->private_data; + if (check_apm_user(as, "poll")) + return 0; + poll_wait(fp, &apm_waitqueue, wait); + if (!queue_empty(as)) + return POLLIN | POLLRDNORM; + return 0; +} + +static int do_ioctl(struct inode * inode, struct file *filp, + u_int cmd, u_long arg) +{ + struct apm_user * as; + + as = filp->private_data; + if (check_apm_user(as, "ioctl")) + return -EIO; + if ((!as->suser) || (!as->writer)) + return -EPERM; + switch (cmd) { + case APM_IOC_STANDBY: + if (as->standbys_read > 0) { + as->standbys_read--; + as->standbys_pending--; + standbys_pending--; + } else + queue_event(APM_USER_STANDBY, as); + if (standbys_pending <= 0) + standby(); + break; + case APM_IOC_SUSPEND: + if (as->suspends_read > 0) { + as->suspends_read--; + as->suspends_pending--; + suspends_pending--; + } else + queue_event(APM_USER_SUSPEND, as); + if (suspends_pending <= 0) { + return suspend(1); + } else { + as->suspend_wait = 1; + wait_event_interruptible(apm_suspend_waitqueue, + as->suspend_wait == 0); + return as->suspend_result; + } + break; + default: + return -EINVAL; + } + return 0; +} + +static int do_release(struct inode * inode, struct file * filp) +{ + struct apm_user * as; + + as = filp->private_data; + if (check_apm_user(as, "release")) + return 0; + filp->private_data = NULL; + if (as->standbys_pending > 0) { + standbys_pending -= as->standbys_pending; + if (standbys_pending <= 0) + standby(); + } + if (as->suspends_pending > 0) { + suspends_pending -= as->suspends_pending; + if (suspends_pending <= 0) + (void) suspend(1); + } + spin_lock(&user_list_lock); + if (user_list == as) + user_list = as->next; + else { + struct apm_user * as1; + + for (as1 = user_list; + (as1 != NULL) && (as1->next != as); + as1 = as1->next) + ; + if (as1 == NULL) + printk(KERN_ERR "apm: filp not in user list\n"); + else + as1->next = as->next; + } + spin_unlock(&user_list_lock); + kfree(as); + return 0; +} + +static int do_open(struct inode * inode, struct file * filp) +{ + struct apm_user * as; + + as = (struct apm_user *)kmalloc(sizeof(*as), GFP_KERNEL); + if (as == NULL) { + printk(KERN_ERR "apm: cannot allocate struct of size %d bytes\n", + sizeof(*as)); + return -ENOMEM; + } + as->magic = APM_BIOS_MAGIC; + as->event_tail = as->event_head = 0; + as->suspends_pending = as->standbys_pending = 0; + as->suspends_read = as->standbys_read = 0; + /* + * XXX - this is a tiny bit broken, when we consider BSD + * process accounting. If the device is opened by root, we + * instantly flag that we used superuser privs. Who knows, + * we might close the device immediately without doing a + * privileged operation -- cevans + */ + as->suser = capable(CAP_SYS_ADMIN); + as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; + as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; + spin_lock(&user_list_lock); + as->next = user_list; + user_list = as; + spin_unlock(&user_list_lock); + filp->private_data = as; + return 0; +} + +static int apm_get_info(char *buf, char **start, off_t fpos, int length) +{ + char * p; + unsigned short bx; + unsigned short cx; + unsigned short dx; + int error; + unsigned short ac_line_status = 0xff; + unsigned short battery_status = 0xff; + unsigned short battery_flag = 0xff; + int percentage = -1; + int time_units = -1; + char *units = "?"; + + p = buf; + + if ((num_online_cpus() == 1) && + !(error = apm_get_power_status(&bx, &cx, &dx))) { + ac_line_status = (bx >> 8) & 0xff; + battery_status = bx & 0xff; + if ((cx & 0xff) != 0xff) + percentage = cx & 0xff; + + if (apm_info.connection_version > 0x100) { + battery_flag = (cx >> 8) & 0xff; + if (dx != 0xffff) { + units = (dx & 0x8000) ? "min" : "sec"; + time_units = dx & 0x7fff; + } + } + } + /* Arguments, with symbols from linux/apm_bios.h. Information is + from the Get Power Status (0x0a) call unless otherwise noted. + + 0) Linux driver version (this will change if format changes) + 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2. + 2) APM flags from APM Installation Check (0x00): + bit 0: APM_16_BIT_SUPPORT + bit 1: APM_32_BIT_SUPPORT + bit 2: APM_IDLE_SLOWS_CLOCK + bit 3: APM_BIOS_DISABLED + bit 4: APM_BIOS_DISENGAGED + 3) AC line status + 0x00: Off-line + 0x01: On-line + 0x02: On backup power (BIOS >= 1.1 only) + 0xff: Unknown + 4) Battery status + 0x00: High + 0x01: Low + 0x02: Critical + 0x03: Charging + 0x04: Selected battery not present (BIOS >= 1.2 only) + 0xff: Unknown + 5) Battery flag + bit 0: High + bit 1: Low + bit 2: Critical + bit 3: Charging + bit 7: No system battery + 0xff: Unknown + 6) Remaining battery life (percentage of charge): + 0-100: valid + -1: Unknown + 7) Remaining battery life (time units): + Number of remaining minutes or seconds + -1: Unknown + 8) min = minutes; sec = seconds */ + + p += sprintf(p, "%s %d.%d 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", + driver_version, + (apm_info.bios.version >> 8) & 0xff, + apm_info.bios.version & 0xff, + apm_info.bios.flags, + ac_line_status, + battery_status, + battery_flag, + percentage, + time_units, + units); + + return p - buf; +} + +static int apm(void *unused) +{ + unsigned short bx; + unsigned short cx; + unsigned short dx; + int error; + char * power_stat; + char * bat_stat; + + kapmd_running = 1; + + daemonize("kapmd"); + + current->flags |= PF_NOFREEZE; + +#ifdef CONFIG_SMP + /* 2002/08/01 - WT + * This is to avoid random crashes at boot time during initialization + * on SMP systems in case of "apm=power-off" mode. Seen on ASUS A7M266D. + * Some bioses don't like being called from CPU != 0. + * Method suggested by Ingo Molnar. + */ + set_cpus_allowed(current, cpumask_of_cpu(0)); + BUG_ON(smp_processor_id() != 0); +#endif + + if (apm_info.connection_version == 0) { + apm_info.connection_version = apm_info.bios.version; + if (apm_info.connection_version > 0x100) { + /* + * We only support BIOSs up to version 1.2 + */ + if (apm_info.connection_version > 0x0102) + apm_info.connection_version = 0x0102; + error = apm_driver_version(&apm_info.connection_version); + if (error != APM_SUCCESS) { + apm_error("driver version", error); + /* Fall back to an APM 1.0 connection. */ + apm_info.connection_version = 0x100; + } + } + } + + if (debug) + printk(KERN_INFO "apm: Connection version %d.%d\n", + (apm_info.connection_version >> 8) & 0xff, + apm_info.connection_version & 0xff); + +#ifdef CONFIG_APM_DO_ENABLE + if (apm_info.bios.flags & APM_BIOS_DISABLED) { + /* + * This call causes my NEC UltraLite Versa 33/C to hang if it + * is booted with PM disabled but not in the docking station. + * Unfortunate ... + */ + error = apm_enable_power_management(1); + if (error) { + apm_error("enable power management", error); + return -1; + } + } +#endif + + if ((apm_info.bios.flags & APM_BIOS_DISENGAGED) + && (apm_info.connection_version > 0x0100)) { + error = apm_engage_power_management(APM_DEVICE_ALL, 1); + if (error) { + apm_error("engage power management", error); + return -1; + } + } + + if (debug && (num_online_cpus() == 1 || smp )) { + error = apm_get_power_status(&bx, &cx, &dx); + if (error) + printk(KERN_INFO "apm: power status not available\n"); + else { + switch ((bx >> 8) & 0xff) { + case 0: power_stat = "off line"; break; + case 1: power_stat = "on line"; break; + case 2: power_stat = "on backup power"; break; + default: power_stat = "unknown"; break; + } + switch (bx & 0xff) { + case 0: bat_stat = "high"; break; + case 1: bat_stat = "low"; break; + case 2: bat_stat = "critical"; break; + case 3: bat_stat = "charging"; break; + default: bat_stat = "unknown"; break; + } + printk(KERN_INFO + "apm: AC %s, battery status %s, battery life ", + power_stat, bat_stat); + if ((cx & 0xff) == 0xff) + printk("unknown\n"); + else + printk("%d%%\n", cx & 0xff); + if (apm_info.connection_version > 0x100) { + printk(KERN_INFO + "apm: battery flag 0x%02x, battery life ", + (cx >> 8) & 0xff); + if (dx == 0xffff) + printk("unknown\n"); + else + printk("%d %s\n", dx & 0x7fff, + (dx & 0x8000) ? + "minutes" : "seconds"); + } + } + } + + /* Install our power off handler.. */ + if (power_off) + pm_power_off = apm_power_off; + + if (num_online_cpus() == 1 || smp) { +#if defined(CONFIG_APM_DISPLAY_BLANK) && defined(CONFIG_VT) + console_blank_hook = apm_console_blank; +#endif + apm_mainloop(); +#if defined(CONFIG_APM_DISPLAY_BLANK) && defined(CONFIG_VT) + console_blank_hook = NULL; +#endif + } + kapmd_running = 0; + + return 0; +} + +#ifndef MODULE +static int __init apm_setup(char *str) +{ + int invert; + + while ((str != NULL) && (*str != '\0')) { + if (strncmp(str, "off", 3) == 0) + apm_disabled = 1; + if (strncmp(str, "on", 2) == 0) + apm_disabled = 0; + if ((strncmp(str, "bounce-interval=", 16) == 0) || + (strncmp(str, "bounce_interval=", 16) == 0)) + bounce_interval = simple_strtol(str + 16, NULL, 0); + if ((strncmp(str, "idle-threshold=", 15) == 0) || + (strncmp(str, "idle_threshold=", 15) == 0)) + idle_threshold = simple_strtol(str + 15, NULL, 0); + if ((strncmp(str, "idle-period=", 12) == 0) || + (strncmp(str, "idle_period=", 12) == 0)) + idle_period = simple_strtol(str + 12, NULL, 0); + invert = (strncmp(str, "no-", 3) == 0) || + (strncmp(str, "no_", 3) == 0); + if (invert) + str += 3; + if (strncmp(str, "debug", 5) == 0) + debug = !invert; + if ((strncmp(str, "power-off", 9) == 0) || + (strncmp(str, "power_off", 9) == 0)) + power_off = !invert; + if (strncmp(str, "smp", 3) == 0) + { + smp = !invert; + idle_threshold = 100; + } + if ((strncmp(str, "allow-ints", 10) == 0) || + (strncmp(str, "allow_ints", 10) == 0)) + apm_info.allow_ints = !invert; + if ((strncmp(str, "broken-psr", 10) == 0) || + (strncmp(str, "broken_psr", 10) == 0)) + apm_info.get_power_status_broken = !invert; + if ((strncmp(str, "realmode-power-off", 18) == 0) || + (strncmp(str, "realmode_power_off", 18) == 0)) + apm_info.realmode_power_off = !invert; + str = strchr(str, ','); + if (str != NULL) + str += strspn(str, ", \t"); + } + return 1; +} + +__setup("apm=", apm_setup); +#endif + +static struct file_operations apm_bios_fops = { + .owner = THIS_MODULE, + .read = do_read, + .poll = do_poll, + .ioctl = do_ioctl, + .open = do_open, + .release = do_release, +}; + +static struct miscdevice apm_device = { + APM_MINOR_DEV, + "apm_bios", + &apm_bios_fops +}; + + +/* Simple "print if true" callback */ +static int __init print_if_true(struct dmi_system_id *d) +{ + printk("%s\n", d->ident); + return 0; +} + +/* + * Some Bioses enable the PS/2 mouse (touchpad) at resume, even if it was + * disabled before the suspend. Linux used to get terribly confused by that. + */ +static int __init broken_ps2_resume(struct dmi_system_id *d) +{ + printk(KERN_INFO "%s machine detected. Mousepad Resume Bug workaround hopefully not needed.\n", d->ident); + return 0; +} + +/* Some bioses have a broken protected mode poweroff and need to use realmode */ +static int __init set_realmode_power_off(struct dmi_system_id *d) +{ + if (apm_info.realmode_power_off == 0) { + apm_info.realmode_power_off = 1; + printk(KERN_INFO "%s bios detected. Using realmode poweroff only.\n", d->ident); + } + return 0; +} + +/* Some laptops require interrupts to be enabled during APM calls */ +static int __init set_apm_ints(struct dmi_system_id *d) +{ + if (apm_info.allow_ints == 0) { + apm_info.allow_ints = 1; + printk(KERN_INFO "%s machine detected. Enabling interrupts during APM calls.\n", d->ident); + } + return 0; +} + +/* Some APM bioses corrupt memory or just plain do not work */ +static int __init apm_is_horked(struct dmi_system_id *d) +{ + if (apm_info.disabled == 0) { + apm_info.disabled = 1; + printk(KERN_INFO "%s machine detected. Disabling APM.\n", d->ident); + } + return 0; +} + +static int __init apm_is_horked_d850md(struct dmi_system_id *d) +{ + if (apm_info.disabled == 0) { + apm_info.disabled = 1; + printk(KERN_INFO "%s machine detected. Disabling APM.\n", d->ident); + printk(KERN_INFO "This bug is fixed in bios P15 which is available for \n"); + printk(KERN_INFO "download from support.intel.com \n"); + } + return 0; +} + +/* Some APM bioses hang on APM idle calls */ +static int __init apm_likes_to_melt(struct dmi_system_id *d) +{ + if (apm_info.forbid_idle == 0) { + apm_info.forbid_idle = 1; + printk(KERN_INFO "%s machine detected. Disabling APM idle calls.\n", d->ident); + } + return 0; +} + +/* + * Check for clue free BIOS implementations who use + * the following QA technique + * + * [ Write BIOS Code ]<------ + * | ^ + * < Does it Compile >----N-- + * |Y ^ + * < Does it Boot Win98 >-N-- + * |Y + * [Ship It] + * + * Phoenix A04 08/24/2000 is known bad (Dell Inspiron 5000e) + * Phoenix A07 09/29/2000 is known good (Dell Inspiron 5000) + */ +static int __init broken_apm_power(struct dmi_system_id *d) +{ + apm_info.get_power_status_broken = 1; + printk(KERN_WARNING "BIOS strings suggest APM bugs, disabling power status reporting.\n"); + return 0; +} + +/* + * This bios swaps the APM minute reporting bytes over (Many sony laptops + * have this problem). + */ +static int __init swab_apm_power_in_minutes(struct dmi_system_id *d) +{ + apm_info.get_power_status_swabinminutes = 1; + printk(KERN_WARNING "BIOS strings suggest APM reports battery life in minutes and wrong byte order.\n"); + return 0; +} + +static struct dmi_system_id __initdata apm_dmi_table[] = { + { + print_if_true, + KERN_WARNING "IBM T23 - BIOS 1.03b+ and controller firmware 1.02+ may be needed for Linux APM.", + { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, "1AET38WW (1.01b)"), }, + }, + { /* Handle problems with APM on the C600 */ + broken_ps2_resume, "Dell Latitude C600", + { DMI_MATCH(DMI_SYS_VENDOR, "Dell"), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude C600"), }, + }, + { /* Allow interrupts during suspend on Dell Latitude laptops*/ + set_apm_ints, "Dell Latitude", + { DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude C510"), } + }, + { /* APM crashes */ + apm_is_horked, "Dell Inspiron 2500", + { DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 2500"), + DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION,"A11"), }, + }, + { /* Allow interrupts during suspend on Dell Inspiron laptops*/ + set_apm_ints, "Dell Inspiron", { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 4000"), }, + }, + { /* Handle problems with APM on Inspiron 5000e */ + broken_apm_power, "Dell Inspiron 5000e", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "A04"), + DMI_MATCH(DMI_BIOS_DATE, "08/24/2000"), }, + }, + { /* Handle problems with APM on Inspiron 2500 */ + broken_apm_power, "Dell Inspiron 2500", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "A12"), + DMI_MATCH(DMI_BIOS_DATE, "02/04/2002"), }, + }, + { /* APM crashes */ + apm_is_horked, "Dell Dimension 4100", + { DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "XPS-Z"), + DMI_MATCH(DMI_BIOS_VENDOR,"Intel Corp."), + DMI_MATCH(DMI_BIOS_VERSION,"A11"), }, + }, + { /* Allow interrupts during suspend on Compaq Laptops*/ + set_apm_ints, "Compaq 12XL125", + { DMI_MATCH(DMI_SYS_VENDOR, "Compaq"), + DMI_MATCH(DMI_PRODUCT_NAME, "Compaq PC"), + DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION,"4.06"), }, + }, + { /* Allow interrupts during APM or the clock goes slow */ + set_apm_ints, "ASUSTeK", + { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "L8400K series Notebook PC"), }, + }, + { /* APM blows on shutdown */ + apm_is_horked, "ABIT KX7-333[R]", + { DMI_MATCH(DMI_BOARD_VENDOR, "ABIT"), + DMI_MATCH(DMI_BOARD_NAME, "VT8367-8233A (KX7-333[R])"), }, + }, + { /* APM crashes */ + apm_is_horked, "Trigem Delhi3", + { DMI_MATCH(DMI_SYS_VENDOR, "TriGem Computer, Inc"), + DMI_MATCH(DMI_PRODUCT_NAME, "Delhi3"), }, + }, + { /* APM crashes */ + apm_is_horked, "Fujitsu-Siemens", + { DMI_MATCH(DMI_BIOS_VENDOR, "hoenix/FUJITSU SIEMENS"), + DMI_MATCH(DMI_BIOS_VERSION, "Version1.01"), }, + }, + { /* APM crashes */ + apm_is_horked_d850md, "Intel D850MD", + { DMI_MATCH(DMI_BIOS_VENDOR, "Intel Corp."), + DMI_MATCH(DMI_BIOS_VERSION, "MV85010A.86A.0016.P07.0201251536"), }, + }, + { /* APM crashes */ + apm_is_horked, "Intel D810EMO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Intel Corp."), + DMI_MATCH(DMI_BIOS_VERSION, "MO81010A.86A.0008.P04.0004170800"), }, + }, + { /* APM crashes */ + apm_is_horked, "Dell XPS-Z", + { DMI_MATCH(DMI_BIOS_VENDOR, "Intel Corp."), + DMI_MATCH(DMI_BIOS_VERSION, "A11"), + DMI_MATCH(DMI_PRODUCT_NAME, "XPS-Z"), }, + }, + { /* APM crashes */ + apm_is_horked, "Sharp PC-PJ/AX", + { DMI_MATCH(DMI_SYS_VENDOR, "SHARP"), + DMI_MATCH(DMI_PRODUCT_NAME, "PC-PJ/AX"), + DMI_MATCH(DMI_BIOS_VENDOR,"SystemSoft"), + DMI_MATCH(DMI_BIOS_VERSION,"Version R2.08"), }, + }, + { /* APM crashes */ + apm_is_horked, "Dell Inspiron 2500", + { DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 2500"), + DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION,"A11"), }, + }, + { /* APM idle hangs */ + apm_likes_to_melt, "Jabil AMD", + { DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), + DMI_MATCH(DMI_BIOS_VERSION, "0AASNP06"), }, + }, + { /* APM idle hangs */ + apm_likes_to_melt, "AMI Bios", + { DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), + DMI_MATCH(DMI_BIOS_VERSION, "0AASNP05"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-N505X(DE) */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0206H"), + DMI_MATCH(DMI_BIOS_DATE, "08/23/99"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-N505VX */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "W2K06H0"), + DMI_MATCH(DMI_BIOS_DATE, "02/03/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-XG29 */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0117A0"), + DMI_MATCH(DMI_BIOS_DATE, "04/25/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z600NE */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0121Z1"), + DMI_MATCH(DMI_BIOS_DATE, "05/11/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z600NE */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "WME01Z1"), + DMI_MATCH(DMI_BIOS_DATE, "08/11/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z600LEK(DE) */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0206Z3"), + DMI_MATCH(DMI_BIOS_DATE, "12/25/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z505LS */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0203D0"), + DMI_MATCH(DMI_BIOS_DATE, "05/12/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z505LS */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0203Z3"), + DMI_MATCH(DMI_BIOS_DATE, "08/25/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-Z505LS (with updated BIOS) */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0209Z3"), + DMI_MATCH(DMI_BIOS_DATE, "05/12/01"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-F104K */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0204K2"), + DMI_MATCH(DMI_BIOS_DATE, "08/28/00"), }, + }, + + { /* Handle problems with APM on Sony Vaio PCG-C1VN/C1VE */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0208P1"), + DMI_MATCH(DMI_BIOS_DATE, "11/09/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-C1VE */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "R0204P1"), + DMI_MATCH(DMI_BIOS_DATE, "09/12/00"), }, + }, + { /* Handle problems with APM on Sony Vaio PCG-C1VE */ + swab_apm_power_in_minutes, "Sony VAIO", + { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "WXPO1Z3"), + DMI_MATCH(DMI_BIOS_DATE, "10/26/01"), }, + }, + { /* broken PM poweroff bios */ + set_realmode_power_off, "Award Software v4.60 PGMA", + { DMI_MATCH(DMI_BIOS_VENDOR, "Award Software International, Inc."), + DMI_MATCH(DMI_BIOS_VERSION, "4.60 PGMA"), + DMI_MATCH(DMI_BIOS_DATE, "134526184"), }, + }, + + /* Generic per vendor APM settings */ + + { /* Allow interrupts during suspend on IBM laptops */ + set_apm_ints, "IBM", + { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), }, + }, + + { } +}; + +/* + * Just start the APM thread. We do NOT want to do APM BIOS + * calls from anything but the APM thread, if for no other reason + * than the fact that we don't trust the APM BIOS. This way, + * most common APM BIOS problems that lead to protection errors + * etc will have at least some level of being contained... + * + * In short, if something bad happens, at least we have a choice + * of just killing the apm thread.. + */ +static int __init apm_init(void) +{ + struct proc_dir_entry *apm_proc; + int ret; + int i; + + dmi_check_system(apm_dmi_table); + + if (apm_info.bios.version == 0) { + printk(KERN_INFO "apm: BIOS not found.\n"); + return -ENODEV; + } + printk(KERN_INFO + "apm: BIOS version %d.%d Flags 0x%02x (Driver version %s)\n", + ((apm_info.bios.version >> 8) & 0xff), + (apm_info.bios.version & 0xff), + apm_info.bios.flags, + driver_version); + if ((apm_info.bios.flags & APM_32_BIT_SUPPORT) == 0) { + printk(KERN_INFO "apm: no 32 bit BIOS support\n"); + return -ENODEV; + } + + if (allow_ints) + apm_info.allow_ints = 1; + if (broken_psr) + apm_info.get_power_status_broken = 1; + if (realmode_power_off) + apm_info.realmode_power_off = 1; + /* User can override, but default is to trust DMI */ + if (apm_disabled != -1) + apm_info.disabled = apm_disabled; + + /* + * Fix for the Compaq Contura 3/25c which reports BIOS version 0.1 + * but is reportedly a 1.0 BIOS. + */ + if (apm_info.bios.version == 0x001) + apm_info.bios.version = 0x100; + + /* BIOS < 1.2 doesn't set cseg_16_len */ + if (apm_info.bios.version < 0x102) + apm_info.bios.cseg_16_len = 0; /* 64k */ + + if (debug) { + printk(KERN_INFO "apm: entry %x:%lx cseg16 %x dseg %x", + apm_info.bios.cseg, apm_info.bios.offset, + apm_info.bios.cseg_16, apm_info.bios.dseg); + if (apm_info.bios.version > 0x100) + printk(" cseg len %x, dseg len %x", + apm_info.bios.cseg_len, + apm_info.bios.dseg_len); + if (apm_info.bios.version > 0x101) + printk(" cseg16 len %x", apm_info.bios.cseg_16_len); + printk("\n"); + } + + if (apm_info.disabled) { + printk(KERN_NOTICE "apm: disabled on user request.\n"); + return -ENODEV; + } + if ((num_online_cpus() > 1) && !power_off && !smp) { + printk(KERN_NOTICE "apm: disabled - APM is not SMP safe.\n"); + apm_info.disabled = 1; + return -ENODEV; + } + if (PM_IS_ACTIVE()) { + printk(KERN_NOTICE "apm: overridden by ACPI.\n"); + apm_info.disabled = 1; + return -ENODEV; + } + pm_active = 1; + + /* + * Set up a segment that references the real mode segment 0x40 + * that extends up to the end of page zero (that we have reserved). + * This is for buggy BIOS's that refer to (real mode) segment 0x40 + * even though they are called in protected mode. + */ + set_base(bad_bios_desc, __va((unsigned long)0x40 << 4)); + _set_limit((char *)&bad_bios_desc, 4095 - (0x40 << 4)); + + apm_bios_entry.offset = apm_info.bios.offset; + apm_bios_entry.segment = APM_CS; + + for (i = 0; i < NR_CPUS; i++) { + set_base(get_cpu_gdt_table(i)[APM_CS >> 3], + __va((unsigned long)apm_info.bios.cseg << 4)); + set_base(get_cpu_gdt_table(i)[APM_CS_16 >> 3], + __va((unsigned long)apm_info.bios.cseg_16 << 4)); + set_base(get_cpu_gdt_table(i)[APM_DS >> 3], + __va((unsigned long)apm_info.bios.dseg << 4)); +#ifndef APM_RELAX_SEGMENTS + if (apm_info.bios.version == 0x100) { +#endif + /* For ASUS motherboard, Award BIOS rev 110 (and others?) */ + _set_limit((char *)&get_cpu_gdt_table(i)[APM_CS >> 3], 64 * 1024 - 1); + /* For some unknown machine. */ + _set_limit((char *)&get_cpu_gdt_table(i)[APM_CS_16 >> 3], 64 * 1024 - 1); + /* For the DEC Hinote Ultra CT475 (and others?) */ + _set_limit((char *)&get_cpu_gdt_table(i)[APM_DS >> 3], 64 * 1024 - 1); +#ifndef APM_RELAX_SEGMENTS + } else { + _set_limit((char *)&get_cpu_gdt_table(i)[APM_CS >> 3], + (apm_info.bios.cseg_len - 1) & 0xffff); + _set_limit((char *)&get_cpu_gdt_table(i)[APM_CS_16 >> 3], + (apm_info.bios.cseg_16_len - 1) & 0xffff); + _set_limit((char *)&get_cpu_gdt_table(i)[APM_DS >> 3], + (apm_info.bios.dseg_len - 1) & 0xffff); + /* workaround for broken BIOSes */ + if (apm_info.bios.cseg_len <= apm_info.bios.offset) + _set_limit((char *)&get_cpu_gdt_table(i)[APM_CS >> 3], 64 * 1024 -1); + if (apm_info.bios.dseg_len <= 0x40) { /* 0x40 * 4kB == 64kB */ + /* for the BIOS that assumes granularity = 1 */ + get_cpu_gdt_table(i)[APM_DS >> 3].b |= 0x800000; + printk(KERN_NOTICE "apm: we set the granularity of dseg.\n"); + } + } +#endif + } + + apm_proc = create_proc_info_entry("apm", 0, NULL, apm_get_info); + if (apm_proc) + apm_proc->owner = THIS_MODULE; + + ret = kernel_thread(apm, NULL, CLONE_KERNEL | SIGCHLD); + if (ret < 0) { + printk(KERN_ERR "apm: disabled - Unable to start kernel thread.\n"); + return -ENOMEM; + } + + if (num_online_cpus() > 1 && !smp ) { + printk(KERN_NOTICE + "apm: disabled - APM is not SMP safe (power off active).\n"); + return 0; + } + + misc_register(&apm_device); + + if (HZ != 100) + idle_period = (idle_period * HZ) / 100; + if (idle_threshold < 100) { + original_pm_idle = pm_idle; + pm_idle = apm_cpu_idle; + set_pm_idle = 1; + } + + return 0; +} + +static void __exit apm_exit(void) +{ + int error; + + if (set_pm_idle) { + pm_idle = original_pm_idle; + /* + * We are about to unload the current idle thread pm callback + * (pm_idle), Wait for all processors to update cached/local + * copies of pm_idle before proceeding. + */ + cpu_idle_wait(); + } + if (((apm_info.bios.flags & APM_BIOS_DISENGAGED) == 0) + && (apm_info.connection_version > 0x0100)) { + error = apm_engage_power_management(APM_DEVICE_ALL, 0); + if (error) + apm_error("disengage power management", error); + } + misc_deregister(&apm_device); + remove_proc_entry("apm", NULL); + if (power_off) + pm_power_off = NULL; + exit_kapmd = 1; + while (kapmd_running) + schedule(); + pm_active = 0; +} + +module_init(apm_init); +module_exit(apm_exit); + +MODULE_AUTHOR("Stephen Rothwell"); +MODULE_DESCRIPTION("Advanced Power Management"); +MODULE_LICENSE("GPL"); +module_param(debug, bool, 0644); +MODULE_PARM_DESC(debug, "Enable debug mode"); +module_param(power_off, bool, 0444); +MODULE_PARM_DESC(power_off, "Enable power off"); +module_param(bounce_interval, int, 0444); +MODULE_PARM_DESC(bounce_interval, + "Set the number of ticks to ignore suspend bounces"); +module_param(allow_ints, bool, 0444); +MODULE_PARM_DESC(allow_ints, "Allow interrupts during BIOS calls"); +module_param(broken_psr, bool, 0444); +MODULE_PARM_DESC(broken_psr, "BIOS has a broken GetPowerStatus call"); +module_param(realmode_power_off, bool, 0444); +MODULE_PARM_DESC(realmode_power_off, + "Switch to real mode before powering off"); +module_param(idle_threshold, int, 0444); +MODULE_PARM_DESC(idle_threshold, + "System idle percentage above which to make APM BIOS idle calls"); +module_param(idle_period, int, 0444); +MODULE_PARM_DESC(idle_period, + "Period (in sec/100) over which to caculate the idle percentage"); +module_param(smp, bool, 0444); +MODULE_PARM_DESC(smp, + "Set this to enable APM use on an SMP platform. Use with caution on older systems"); +MODULE_ALIAS_MISCDEV(APM_MINOR_DEV); diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/Makefile b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/Makefile new file mode 100644 index 0000000000..753f1d770c --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/Makefile @@ -0,0 +1,24 @@ +# +# Makefile for x86-compatible CPU details and quirks +# + +obj-y := common.o proc.o + +obj-y += amd.o +obj-y += cyrix.o +obj-y += centaur.o +obj-y += transmeta.o +obj-y += intel.o intel_cacheinfo.o +obj-y += rise.o +obj-y += nexgen.o +obj-y += umc.o + +obj-$(CONFIG_X86_MCE) += mcheck/ + +obj-$(CONFIG_MTRR) += mtrr/ +obj-$(CONFIG_CPU_FREQ) += cpufreq/ + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen +obj-y := $(call cherrypickxen, $(obj-y), $(src)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/common.c b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c index 06541d7d0d..06541d7d0d 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/common.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/Makefile b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/Makefile new file mode 100644 index 0000000000..06df4feee1 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/Makefile @@ -0,0 +1,12 @@ +obj-y := main.o if.o generic.o state.o +obj-y += amd.o +obj-y += cyrix.o +obj-y += centaur.o + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen +n-obj-xen := generic.o state.o amd.o cyrix.o centaur.o + +obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c index b0d0914a14..b0d0914a14 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/cpu/mtrr/main-xen.c diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/early_printk-xen.c b/linux-2.6-xen-sparse/arch/i386/kernel/early_printk-xen.c new file mode 100644 index 0000000000..7a5d2064e4 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/early_printk-xen.c @@ -0,0 +1,2 @@ + +#include "../../x86_64/kernel/early_printk-xen.c" diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/entry.S b/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S index 6c43b26aab..6f127102bb 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/entry.S +++ b/linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S @@ -49,7 +49,7 @@ #include <asm/page.h> #include <asm/desc.h> #include "irq_vectors.h" -#include <asm-xen/xen-public/xen.h> +#include <xen/interface/xen.h> #define nr_syscalls ((syscall_table_size)/4) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/fixup.c b/linux-2.6-xen-sparse/arch/i386/kernel/fixup.c index 5188b23f2f..5188b23f2f 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/fixup.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/fixup.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S b/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S index b59c542101..89a6e945f3 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S +++ b/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S @@ -23,7 +23,7 @@ #include <asm/segment.h> #include <asm/thread_info.h> #include <asm/asm_offsets.h> -#include <asm-xen/xen-public/arch-x86_32.h> +#include <xen/interface/arch-x86_32.h> /* * References to members of the new_cpu_data structure. diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c b/linux-2.6-xen-sparse/arch/i386/kernel/i386_ksyms-xen.c index cf8fbeb1ac..cf8fbeb1ac 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/i386_ksyms-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/init_task.c b/linux-2.6-xen-sparse/arch/i386/kernel/init_task-xen.c index 55502d58ac..55502d58ac 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/init_task.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/init_task-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/io_apic.c b/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c index 9cc425faea..2be9185037 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/io_apic.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/io_apic-xen.c @@ -44,8 +44,8 @@ #ifdef CONFIG_XEN -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/xen.h> +#include <xen/interface/physdev.h> /* Fake i8259 */ #define make_8259A_irq(_irq) (io_apic_irqs &= ~(1UL<<(_irq))) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/ioport.c b/linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c index 14bb123174..7843fde2a8 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/ioport.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/ioport-xen.c @@ -15,7 +15,7 @@ #include <linux/stddef.h> #include <linux/slab.h> #include <linux/thread_info.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/physdev.h> /* Set EXTENT bits starting at BASE in BITMAP to value TURN_ON. */ static void set_bitmap(unsigned long *bitmap, unsigned int base, unsigned int extent, int new_value) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/irq.c b/linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c index 659fbc4091..659fbc4091 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/irq.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/irq-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/ldt.c b/linux-2.6-xen-sparse/arch/i386/kernel/ldt-xen.c index be63e12826..be63e12826 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/ldt.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/ldt-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/microcode.c b/linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c index fa738d152d..fa738d152d 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/microcode.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/microcode-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/mpparse.c b/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c index 3a984a61a6..3a984a61a6 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/mpparse.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/mpparse-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/pci-dma.c b/linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c index 89654b8945..e7ed629be6 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/pci-dma.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/pci-dma-xen.c @@ -13,7 +13,7 @@ #include <linux/pci.h> #include <linux/version.h> #include <asm/io.h> -#include <asm-xen/balloon.h> +#include <xen/balloon.h> #include <asm/tlbflush.h> #include <asm/swiotlb.h> diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c index 8625d6750f..ffa28810c5 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c @@ -48,8 +48,8 @@ #include <asm/i387.h> #include <asm/irq.h> #include <asm/desc.h> -#include <asm-xen/xen-public/physdev.h> -#include <asm-xen/xen-public/vcpu.h> +#include <xen/interface/physdev.h> +#include <xen/interface/vcpu.h> #ifdef CONFIG_MATH_EMULATION #include <asm/math_emu.h> #endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/quirks.c b/linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c index fcc6849b58..fcc6849b58 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/quirks.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/quirks-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c b/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c index 17ea5bab96..d65a25270e 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c @@ -54,9 +54,9 @@ #include <asm/ist.h> #include <asm/io.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/physdev.h> -#include <asm-xen/xen-public/memory.h> -#include <asm-xen/features.h> +#include <xen/interface/physdev.h> +#include <xen/interface/memory.h> +#include <xen/features.h> #include "setup_arch_pre.h" #include <bios_ebda.h> diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/signal.c b/linux-2.6-xen-sparse/arch/i386/kernel/signal-xen.c index 32925b5e08..32925b5e08 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/signal.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/signal-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/smp.c b/linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c index 9c3a0d534e..548786c9b1 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/smp.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/smp-xen.c @@ -26,7 +26,7 @@ #if 0 #include <mach_apic.h> #endif -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> /* * Some notes on x86 processor bugs affecting SMP operation: diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c b/linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c new file mode 100644 index 0000000000..5a32e547e4 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/smpalts.c @@ -0,0 +1,85 @@ +#include <linux/kernel.h> +#include <asm/system.h> +#include <asm/smp_alt.h> +#include <asm/processor.h> +#include <asm/string.h> + +struct smp_replacement_record { + unsigned char targ_size; + unsigned char smp1_size; + unsigned char smp2_size; + unsigned char up_size; + unsigned char feature; + unsigned char data[0]; +}; + +struct smp_alternative_record { + void *targ_start; + struct smp_replacement_record *repl; +}; + +extern struct smp_alternative_record __start_smp_alternatives_table, + __stop_smp_alternatives_table; +extern unsigned long __init_begin, __init_end; + +void prepare_for_smp(void) +{ + struct smp_alternative_record *r; + printk(KERN_INFO "Enabling SMP...\n"); + for (r = &__start_smp_alternatives_table; + r != &__stop_smp_alternatives_table; + r++) { + BUG_ON(r->repl->targ_size < r->repl->smp1_size); + BUG_ON(r->repl->targ_size < r->repl->smp2_size); + BUG_ON(r->repl->targ_size < r->repl->up_size); + if (system_state == SYSTEM_RUNNING && + r->targ_start >= (void *)&__init_begin && + r->targ_start < (void *)&__init_end) + continue; + if (r->repl->feature != (unsigned char)-1 && + boot_cpu_has(r->repl->feature)) { + memcpy(r->targ_start, + r->repl->data + r->repl->smp1_size, + r->repl->smp2_size); + memset(r->targ_start + r->repl->smp2_size, + 0x90, + r->repl->targ_size - r->repl->smp2_size); + } else { + memcpy(r->targ_start, + r->repl->data, + r->repl->smp1_size); + memset(r->targ_start + r->repl->smp1_size, + 0x90, + r->repl->targ_size - r->repl->smp1_size); + } + } + /* Paranoia */ + asm volatile ("jmp 1f\n1:"); + mb(); +} + +void unprepare_for_smp(void) +{ + struct smp_alternative_record *r; + printk(KERN_INFO "Disabling SMP...\n"); + for (r = &__start_smp_alternatives_table; + r != &__stop_smp_alternatives_table; + r++) { + BUG_ON(r->repl->targ_size < r->repl->smp1_size); + BUG_ON(r->repl->targ_size < r->repl->smp2_size); + BUG_ON(r->repl->targ_size < r->repl->up_size); + if (system_state == SYSTEM_RUNNING && + r->targ_start >= (void *)&__init_begin && + r->targ_start < (void *)&__init_end) + continue; + memcpy(r->targ_start, + r->repl->data + r->repl->smp1_size + r->repl->smp2_size, + r->repl->up_size); + memset(r->targ_start + r->repl->up_size, + 0x90, + r->repl->targ_size - r->repl->up_size); + } + /* Paranoia */ + asm volatile ("jmp 1f\n1:"); + mb(); +} diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c b/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c new file mode 100644 index 0000000000..256dae5ff7 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/smpboot.c @@ -0,0 +1,1182 @@ +/* + * x86 SMP booting functions + * + * (c) 1995 Alan Cox, Building #3 <alan@redhat.com> + * (c) 1998, 1999, 2000 Ingo Molnar <mingo@redhat.com> + * + * Much of the core SMP work is based on previous work by Thomas Radke, to + * whom a great many thanks are extended. + * + * Thanks to Intel for making available several different Pentium, + * Pentium Pro and Pentium-II/Xeon MP machines. + * Original development of Linux SMP code supported by Caldera. + * + * This code is released under the GNU General Public License version 2 or + * later. + * + * Fixes + * Felix Koop : NR_CPUS used properly + * Jose Renau : Handle single CPU case. + * Alan Cox : By repeated request 8) - Total BogoMIPS report. + * Greg Wright : Fix for kernel stacks panic. + * Erich Boleyn : MP v1.4 and additional changes. + * Matthias Sattler : Changes for 2.1 kernel map. + * Michel Lespinasse : Changes for 2.1 kernel map. + * Michael Chastain : Change trampoline.S to gnu as. + * Alan Cox : Dumb bug: 'B' step PPro's are fine + * Ingo Molnar : Added APIC timers, based on code + * from Jose Renau + * Ingo Molnar : various cleanups and rewrites + * Tigran Aivazian : fixed "0.00 in /proc/uptime on SMP" bug. + * Maciej W. Rozycki : Bits for genuine 82489DX APICs + * Martin J. Bligh : Added support for multi-quad systems + * Dave Jones : Report invalid combinations of Athlon CPUs. +* Rusty Russell : Hacked into shape for new "hotplug" boot process. */ + +#include <linux/module.h> +#include <linux/config.h> +#include <linux/init.h> +#include <linux/kernel.h> + +#include <linux/mm.h> +#include <linux/sched.h> +#include <linux/kernel_stat.h> +#include <linux/smp_lock.h> +#include <linux/irq.h> +#include <linux/bootmem.h> + +#include <linux/delay.h> +#include <linux/mc146818rtc.h> +#include <asm/tlbflush.h> +#include <asm/desc.h> +#include <asm/arch_hooks.h> + +#include <mach_apic.h> +#include <mach_wakecpu.h> +#include <smpboot_hooks.h> + +/* Set if we find a B stepping CPU */ +static int __initdata smp_b_stepping; + +/* Number of siblings per CPU package */ +int smp_num_siblings = 1; +int phys_proc_id[NR_CPUS]; /* Package ID of each logical CPU */ +EXPORT_SYMBOL(phys_proc_id); +int cpu_core_id[NR_CPUS]; /* Core ID of each logical CPU */ +EXPORT_SYMBOL(cpu_core_id); + +/* bitmap of online cpus */ +cpumask_t cpu_online_map; + +cpumask_t cpu_callin_map; +cpumask_t cpu_callout_map; +static cpumask_t smp_commenced_mask; + +/* Per CPU bogomips and other parameters */ +struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned; + +u8 x86_cpu_to_apicid[NR_CPUS] = + { [0 ... NR_CPUS-1] = 0xff }; +EXPORT_SYMBOL(x86_cpu_to_apicid); + +/* + * Trampoline 80x86 program as an array. + */ + +extern unsigned char trampoline_data []; +extern unsigned char trampoline_end []; +static unsigned char *trampoline_base; +static int trampoline_exec; + +static void map_cpu_to_logical_apicid(void); + +/* + * Currently trivial. Write the real->protected mode + * bootstrap into the page concerned. The caller + * has made sure it's suitably aligned. + */ + +static unsigned long __init setup_trampoline(void) +{ + memcpy(trampoline_base, trampoline_data, trampoline_end - trampoline_data); + return virt_to_phys(trampoline_base); +} + +/* + * We are called very early to get the low memory for the + * SMP bootup trampoline page. + */ +void __init smp_alloc_memory(void) +{ + trampoline_base = (void *) alloc_bootmem_low_pages(PAGE_SIZE); + /* + * Has to be in very low memory so we can execute + * real-mode AP code. + */ + if (__pa(trampoline_base) >= 0x9F000) + BUG(); + /* + * Make the SMP trampoline executable: + */ + trampoline_exec = set_kernel_exec((unsigned long)trampoline_base, 1); +} + +/* + * The bootstrap kernel entry code has set these up. Save them for + * a given CPU + */ + +static void __init smp_store_cpu_info(int id) +{ + struct cpuinfo_x86 *c = cpu_data + id; + + *c = boot_cpu_data; + if (id!=0) + identify_cpu(c); + /* + * Mask B, Pentium, but not Pentium MMX + */ + if (c->x86_vendor == X86_VENDOR_INTEL && + c->x86 == 5 && + c->x86_mask >= 1 && c->x86_mask <= 4 && + c->x86_model <= 3) + /* + * Remember we have B step Pentia with bugs + */ + smp_b_stepping = 1; + + /* + * Certain Athlons might work (for various values of 'work') in SMP + * but they are not certified as MP capable. + */ + if ((c->x86_vendor == X86_VENDOR_AMD) && (c->x86 == 6)) { + + /* Athlon 660/661 is valid. */ + if ((c->x86_model==6) && ((c->x86_mask==0) || (c->x86_mask==1))) + goto valid_k7; + + /* Duron 670 is valid */ + if ((c->x86_model==7) && (c->x86_mask==0)) + goto valid_k7; + + /* + * Athlon 662, Duron 671, and Athlon >model 7 have capability bit. + * It's worth noting that the A5 stepping (662) of some Athlon XP's + * have the MP bit set. + * See http://www.heise.de/newsticker/data/jow-18.10.01-000 for more. + */ + if (((c->x86_model==6) && (c->x86_mask>=2)) || + ((c->x86_model==7) && (c->x86_mask>=1)) || + (c->x86_model> 7)) + if (cpu_has_mp) + goto valid_k7; + + /* If we get here, it's not a certified SMP capable AMD system. */ + tainted |= TAINT_UNSAFE_SMP; + } + +valid_k7: + ; +} + +/* + * TSC synchronization. + * + * We first check whether all CPUs have their TSC's synchronized, + * then we print a warning if not, and always resync. + */ + +static atomic_t tsc_start_flag = ATOMIC_INIT(0); +static atomic_t tsc_count_start = ATOMIC_INIT(0); +static atomic_t tsc_count_stop = ATOMIC_INIT(0); +static unsigned long long tsc_values[NR_CPUS]; + +#define NR_LOOPS 5 + +static void __init synchronize_tsc_bp (void) +{ + int i; + unsigned long long t0; + unsigned long long sum, avg; + long long delta; + unsigned long one_usec; + int buggy = 0; + + printk(KERN_INFO "checking TSC synchronization across %u CPUs: ", num_booting_cpus()); + + /* convert from kcyc/sec to cyc/usec */ + one_usec = cpu_khz / 1000; + + atomic_set(&tsc_start_flag, 1); + wmb(); + + /* + * We loop a few times to get a primed instruction cache, + * then the last pass is more or less synchronized and + * the BP and APs set their cycle counters to zero all at + * once. This reduces the chance of having random offsets + * between the processors, and guarantees that the maximum + * delay between the cycle counters is never bigger than + * the latency of information-passing (cachelines) between + * two CPUs. + */ + for (i = 0; i < NR_LOOPS; i++) { + /* + * all APs synchronize but they loop on '== num_cpus' + */ + while (atomic_read(&tsc_count_start) != num_booting_cpus()-1) + mb(); + atomic_set(&tsc_count_stop, 0); + wmb(); + /* + * this lets the APs save their current TSC: + */ + atomic_inc(&tsc_count_start); + + rdtscll(tsc_values[smp_processor_id()]); + /* + * We clear the TSC in the last loop: + */ + if (i == NR_LOOPS-1) + write_tsc(0, 0); + + /* + * Wait for all APs to leave the synchronization point: + */ + while (atomic_read(&tsc_count_stop) != num_booting_cpus()-1) + mb(); + atomic_set(&tsc_count_start, 0); + wmb(); + atomic_inc(&tsc_count_stop); + } + + sum = 0; + for (i = 0; i < NR_CPUS; i++) { + if (cpu_isset(i, cpu_callout_map)) { + t0 = tsc_values[i]; + sum += t0; + } + } + avg = sum; + do_div(avg, num_booting_cpus()); + + sum = 0; + for (i = 0; i < NR_CPUS; i++) { + if (!cpu_isset(i, cpu_callout_map)) + continue; + delta = tsc_values[i] - avg; + if (delta < 0) + delta = -delta; + /* + * We report bigger than 2 microseconds clock differences. + */ + if (delta > 2*one_usec) { + long realdelta; + if (!buggy) { + buggy = 1; + printk("\n"); + } + realdelta = delta; + do_div(realdelta, one_usec); + if (tsc_values[i] < avg) + realdelta = -realdelta; + + printk(KERN_INFO "CPU#%d had %ld usecs TSC skew, fixed it up.\n", i, realdelta); + } + + sum += delta; + } + if (!buggy) + printk("passed.\n"); +} + +static void __init synchronize_tsc_ap (void) +{ + int i; + + /* + * Not every cpu is online at the time + * this gets called, so we first wait for the BP to + * finish SMP initialization: + */ + while (!atomic_read(&tsc_start_flag)) mb(); + + for (i = 0; i < NR_LOOPS; i++) { + atomic_inc(&tsc_count_start); + while (atomic_read(&tsc_count_start) != num_booting_cpus()) + mb(); + + rdtscll(tsc_values[smp_processor_id()]); + if (i == NR_LOOPS-1) + write_tsc(0, 0); + + atomic_inc(&tsc_count_stop); + while (atomic_read(&tsc_count_stop) != num_booting_cpus()) mb(); + } +} +#undef NR_LOOPS + +extern void calibrate_delay(void); + +static atomic_t init_deasserted; + +static void __init smp_callin(void) +{ + int cpuid, phys_id; + unsigned long timeout; + + /* + * If waken up by an INIT in an 82489DX configuration + * we may get here before an INIT-deassert IPI reaches + * our local APIC. We have to wait for the IPI or we'll + * lock up on an APIC access. + */ + wait_for_init_deassert(&init_deasserted); + + /* + * (This works even if the APIC is not enabled.) + */ + phys_id = GET_APIC_ID(apic_read(APIC_ID)); + cpuid = smp_processor_id(); + if (cpu_isset(cpuid, cpu_callin_map)) { + printk("huh, phys CPU#%d, CPU#%d already present??\n", + phys_id, cpuid); + BUG(); + } + Dprintk("CPU#%d (phys ID: %d) waiting for CALLOUT\n", cpuid, phys_id); + + /* + * STARTUP IPIs are fragile beasts as they might sometimes + * trigger some glue motherboard logic. Complete APIC bus + * silence for 1 second, this overestimates the time the + * boot CPU is spending to send the up to 2 STARTUP IPIs + * by a factor of two. This should be enough. + */ + + /* + * Waiting 2s total for startup (udelay is not yet working) + */ + timeout = jiffies + 2*HZ; + while (time_before(jiffies, timeout)) { + /* + * Has the boot CPU finished it's STARTUP sequence? + */ + if (cpu_isset(cpuid, cpu_callout_map)) + break; + rep_nop(); + } + + if (!time_before(jiffies, timeout)) { + printk("BUG: CPU%d started up but did not get a callout!\n", + cpuid); + BUG(); + } + + /* + * the boot CPU has finished the init stage and is spinning + * on callin_map until we finish. We are free to set up this + * CPU, first the APIC. (this is probably redundant on most + * boards) + */ + + Dprintk("CALLIN, before setup_local_APIC().\n"); + smp_callin_clear_local_apic(); + setup_local_APIC(); + map_cpu_to_logical_apicid(); + + /* + * Get our bogomips. + */ + calibrate_delay(); + Dprintk("Stack at about %p\n",&cpuid); + + /* + * Save our processor parameters + */ + smp_store_cpu_info(cpuid); + + disable_APIC_timer(); + + /* + * Allow the master to continue. + */ + cpu_set(cpuid, cpu_callin_map); + + /* + * Synchronize the TSC with the BP + */ + if (cpu_has_tsc && cpu_khz) + synchronize_tsc_ap(); +} + +static int cpucount; + +/* + * Activate a secondary processor. + */ +static void __init start_secondary(void *unused) +{ + /* + * Dont put anything before smp_callin(), SMP + * booting is too fragile that we want to limit the + * things done here to the most necessary things. + */ + cpu_init(); + smp_callin(); + while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) + rep_nop(); + setup_secondary_APIC_clock(); + if (nmi_watchdog == NMI_IO_APIC) { + disable_8259A_irq(0); + enable_NMI_through_LVT0(NULL); + enable_8259A_irq(0); + } + enable_APIC_timer(); + /* + * low-memory mappings have been cleared, flush them from + * the local TLBs too. + */ + local_flush_tlb(); + cpu_set(smp_processor_id(), cpu_online_map); + + /* We can take interrupts now: we're officially "up". */ + local_irq_enable(); + + wmb(); + cpu_idle(); +} + +/* + * Everything has been set up for the secondary + * CPUs - they just need to reload everything + * from the task structure + * This function must not return. + */ +void __init initialize_secondary(void) +{ + /* + * We don't actually need to load the full TSS, + * basically just the stack pointer and the eip. + */ + + asm volatile( + "movl %0,%%esp\n\t" + "jmp *%1" + : + :"r" (current->thread.esp),"r" (current->thread.eip)); +} + +extern struct { + void * esp; + unsigned short ss; +} stack_start; + +#ifdef CONFIG_NUMA + +/* which logical CPUs are on which nodes */ +cpumask_t node_2_cpu_mask[MAX_NUMNODES] = + { [0 ... MAX_NUMNODES-1] = CPU_MASK_NONE }; +/* which node each logical CPU is on */ +int cpu_2_node[NR_CPUS] = { [0 ... NR_CPUS-1] = 0 }; +EXPORT_SYMBOL(cpu_2_node); + +/* set up a mapping between cpu and node. */ +static inline void map_cpu_to_node(int cpu, int node) +{ + printk("Mapping cpu %d to node %d\n", cpu, node); + cpu_set(cpu, node_2_cpu_mask[node]); + cpu_2_node[cpu] = node; +} + +/* undo a mapping between cpu and node. */ +static inline void unmap_cpu_to_node(int cpu) +{ + int node; + + printk("Unmapping cpu %d from all nodes\n", cpu); + for (node = 0; node < MAX_NUMNODES; node ++) + cpu_clear(cpu, node_2_cpu_mask[node]); + cpu_2_node[cpu] = 0; +} +#else /* !CONFIG_NUMA */ + +#define map_cpu_to_node(cpu, node) ({}) +#define unmap_cpu_to_node(cpu) ({}) + +#endif /* CONFIG_NUMA */ + +u8 cpu_2_logical_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; + +static void map_cpu_to_logical_apicid(void) +{ + int cpu = smp_processor_id(); + int apicid = logical_smp_processor_id(); + + cpu_2_logical_apicid[cpu] = apicid; + map_cpu_to_node(cpu, apicid_to_node(apicid)); +} + +static void unmap_cpu_to_logical_apicid(int cpu) +{ + cpu_2_logical_apicid[cpu] = BAD_APICID; + unmap_cpu_to_node(cpu); +} + +#if APIC_DEBUG +static inline void __inquire_remote_apic(int apicid) +{ + int i, regs[] = { APIC_ID >> 4, APIC_LVR >> 4, APIC_SPIV >> 4 }; + char *names[] = { "ID", "VERSION", "SPIV" }; + int timeout, status; + + printk("Inquiring remote APIC #%d...\n", apicid); + + for (i = 0; i < sizeof(regs) / sizeof(*regs); i++) { + printk("... APIC #%d %s: ", apicid, names[i]); + + /* + * Wait for idle. + */ + apic_wait_icr_idle(); + + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(apicid)); + apic_write_around(APIC_ICR, APIC_DM_REMRD | regs[i]); + + timeout = 0; + do { + udelay(100); + status = apic_read(APIC_ICR) & APIC_ICR_RR_MASK; + } while (status == APIC_ICR_RR_INPROG && timeout++ < 1000); + + switch (status) { + case APIC_ICR_RR_VALID: + status = apic_read(APIC_RRR); + printk("%08x\n", status); + break; + default: + printk("failed\n"); + } + } +} +#endif + +#ifdef WAKE_SECONDARY_VIA_NMI +/* + * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal + * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this + * won't ... remember to clear down the APIC, etc later. + */ +static int __init +wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip) +{ + unsigned long send_status = 0, accept_status = 0; + int timeout, maxlvt; + + /* Target chip */ + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(logical_apicid)); + + /* Boot on the stack */ + /* Kick the second */ + apic_write_around(APIC_ICR, APIC_DM_NMI | APIC_DEST_LOGICAL); + + Dprintk("Waiting for send to finish...\n"); + timeout = 0; + do { + Dprintk("+"); + udelay(100); + send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY; + } while (send_status && (timeout++ < 1000)); + + /* + * Give the other CPU some time to accept the IPI. + */ + udelay(200); + /* + * Due to the Pentium erratum 3AP. + */ + maxlvt = get_maxlvt(); + if (maxlvt > 3) { + apic_read_around(APIC_SPIV); + apic_write(APIC_ESR, 0); + } + accept_status = (apic_read(APIC_ESR) & 0xEF); + Dprintk("NMI sent.\n"); + + if (send_status) + printk("APIC never delivered???\n"); + if (accept_status) + printk("APIC delivery error (%lx).\n", accept_status); + + return (send_status | accept_status); +} +#endif /* WAKE_SECONDARY_VIA_NMI */ + +#ifdef WAKE_SECONDARY_VIA_INIT +static int __init +wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip) +{ + unsigned long send_status = 0, accept_status = 0; + int maxlvt, timeout, num_starts, j; + + /* + * Be paranoid about clearing APIC errors. + */ + if (APIC_INTEGRATED(apic_version[phys_apicid])) { + apic_read_around(APIC_SPIV); + apic_write(APIC_ESR, 0); + apic_read(APIC_ESR); + } + + Dprintk("Asserting INIT.\n"); + + /* + * Turn INIT on target chip + */ + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); + + /* + * Send IPI + */ + apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_INT_ASSERT + | APIC_DM_INIT); + + Dprintk("Waiting for send to finish...\n"); + timeout = 0; + do { + Dprintk("+"); + udelay(100); + send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY; + } while (send_status && (timeout++ < 1000)); + + mdelay(10); + + Dprintk("Deasserting INIT.\n"); + + /* Target chip */ + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); + + /* Send IPI */ + apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_DM_INIT); + + Dprintk("Waiting for send to finish...\n"); + timeout = 0; + do { + Dprintk("+"); + udelay(100); + send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY; + } while (send_status && (timeout++ < 1000)); + + atomic_set(&init_deasserted, 1); + + /* + * Should we send STARTUP IPIs ? + * + * Determine this based on the APIC version. + * If we don't have an integrated APIC, don't send the STARTUP IPIs. + */ + if (APIC_INTEGRATED(apic_version[phys_apicid])) + num_starts = 2; + else + num_starts = 0; + + /* + * Run STARTUP IPI loop. + */ + Dprintk("#startup loops: %d.\n", num_starts); + + maxlvt = get_maxlvt(); + + for (j = 1; j <= num_starts; j++) { + Dprintk("Sending STARTUP #%d.\n",j); + apic_read_around(APIC_SPIV); + apic_write(APIC_ESR, 0); + apic_read(APIC_ESR); + Dprintk("After apic_write.\n"); + + /* + * STARTUP IPI + */ + + /* Target chip */ + apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); + + /* Boot on the stack */ + /* Kick the second */ + apic_write_around(APIC_ICR, APIC_DM_STARTUP + | (start_eip >> 12)); + + /* + * Give the other CPU some time to accept the IPI. + */ + udelay(300); + + Dprintk("Startup point 1.\n"); + + Dprintk("Waiting for send to finish...\n"); + timeout = 0; + do { + Dprintk("+"); + udelay(100); + send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY; + } while (send_status && (timeout++ < 1000)); + + /* + * Give the other CPU some time to accept the IPI. + */ + udelay(200); + /* + * Due to the Pentium erratum 3AP. + */ + if (maxlvt > 3) { + apic_read_around(APIC_SPIV); + apic_write(APIC_ESR, 0); + } + accept_status = (apic_read(APIC_ESR) & 0xEF); + if (send_status || accept_status) + break; + } + Dprintk("After Startup.\n"); + + if (send_status) + printk("APIC never delivered???\n"); + if (accept_status) + printk("APIC delivery error (%lx).\n", accept_status); + + return (send_status | accept_status); +} +#endif /* WAKE_SECONDARY_VIA_INIT */ + +extern cpumask_t cpu_initialized; + +static int __init do_boot_cpu(int apicid) +/* + * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad + * (ie clustered apic addressing mode), this is a LOGICAL apic ID. + * Returns zero if CPU booted OK, else error code from wakeup_secondary_cpu. + */ +{ + struct task_struct *idle; + unsigned long boot_error; + int timeout, cpu; + unsigned long start_eip; + unsigned short nmi_high = 0, nmi_low = 0; + + cpu = ++cpucount; + /* + * We can't use kernel_thread since we must avoid to + * reschedule the child. + */ + idle = fork_idle(cpu); + if (IS_ERR(idle)) + panic("failed fork for CPU %d", cpu); + idle->thread.eip = (unsigned long) start_secondary; + /* start_eip had better be page-aligned! */ + start_eip = setup_trampoline(); + + /* So we see what's up */ + printk("Booting processor %d/%d eip %lx\n", cpu, apicid, start_eip); + /* Stack for startup_32 can be just as for start_secondary onwards */ + stack_start.esp = (void *) idle->thread.esp; + + irq_ctx_init(cpu); + + /* + * This grunge runs the startup process for + * the targeted processor. + */ + + atomic_set(&init_deasserted, 0); + + Dprintk("Setting warm reset code and vector.\n"); + + store_NMI_vector(&nmi_high, &nmi_low); + + smpboot_setup_warm_reset_vector(start_eip); + + /* + * Starting actual IPI sequence... + */ + boot_error = wakeup_secondary_cpu(apicid, start_eip); + + if (!boot_error) { + /* + * allow APs to start initializing. + */ + Dprintk("Before Callout %d.\n", cpu); + cpu_set(cpu, cpu_callout_map); + Dprintk("After Callout %d.\n", cpu); + + /* + * Wait 5s total for a response + */ + for (timeout = 0; timeout < 50000; timeout++) { + if (cpu_isset(cpu, cpu_callin_map)) + break; /* It has booted */ + udelay(100); + } + + if (cpu_isset(cpu, cpu_callin_map)) { + /* number CPUs logically, starting from 1 (BSP is 0) */ + Dprintk("OK.\n"); + printk("CPU%d: ", cpu); + print_cpu_info(&cpu_data[cpu]); + Dprintk("CPU has booted.\n"); + } else { + boot_error= 1; + if (*((volatile unsigned char *)trampoline_base) + == 0xA5) + /* trampoline started but...? */ + printk("Stuck ??\n"); + else + /* trampoline code not run */ + printk("Not responding.\n"); + inquire_remote_apic(apicid); + } + } + x86_cpu_to_apicid[cpu] = apicid; + if (boot_error) { + /* Try to put things back the way they were before ... */ + unmap_cpu_to_logical_apicid(cpu); + cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ + cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */ + cpucount--; + } + + /* mark "stuck" area as not stuck */ + *((volatile unsigned long *)trampoline_base) = 0; + + return boot_error; +} + +static void smp_tune_scheduling (void) +{ + unsigned long cachesize; /* kB */ + unsigned long bandwidth = 350; /* MB/s */ + /* + * Rough estimation for SMP scheduling, this is the number of + * cycles it takes for a fully memory-limited process to flush + * the SMP-local cache. + * + * (For a P5 this pretty much means we will choose another idle + * CPU almost always at wakeup time (this is due to the small + * L1 cache), on PIIs it's around 50-100 usecs, depending on + * the cache size) + */ + + if (!cpu_khz) { + /* + * this basically disables processor-affinity + * scheduling on SMP without a TSC. + */ + return; + } else { + cachesize = boot_cpu_data.x86_cache_size; + if (cachesize == -1) { + cachesize = 16; /* Pentiums, 2x8kB cache */ + bandwidth = 100; + } + } +} + +/* + * Cycle through the processors sending APIC IPIs to boot each. + */ + +static int boot_cpu_logical_apicid; +/* Where the IO area was mapped on multiquad, always 0 otherwise */ +void *xquad_portio; + +cpumask_t cpu_sibling_map[NR_CPUS] __cacheline_aligned; +cpumask_t cpu_core_map[NR_CPUS] __cacheline_aligned; +EXPORT_SYMBOL(cpu_core_map); + +static void __init smp_boot_cpus(unsigned int max_cpus) +{ + int apicid, cpu, bit, kicked; + unsigned long bogosum = 0; + + /* + * Setup boot CPU information + */ + smp_store_cpu_info(0); /* Final full version of the data */ + printk("CPU%d: ", 0); + print_cpu_info(&cpu_data[0]); + + boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); + boot_cpu_logical_apicid = logical_smp_processor_id(); + x86_cpu_to_apicid[0] = boot_cpu_physical_apicid; + + current_thread_info()->cpu = 0; + smp_tune_scheduling(); + cpus_clear(cpu_sibling_map[0]); + cpu_set(0, cpu_sibling_map[0]); + + cpus_clear(cpu_core_map[0]); + cpu_set(0, cpu_core_map[0]); + + /* + * If we couldn't find an SMP configuration at boot time, + * get out of here now! + */ + if (!smp_found_config && !acpi_lapic) { + printk(KERN_NOTICE "SMP motherboard not detected.\n"); + smpboot_clear_io_apic_irqs(); + phys_cpu_present_map = physid_mask_of_physid(0); + if (APIC_init_uniprocessor()) + printk(KERN_NOTICE "Local APIC not detected." + " Using dummy APIC emulation.\n"); + map_cpu_to_logical_apicid(); + cpu_set(0, cpu_sibling_map[0]); + cpu_set(0, cpu_core_map[0]); + return; + } + + /* + * Should not be necessary because the MP table should list the boot + * CPU too, but we do it for the sake of robustness anyway. + * Makes no sense to do this check in clustered apic mode, so skip it + */ + if (!check_phys_apicid_present(boot_cpu_physical_apicid)) { + printk("weird, boot CPU (#%d) not listed by the BIOS.\n", + boot_cpu_physical_apicid); + physid_set(hard_smp_processor_id(), phys_cpu_present_map); + } + + /* + * If we couldn't find a local APIC, then get out of here now! + */ + if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid]) && !cpu_has_apic) { + printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", + boot_cpu_physical_apicid); + printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n"); + smpboot_clear_io_apic_irqs(); + phys_cpu_present_map = physid_mask_of_physid(0); + cpu_set(0, cpu_sibling_map[0]); + cpu_set(0, cpu_core_map[0]); + return; + } + + verify_local_APIC(); + + /* + * If SMP should be disabled, then really disable it! + */ + if (!max_cpus) { + smp_found_config = 0; + printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); + smpboot_clear_io_apic_irqs(); + phys_cpu_present_map = physid_mask_of_physid(0); + cpu_set(0, cpu_sibling_map[0]); + cpu_set(0, cpu_core_map[0]); + return; + } + + connect_bsp_APIC(); + setup_local_APIC(); + map_cpu_to_logical_apicid(); + + + setup_portio_remap(); + + /* + * Scan the CPU present map and fire up the other CPUs via do_boot_cpu + * + * In clustered apic mode, phys_cpu_present_map is a constructed thus: + * bits 0-3 are quad0, 4-7 are quad1, etc. A perverse twist on the + * clustered apic ID. + */ + Dprintk("CPU present map: %lx\n", physids_coerce(phys_cpu_present_map)); + + kicked = 1; + for (bit = 0; kicked < NR_CPUS && bit < MAX_APICS; bit++) { + apicid = cpu_present_to_apicid(bit); + /* + * Don't even attempt to start the boot CPU! + */ + if ((apicid == boot_cpu_apicid) || (apicid == BAD_APICID)) + continue; + + if (!check_apicid_present(bit)) + continue; + if (max_cpus <= cpucount+1) + continue; + +#ifdef CONFIG_SMP_ALTERNATIVES + if (kicked == 1) + prepare_for_smp(); +#endif + + if (do_boot_cpu(apicid)) + printk("CPU #%d not responding - cannot use it.\n", + apicid); + else + ++kicked; + } + + /* + * Cleanup possible dangling ends... + */ + smpboot_restore_warm_reset_vector(); + + /* + * Allow the user to impress friends. + */ + Dprintk("Before bogomips.\n"); + for (cpu = 0; cpu < NR_CPUS; cpu++) + if (cpu_isset(cpu, cpu_callout_map)) + bogosum += cpu_data[cpu].loops_per_jiffy; + printk(KERN_INFO + "Total of %d processors activated (%lu.%02lu BogoMIPS).\n", + cpucount+1, + bogosum/(500000/HZ), + (bogosum/(5000/HZ))%100); + + Dprintk("Before bogocount - setting activated=1.\n"); + + if (smp_b_stepping) + printk(KERN_WARNING "WARNING: SMP operation may be unreliable with B stepping processors.\n"); + + /* + * Don't taint if we are running SMP kernel on a single non-MP + * approved Athlon + */ + if (tainted & TAINT_UNSAFE_SMP) { + if (cpucount) + printk (KERN_INFO "WARNING: This combination of AMD processors is not suitable for SMP.\n"); + else + tainted &= ~TAINT_UNSAFE_SMP; + } + + Dprintk("Boot done.\n"); + + /* + * construct cpu_sibling_map[], so that we can tell sibling CPUs + * efficiently. + */ + for (cpu = 0; cpu < NR_CPUS; cpu++) { + cpus_clear(cpu_sibling_map[cpu]); + cpus_clear(cpu_core_map[cpu]); + } + + for (cpu = 0; cpu < NR_CPUS; cpu++) { + struct cpuinfo_x86 *c = cpu_data + cpu; + int siblings = 0; + int i; + if (!cpu_isset(cpu, cpu_callout_map)) + continue; + + if (smp_num_siblings > 1) { + for (i = 0; i < NR_CPUS; i++) { + if (!cpu_isset(i, cpu_callout_map)) + continue; + if (cpu_core_id[cpu] == cpu_core_id[i]) { + siblings++; + cpu_set(i, cpu_sibling_map[cpu]); + } + } + } else { + siblings++; + cpu_set(cpu, cpu_sibling_map[cpu]); + } + + if (siblings != smp_num_siblings) { + printk(KERN_WARNING "WARNING: %d siblings found for CPU%d, should be %d\n", siblings, cpu, smp_num_siblings); + smp_num_siblings = siblings; + } + + if (c->x86_num_cores > 1) { + for (i = 0; i < NR_CPUS; i++) { + if (!cpu_isset(i, cpu_callout_map)) + continue; + if (phys_proc_id[cpu] == phys_proc_id[i]) { + cpu_set(i, cpu_core_map[cpu]); + } + } + } else { + cpu_core_map[cpu] = cpu_sibling_map[cpu]; + } + } + + smpboot_setup_io_apic(); + + setup_boot_APIC_clock(); + + /* + * Synchronize the TSC with the AP + */ + if (cpu_has_tsc && cpucount && cpu_khz) + synchronize_tsc_bp(); +} + +/* These are wrappers to interface to the new boot process. Someone + who understands all this stuff should rewrite it properly. --RR 15/Jul/02 */ +void __init smp_prepare_cpus(unsigned int max_cpus) +{ + smp_boot_cpus(max_cpus); +} + +void __devinit smp_prepare_boot_cpu(void) +{ + cpu_set(smp_processor_id(), cpu_online_map); + cpu_set(smp_processor_id(), cpu_callout_map); +} + +int __devinit __cpu_up(unsigned int cpu) +{ + /* This only works at boot for x86. See "rewrite" above. */ + if (cpu_isset(cpu, smp_commenced_mask)) { + local_irq_enable(); + return -ENOSYS; + } + + /* In case one didn't come up */ + if (!cpu_isset(cpu, cpu_callin_map)) { + local_irq_enable(); + return -EIO; + } + +#ifdef CONFIG_SMP_ALTERNATIVES + if (num_online_cpus() == 1) + prepare_for_smp(); +#endif + + local_irq_enable(); + /* Unleash the CPU! */ + cpu_set(cpu, smp_commenced_mask); + while (!cpu_isset(cpu, cpu_online_map)) + mb(); + return 0; +} + +void __init smp_cpus_done(unsigned int max_cpus) +{ +#ifdef CONFIG_X86_IO_APIC + setup_ioapic_dest(); +#endif + zap_low_mappings(); + /* + * Disable executability of the SMP trampoline: + */ + set_kernel_exec((unsigned long)trampoline_base, trampoline_exec); +} + +void __init smp_intr_init(void) +{ + /* + * IRQ0 must be given a fixed assignment and initialized, + * because it's used before the IO-APIC is set up. + */ + set_intr_gate(FIRST_DEVICE_VECTOR, interrupt[0]); + + /* + * The reschedule interrupt is a CPU-to-CPU reschedule-helper + * IPI, driven by wakeup. + */ + set_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt); + + /* IPI for invalidation */ + set_intr_gate(INVALIDATE_TLB_VECTOR, invalidate_interrupt); + + /* IPI for generic function call */ + set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt); +} diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c b/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c index def082cba2..a58c168a29 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c @@ -25,7 +25,7 @@ #include <asm/pci.h> #include <asm/dma.h> #include <asm/uaccess.h> -#include <asm-xen/xen-public/memory.h> +#include <xen/interface/memory.h> #define OFFSET(val,align) ((unsigned long)((val) & ( (align) - 1))) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c b/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c index 969f8947b9..3e93a4b1e0 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c @@ -70,7 +70,7 @@ #include "io_ports.h" -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> extern spinlock_t i8259A_lock; int pit_latch_buggy; /* extern */ diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c b/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c index 9add98bbd9..9add98bbd9 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c +++ b/linux-2.6-xen-sparse/arch/i386/kernel/traps-xen.c diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/traps.c b/linux-2.6-xen-sparse/arch/i386/kernel/traps.c new file mode 100644 index 0000000000..3a181294f0 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/traps.c @@ -0,0 +1,1077 @@ +/* + * linux/arch/i386/traps.c + * + * Copyright (C) 1991, 1992 Linus Torvalds + * + * Pentium III FXSR, SSE support + * Gareth Hughes <gareth@valinux.com>, May 2000 + */ + +/* + * 'Traps.c' handles hardware traps and faults after we have saved some + * state in 'asm.s'. + */ +#include <linux/config.h> +#include <linux/sched.h> +#include <linux/kernel.h> +#include <linux/string.h> +#include <linux/errno.h> +#include <linux/timer.h> +#include <linux/mm.h> +#include <linux/init.h> +#include <linux/delay.h> +#include <linux/spinlock.h> +#include <linux/interrupt.h> +#include <linux/highmem.h> +#include <linux/kallsyms.h> +#include <linux/ptrace.h> +#include <linux/utsname.h> +#include <linux/kprobes.h> + +#ifdef CONFIG_EISA +#include <linux/ioport.h> +#include <linux/eisa.h> +#endif + +#ifdef CONFIG_MCA +#include <linux/mca.h> +#endif + +#include <asm/processor.h> +#include <asm/system.h> +#include <asm/uaccess.h> +#include <asm/io.h> +#include <asm/atomic.h> +#include <asm/debugreg.h> +#include <asm/desc.h> +#include <asm/i387.h> +#include <asm/nmi.h> + +#include <asm/smp.h> +#include <asm/arch_hooks.h> +#include <asm/kdebug.h> + +#include <linux/irq.h> +#include <linux/module.h> + +#include "mach_traps.h" + +asmlinkage int system_call(void); + +struct desc_struct default_ldt[] = { { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 } }; + +/* Do we ignore FPU interrupts ? */ +char ignore_fpu_irq = 0; + +/* + * The IDT has to be page-aligned to simplify the Pentium + * F0 0F bug workaround.. We have a special link segment + * for this. + */ +struct desc_struct idt_table[256] __attribute__((__section__(".data.idt"))) = { {0, 0}, }; + +asmlinkage void divide_error(void); +asmlinkage void debug(void); +asmlinkage void nmi(void); +asmlinkage void int3(void); +asmlinkage void overflow(void); +asmlinkage void bounds(void); +asmlinkage void invalid_op(void); +asmlinkage void device_not_available(void); +asmlinkage void coprocessor_segment_overrun(void); +asmlinkage void invalid_TSS(void); +asmlinkage void segment_not_present(void); +asmlinkage void stack_segment(void); +asmlinkage void general_protection(void); +asmlinkage void page_fault(void); +asmlinkage void coprocessor_error(void); +asmlinkage void simd_coprocessor_error(void); +asmlinkage void alignment_check(void); +asmlinkage void spurious_interrupt_bug(void); +asmlinkage void machine_check(void); + +static int kstack_depth_to_print = 24; +struct notifier_block *i386die_chain; +static DEFINE_SPINLOCK(die_notifier_lock); + +int register_die_notifier(struct notifier_block *nb) +{ + int err = 0; + unsigned long flags; + spin_lock_irqsave(&die_notifier_lock, flags); + err = notifier_chain_register(&i386die_chain, nb); + spin_unlock_irqrestore(&die_notifier_lock, flags); + return err; +} + +static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) +{ + return p > (void *)tinfo && + p < (void *)tinfo + THREAD_SIZE - 3; +} + +static inline unsigned long print_context_stack(struct thread_info *tinfo, + unsigned long *stack, unsigned long ebp) +{ + unsigned long addr; + +#ifdef CONFIG_FRAME_POINTER + while (valid_stack_ptr(tinfo, (void *)ebp)) { + addr = *(unsigned long *)(ebp + 4); + printk(" [<%08lx>] ", addr); + print_symbol("%s", addr); + printk("\n"); + ebp = *(unsigned long *)ebp; + } +#else + while (valid_stack_ptr(tinfo, stack)) { + addr = *stack++; + if (__kernel_text_address(addr)) { + printk(" [<%08lx>]", addr); + print_symbol(" %s", addr); + printk("\n"); + } + } +#endif + return ebp; +} + +void show_trace(struct task_struct *task, unsigned long * stack) +{ + unsigned long ebp; + + if (!task) + task = current; + + if (task == current) { + /* Grab ebp right from our regs */ + asm ("movl %%ebp, %0" : "=r" (ebp) : ); + } else { + /* ebp is the last reg pushed by switch_to */ + ebp = *(unsigned long *) task->thread.esp; + } + + while (1) { + struct thread_info *context; + context = (struct thread_info *) + ((unsigned long)stack & (~(THREAD_SIZE - 1))); + ebp = print_context_stack(context, stack, ebp); + stack = (unsigned long*)context->previous_esp; + if (!stack) + break; + printk(" =======================\n"); + } +} + +void show_stack(struct task_struct *task, unsigned long *esp) +{ + unsigned long *stack; + int i; + + if (esp == NULL) { + if (task) + esp = (unsigned long*)task->thread.esp; + else + esp = (unsigned long *)&esp; + } + + stack = esp; + for(i = 0; i < kstack_depth_to_print; i++) { + if (kstack_end(stack)) + break; + if (i && ((i % 8) == 0)) + printk("\n "); + printk("%08lx ", *stack++); + } + printk("\nCall Trace:\n"); + show_trace(task, esp); +} + +/* + * The architecture-independent dump_stack generator + */ +void dump_stack(void) +{ + unsigned long stack; + + show_trace(current, &stack); +} + +EXPORT_SYMBOL(dump_stack); + +void show_registers(struct pt_regs *regs) +{ + int i; + int in_kernel = 1; + unsigned long esp; + unsigned short ss; + + esp = (unsigned long) (®s->esp); + ss = __KERNEL_DS; + if (regs->xcs & 3) { + in_kernel = 0; + esp = regs->esp; + ss = regs->xss & 0xffff; + } + print_modules(); + printk("CPU: %d\nEIP: %04x:[<%08lx>] %s VLI\nEFLAGS: %08lx" + " (%s) \n", + smp_processor_id(), 0xffff & regs->xcs, regs->eip, + print_tainted(), regs->eflags, system_utsname.release); + print_symbol("EIP is at %s\n", regs->eip); + printk("eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n", + regs->eax, regs->ebx, regs->ecx, regs->edx); + printk("esi: %08lx edi: %08lx ebp: %08lx esp: %08lx\n", + regs->esi, regs->edi, regs->ebp, esp); + printk("ds: %04x es: %04x ss: %04x\n", + regs->xds & 0xffff, regs->xes & 0xffff, ss); + printk("Process %s (pid: %d, threadinfo=%p task=%p)", + current->comm, current->pid, current_thread_info(), current); + /* + * When in-kernel, we also print out the stack and code at the + * time of the fault.. + */ + if (in_kernel) { + u8 *eip; + + printk("\nStack: "); + show_stack(NULL, (unsigned long*)esp); + + printk("Code: "); + + eip = (u8 *)regs->eip - 43; + for (i = 0; i < 64; i++, eip++) { + unsigned char c; + + if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) { + printk(" Bad EIP value."); + break; + } + if (eip == (u8 *)regs->eip) + printk("<%02x> ", c); + else + printk("%02x ", c); + } + } + printk("\n"); +} + +static void handle_BUG(struct pt_regs *regs) +{ + unsigned short ud2; + unsigned short line; + char *file; + char c; + unsigned long eip; + + if (regs->xcs & 3) + goto no_bug; /* Not in kernel */ + + eip = regs->eip; + + if (eip < PAGE_OFFSET) + goto no_bug; + if (__get_user(ud2, (unsigned short *)eip)) + goto no_bug; + if (ud2 != 0x0b0f) + goto no_bug; + if (__get_user(line, (unsigned short *)(eip + 2))) + goto bug; + if (__get_user(file, (char **)(eip + 4)) || + (unsigned long)file < PAGE_OFFSET || __get_user(c, file)) + file = "<bad filename>"; + + printk("------------[ cut here ]------------\n"); + printk(KERN_ALERT "kernel BUG at %s:%d!\n", file, line); + +no_bug: + return; + + /* Here we know it was a BUG but file-n-line is unavailable */ +bug: + printk("Kernel BUG\n"); +} + +void die(const char * str, struct pt_regs * regs, long err) +{ + static struct { + spinlock_t lock; + u32 lock_owner; + int lock_owner_depth; + } die = { + .lock = SPIN_LOCK_UNLOCKED, + .lock_owner = -1, + .lock_owner_depth = 0 + }; + static int die_counter; + + if (die.lock_owner != _smp_processor_id()) { + console_verbose(); + spin_lock_irq(&die.lock); + die.lock_owner = smp_processor_id(); + die.lock_owner_depth = 0; + bust_spinlocks(1); + } + + if (++die.lock_owner_depth < 3) { + int nl = 0; + handle_BUG(regs); + printk(KERN_ALERT "%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); +#ifdef CONFIG_PREEMPT + printk("PREEMPT "); + nl = 1; +#endif +#ifdef CONFIG_SMP + printk("SMP "); + nl = 1; +#endif +#ifdef CONFIG_DEBUG_PAGEALLOC + printk("DEBUG_PAGEALLOC"); + nl = 1; +#endif + if (nl) + printk("\n"); + notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV); + show_registers(regs); + } else + printk(KERN_ERR "Recursive die() failure, output suppressed\n"); + + bust_spinlocks(0); + die.lock_owner = -1; + spin_unlock_irq(&die.lock); + if (in_interrupt()) + panic("Fatal exception in interrupt"); + + if (panic_on_oops) { + printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); + ssleep(5); + panic("Fatal exception"); + } + do_exit(SIGSEGV); +} + +static inline void die_if_kernel(const char * str, struct pt_regs * regs, long err) +{ + if (!(regs->eflags & VM_MASK) && !(3 & regs->xcs)) + die(str, regs, err); +} + +static void do_trap(int trapnr, int signr, char *str, int vm86, + struct pt_regs * regs, long error_code, siginfo_t *info) +{ + if (regs->eflags & VM_MASK) { + if (vm86) + goto vm86_trap; + goto trap_signal; + } + + if (!(regs->xcs & 3)) + goto kernel_trap; + + trap_signal: { + struct task_struct *tsk = current; + tsk->thread.error_code = error_code; + tsk->thread.trap_no = trapnr; + if (info) + force_sig_info(signr, info, tsk); + else + force_sig(signr, tsk); + return; + } + + kernel_trap: { + if (!fixup_exception(regs)) + die(str, regs, error_code); + return; + } + + vm86_trap: { + int ret = handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, trapnr); + if (ret) goto trap_signal; + return; + } +} + +#define DO_ERROR(trapnr, signr, str, name) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ +{ \ + if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ + == NOTIFY_STOP) \ + return; \ + do_trap(trapnr, signr, str, 0, regs, error_code, NULL); \ +} + +#define DO_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ +{ \ + siginfo_t info; \ + info.si_signo = signr; \ + info.si_errno = 0; \ + info.si_code = sicode; \ + info.si_addr = (void __user *)siaddr; \ + if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ + == NOTIFY_STOP) \ + return; \ + do_trap(trapnr, signr, str, 0, regs, error_code, &info); \ +} + +#define DO_VM86_ERROR(trapnr, signr, str, name) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ +{ \ + if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ + == NOTIFY_STOP) \ + return; \ + do_trap(trapnr, signr, str, 1, regs, error_code, NULL); \ +} + +#define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ +{ \ + siginfo_t info; \ + info.si_signo = signr; \ + info.si_errno = 0; \ + info.si_code = sicode; \ + info.si_addr = (void __user *)siaddr; \ + if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ + == NOTIFY_STOP) \ + return; \ + do_trap(trapnr, signr, str, 1, regs, error_code, &info); \ +} + +DO_VM86_ERROR_INFO( 0, SIGFPE, "divide error", divide_error, FPE_INTDIV, regs->eip) +#ifndef CONFIG_KPROBES +DO_VM86_ERROR( 3, SIGTRAP, "int3", int3) +#endif +DO_VM86_ERROR( 4, SIGSEGV, "overflow", overflow) +DO_VM86_ERROR( 5, SIGSEGV, "bounds", bounds) +DO_ERROR_INFO( 6, SIGILL, "invalid operand", invalid_op, ILL_ILLOPN, regs->eip) +DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun) +DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS) +DO_ERROR(11, SIGBUS, "segment not present", segment_not_present) +DO_ERROR(12, SIGBUS, "stack segment", stack_segment) +DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) +DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0) + +fastcall void do_general_protection(struct pt_regs * regs, long error_code) +{ + int cpu = get_cpu(); + struct tss_struct *tss = &per_cpu(init_tss, cpu); + struct thread_struct *thread = ¤t->thread; + + /* + * Perform the lazy TSS's I/O bitmap copy. If the TSS has an + * invalid offset set (the LAZY one) and the faulting thread has + * a valid I/O bitmap pointer, we copy the I/O bitmap in the TSS + * and we set the offset field correctly. Then we let the CPU to + * restart the faulting instruction. + */ + if (tss->io_bitmap_base == INVALID_IO_BITMAP_OFFSET_LAZY && + thread->io_bitmap_ptr) { + memcpy(tss->io_bitmap, thread->io_bitmap_ptr, + thread->io_bitmap_max); + /* + * If the previously set map was extending to higher ports + * than the current one, pad extra space with 0xff (no access). + */ + if (thread->io_bitmap_max < tss->io_bitmap_max) + memset((char *) tss->io_bitmap + + thread->io_bitmap_max, 0xff, + tss->io_bitmap_max - thread->io_bitmap_max); + tss->io_bitmap_max = thread->io_bitmap_max; + tss->io_bitmap_base = IO_BITMAP_OFFSET; + put_cpu(); + return; + } + put_cpu(); + + if (regs->eflags & VM_MASK) + goto gp_in_vm86; + + if (!(regs->xcs & 3)) + goto gp_in_kernel; + + current->thread.error_code = error_code; + current->thread.trap_no = 13; + force_sig(SIGSEGV, current); + return; + +gp_in_vm86: + local_irq_enable(); + handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); + return; + +gp_in_kernel: + if (!fixup_exception(regs)) { + if (notify_die(DIE_GPF, "general protection fault", regs, + error_code, 13, SIGSEGV) == NOTIFY_STOP) + return; + die("general protection fault", regs, error_code); + } +} + +static void mem_parity_error(unsigned char reason, struct pt_regs * regs) +{ + printk("Uhhuh. NMI received. Dazed and confused, but trying to continue\n"); + printk("You probably have a hardware problem with your RAM chips\n"); + + /* Clear and disable the memory parity error line. */ + clear_mem_error(reason); +} + +static void io_check_error(unsigned char reason, struct pt_regs * regs) +{ + printk("NMI: IOCK error (debug interrupt?)\n"); + show_registers(regs); + + /* Re-enable the IOCK line, wait for a few seconds */ + clear_io_check_error(reason); +} + +static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs) +{ +#ifdef CONFIG_MCA + /* Might actually be able to figure out what the guilty party + * is. */ + if( MCA_bus ) { + mca_handle_nmi(); + return; + } +#endif + printk("Uhhuh. NMI received for unknown reason %02x on CPU %d.\n", + reason, smp_processor_id()); + printk("Dazed and confused, but trying to continue\n"); + printk("Do you have a strange power saving mode enabled?\n"); +} + +static DEFINE_SPINLOCK(nmi_print_lock); + +void die_nmi (struct pt_regs *regs, const char *msg) +{ + spin_lock(&nmi_print_lock); + /* + * We are in trouble anyway, lets at least try + * to get a message out. + */ + bust_spinlocks(1); + printk(msg); + printk(" on CPU%d, eip %08lx, registers:\n", + smp_processor_id(), regs->eip); + show_registers(regs); + printk("console shuts up ...\n"); + console_silent(); + spin_unlock(&nmi_print_lock); + bust_spinlocks(0); + do_exit(SIGSEGV); +} + +static void default_do_nmi(struct pt_regs * regs) +{ + unsigned char reason = 0; + + /* Only the BSP gets external NMIs from the system. */ + if (!smp_processor_id()) + reason = get_nmi_reason(); + + if (!(reason & 0xc0)) { + if (notify_die(DIE_NMI_IPI, "nmi_ipi", regs, reason, 0, SIGINT) + == NOTIFY_STOP) + return; +#ifdef CONFIG_X86_LOCAL_APIC + /* + * Ok, so this is none of the documented NMI sources, + * so it must be the NMI watchdog. + */ + if (nmi_watchdog) { + nmi_watchdog_tick(regs); + return; + } +#endif + unknown_nmi_error(reason, regs); + return; + } + if (notify_die(DIE_NMI, "nmi", regs, reason, 0, SIGINT) == NOTIFY_STOP) + return; + if (reason & 0x80) + mem_parity_error(reason, regs); + if (reason & 0x40) + io_check_error(reason, regs); + /* + * Reassert NMI in case it became active meanwhile + * as it's edge-triggered. + */ + reassert_nmi(); +} + +static int dummy_nmi_callback(struct pt_regs * regs, int cpu) +{ + return 0; +} + +static nmi_callback_t nmi_callback = dummy_nmi_callback; + +fastcall void do_nmi(struct pt_regs * regs, long error_code) +{ + int cpu; + + nmi_enter(); + + cpu = smp_processor_id(); + ++nmi_count(cpu); + + if (!nmi_callback(regs, cpu)) + default_do_nmi(regs); + + nmi_exit(); +} + +void set_nmi_callback(nmi_callback_t callback) +{ + nmi_callback = callback; +} + +void unset_nmi_callback(void) +{ + nmi_callback = dummy_nmi_callback; +} + +#ifdef CONFIG_KPROBES +fastcall void do_int3(struct pt_regs *regs, long error_code) +{ + if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) + == NOTIFY_STOP) + return; + /* This is an interrupt gate, because kprobes wants interrupts + disabled. Normal trap handlers don't. */ + restore_interrupts(regs); + do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL); +} +#endif + +/* + * Our handling of the processor debug registers is non-trivial. + * We do not clear them on entry and exit from the kernel. Therefore + * it is possible to get a watchpoint trap here from inside the kernel. + * However, the code in ./ptrace.c has ensured that the user can + * only set watchpoints on userspace addresses. Therefore the in-kernel + * watchpoint trap can only occur in code which is reading/writing + * from user space. Such code must not hold kernel locks (since it + * can equally take a page fault), therefore it is safe to call + * force_sig_info even though that claims and releases locks. + * + * Code in ./signal.c ensures that the debug control register + * is restored before we deliver any signal, and therefore that + * user code runs with the correct debug control register even though + * we clear it here. + * + * Being careful here means that we don't have to be as careful in a + * lot of more complicated places (task switching can be a bit lazy + * about restoring all the debug state, and ptrace doesn't have to + * find every occurrence of the TF bit that could be saved away even + * by user code) + */ +fastcall void do_debug(struct pt_regs * regs, long error_code) +{ + unsigned int condition; + struct task_struct *tsk = current; + + __asm__ __volatile__("movl %%db6,%0" : "=r" (condition)); + + if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, + SIGTRAP) == NOTIFY_STOP) + return; + /* It's safe to allow irq's after DR6 has been saved */ + if (regs->eflags & X86_EFLAGS_IF) + local_irq_enable(); + + /* Mask out spurious debug traps due to lazy DR7 setting */ + if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) { + if (!tsk->thread.debugreg[7]) + goto clear_dr7; + } + + if (regs->eflags & VM_MASK) + goto debug_vm86; + + /* Save debug status register where ptrace can see it */ + tsk->thread.debugreg[6] = condition; + + /* + * Single-stepping through TF: make sure we ignore any events in + * kernel space (but re-enable TF when returning to user mode). + */ + if (condition & DR_STEP) { + /* + * We already checked v86 mode above, so we can + * check for kernel mode by just checking the CPL + * of CS. + */ + if ((regs->xcs & 3) == 0) + goto clear_TF_reenable; + } + + /* Ok, finally something we can handle */ + send_sigtrap(tsk, regs, error_code); + + /* Disable additional traps. They'll be re-enabled when + * the signal is delivered. + */ +clear_dr7: + __asm__("movl %0,%%db7" + : /* no output */ + : "r" (0)); + return; + +debug_vm86: + handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, 1); + return; + +clear_TF_reenable: + set_tsk_thread_flag(tsk, TIF_SINGLESTEP); + regs->eflags &= ~TF_MASK; + return; +} + +/* + * Note that we play around with the 'TS' bit in an attempt to get + * the correct behaviour even in the presence of the asynchronous + * IRQ13 behaviour + */ +void math_error(void __user *eip) +{ + struct task_struct * task; + siginfo_t info; + unsigned short cwd, swd; + + /* + * Save the info for the exception handler and clear the error. + */ + task = current; + save_init_fpu(task); + task->thread.trap_no = 16; + task->thread.error_code = 0; + info.si_signo = SIGFPE; + info.si_errno = 0; + info.si_code = __SI_FAULT; + info.si_addr = eip; + /* + * (~cwd & swd) will mask out exceptions that are not set to unmasked + * status. 0x3f is the exception bits in these regs, 0x200 is the + * C1 reg you need in case of a stack fault, 0x040 is the stack + * fault bit. We should only be taking one exception at a time, + * so if this combination doesn't produce any single exception, + * then we have a bad program that isn't syncronizing its FPU usage + * and it will suffer the consequences since we won't be able to + * fully reproduce the context of the exception + */ + cwd = get_fpu_cwd(task); + swd = get_fpu_swd(task); + switch (((~cwd) & swd & 0x3f) | (swd & 0x240)) { + case 0x000: + default: + break; + case 0x001: /* Invalid Op */ + case 0x041: /* Stack Fault */ + case 0x241: /* Stack Fault | Direction */ + info.si_code = FPE_FLTINV; + /* Should we clear the SF or let user space do it ???? */ + break; + case 0x002: /* Denormalize */ + case 0x010: /* Underflow */ + info.si_code = FPE_FLTUND; + break; + case 0x004: /* Zero Divide */ + info.si_code = FPE_FLTDIV; + break; + case 0x008: /* Overflow */ + info.si_code = FPE_FLTOVF; + break; + case 0x020: /* Precision */ + info.si_code = FPE_FLTRES; + break; + } + force_sig_info(SIGFPE, &info, task); +} + +fastcall void do_coprocessor_error(struct pt_regs * regs, long error_code) +{ + ignore_fpu_irq = 1; + math_error((void __user *)regs->eip); +} + +static void simd_math_error(void __user *eip) +{ + struct task_struct * task; + siginfo_t info; + unsigned short mxcsr; + + /* + * Save the info for the exception handler and clear the error. + */ + task = current; + save_init_fpu(task); + task->thread.trap_no = 19; + task->thread.error_code = 0; + info.si_signo = SIGFPE; + info.si_errno = 0; + info.si_code = __SI_FAULT; + info.si_addr = eip; + /* + * The SIMD FPU exceptions are handled a little differently, as there + * is only a single status/control register. Thus, to determine which + * unmasked exception was caught we must mask the exception mask bits + * at 0x1f80, and then use these to mask the exception bits at 0x3f. + */ + mxcsr = get_fpu_mxcsr(task); + switch (~((mxcsr & 0x1f80) >> 7) & (mxcsr & 0x3f)) { + case 0x000: + default: + break; + case 0x001: /* Invalid Op */ + info.si_code = FPE_FLTINV; + break; + case 0x002: /* Denormalize */ + case 0x010: /* Underflow */ + info.si_code = FPE_FLTUND; + break; + case 0x004: /* Zero Divide */ + info.si_code = FPE_FLTDIV; + break; + case 0x008: /* Overflow */ + info.si_code = FPE_FLTOVF; + break; + case 0x020: /* Precision */ + info.si_code = FPE_FLTRES; + break; + } + force_sig_info(SIGFPE, &info, task); +} + +fastcall void do_simd_coprocessor_error(struct pt_regs * regs, + long error_code) +{ + if (cpu_has_xmm) { + /* Handle SIMD FPU exceptions on PIII+ processors. */ + ignore_fpu_irq = 1; + simd_math_error((void __user *)regs->eip); + } else { + /* + * Handle strange cache flush from user space exception + * in all other cases. This is undocumented behaviour. + */ + if (regs->eflags & VM_MASK) { + handle_vm86_fault((struct kernel_vm86_regs *)regs, + error_code); + return; + } + die_if_kernel("cache flush denied", regs, error_code); + current->thread.trap_no = 19; + current->thread.error_code = error_code; + force_sig(SIGSEGV, current); + } +} + +fastcall void do_spurious_interrupt_bug(struct pt_regs * regs, + long error_code) +{ +#if 0 + /* No need to warn about this any longer. */ + printk("Ignoring P6 Local APIC Spurious Interrupt Bug...\n"); +#endif +} + +fastcall void setup_x86_bogus_stack(unsigned char * stk) +{ + unsigned long *switch16_ptr, *switch32_ptr; + struct pt_regs *regs; + unsigned long stack_top, stack_bot; + unsigned short iret_frame16_off; + int cpu = smp_processor_id(); + /* reserve the space on 32bit stack for the magic switch16 pointer */ + memmove(stk, stk + 8, sizeof(struct pt_regs)); + switch16_ptr = (unsigned long *)(stk + sizeof(struct pt_regs)); + regs = (struct pt_regs *)stk; + /* now the switch32 on 16bit stack */ + stack_bot = (unsigned long)&per_cpu(cpu_16bit_stack, cpu); + stack_top = stack_bot + CPU_16BIT_STACK_SIZE; + switch32_ptr = (unsigned long *)(stack_top - 8); + iret_frame16_off = CPU_16BIT_STACK_SIZE - 8 - 20; + /* copy iret frame on 16bit stack */ + memcpy((void *)(stack_bot + iret_frame16_off), ®s->eip, 20); + /* fill in the switch pointers */ + switch16_ptr[0] = (regs->esp & 0xffff0000) | iret_frame16_off; + switch16_ptr[1] = __ESPFIX_SS; + switch32_ptr[0] = (unsigned long)stk + sizeof(struct pt_regs) + + 8 - CPU_16BIT_STACK_SIZE; + switch32_ptr[1] = __KERNEL_DS; +} + +fastcall unsigned char * fixup_x86_bogus_stack(unsigned short sp) +{ + unsigned long *switch32_ptr; + unsigned char *stack16, *stack32; + unsigned long stack_top, stack_bot; + int len; + int cpu = smp_processor_id(); + stack_bot = (unsigned long)&per_cpu(cpu_16bit_stack, cpu); + stack_top = stack_bot + CPU_16BIT_STACK_SIZE; + switch32_ptr = (unsigned long *)(stack_top - 8); + /* copy the data from 16bit stack to 32bit stack */ + len = CPU_16BIT_STACK_SIZE - 8 - sp; + stack16 = (unsigned char *)(stack_bot + sp); + stack32 = (unsigned char *) + (switch32_ptr[0] + CPU_16BIT_STACK_SIZE - 8 - len); + memcpy(stack32, stack16, len); + return stack32; +} + +/* + * 'math_state_restore()' saves the current math information in the + * old math state array, and gets the new ones from the current task + * + * Careful.. There are problems with IBM-designed IRQ13 behaviour. + * Don't touch unless you *really* know how it works. + * + * Must be called with kernel preemption disabled (in this case, + * local interrupts are disabled at the call-site in entry.S). + */ +asmlinkage void math_state_restore(struct pt_regs regs) +{ + struct thread_info *thread = current_thread_info(); + struct task_struct *tsk = thread->task; + + clts(); /* Allow maths ops (or we recurse) */ + if (!tsk_used_math(tsk)) + init_fpu(tsk); + restore_fpu(tsk); + thread->status |= TS_USEDFPU; /* So we fnsave on switch_to() */ +} + +#ifndef CONFIG_MATH_EMULATION + +asmlinkage void math_emulate(long arg) +{ + printk("math-emulation not enabled and no coprocessor found.\n"); + printk("killing %s.\n",current->comm); + force_sig(SIGFPE,current); + schedule(); +} + +#endif /* CONFIG_MATH_EMULATION */ + +#ifdef CONFIG_X86_F00F_BUG +void __init trap_init_f00f_bug(void) +{ + __set_fixmap(FIX_F00F_IDT, __pa(&idt_table), PAGE_KERNEL_RO); + + /* + * Update the IDT descriptor and reload the IDT so that + * it uses the read-only mapped virtual address. + */ + idt_descr.address = fix_to_virt(FIX_F00F_IDT); + __asm__ __volatile__("lidt %0" : : "m" (idt_descr)); +} +#endif + +#define _set_gate(gate_addr,type,dpl,addr,seg) \ +do { \ + int __d0, __d1; \ + __asm__ __volatile__ ("movw %%dx,%%ax\n\t" \ + "movw %4,%%dx\n\t" \ + "movl %%eax,%0\n\t" \ + "movl %%edx,%1" \ + :"=m" (*((long *) (gate_addr))), \ + "=m" (*(1+(long *) (gate_addr))), "=&a" (__d0), "=&d" (__d1) \ + :"i" ((short) (0x8000+(dpl<<13)+(type<<8))), \ + "3" ((char *) (addr)),"2" ((seg) << 16)); \ +} while (0) + + +/* + * This needs to use 'idt_table' rather than 'idt', and + * thus use the _nonmapped_ version of the IDT, as the + * Pentium F0 0F bugfix can have resulted in the mapped + * IDT being write-protected. + */ +void set_intr_gate(unsigned int n, void *addr) +{ + _set_gate(idt_table+n,14,0,addr,__KERNEL_CS); +} + +/* + * This routine sets up an interrupt gate at directory privilege level 3. + */ +static inline void set_system_intr_gate(unsigned int n, void *addr) +{ + _set_gate(idt_table+n, 14, 3, addr, __KERNEL_CS); +} + +static void __init set_trap_gate(unsigned int n, void *addr) +{ + _set_gate(idt_table+n,15,0,addr,__KERNEL_CS); +} + +static void __init set_system_gate(unsigned int n, void *addr) +{ + _set_gate(idt_table+n,15,3,addr,__KERNEL_CS); +} + +static void __init set_task_gate(unsigned int n, unsigned int gdt_entry) +{ + _set_gate(idt_table+n,5,0,0,(gdt_entry<<3)); +} + + +void __init trap_init(void) +{ +#ifdef CONFIG_EISA + void __iomem *p = ioremap(0x0FFFD9, 4); + if (readl(p) == 'E'+('I'<<8)+('S'<<16)+('A'<<24)) { + EISA_bus = 1; + } + iounmap(p); +#endif + +#ifdef CONFIG_X86_LOCAL_APIC + init_apic_mappings(); +#endif + + set_trap_gate(0,÷_error); + set_intr_gate(1,&debug); + set_intr_gate(2,&nmi); + set_system_intr_gate(3, &int3); /* int3-5 can be called from all */ + set_system_gate(4,&overflow); + set_system_gate(5,&bounds); + set_trap_gate(6,&invalid_op); + set_trap_gate(7,&device_not_available); + set_task_gate(8,GDT_ENTRY_DOUBLEFAULT_TSS); + set_trap_gate(9,&coprocessor_segment_overrun); + set_trap_gate(10,&invalid_TSS); + set_trap_gate(11,&segment_not_present); + set_trap_gate(12,&stack_segment); + set_trap_gate(13,&general_protection); + set_intr_gate(14,&page_fault); + set_trap_gate(15,&spurious_interrupt_bug); + set_trap_gate(16,&coprocessor_error); + set_trap_gate(17,&alignment_check); +#ifdef CONFIG_X86_MCE + set_trap_gate(18,&machine_check); +#endif + set_trap_gate(19,&simd_coprocessor_error); + + set_system_gate(SYSCALL_VECTOR,&system_call); + + /* + * Should be a barrier for any external CPU state. + */ + cpu_init(); + + trap_init_hook(); +} + +static int __init kstack_setup(char *s) +{ + kstack_depth_to_print = simple_strtoul(s, NULL, 0); + return 0; +} +__setup("kstack=", kstack_setup); diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/vmlinux.lds.S b/linux-2.6-xen-sparse/arch/i386/kernel/vmlinux.lds.S new file mode 100644 index 0000000000..ecd5d7a5d8 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/kernel/vmlinux.lds.S @@ -0,0 +1,141 @@ +/* ld script to make i386 Linux kernel + * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; + */ + +#include <asm-generic/vmlinux.lds.h> +#include <asm/thread_info.h> +#include <asm/page.h> + +OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +OUTPUT_ARCH(i386) +ENTRY(startup_32) +jiffies = jiffies_64; +SECTIONS +{ + . = __PAGE_OFFSET + 0x100000; + /* read-only */ + _text = .; /* Text and read-only data */ + .text : { + *(.text) + SCHED_TEXT + LOCK_TEXT + *(.fixup) + *(.gnu.warning) + } = 0x9090 + + _etext = .; /* End of text section */ + + . = ALIGN(16); /* Exception table */ + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(16); + __start_smp_alternatives_table = .; + __smp_alternatives : { *(__smp_alternatives) } + __stop_smp_alternatives_table = .; + + __smp_replacements : { *(__smp_replacements) } + + RODATA + + /* writeable */ + .data : { /* Data */ + *(.data) + CONSTRUCTORS + } + + . = ALIGN(4096); + __nosave_begin = .; + .data_nosave : { *(.data.nosave) } + . = ALIGN(4096); + __nosave_end = .; + + . = ALIGN(4096); + .data.page_aligned : { *(.data.idt) } + + . = ALIGN(32); + .data.cacheline_aligned : { *(.data.cacheline_aligned) } + + _edata = .; /* End of data section */ + + . = ALIGN(THREAD_SIZE); /* init_task */ + .data.init_task : { *(.data.init_task) } + + /* will be freed after init */ + . = ALIGN(4096); /* Init code and data */ + __init_begin = .; + .init.text : { + _sinittext = .; + *(.init.text) + _einittext = .; + } + .init.data : { *(.init.data) } + . = ALIGN(16); + __setup_start = .; + .init.setup : { *(.init.setup) } + __setup_end = .; + __initcall_start = .; + .initcall.init : { + *(.initcall1.init) + *(.initcall2.init) + *(.initcall3.init) + *(.initcall4.init) + *(.initcall5.init) + *(.initcall6.init) + *(.initcall7.init) + } + __initcall_end = .; + __con_initcall_start = .; + .con_initcall.init : { *(.con_initcall.init) } + __con_initcall_end = .; + SECURITY_INIT + . = ALIGN(4); + __alt_instructions = .; + .altinstructions : { *(.altinstructions) } + __alt_instructions_end = .; + .altinstr_replacement : { *(.altinstr_replacement) } + /* .exit.text is discard at runtime, not link time, to deal with references + from .altinstructions and .eh_frame */ + .exit.text : { *(.exit.text) } + .exit.data : { *(.exit.data) } + . = ALIGN(4096); + __initramfs_start = .; + .init.ramfs : { *(.init.ramfs) } + __initramfs_end = .; + . = ALIGN(32); + __per_cpu_start = .; + .data.percpu : { *(.data.percpu) } + __per_cpu_end = .; + . = ALIGN(4096); + __init_end = .; + /* freed after init ends here */ + + __bss_start = .; /* BSS */ + .bss : { + *(.bss.page_aligned) + *(.bss) + } + . = ALIGN(4); + __bss_stop = .; + + _end = . ; + + /* This is where the kernel creates the early boot page tables */ + . = ALIGN(4096); + pg0 = .; + + /* Sections to be discarded */ + /DISCARD/ : { + *(.exitcall.exit) + } + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } +} diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall-note.S b/linux-2.6-xen-sparse/arch/i386/kernel/vsyscall-note-xen.S index cdb81edf74..c2d6dbf159 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall-note.S +++ b/linux-2.6-xen-sparse/arch/i386/kernel/vsyscall-note-xen.S @@ -4,7 +4,7 @@ * First we get the vanilla i386 note that supplies the kernel version info. */ -#include "../../../i386/kernel/vsyscall-note.S" +#include "vsyscall-note.S" /* * Now we add a special note telling glibc's dynamic linker a fake hardware diff --git a/linux-2.6-xen-sparse/arch/i386/mach-xen/Makefile b/linux-2.6-xen-sparse/arch/i386/mach-xen/Makefile new file mode 100644 index 0000000000..ee9c888273 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/mach-xen/Makefile @@ -0,0 +1,7 @@ +# +# Makefile for the linux kernel. +# + +obj-y := topology.o + +topology-y := ../mach-default/topology.o diff --git a/linux-2.6-xen-sparse/arch/i386/mach-xen/topology.c b/linux-2.6-xen-sparse/arch/i386/mach-xen/topology.c new file mode 100644 index 0000000000..b64314069e --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/mach-xen/topology.c @@ -0,0 +1,97 @@ +/* + * arch/i386/mach-generic/topology.c - Populate driverfs with topology information + * + * Written by: Matthew Dobson, IBM Corporation + * Original Code: Paul Dorwin, IBM Corporation, Patrick Mochel, OSDL + * + * Copyright (C) 2002, IBM Corp. + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or + * NON INFRINGEMENT. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Send feedback to <colpatch@us.ibm.com> + */ +#include <linux/init.h> +#include <linux/smp.h> +#include <linux/nodemask.h> +#include <asm/cpu.h> + +static struct i386_cpu cpu_devices[NR_CPUS]; + +int arch_register_cpu(int num){ + struct node *parent = NULL; + +#ifdef CONFIG_NUMA + int node = cpu_to_node(num); + if (node_online(node)) + parent = &node_devices[node].node; +#endif /* CONFIG_NUMA */ + + return register_cpu(&cpu_devices[num].cpu, num, parent); +} + +#ifdef CONFIG_HOTPLUG_CPU + +void arch_unregister_cpu(int num) { + struct node *parent = NULL; + +#ifdef CONFIG_NUMA + int node = cpu_to_node(num); + if (node_online(node)) + parent = &node_devices[node].node; +#endif /* CONFIG_NUMA */ + + return unregister_cpu(&cpu_devices[num].cpu, parent); +} +EXPORT_SYMBOL(arch_register_cpu); +EXPORT_SYMBOL(arch_unregister_cpu); +#endif /*CONFIG_HOTPLUG_CPU*/ + + + +#ifdef CONFIG_NUMA +#include <linux/mmzone.h> +#include <asm/node.h> + +struct i386_node node_devices[MAX_NUMNODES]; + +static int __init topology_init(void) +{ + int i; + + for_each_online_node(i) + arch_register_node(i); + + for_each_present_cpu(i) + arch_register_cpu(i); + return 0; +} + +#else /* !CONFIG_NUMA */ + +static int __init topology_init(void) +{ + int i; + + for_each_present_cpu(i) + arch_register_cpu(i); + return 0; +} + +#endif /* CONFIG_NUMA */ + +subsys_initcall(topology_init); diff --git a/linux-2.6-xen-sparse/arch/i386/mm/Makefile b/linux-2.6-xen-sparse/arch/i386/mm/Makefile new file mode 100644 index 0000000000..c5aced2446 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/mm/Makefile @@ -0,0 +1,18 @@ +# +# Makefile for the linux i386-specific parts of the memory manager. +# + +obj-y := init.o pgtable.o fault.o ioremap.o extable.o pageattr.o mmap.o + +obj-$(CONFIG_DISCONTIGMEM) += discontig.o +obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o +obj-$(CONFIG_HIGHMEM) += highmem.o +obj-$(CONFIG_BOOT_IOREMAP) += boot_ioremap.o + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen + +obj-y += hypervisor.o + +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c b/linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c index 23b0556347..23b0556347 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/highmem.c b/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c index c5b64185a5..c5b64185a5 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/highmem.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c index e1a477bc00..ecf5478abc 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c @@ -34,8 +34,8 @@ #include <asm/page.h> #include <asm/pgtable.h> #include <asm/hypervisor.h> -#include <asm-xen/balloon.h> -#include <asm-xen/xen-public/memory.h> +#include <xen/balloon.h> +#include <xen/interface/memory.h> #include <linux/module.h> #include <linux/percpu.h> #include <asm/tlbflush.h> diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6-xen-sparse/arch/i386/mm/init-xen.c index f98dd5ce54..f98dd5ce54 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/init-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c b/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c index dc29e0a2b7..dc29e0a2b7 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c index 46f7d8e8e8..668bf9fcbb 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c @@ -24,8 +24,8 @@ #include <asm/io.h> #include <asm/mmu_context.h> -#include <asm-xen/features.h> -#include <asm-xen/foreign_page.h> +#include <xen/features.h> +#include <xen/foreign_page.h> #include <asm/hypervisor.h> static void pgd_test_and_unpin(pgd_t *pgd); diff --git a/linux-2.6-xen-sparse/arch/i386/pci/Makefile b/linux-2.6-xen-sparse/arch/i386/pci/Makefile new file mode 100644 index 0000000000..17c813f166 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/i386/pci/Makefile @@ -0,0 +1,19 @@ +obj-y := i386.o + +obj-$(CONFIG_PCI_BIOS) += pcbios.o +obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o +obj-$(CONFIG_PCI_DIRECT) += direct.o + +pci-y := fixup.o +pci-$(CONFIG_ACPI_PCI) += acpi.o +pci-y += legacy.o irq.o + +pci-$(CONFIG_X86_VISWS) := visws.o fixup.o +pci-$(CONFIG_X86_NUMAQ) := numa.o irq.o + +obj-y += $(pci-y) common.o + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/i386/pci/i386.c b/linux-2.6-xen-sparse/arch/i386/pci/i386-xen.c index aa6e1aa7ea..aa6e1aa7ea 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/pci/i386.c +++ b/linux-2.6-xen-sparse/arch/i386/pci/i386-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/i386/pci/irq.c b/linux-2.6-xen-sparse/arch/i386/pci/irq-xen.c index f00b746e32..f00b746e32 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/pci/irq.c +++ b/linux-2.6-xen-sparse/arch/i386/pci/irq-xen.c diff --git a/linux-2.6-xen-sparse/arch/um/kernel/physmem.c b/linux-2.6-xen-sparse/arch/um/kernel/physmem.c new file mode 100644 index 0000000000..5c1a77f0c2 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/um/kernel/physmem.c @@ -0,0 +1,480 @@ +/* + * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +#include "linux/mm.h" +#include "linux/rbtree.h" +#include "linux/slab.h" +#include "linux/vmalloc.h" +#include "linux/bootmem.h" +#include "linux/module.h" +#include "asm/types.h" +#include "asm/pgtable.h" +#include "kern_util.h" +#include "user_util.h" +#include "mode_kern.h" +#include "mem.h" +#include "mem_user.h" +#include "os.h" +#include "kern.h" +#include "init.h" + +struct phys_desc { + struct rb_node rb; + int fd; + __u64 offset; + void *virt; + unsigned long phys; + struct list_head list; +}; + +static struct rb_root phys_mappings = RB_ROOT; + +static struct rb_node **find_rb(void *virt) +{ + struct rb_node **n = &phys_mappings.rb_node; + struct phys_desc *d; + + while(*n != NULL){ + d = rb_entry(*n, struct phys_desc, rb); + if(d->virt == virt) + return(n); + + if(d->virt > virt) + n = &(*n)->rb_left; + else + n = &(*n)->rb_right; + } + + return(n); +} + +static struct phys_desc *find_phys_mapping(void *virt) +{ + struct rb_node **n = find_rb(virt); + + if(*n == NULL) + return(NULL); + + return(rb_entry(*n, struct phys_desc, rb)); +} + +static void insert_phys_mapping(struct phys_desc *desc) +{ + struct rb_node **n = find_rb(desc->virt); + + if(*n != NULL) + panic("Physical remapping for %p already present", + desc->virt); + + rb_link_node(&desc->rb, (*n)->rb_parent, n); + rb_insert_color(&desc->rb, &phys_mappings); +} + +LIST_HEAD(descriptor_mappings); + +struct desc_mapping { + int fd; + struct list_head list; + struct list_head pages; +}; + +static struct desc_mapping *find_mapping(int fd) +{ + struct desc_mapping *desc; + struct list_head *ele; + + list_for_each(ele, &descriptor_mappings){ + desc = list_entry(ele, struct desc_mapping, list); + if(desc->fd == fd) + return(desc); + } + + return(NULL); +} + +static struct desc_mapping *descriptor_mapping(int fd) +{ + struct desc_mapping *desc; + + desc = find_mapping(fd); + if(desc != NULL) + return(desc); + + desc = kmalloc(sizeof(*desc), GFP_ATOMIC); + if(desc == NULL) + return(NULL); + + *desc = ((struct desc_mapping) + { .fd = fd, + .list = LIST_HEAD_INIT(desc->list), + .pages = LIST_HEAD_INIT(desc->pages) }); + list_add(&desc->list, &descriptor_mappings); + + return(desc); +} + +int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) +{ + struct desc_mapping *fd_maps; + struct phys_desc *desc; + unsigned long phys; + int err; + + fd_maps = descriptor_mapping(fd); + if(fd_maps == NULL) + return(-ENOMEM); + + phys = __pa(virt); + desc = find_phys_mapping(virt); + if(desc != NULL) + panic("Address 0x%p is already substituted\n", virt); + + err = -ENOMEM; + desc = kmalloc(sizeof(*desc), GFP_ATOMIC); + if(desc == NULL) + goto out; + + *desc = ((struct phys_desc) + { .fd = fd, + .offset = offset, + .virt = virt, + .phys = __pa(virt), + .list = LIST_HEAD_INIT(desc->list) }); + insert_phys_mapping(desc); + + list_add(&desc->list, &fd_maps->pages); + + virt = (void *) ((unsigned long) virt & PAGE_MASK); + err = os_map_memory(virt, fd, offset, PAGE_SIZE, 1, w, 0); + if(!err) + goto out; + + rb_erase(&desc->rb, &phys_mappings); + kfree(desc); + out: + return(err); +} + +static int physmem_fd = -1; + +static void remove_mapping(struct phys_desc *desc) +{ + void *virt = desc->virt; + int err; + + rb_erase(&desc->rb, &phys_mappings); + list_del(&desc->list); + kfree(desc); + + err = os_map_memory(virt, physmem_fd, __pa(virt), PAGE_SIZE, 1, 1, 0); + if(err) + panic("Failed to unmap block device page from physical memory, " + "errno = %d", -err); +} + +int physmem_remove_mapping(void *virt) +{ + struct phys_desc *desc; + + virt = (void *) ((unsigned long) virt & PAGE_MASK); + desc = find_phys_mapping(virt); + if(desc == NULL) + return(0); + + remove_mapping(desc); + return(1); +} + +void physmem_forget_descriptor(int fd) +{ + struct desc_mapping *desc; + struct phys_desc *page; + struct list_head *ele, *next; + __u64 offset; + void *addr; + int err; + + desc = find_mapping(fd); + if(desc == NULL) + return; + + list_for_each_safe(ele, next, &desc->pages){ + page = list_entry(ele, struct phys_desc, list); + offset = page->offset; + addr = page->virt; + remove_mapping(page); + err = os_seek_file(fd, offset); + if(err) + panic("physmem_forget_descriptor - failed to seek " + "to %lld in fd %d, error = %d\n", + offset, fd, -err); + err = os_read_file(fd, addr, PAGE_SIZE); + if(err < 0) + panic("physmem_forget_descriptor - failed to read " + "from fd %d to 0x%p, error = %d\n", + fd, addr, -err); + } + + list_del(&desc->list); + kfree(desc); +} + +EXPORT_SYMBOL(physmem_forget_descriptor); +EXPORT_SYMBOL(physmem_remove_mapping); +EXPORT_SYMBOL(physmem_subst_mapping); + +int arch_free_page(struct page *page, int order) +{ + void *virt; + int i; + + for(i = 0; i < (1 << order); i++){ + virt = __va(page_to_phys(page + i)); + physmem_remove_mapping(virt); + } + + return 0; +} + +int is_remapped(void *virt) +{ + struct phys_desc *desc = find_phys_mapping(virt); + + return(desc != NULL); +} + +/* Changed during early boot */ +unsigned long high_physmem; + +extern unsigned long physmem_size; + +void *to_virt(unsigned long phys) +{ + return((void *) uml_physmem + phys); +} + +unsigned long to_phys(void *virt) +{ + return(((unsigned long) virt) - uml_physmem); +} + +int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) +{ + struct page *p, *map; + unsigned long phys_len, phys_pages, highmem_len, highmem_pages; + unsigned long iomem_len, iomem_pages, total_len, total_pages; + int i; + + phys_pages = physmem >> PAGE_SHIFT; + phys_len = phys_pages * sizeof(struct page); + + iomem_pages = iomem >> PAGE_SHIFT; + iomem_len = iomem_pages * sizeof(struct page); + + highmem_pages = highmem >> PAGE_SHIFT; + highmem_len = highmem_pages * sizeof(struct page); + + total_pages = phys_pages + iomem_pages + highmem_pages; + total_len = phys_len + iomem_pages + highmem_len; + + if(kmalloc_ok){ + map = kmalloc(total_len, GFP_KERNEL); + if(map == NULL) + map = vmalloc(total_len); + } + else map = alloc_bootmem_low_pages(total_len); + + if(map == NULL) + return(-ENOMEM); + + for(i = 0; i < total_pages; i++){ + p = &map[i]; + set_page_count(p, 0); + SetPageReserved(p); + INIT_LIST_HEAD(&p->lru); + } + + max_mapnr = total_pages; + return(0); +} + +struct page *phys_to_page(const unsigned long phys) +{ + return(&mem_map[phys >> PAGE_SHIFT]); +} + +struct page *__virt_to_page(const unsigned long virt) +{ + return(&mem_map[__pa(virt) >> PAGE_SHIFT]); +} + +phys_t page_to_phys(struct page *page) +{ + return((page - mem_map) << PAGE_SHIFT); +} + +pte_t mk_pte(struct page *page, pgprot_t pgprot) +{ + pte_t pte; + + pte_set_val(pte, page_to_phys(page), pgprot); + if(pte_present(pte)) + pte_mknewprot(pte_mknewpage(pte)); + return(pte); +} + +/* Changed during early boot */ +static unsigned long kmem_top = 0; + +unsigned long get_kmem_end(void) +{ + if(kmem_top == 0) + kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); + return(kmem_top); +} + +void map_memory(unsigned long virt, unsigned long phys, unsigned long len, + int r, int w, int x) +{ + __u64 offset; + int fd, err; + + fd = phys_mapping(phys, &offset); + err = os_map_memory((void *) virt, fd, offset, len, r, w, x); + if(err) { + if(err == -ENOMEM) + printk("try increasing the host's " + "/proc/sys/vm/max_map_count to <physical " + "memory size>/4096\n"); + panic("map_memory(0x%lx, %d, 0x%llx, %ld, %d, %d, %d) failed, " + "err = %d\n", virt, fd, offset, len, r, w, x, err); + } +} + +#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) + +void setup_physmem(unsigned long start, unsigned long reserve_end, + unsigned long len, unsigned long highmem) +{ + unsigned long reserve = reserve_end - start; + int pfn = PFN_UP(__pa(reserve_end)); + int delta = (len - reserve) >> PAGE_SHIFT; + int err, offset, bootmap_size; + + physmem_fd = create_mem_file(len + highmem); + + offset = uml_reserved - uml_physmem; + err = os_map_memory((void *) uml_reserved, physmem_fd, offset, + len - offset, 1, 1, 0); + if(err < 0){ + os_print_error(err, "Mapping memory"); + exit(1); + } + + bootmap_size = init_bootmem(pfn, pfn + delta); + free_bootmem(__pa(reserve_end) + bootmap_size, + len - bootmap_size - reserve); +} + +int phys_mapping(unsigned long phys, __u64 *offset_out) +{ + struct phys_desc *desc = find_phys_mapping(__va(phys & PAGE_MASK)); + int fd = -1; + + if(desc != NULL){ + fd = desc->fd; + *offset_out = desc->offset; + } + else if(phys < physmem_size){ + fd = physmem_fd; + *offset_out = phys; + } + else if(phys < __pa(end_iomem)){ + struct iomem_region *region = iomem_regions; + + while(region != NULL){ + if((phys >= region->phys) && + (phys < region->phys + region->size)){ + fd = region->fd; + *offset_out = phys - region->phys; + break; + } + region = region->next; + } + } + else if(phys < __pa(end_iomem) + highmem){ + fd = physmem_fd; + *offset_out = phys - iomem_size; + } + + return(fd); +} + +static int __init uml_mem_setup(char *line, int *add) +{ + char *retptr; + physmem_size = memparse(line,&retptr); + return 0; +} +__uml_setup("mem=", uml_mem_setup, +"mem=<Amount of desired ram>\n" +" This controls how much \"physical\" memory the kernel allocates\n" +" for the system. The size is specified as a number followed by\n" +" one of 'k', 'K', 'm', 'M', which have the obvious meanings.\n" +" This is not related to the amount of memory in the host. It can\n" +" be more, and the excess, if it's ever used, will just be swapped out.\n" +" Example: mem=64M\n\n" +); + +unsigned long find_iomem(char *driver, unsigned long *len_out) +{ + struct iomem_region *region = iomem_regions; + + while(region != NULL){ + if(!strcmp(region->driver, driver)){ + *len_out = region->size; + return(region->virt); + } + } + + return(0); +} + +int setup_iomem(void) +{ + struct iomem_region *region = iomem_regions; + unsigned long iomem_start = high_physmem + PAGE_SIZE; + int err; + + while(region != NULL){ + err = os_map_memory((void *) iomem_start, region->fd, 0, + region->size, 1, 1, 0); + if(err) + printk("Mapping iomem region for driver '%s' failed, " + "errno = %d\n", region->driver, -err); + else { + region->virt = iomem_start; + region->phys = __pa(region->virt); + } + + iomem_start += region->size + PAGE_SIZE; + region = region->next; + } + + return(0); +} + +__initcall(setup_iomem); + +/* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically + * adjust the settings for this buffer only. This must remain at the end + * of the file. + * --------------------------------------------------------------------------- + * Local variables: + * c-file-style: "linux" + * End: + */ diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/Kconfig b/linux-2.6-xen-sparse/arch/x86_64/Kconfig index b047c9528d..312ff10a46 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/Kconfig +++ b/linux-2.6-xen-sparse/arch/x86_64/Kconfig @@ -7,11 +7,7 @@ # ISA drivers you need yourself. # -menu "X86_64 processor configuration" - -config XENARCH - string - default x86_64 +mainmenu "Linux Kernel Configuration" config X86_64 bool @@ -54,17 +50,8 @@ config X86_CMPXCHG default y config EARLY_PRINTK - bool "Early Printk" - default n - help - Write kernel log output directly into the VGA buffer or to a serial - port. - - This is useful for kernel debugging when your machine crashes very - early before the console code is initialized. For normal operation - it is not recommended because it looks ugly and doesn't cooperate - with klogd/syslogd or the X server. You should normally N here, - unless you want to debug such a crash. + bool + default y config GENERIC_ISA_DMA bool @@ -74,7 +61,7 @@ config GENERIC_IOMAP bool default y -#source "init/Kconfig" +source "init/Kconfig" menu "Processor type and features" @@ -83,10 +70,10 @@ choice prompt "Processor family" default MK8 -#config MK8 -# bool "AMD-Opteron/Athlon64" -# help -# Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs. +config MK8 + bool "AMD-Opteron/Athlon64" + help + Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs. config MPSC bool "Intel EM64T" @@ -102,6 +89,13 @@ config GENERIC_CPU endchoice +config X86_64_XEN + bool "Enable Xen compatible kernel" + select SWIOTLB if XEN_PHYSDEV_ACCESS + select DUMMY_IOMMU if XEN_PHYSDEV_ACCESS + help + This option will compile a kernel compatible with Xen hypervisor + # # Define implied options from the CPU selection here # @@ -117,24 +111,13 @@ config X86_L1_CACHE_SHIFT config X86_TSC bool - default n + depends on !X86_64_XEN + default y config X86_GOOD_APIC bool default y -config X86_IO_APIC - bool - default XEN_PRIVILEGED_GUEST - -config X86_XEN_GENAPIC - bool - default XEN_PRIVILEGED_GUEST || SMP - -config X86_LOCAL_APIC - bool - default XEN_PRIVILEGED_GUEST - config MICROCODE tristate "/dev/cpu/microcode - Intel CPU microcode support" ---help--- @@ -172,7 +155,7 @@ config X86_CPUID # disable it for opteron optimized builds because it pulls in ACPI_BOOT config X86_HT bool - depends on SMP && !MK8 + depends on SMP && !MK8 && !X86_64_XEN default y config MATH_EMULATION @@ -184,8 +167,24 @@ config MCA config EISA bool +config X86_IO_APIC + bool + depends !XEN_UNPRIVILEGED_GUEST + default y + +config X86_XEN_GENAPIC + bool + depends X86_64_XEN + default XEN_PRIVILEGED_GUEST || SMP + +config X86_LOCAL_APIC + bool + depends !XEN_UNPRIVILEGED_GUEST + default y + config MTRR bool "MTRR (Memory Type Range Register) support" + depends on !X86_64_XEN ---help--- On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers (MTRRs) may be used to control @@ -224,25 +223,37 @@ config SMP If you don't know what to do here, say N. -#config PREEMPT -# bool "Preemptible Kernel" -# ---help--- -# This option reduces the latency of the kernel when reacting to -# real-time or interactive events by allowing a low priority process to -# be preempted even if it is in kernel mode executing a system call. -# This allows applications to run more reliably even when the system is -# under load. On contrary it may also break your drivers and add -# priority inheritance problems to your system. Don't select it if -# you rely on a stable system or have slightly obscure hardware. -# It's also not very well tested on x86-64 currently. -# You have been warned. -# -# Say Y here if you are feeling brave and building a kernel for a -# desktop, embedded or real-time system. Say N if you are unsure. +config PREEMPT + bool "Preemptible Kernel" + depends on !X86_64_XEN + ---help--- + This option reduces the latency of the kernel when reacting to + real-time or interactive events by allowing a low priority process to + be preempted even if it is in kernel mode executing a system call. + This allows applications to run more reliably even when the system is + under load. On contrary it may also break your drivers and add + priority inheritance problems to your system. Don't select it if + you rely on a stable system or have slightly obscure hardware. + It's also not very well tested on x86-64 currently. + You have been warned. + + Say Y here if you are feeling brave and building a kernel for a + desktop, embedded or real-time system. Say N if you are unsure. + +config PREEMPT_BKL + bool "Preempt The Big Kernel Lock" + depends on PREEMPT + default y + help + This option reduces the latency of the kernel by making the + big kernel lock preemptible. + + Say Y here if you are building a kernel for a desktop system. + Say N if you are unsure. config SCHED_SMT bool "SMT (Hyperthreading) scheduler support" - depends on SMP + depends on SMP && !X86_64_XEN default n help SMT scheduler support improves the CPU scheduler's decision making @@ -253,7 +264,7 @@ config SCHED_SMT config K8_NUMA bool "K8 NUMA support" select NUMA - depends on SMP + depends on SMP && !X86_64_XEN help Enable NUMA (Non Unified Memory Architecture) support for AMD Opteron Multiprocessor systems. The kernel will try to allocate @@ -265,7 +276,7 @@ config K8_NUMA config NUMA_EMU bool "NUMA emulation support" select NUMA - depends on SMP + depends on SMP && !X86_64_XEN help Enable NUMA emulation. A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the @@ -285,33 +296,46 @@ config HAVE_DEC_LOCK depends on SMP default y -# actually 64 maximum, but you need to fix the APIC code first -# to use clustered mode or whatever your big iron needs config NR_CPUS - int "Maximum number of CPUs (2-255)" - range 2 255 + int "Maximum number of CPUs (2-256)" + range 2 256 depends on SMP - default "16" + default "16" if X86_64_XEN + default "8" help This allows you to specify the maximum number of CPUs which this - kernel will support. The maximum supported value is 32 and the - minimum value which makes sense is 2. + kernel will support. Current maximum is 256 CPUs due to + APIC addressing limits. Less depending on the hardware. This is purely to save memory - each supported CPU requires memory in the static kernel configuration. config HPET_TIMER bool - default n + depends on !X86_64_XEN + default y help Use the IA-PC HPET (High Precision Event Timer) to manage time in preference to the PIT and RTC, if a HPET is present. The HPET provides a stable time base on SMP - systems, unlike the RTC, but it is more expensive to access, + systems, unlike the TSC, but it is more expensive to access, as it is off-chip. You can find the HPET spec at <http://www.intel.com/labs/platcomp/hpet/hpetspec.htm>. - If unsure, say Y. +config X86_PM_TIMER + bool "PM timer" + depends on ACPI && !X86_64_XEN + default y + help + Support the ACPI PM timer for time keeping. This is slow, + but is useful on some chipsets without HPET on systems with more + than one CPU. On a single processor or single socket multi core + system it is normally not required. + When the PM timer is active 64bit vsyscalls are disabled + and should not be enabled (/proc/sys/kernel/vsyscall64 should + not be changed). + The kernel selects the PM timer only as a last resort, so it is + useful to enable just in case. config HPET_EMULATE_RTC bool "Provide RTC interrupt" @@ -319,7 +343,7 @@ config HPET_EMULATE_RTC config GART_IOMMU bool "IOMMU support" - depends on PCI + depends on PCI && !X86_64_XEN help Support the K8 IOMMU. Needed to run systems with more than 4GB of memory properly with 32-bit PCI devices that do not support DAC (Double Address @@ -330,12 +354,12 @@ config GART_IOMMU # need this always enabled with GART_IOMMU for the VIA workaround config SWIOTLB bool - depends on PCI + depends on GART_IOMMU default y config DUMMY_IOMMU bool - depends on !GART_IOMMU + depends on !GART_IOMMU && !SWIOTLB default y help Don't use IOMMU code. This will cause problems when you have more than 4GB @@ -344,13 +368,22 @@ config DUMMY_IOMMU config X86_MCE bool "Machine check support" if EMBEDDED - default n + depends on !X86_64_XEN + default y help Include a machine check error handler to report hardware errors. This version will require the mcelog utility to decode some machine check error logs. See ftp://ftp.x86-64.org/pub/linux/tools/mcelog +config X86_MCE_INTEL + bool "Intel MCE features" + depends on X86_MCE && X86_LOCAL_APIC + default y + help + Additional support for intel specific MCE features such as + the thermal monitor. + config SECCOMP bool "Enable seccomp to safely compute untrusted bytecode" depends on PROC_FS @@ -387,10 +420,17 @@ config ISA_DMA_API default y menu "Power management options" + depends on !XEN_UNPRIVILEGED_GUEST +if !X86_64_XEN source kernel/power/Kconfig +endif + +source "drivers/acpi/Kconfig" +if !X86_64_XEN source "arch/x86_64/kernel/cpufreq/Kconfig" +endif endmenu @@ -420,20 +460,22 @@ config UNORDERED_IO from i386. Requires that the driver writer used memory barriers properly. -#source "drivers/pci/pcie/Kconfig" +if !X86_64_XEN +source "drivers/pci/pcie/Kconfig" -#source "drivers/pci/Kconfig" +source "drivers/pci/Kconfig" -#source "drivers/pcmcia/Kconfig" +source "drivers/pcmcia/Kconfig" -#source "drivers/pci/hotplug/Kconfig" +source "drivers/pci/hotplug/Kconfig" +endif endmenu menu "Executable file formats / Emulations" -# source "fs/Kconfig.binfmt" +source "fs/Kconfig.binfmt" config IA32_EMULATION bool "IA32 Emulation" @@ -465,16 +507,20 @@ config UID16 endmenu -# source drivers/Kconfig +source drivers/Kconfig -# source "drivers/firmware/Kconfig" +source "drivers/firmware/Kconfig" -# source fs/Kconfig +source fs/Kconfig -#source "arch/x86_64/oprofile/Kconfig" +source "arch/x86_64/oprofile/Kconfig" -# source "security/Kconfig" +source "arch/x86_64/Kconfig.debug" -# source "crypto/Kconfig" +source "security/Kconfig" -endmenu +source "crypto/Kconfig" + +source "drivers/xen/Kconfig" + +source "lib/Kconfig" diff --git a/linux-2.6-xen-sparse/arch/x86_64/Makefile b/linux-2.6-xen-sparse/arch/x86_64/Makefile new file mode 100644 index 0000000000..1094547ffa --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/Makefile @@ -0,0 +1,135 @@ +# +# x86_64/Makefile +# +# This file is included by the global makefile so that you can add your own +# architecture-specific flags and dependencies. Remember to do have actions +# for "archclean" and "archdep" for cleaning up and making dependencies for +# this architecture +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (C) 1994 by Linus Torvalds +# +# 19990713 Artur Skawina <skawina@geocities.com> +# Added '-march' and '-mpreferred-stack-boundary' support +# 20000913 Pavel Machek <pavel@suse.cz> +# Converted for x86_64 architecture +# 20010105 Andi Kleen, add IA32 compiler. +# ....and later removed it again.... +# +# $Id: Makefile,v 1.31 2002/03/22 15:56:07 ak Exp $ + +# +# early bootup linking needs 32bit. You can either use real 32bit tools +# here or 64bit tools in 32bit mode. +# +IA32_CC := $(CC) $(CPPFLAGS) -m32 -O2 -fomit-frame-pointer +IA32_LD := $(LD) -m elf_i386 +IA32_AS := $(CC) $(AFLAGS) -m32 -Wa,--32 -traditional -c +IA32_OBJCOPY := $(CROSS_COMPILE)objcopy +IA32_CPP := $(CROSS_COMPILE)gcc -m32 -E +export IA32_CC IA32_LD IA32_AS IA32_OBJCOPY IA32_CPP + + +LDFLAGS := -m elf_x86_64 +OBJCOPYFLAGS := -O binary -R .note -R .comment -S +LDFLAGS_vmlinux := -e stext + +CHECKFLAGS += -D__x86_64__ -m64 + +cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8) +cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona) +CFLAGS += $(cflags-y) + +CFLAGS += -mno-red-zone +CFLAGS += -mcmodel=kernel +CFLAGS += -pipe +# this makes reading assembly source easier, but produces worse code +# actually it makes the kernel smaller too. +CFLAGS += -fno-reorder-blocks +CFLAGS += -Wno-sign-compare +ifneq ($(CONFIG_DEBUG_INFO),y) +CFLAGS += -fno-asynchronous-unwind-tables +# -fweb shrinks the kernel a bit, but the difference is very small +# it also messes up debugging, so don't use it for now. +#CFLAGS += $(call cc-option,-fweb) +endif +# -funit-at-a-time shrinks the kernel .text considerably +# unfortunately it makes reading oopses harder. +CFLAGS += $(call cc-option,-funit-at-a-time) +# prevent gcc from generating any FP code by mistake +CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,) + +head-y := arch/x86_64/kernel/head.o arch/x86_64/kernel/head64.o arch/x86_64/kernel/init_task.o + +libs-y += arch/x86_64/lib/ +core-y += arch/x86_64/kernel/ arch/x86_64/mm/ +core-$(CONFIG_IA32_EMULATION) += arch/x86_64/ia32/ +drivers-$(CONFIG_PCI) += arch/x86_64/pci/ +drivers-$(CONFIG_OPROFILE) += arch/x86_64/oprofile/ + +boot := arch/x86_64/boot + +.PHONY: bzImage bzlilo install archmrproper \ + fdimage fdimage144 fdimage288 archclean + +ifdef CONFIG_XEN +CPPFLAGS := -D__KERNEL__ -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(LINUXINCLUDE) +head-y := arch/x86_64/kernel/head-xen.o arch/x86_64/kernel/head64-xen.o arch/x86_64/kernel/init_task.o +LDFLAGS_vmlinux := -e _start +boot := arch/i386/boot-xen +.PHONY: vmlinuz +#Default target when executing "make" +all: vmlinuz + +vmlinuz: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $@ + +install: vmlinux + $(Q)$(MAKE) $(build)=$(boot) XENGUEST=$(XENGUEST) $@ +else +#Default target when executing "make" +all: bzImage + +BOOTIMAGE := arch/x86_64/boot/bzImage +KBUILD_IMAGE := $(BOOTIMAGE) + +bzImage: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $(BOOTIMAGE) + +bzlilo: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) zlilo + +bzdisk: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) zdisk + +install fdimage fdimage144 fdimage288: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@ +endif + +archclean: + $(Q)$(MAKE) $(clean)=$(boot) + +prepare: include/asm-$(ARCH)/offset.h + +arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ + include/config/MARKER + +include/asm-$(ARCH)/offset.h: arch/$(ARCH)/kernel/asm-offsets.s + $(call filechk,gen-asm-offsets) + +CLEAN_FILES += include/asm-$(ARCH)/offset.h + +define archhelp + echo '* bzImage - Compressed kernel image (arch/$(ARCH)/boot/bzImage)' + echo ' install - Install kernel using' + echo ' (your) ~/bin/installkernel or' + echo ' (distribution) /sbin/installkernel or' + echo ' install to $$(INSTALL_PATH) and run lilo' +endef + +CLEAN_FILES += arch/$(ARCH)/boot/fdimage arch/$(ARCH)/boot/mtools.conf + + diff --git a/linux-2.6-xen-sparse/arch/x86_64/ia32/Makefile b/linux-2.6-xen-sparse/arch/x86_64/ia32/Makefile new file mode 100644 index 0000000000..535c8bb964 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/ia32/Makefile @@ -0,0 +1,46 @@ +# +# Makefile for the ia32 kernel emulation subsystem. +# + +obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_ioctl.o \ + ia32_signal.o tls32.o \ + ia32_binfmt.o fpu32.o ptrace32.o syscall32.o + +sysv-$(CONFIG_SYSVIPC) := ipc32.o +obj-$(CONFIG_IA32_EMULATION) += $(sysv-y) + +obj-$(CONFIG_IA32_AOUT) += ia32_aout.o + +$(obj)/syscall32.o: $(src)/syscall32.c \ + $(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so) + +# Teach kbuild about targets +targets := $(foreach F,sysenter syscall,vsyscall-$F.o vsyscall-$F.so) + +# The DSO images are built using a special linker script +quiet_cmd_syscall = SYSCALL $@ + cmd_syscall = $(CC) -m32 -nostdlib -shared -s \ + -Wl,-soname=linux-gate.so.1 -o $@ \ + -Wl,-T,$(filter-out FORCE,$^) + +$(obj)/vsyscall-int80.so \ +$(obj)/vsyscall-sysenter.so $(obj)/vsyscall-syscall.so: \ +$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE + $(call if_changed,syscall) + +AFLAGS_vsyscall-sysenter.o = -m32 +AFLAGS_vsyscall-syscall.o = -m32 +CFLAGS_ia32_ioctl.o += -Ifs/ + +ifdef CONFIG_XEN +AFLAGS_vsyscall-int80.o = -m32 -Iarch/i386/kernel + +$(obj)/syscall32-xen.o: $(src)/syscall32-xen.c \ + $(foreach F,int80 sysenter syscall,$(obj)/vsyscall-$F.so) + +targets := $(foreach F,int80 sysenter syscall,vsyscall-$F.o vsyscall-$F.so) + +include $(srctree)/scripts/Makefile.xen + +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/ia32entry.S b/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S index 388d49b8b7..388d49b8b7 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/ia32entry.S +++ b/linux-2.6-xen-sparse/arch/x86_64/ia32/ia32entry-xen.S diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/syscall32.c b/linux-2.6-xen-sparse/arch/x86_64/ia32/syscall32-xen.c index 24cb4c4cc6..1935601d38 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/syscall32.c +++ b/linux-2.6-xen-sparse/arch/x86_64/ia32/syscall32-xen.c @@ -20,13 +20,13 @@ /* 32bit VDSOs mapped into user space. */ asm(".section \".init.data\",\"aw\"\n" "syscall32_int80:\n" - ".incbin \"arch/xen/x86_64/ia32/vsyscall-int80.so\"\n" + ".incbin \"arch/x86_64/ia32/vsyscall-int80.so\"\n" "syscall32_int80_end:\n" "syscall32_syscall:\n" - ".incbin \"arch/xen/x86_64/ia32/vsyscall-syscall.so\"\n" + ".incbin \"arch/x86_64/ia32/vsyscall-syscall.so\"\n" "syscall32_syscall_end:\n" "syscall32_sysenter:\n" - ".incbin \"arch/xen/x86_64/ia32/vsyscall-sysenter.so\"\n" + ".incbin \"arch/x86_64/ia32/vsyscall-sysenter.so\"\n" "syscall32_sysenter_end:\n" ".previous"); @@ -35,10 +35,10 @@ extern unsigned char syscall32_int80[], syscall32_int80_end[]; /* 32bit VDSOs mapped into user space. */ asm(".section \".init.data\",\"aw\"\n" "syscall32_syscall:\n" - ".incbin \"arch/xen/x86_64/ia32/vsyscall-syscall.so\"\n" + ".incbin \"arch/x86_64/ia32/vsyscall-syscall.so\"\n" "syscall32_syscall_end:\n" "syscall32_sysenter:\n" - ".incbin \"arch/xen/x86_64/ia32/vsyscall-sysenter.so\"\n" + ".incbin \"arch/x86_64/ia32/vsyscall-sysenter.so\"\n" "syscall32_sysenter_end:\n" ".previous"); diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/vsyscall-int80.S b/linux-2.6-xen-sparse/arch/x86_64/ia32/vsyscall-int80.S index 6ed66bd8ad..6ed66bd8ad 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/vsyscall-int80.S +++ b/linux-2.6-xen-sparse/arch/x86_64/ia32/vsyscall-int80.S diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile b/linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile new file mode 100644 index 0000000000..a4d36a21fb --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile @@ -0,0 +1,63 @@ +# +# Makefile for the linux kernel. +# + +extra-y := head.o head64.o init_task.o vmlinux.lds +EXTRA_AFLAGS := -traditional +obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ + ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \ + x8664_ksyms.o i387.o syscall.o vsyscall.o \ + setup64.o bootflag.o e820.o reboot.o quirks.o + +obj-$(CONFIG_X86_MCE) += mce.o +obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o +obj-$(CONFIG_MTRR) += ../../i386/kernel/cpu/mtrr/ +obj-$(CONFIG_ACPI_BOOT) += acpi/ +obj-$(CONFIG_X86_MSR) += msr.o +obj-$(CONFIG_MICROCODE) += microcode.o +obj-$(CONFIG_X86_CPUID) += cpuid.o +obj-$(CONFIG_SMP) += smp.o smpboot.o trampoline.o +obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o +obj-$(CONFIG_X86_XEN_GENAPIC) += genapic.o genapic_xen.o +obj-$(CONFIG_X86_IO_APIC) += io_apic.o mpparse.o \ + genapic.o genapic_cluster.o genapic_flat.o +obj-$(CONFIG_PM) += suspend.o +obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o +obj-$(CONFIG_CPU_FREQ) += cpufreq/ +obj-$(CONFIG_EARLY_PRINTK) += early_printk.o +obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o +obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o pci-dma.o +obj-$(CONFIG_SWIOTLB) += swiotlb.o +obj-$(CONFIG_KPROBES) += kprobes.o +obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o + +obj-$(CONFIG_MODULES) += module.o + +obj-y += topology.o +obj-y += intel_cacheinfo.o + +CFLAGS_vsyscall.o := $(PROFILING) -g0 + +bootflag-y += ../../i386/kernel/bootflag.o +cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o +topology-y += ../../i386/mach-default/topology.o +swiotlb-$(CONFIG_SWIOTLB) += ../../ia64/lib/swiotlb.o +microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o +intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o +quirks-y += ../../i386/kernel/quirks.o + +ifdef CONFIG_XEN +time-y += ../../i386/kernel/time-xen.o +swiotlb-$(CONFIG_SWIOTLB) := ../../i386/kernel/swiotlb.o +pci-dma-y += ../../i386/kernel/pci-dma-xen.o +microcode-$(subst m,y,$(CONFIG_MICROCODE)) := ../../i386/kernel/microcode-xen.o +quirks-y := ../../i386/kernel/quirks-xen.o + +n-obj-xen := i8259.o reboot.o smpboot.o trampoline.o + +include $(srctree)/scripts/Makefile.xen + +obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) +obj-y := $(call cherrypickxen, $(obj-y)) +extra-y := $(call cherrypickxen, $(extra-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile b/linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile new file mode 100644 index 0000000000..0864aa91ea --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile @@ -0,0 +1,5 @@ +obj-$(CONFIG_ACPI_BOOT) := boot.o +boot-$(CONFIG_ACPI_BOOT) := ../../../i386/kernel/acpi/boot.o +obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o + +boot-$(CONFIG_XEN) := ../../../i386/kernel/acpi/boot-xen.o diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/apic.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c index 1971de2e88..1971de2e88 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/apic.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/apic-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c index 74596e589d..c3731b471c 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c @@ -20,7 +20,7 @@ #include <asm/e820.h> #include <asm/proto.h> #include <asm/bootsetup.h> -#include <asm-xen/xen-public/memory.h> +#include <xen/interface/memory.h> unsigned long pci_mem_start = 0xaeedbabe; diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/early_printk.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/early_printk-xen.c index 56dfeef889..56dfeef889 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/early_printk.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/early_printk-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S index 0e28067165..70f8542ad4 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S @@ -40,13 +40,13 @@ #include <asm/errno.h> #include <asm/dwarf2.h> #include <asm/calling.h> -#include <asm/asm_offset.h> +#include <asm/offset.h> #include <asm/msr.h> #include <asm/unistd.h> #include <asm/thread_info.h> #include <asm/hw_irq.h> #include <asm/errno.h> -#include <asm-xen/xen-public/arch-x86_64.h> +#include <xen/interface/arch-x86_64.h> #include "irq_vectors.h" diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/genapic-xen.c index e2e4136bc2..e2e4136bc2 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/genapic-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic_xen.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/genapic_xen.c index bb04fee5f2..711c8237b8 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/genapic_xen.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/genapic_xen.c @@ -25,7 +25,7 @@ #include <asm/apicdef.h> #include <asm/genapic.h> #endif -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> DECLARE_PER_CPU(int, ipi_to_irq[NR_IPIS]); diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S index 12f96941e3..12f96941e3 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/head64-xen.c index 2a7f4cee42..2a7f4cee42 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/head64-xen.c diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/i387.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/i387.c new file mode 100644 index 0000000000..d9b22b633e --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/i387.c @@ -0,0 +1,155 @@ +/* + * linux/arch/x86_64/kernel/i387.c + * + * Copyright (C) 1994 Linus Torvalds + * Copyright (C) 2002 Andi Kleen, SuSE Labs + * + * Pentium III FXSR, SSE support + * General FPU state handling cleanups + * Gareth Hughes <gareth@valinux.com>, May 2000 + * + * x86-64 rework 2002 Andi Kleen. + * Does direct fxsave in and out of user space now for signal handlers. + * All the FSAVE<->FXSAVE conversion code has been moved to the 32bit emulation, + * the 64bit user space sees a FXSAVE frame directly. + */ + +#include <linux/config.h> +#include <linux/sched.h> +#include <linux/init.h> +#include <asm/processor.h> +#include <asm/i387.h> +#include <asm/sigcontext.h> +#include <asm/user.h> +#include <asm/ptrace.h> +#include <asm/uaccess.h> + +unsigned int mxcsr_feature_mask = 0xffffffff; + +void mxcsr_feature_mask_init(void) +{ + unsigned int mask; + clts(); + memset(¤t->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct)); + asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); + mask = current->thread.i387.fxsave.mxcsr_mask; + if (mask == 0) mask = 0x0000ffbf; + mxcsr_feature_mask &= mask; + stts(); +} + +/* + * Called at bootup to set up the initial FPU state that is later cloned + * into all processes. + */ +void __cpuinit fpu_init(void) +{ + unsigned long oldcr0 = read_cr0(); + extern void __bad_fxsave_alignment(void); + + if (offsetof(struct task_struct, thread.i387.fxsave) & 15) + __bad_fxsave_alignment(); + set_in_cr4(X86_CR4_OSFXSR); + set_in_cr4(X86_CR4_OSXMMEXCPT); + + write_cr0(oldcr0 & ~((1UL<<3)|(1UL<<2))); /* clear TS and EM */ + + mxcsr_feature_mask_init(); + /* clean state in init */ + current_thread_info()->status = 0; + clear_used_math(); +} + +void init_fpu(struct task_struct *child) +{ + if (tsk_used_math(child)) { + if (child == current) + unlazy_fpu(child); + return; + } + memset(&child->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct)); + child->thread.i387.fxsave.cwd = 0x37f; + child->thread.i387.fxsave.mxcsr = 0x1f80; + /* only the device not available exception or ptrace can call init_fpu */ + set_stopped_child_used_math(child); +} + +/* + * Signal frame handlers. + */ + +int save_i387(struct _fpstate __user *buf) +{ + struct task_struct *tsk = current; + int err = 0; + + { + extern void bad_user_i387_struct(void); + if (sizeof(struct user_i387_struct) != sizeof(tsk->thread.i387.fxsave)) + bad_user_i387_struct(); + } + + if ((unsigned long)buf % 16) + printk("save_i387: bad fpstate %p\n",buf); + + if (!used_math()) + return 0; + clear_used_math(); /* trigger finit */ + if (tsk->thread_info->status & TS_USEDFPU) { + err = save_i387_checking((struct i387_fxsave_struct __user *)buf); + if (err) return err; + stts(); + } else { + if (__copy_to_user(buf, &tsk->thread.i387.fxsave, + sizeof(struct i387_fxsave_struct))) + return -1; + } + return 1; +} + +/* + * ptrace request handlers. + */ + +int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *tsk) +{ + init_fpu(tsk); + return __copy_to_user(buf, &tsk->thread.i387.fxsave, + sizeof(struct user_i387_struct)) ? -EFAULT : 0; +} + +int set_fpregs(struct task_struct *tsk, struct user_i387_struct __user *buf) +{ + if (__copy_from_user(&tsk->thread.i387.fxsave, buf, + sizeof(struct user_i387_struct))) + return -EFAULT; + return 0; +} + +/* + * FPU state for core dumps. + */ + +int dump_fpu( struct pt_regs *regs, struct user_i387_struct *fpu ) +{ + struct task_struct *tsk = current; + + if (!used_math()) + return 0; + + unlazy_fpu(tsk); + memcpy(fpu, &tsk->thread.i387.fxsave, sizeof(struct user_i387_struct)); + return 1; +} + +int dump_task_fpu(struct task_struct *tsk, struct user_i387_struct *fpu) +{ + int fpvalid = !!tsk_used_math(tsk); + + if (fpvalid) { + if (tsk == current) + unlazy_fpu(tsk); + memcpy(fpu, &tsk->thread.i387.fxsave, sizeof(struct user_i387_struct)); +} + return fpvalid; +} diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/io_apic.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c index 33651e64aa..fa0bb3805e 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/io_apic.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/io_apic-xen.c @@ -80,8 +80,8 @@ int vector_irq[NR_VECTORS] = { [0 ... NR_VECTORS - 1] = -1}; #ifdef CONFIG_XEN -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/xen.h> +#include <xen/interface/physdev.h> /* Fake i8259 */ #define make_8259A_irq(_irq) (io_apic_irqs &= ~(1UL<<(_irq))) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ioport.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/ioport-xen.c index 08ccd0f79d..6bebe11aff 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ioport.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/ioport-xen.c @@ -16,7 +16,7 @@ #include <linux/stddef.h> #include <linux/slab.h> #include <linux/thread_info.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/physdev.h> /* * sys_iopl has to be used when you want to access the IO ports diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/irq.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c index ca26c1234e..ca26c1234e 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/irq.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/irq-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ldt.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/ldt-xen.c index 6efbb64f80..6efbb64f80 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/ldt.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/ldt-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/mpparse.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c index 059f276767..059f276767 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/mpparse.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/pci-nommu.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/pci-nommu-xen.c index 3636461a37..3636461a37 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/pci-nommu.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/pci-nommu-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/process.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c index ea4b1b60b7..66750a3a2d 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/process.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c @@ -49,8 +49,8 @@ #include <asm/pda.h> #include <asm/prctl.h> #include <asm/kdebug.h> -#include <asm-xen/xen-public/dom0_ops.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/dom0_ops.h> +#include <xen/interface/physdev.h> #include <asm/desc.h> #include <asm/proto.h> #include <asm/hardirq.h> diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c index 37defef008..c774687bfe 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c @@ -59,11 +59,11 @@ #include <asm/numa.h> #ifdef CONFIG_XEN #include <linux/percpu.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/physdev.h> #include "setup_arch_pre.h" #include <asm/hypervisor.h> -#include <asm-xen/xen-public/nmi.h> -#include <asm-xen/features.h> +#include <xen/interface/nmi.h> +#include <xen/features.h> #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) #define PFN_PHYS(x) ((x) << PAGE_SHIFT) #define end_pfn_map end_pfn diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup64.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup64-xen.c index fde2a24670..fde2a24670 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup64.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup64-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/signal.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/signal-xen.c index 5a2c6f179d..5a2c6f179d 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/signal.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/signal-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smp.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/smp-xen.c index 4f565ab325..17ae2d2a97 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smp.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/smp-xen.c @@ -29,7 +29,7 @@ #include <asm/proto.h> #include <asm/apicdef.h> #ifdef CONFIG_XEN -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #endif #ifndef CONFIG_XEN diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/traps.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c index 6229915b11..6229915b11 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/traps.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/traps-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/vsyscall.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/vsyscall-xen.c index d96b83e683..d96b83e683 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/vsyscall.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/vsyscall-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/x8664_ksyms.c b/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c index fd611408fb..fd611408fb 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/x8664_ksyms.c +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/xen_entry.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S index 9b42d15566..9b42d15566 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/xen_entry.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/xen_entry.S diff --git a/linux-2.6-xen-sparse/arch/x86_64/mm/Makefile b/linux-2.6-xen-sparse/arch/x86_64/mm/Makefile new file mode 100644 index 0000000000..cb47cb5423 --- /dev/null +++ b/linux-2.6-xen-sparse/arch/x86_64/mm/Makefile @@ -0,0 +1,21 @@ +# +# Makefile for the linux x86_64-specific parts of the memory manager. +# + +obj-y := init.o fault.o ioremap.o extable.o pageattr.o +obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o +obj-$(CONFIG_DISCONTIGMEM) += numa.o +obj-$(CONFIG_K8_NUMA) += k8topology.o +obj-$(CONFIG_ACPI_NUMA) += srat.o + +hugetlbpage-y = ../../i386/mm/hugetlbpage.o + +ifdef CONFIG_XEN +include $(srctree)/scripts/Makefile.xen + +ioremap-y += ../../i386/mm/ioremap-xen.o +hypervisor-y += ../../i386/mm/hypervisor.o +obj-y += hypervisor.o + +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/fault.c b/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c index 4edb3c40c5..4edb3c40c5 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/fault.c +++ b/linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c b/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c index 305d550ccf..23349e4acf 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c +++ b/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c @@ -40,7 +40,7 @@ #include <asm/proto.h> #include <asm/smp.h> -#include <asm-xen/features.h> +#include <xen/features.h> #ifndef Dprintk #define Dprintk(x...) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/pageattr.c b/linux-2.6-xen-sparse/arch/x86_64/mm/pageattr-xen.c index 454dc16f48..454dc16f48 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/pageattr.c +++ b/linux-2.6-xen-sparse/arch/x86_64/mm/pageattr-xen.c diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile-BUS b/linux-2.6-xen-sparse/arch/x86_64/pci/Makefile index 291985f0d2..ee9562da1c 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile-BUS +++ b/linux-2.6-xen-sparse/arch/x86_64/pci/Makefile @@ -3,7 +3,7 @@ # # Reuse the i386 PCI subsystem # -CFLAGS += -I arch/i386/pci +CFLAGS += -Iarch/i386/pci obj-y := i386.o obj-$(CONFIG_PCI_DIRECT)+= direct.o @@ -13,6 +13,8 @@ obj-y += legacy.o irq.o common.o # mmconfig has a 64bit special obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o +obj-$(CONFIG_NUMA) += k8-bus.o + direct-y += ../../i386/pci/direct.o acpi-y += ../../i386/pci/acpi.o legacy-y += ../../i386/pci/legacy.o @@ -20,3 +22,11 @@ irq-y += ../../i386/pci/irq.o common-y += ../../i386/pci/common.o fixup-y += ../../i386/pci/fixup.o i386-y += ../../i386/pci/i386.o + +ifdef CONFIG_XEN +irq-y := ../../i386/pci/irq-xen.o +i386-y := ../../i386/pci/i386-xen.o +include $(srctree)/scripts/Makefile.xen + +obj-y := $(call cherrypickxen, $(obj-y)) +endif diff --git a/linux-2.6-xen-sparse/arch/xen/Kconfig.debug b/linux-2.6-xen-sparse/arch/xen/Kconfig.debug deleted file mode 100644 index 663eacc9e5..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/Kconfig.debug +++ /dev/null @@ -1,129 +0,0 @@ -menu "Kernel hacking" - -source "lib/Kconfig.debug" - -# X86 -config EARLY_PRINTK - bool "Early printk" if EMBEDDED && DEBUG_KERNEL - default y - depends on X86 - help - Write kernel log output directly into the VGA buffer or to a serial - port. - - This is useful for kernel debugging when your machine crashes very - early before the console code is initialized. For normal operation - it is not recommended because it looks ugly and doesn't cooperate - with klogd/syslogd or the X server. You should normally N here, - unless you want to debug such a crash. - -config DEBUG_STACKOVERFLOW - bool "Check for stack overflows" - depends on DEBUG_KERNEL && X86 - -config KPROBES - bool "Kprobes" - depends on DEBUG_KERNEL && X86 - help - Kprobes allows you to trap at almost any kernel address and - execute a callback function. register_kprobe() establishes - a probepoint and specifies the callback. Kprobes is useful - for kernel debugging, non-intrusive instrumentation and testing. - If in doubt, say "N". - -config DEBUG_STACK_USAGE - bool "Stack utilization instrumentation" - depends on DEBUG_KERNEL && X86 - help - Enables the display of the minimum amount of free stack which each - task has ever had available in the sysrq-T and sysrq-P debug output. - - This option will slow down process creation somewhat. - -comment "Page alloc debug is incompatible with Software Suspend on i386" - depends on DEBUG_KERNEL && SOFTWARE_SUSPEND && X86 - -config DEBUG_PAGEALLOC - bool "Page alloc debugging" - depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND && X86 - help - Unmap pages from the kernel linear mapping after free_pages(). - This results in a large slowdown, but helps to find certain types - of memory corruptions. - -config 4KSTACKS - bool "Use 4Kb for kernel stacks instead of 8Kb" - depends on DEBUG_KERNEL && X86 - help - If you say Y here the kernel will use a 4Kb stacksize for the - kernel stack attached to each process/thread. This facilitates - running more threads on a system and also reduces the pressure - on the VM subsystem for higher order allocations. This option - will also use IRQ stacks to compensate for the reduced stackspace. - -config X86_FIND_SMP_CONFIG - bool - depends on X86_LOCAL_APIC || X86_VOYAGER && X86 - default y - -config X86_MPPARSE - bool - depends on X86_LOCAL_APIC && !X86_VISWS && X86 - default y - -# X86_64 - -# !SMP for now because the context switch early causes GPF in segment reloading -# and the GS base checking does the wrong thing then, causing a hang. -config CHECKING - bool "Additional run-time checks" - depends on DEBUG_KERNEL && !SMP && X86_64 - help - Enables some internal consistency checks for kernel debugging. - You should normally say N. - -config INIT_DEBUG - bool "Debug __init statements" - depends on DEBUG_KERNEL && X86_64 - help - Fill __init and __initdata at the end of boot. This helps debugging - illegal uses of __init and __initdata after initialization. - -config IOMMU_DEBUG - depends on GART_IOMMU && DEBUG_KERNEL && X86_64 - bool "Enable IOMMU debugging" - help - Force the IOMMU to on even when you have less than 4GB of - memory and add debugging code. On overflow always panic. And - allow to enable IOMMU leak tracing. Can be disabled at boot - time with iommu=noforce. This will also enable scatter gather - list merging. Currently not recommended for production - code. When you use it make sure you have a big enough - IOMMU/AGP aperture. Most of the options enabled by this can - be set more finegrained using the iommu= command line - options. See Documentation/x86_64/boot-options.txt for more - details. - -config IOMMU_LEAK - bool "IOMMU leak tracing" - depends on DEBUG_KERNEL && X86_64 - depends on IOMMU_DEBUG - help - Add a simple leak tracer to the IOMMU code. This is useful when you - are debugging a buggy device driver that leaks IOMMU mappings. - -#config X86_REMOTE_DEBUG -# bool "kgdb debugging stub" - -# X86 & X86_64 -config KPROBES - bool "Kprobes" - depends on DEBUG_KERNEL - help - Kprobes allows you to trap at almost any kernel address and - execute a callback function. register_kprobe() establishes - a probepoint and specifies the callback. Kprobes is useful - for kernel debugging, non-intrusive instrumentation and testing. - If in doubt, say "N". - -endmenu diff --git a/linux-2.6-xen-sparse/arch/xen/Kconfig.drivers b/linux-2.6-xen-sparse/arch/xen/Kconfig.drivers deleted file mode 100644 index 8cae6038c3..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/Kconfig.drivers +++ /dev/null @@ -1,98 +0,0 @@ -# arch/xen/Kconfig.drivers - -menu "Device Drivers" - -source "drivers/base/Kconfig" - -if XEN_PHYSDEV_ACCESS -source "drivers/mtd/Kconfig" -source "drivers/parport/Kconfig" -source "drivers/pnp/Kconfig" -endif - -source "drivers/block/Kconfig" - -if XEN_PHYSDEV_ACCESS -source "drivers/ide/Kconfig" -endif - -source "drivers/scsi/Kconfig" - -if XEN_PHYSDEV_ACCESS -source "drivers/cdrom/Kconfig" -endif - -source "drivers/md/Kconfig" - -if XEN_PHYSDEV_ACCESS -source "drivers/message/fusion/Kconfig" -source "drivers/ieee1394/Kconfig" -source "drivers/message/i2o/Kconfig" -endif - -source "net/Kconfig" - -if XEN_PHYSDEV_ACCESS -source "drivers/isdn/Kconfig" -source "drivers/telephony/Kconfig" -source "drivers/input/Kconfig" -source "drivers/char/Kconfig" -source "drivers/i2c/Kconfig" -source "drivers/w1/Kconfig" -source "drivers/misc/Kconfig" -source "drivers/media/Kconfig" -source "drivers/video/Kconfig" -source "sound/Kconfig" -source "drivers/usb/Kconfig" -source "drivers/mmc/Kconfig" -source "drivers/infiniband/Kconfig" -endif - -if !XEN_PHYSDEV_ACCESS -source "drivers/char/tpm/Kconfig.domU" -endif - -if !XEN_PHYSDEV_ACCESS - -menu "Character devices" - -config UNIX98_PTYS - bool - default y - -config LEGACY_PTYS - bool "Legacy (BSD) PTY support" - default y - ---help--- - A pseudo terminal (PTY) is a software device consisting of two - halves: a master and a slave. The slave device behaves identical to - a physical terminal; the master device is used by a process to - read data from and write data to the slave, thereby emulating a - terminal. Typical programs for the master side are telnet servers - and xterms. - - Linux has traditionally used the BSD-like names /dev/ptyxx - for masters and /dev/ttyxx for slaves of pseudo - terminals. This scheme has a number of problems, including - security. This option enables these legacy devices; on most - systems, it is safe to say N. - - -config LEGACY_PTY_COUNT - int "Maximum number of legacy PTY in use" - depends on LEGACY_PTYS - range 1 256 - default "256" - ---help--- - The maximum number of legacy PTYs that can be used at any one time. - The default is 256, and should be more than enough. Embedded - systems may want to reduce this to save memory. - - When not in use, each legacy PTY occupies 12 bytes on 32-bit - architectures and 24 bytes on 64-bit architectures. - -endmenu - -endif - -endmenu diff --git a/linux-2.6-xen-sparse/arch/xen/Makefile b/linux-2.6-xen-sparse/arch/xen/Makefile deleted file mode 100644 index 12930e1009..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/Makefile +++ /dev/null @@ -1,93 +0,0 @@ -# -# xen/Makefile -# -# This file is included by the global makefile so that you can add your own -# architecture-specific flags and dependencies. Remember to do have actions -# for "archclean" cleaning up for this architecture. -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# -# Copyright (C) 2004 by Christian Limpach -# - -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -# pick up headers from include/asm-xen/asm in preference over include/asm -NOSTDINC_FLAGS = -nostdinc -iwithprefix include/asm-xen -Iinclude/asm-xen -iwithprefix include -ifneq ($(KBUILD_SRC),) -NOSTDINC_FLAGS += -I$(srctree)/include/asm-xen -endif - -# make uname return the processor arch -UTS_MACHINE := $(XENARCH) - -core-y += arch/xen/kernel/ - -.PHONY: include2/asm -include2/asm: -ifneq ($(KBUILD_SRC),) - @echo ' SYMLINK ../include/asm-$(XENARCH) -> include2/asm' - $(Q)ln -fsn ../include/asm-$(XENARCH) include2/asm -endif - -include/.asm-ignore: include/asm - @rm -f include/.asm-ignore - @mv include/asm include/.asm-ignore - @echo ' SYMLINK include/asm -> include/asm-$(XENARCH)' - $(Q)if [ ! -d include ]; then mkdir -p include; fi; - @ln -fsn $(srctree)/include/asm-$(XENARCH) include/asm - -include/asm-xen/asm: - @echo ' SYMLINK $@ -> include/asm-xen/asm-$(XENARCH)' - @mkdir -p include/asm-xen - @ln -fsn $(srctree)/include/asm-xen/asm-$(XENARCH) $@ - -arch/xen/arch: - @rm -f $@ - @mkdir -p arch/xen - @ln -fsn $(srctree)/arch/xen/$(XENARCH) $@ - -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ - include/config/MARKER - -include/asm-$(ARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s - $(call filechk,gen-asm-offsets) - -prepare: include/.asm-ignore include/asm-xen/asm \ - arch/xen/arch include/asm-$(ARCH)/asm_offsets.h include2/asm ; - -all: vmlinuz - -vmlinuz: vmlinux - $(Q)$(MAKE) $(build)=arch/xen/boot vmlinuz - -bzImage: vmlinuz - $(Q)$(MAKE) $(build)=arch/xen/boot bzImage - -XINSTALL_NAME ?= $(KERNELRELEASE) -install: vmlinuz -install kernel_install: - mkdir -p $(INSTALL_PATH)/boot - ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_PATH)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(XENGUEST)$(INSTALL_SUFFIX) - rm -f $(INSTALL_PATH)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) - install -m0644 vmlinuz $(INSTALL_PATH)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) - install -m0644 vmlinux $(INSTALL_PATH)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX) - install -m0664 .config $(INSTALL_PATH)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX) - install -m0664 System.map $(INSTALL_PATH)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX) - ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_PATH)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL)$(XENGUEST)$(INSTALL_SUFFIX) - -archclean: - @if [ -e arch/xen/arch ]; then $(MAKE) $(clean)=arch/xen/arch; fi; - @rm -f arch/xen/arch include/.asm-ignore include/asm-xen/asm - @rm -f vmlinux-stripped vmlinuz - -define archhelp - echo '* vmlinuz - Compressed kernel image' - echo ' install - Install kernel image and config file' -endef - -ifneq ($(XENARCH),) -include $(srctree)/arch/xen/$(XENARCH)/Makefile -endif diff --git a/linux-2.6-xen-sparse/arch/xen/boot/Makefile b/linux-2.6-xen-sparse/arch/xen/boot/Makefile deleted file mode 100644 index 8a3707164b..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/boot/Makefile +++ /dev/null @@ -1,11 +0,0 @@ - -OBJCOPYFLAGS := -g --strip-unneeded - -vmlinuz: vmlinux-stripped FORCE - $(call if_changed,gzip) - -vmlinux-stripped: vmlinux FORCE - $(call if_changed,objcopy) - -bzImage: vmlinuz - $(Q)ln -sf ../../../vmlinuz $(srctree)/arch/xen/boot/bzImage diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 b/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 deleted file mode 100644 index 3b50f2ee73..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 +++ /dev/null @@ -1,1405 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.12.6-xen0 -# Wed Dec 21 11:17:02 2005 -# - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_CLEAN_COMPILE=y -CONFIG_LOCK_KERNEL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 - -# -# General setup -# -CONFIG_LOCALVERSION="" -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -# CONFIG_BSD_PROCESS_ACCT_V3 is not set -CONFIG_SYSCTL=y -# CONFIG_AUDIT is not set -CONFIG_HOTPLUG=y -CONFIG_KOBJECT_UEVENT=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -# CONFIG_CPUSETS is not set -# CONFIG_EMBEDDED is not set -CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y -CONFIG_KALLSYMS_EXTRA_PASS=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SHMEM=y -CONFIG_CC_ALIGN_FUNCTIONS=0 -CONFIG_CC_ALIGN_LABELS=0 -CONFIG_CC_ALIGN_LOOPS=0 -CONFIG_CC_ALIGN_JUMPS=0 -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_KMOD=y -CONFIG_STOP_MACHINE=y - -# -# Processor type and features -# -CONFIG_IA64=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_TIME_INTERPOLATION=y -CONFIG_EFI=y -CONFIG_GENERIC_IOMAP=y -CONFIG_XEN=y -CONFIG_ARCH_XEN=y -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_GRANT=y -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_VT=y -CONFIG_VT=y -CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y -# CONFIG_IA64_GENERIC is not set -CONFIG_IA64_DIG=y -# CONFIG_IA64_HP_ZX1 is not set -# CONFIG_IA64_HP_ZX1_SWIOTLB is not set -# CONFIG_IA64_SGI_SN2 is not set -# CONFIG_IA64_HP_SIM is not set -# CONFIG_ITANIUM is not set -CONFIG_MCKINLEY=y -# CONFIG_IA64_PAGE_SIZE_4KB is not set -# CONFIG_IA64_PAGE_SIZE_8KB is not set -CONFIG_IA64_PAGE_SIZE_16KB=y -# CONFIG_IA64_PAGE_SIZE_64KB is not set -CONFIG_IA64_L1_CACHE_SHIFT=7 -# CONFIG_NUMA is not set -CONFIG_VIRTUAL_MEM_MAP=n -CONFIG_IA64_CYCLONE=y -CONFIG_IOSAPIC=y -CONFIG_FORCE_MAX_ZONEORDER=18 -CONFIG_SMP=y -CONFIG_NR_CPUS=4 -CONFIG_HOTPLUG_CPU=y -# CONFIG_SCHED_SMT is not set -# CONFIG_PREEMPT is not set -CONFIG_HAVE_DEC_LOCK=y -# CONFIG_IA32_SUPPORT is not set -CONFIG_IA64_MCA_RECOVERY=y -CONFIG_PERFMON=y -CONFIG_IA64_PALINFO=y -CONFIG_ACPI_DEALLOCATE_IRQ=y - -# -# Firmware Drivers -# -CONFIG_EFI_VARS=y -CONFIG_EFI_PCDP=y -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=y - -# -# Power management and ACPI -# -CONFIG_PM=y -CONFIG_ACPI=y - -# -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_BUTTON=y -# CONFIG_ACPI_VIDEO is not set -CONFIG_ACPI_FAN=y -CONFIG_ACPI_PROCESSOR=y -# CONFIG_ACPI_HOTPLUG_CPU is not set -CONFIG_ACPI_THERMAL=y -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_ACPI_CONTAINER is not set - -# -# Bus options (PCI, PCMCIA) -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -# CONFIG_PCI_MSI is not set -CONFIG_PCI_LEGACY_PROC=y -CONFIG_PCI_NAMES=y -# CONFIG_PCI_DEBUG is not set - -# -# PCI Hotplug Support -# -CONFIG_HOTPLUG_PCI=y -# CONFIG_HOTPLUG_PCI_FAKE is not set -CONFIG_HOTPLUG_PCI_ACPI=y -# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set -# CONFIG_HOTPLUG_PCI_CPCI is not set -# CONFIG_HOTPLUG_PCI_SHPC is not set - -# -# PCCARD (PCMCIA/CardBus) support -# -# CONFIG_PCCARD is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=y -CONFIG_BLK_DEV_NBD=y -# CONFIG_BLK_DEV_SX8 is not set -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -# CONFIG_CDROM_PKTCDVD is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_ATA_OVER_ETH is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECD=y -# CONFIG_BLK_DEV_IDETAPE is not set -CONFIG_BLK_DEV_IDEFLOPPY=y -CONFIG_BLK_DEV_IDESCSI=y -# CONFIG_IDE_TASK_IOCTL is not set - -# -# IDE chipset support/bugfixes -# -CONFIG_IDE_GENERIC=y -CONFIG_BLK_DEV_IDEPCI=y -# CONFIG_IDEPCI_SHARE_IRQ is not set -# CONFIG_BLK_DEV_OFFBOARD is not set -CONFIG_BLK_DEV_GENERIC=y -# CONFIG_BLK_DEV_OPTI621 is not set -CONFIG_BLK_DEV_IDEDMA_PCI=y -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set -CONFIG_IDEDMA_PCI_AUTO=y -# CONFIG_IDEDMA_ONLYDISK is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -CONFIG_BLK_DEV_CMD64X=y -# CONFIG_BLK_DEV_TRIFLEX is not set -# CONFIG_BLK_DEV_CY82C693 is not set -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_CS5530 is not set -# CONFIG_BLK_DEV_HPT34X is not set -# CONFIG_BLK_DEV_HPT366 is not set -# CONFIG_BLK_DEV_SC1200 is not set -CONFIG_BLK_DEV_PIIX=y -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set -# CONFIG_IDE_ARM is not set -CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_IDEDMA_IVB is not set -CONFIG_IDEDMA_AUTO=y -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI device support -# -CONFIG_SCSI=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=y -CONFIG_CHR_DEV_OSST=y -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_CHR_DEV_SG=y - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y - -# -# SCSI Transport Attributes -# -CONFIG_SCSI_SPI_ATTRS=y -CONFIG_SCSI_FC_ATTRS=y -# CONFIG_SCSI_ISCSI_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -CONFIG_SCSI_SYM53C8XX_2=y -CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 -CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 -CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 -# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set -# CONFIG_SCSI_IPR is not set -CONFIG_SCSI_QLOGIC_FC=y -# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set -CONFIG_SCSI_QLOGIC_1280=y -# CONFIG_SCSI_QLOGIC_1280_1040 is not set -CONFIG_SCSI_QLA2XXX=y -CONFIG_SCSI_QLA21XX=y -CONFIG_SCSI_QLA22XX=y -CONFIG_SCSI_QLA2300=y -CONFIG_SCSI_QLA2322=y -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Multi-device support (RAID and LVM) -# -CONFIG_MD=y -# CONFIG_BLK_DEV_MD is not set -# CONFIG_BLK_DEV_DM is not set - -# -# Fusion MPT device support -# -CONFIG_FUSION=y -CONFIG_FUSION_MAX_SGE=40 -# CONFIG_FUSION_CTL is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -CONFIG_ARPD=y -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_IP_TCPDIAG=y -# CONFIG_IP_TCPDIAG_IPV6 is not set - -# -# IP: Virtual Server Configuration -# -# CONFIG_IP_VS is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_CONNTRACK_MARK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -CONFIG_IP_NF_ARPTABLES=y -# CONFIG_IP_NF_ARPFILTER is not set -# CONFIG_IP_NF_ARP_MANGLE is not set - -# -# Bridge: Netfilter Configuration -# -# CONFIG_BRIDGE_NF_EBTABLES is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=y -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set -# CONFIG_NET_CLS_ROUTE is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -CONFIG_NETPOLL=y -# CONFIG_NETPOLL_RX is not set -# CONFIG_NETPOLL_TRAP is not set -CONFIG_NET_POLL_CONTROLLER=y -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -CONFIG_TUN=y - -# -# ARCnet devices -# -CONFIG_ARCNET=y -# CONFIG_ARCNET_1201 is not set -# CONFIG_ARCNET_1051 is not set -# CONFIG_ARCNET_RAW is not set -# CONFIG_ARCNET_CAP is not set -# CONFIG_ARCNET_COM90xx is not set -# CONFIG_ARCNET_COM90xxIO is not set -# CONFIG_ARCNET_RIM_I is not set -# CONFIG_ARCNET_COM20020 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -CONFIG_NET_TULIP=y -# CONFIG_DE2104X is not set -CONFIG_TULIP=y -CONFIG_TULIP_MWI=y -CONFIG_TULIP_MMIO=y -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -# CONFIG_DE4X5 is not set -# CONFIG_WINBOND_840 is not set -# CONFIG_DM9102 is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_DGRS is not set -CONFIG_EEPRO100=y -CONFIG_E100=y -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -CONFIG_E1000=y -# CONFIG_E1000_NAPI is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_VIA_VELOCITY is not set -CONFIG_TIGON3=y -# CONFIG_BNX2 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_S2IO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set -CONFIG_NETCONSOLE=y - -# -# ISDN subsystem -# -CONFIG_ISDN=m - -# -# Old ISDN4Linux -# -# CONFIG_ISDN_I4L is not set - -# -# CAPI subsystem -# -# CONFIG_ISDN_CAPI is not set - -# -# Telephony Support -# -# CONFIG_PHONE is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_JOYDEV=y -# CONFIG_INPUT_TSDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=y -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -CONFIG_SERIO_I8042=y -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y -# CONFIG_SERIO_RAW is not set -CONFIG_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_VORTEX is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461X is not set - -# -# Character devices -# -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_ROCKETPORT is not set -# CONFIG_CYCLADES is not set -# CONFIG_MOXA_SMARTIO is not set -# CONFIG_ISI is not set -# CONFIG_SYNCLINKMP is not set -# CONFIG_N_HDLC is not set -# CONFIG_SPECIALIX is not set -# CONFIG_SX is not set -# CONFIG_STALDRV is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_ACPI=y -CONFIG_SERIAL_8250_NR_UARTS=6 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_HW_RANDOM is not set -CONFIG_EFI_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -CONFIG_AGP=y -CONFIG_AGP_I460=y -CONFIG_DRM=y -# CONFIG_DRM_TDFX is not set -# CONFIG_DRM_R128 is not set -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_MGA is not set -# CONFIG_DRM_SIS is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HPET is not set -# CONFIG_HANGCHECK_TIMER is not set - -# -# TPM devices -# -# CONFIG_TCG_TPM is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -CONFIG_I2C_ALGOPCF=y -# CONFIG_I2C_ALGOPCA is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_I810 is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_ISA is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PROSAVAGE is not set -# CONFIG_I2C_SAVAGE4 is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set -# CONFIG_I2C_VOODOO3 is not set -# CONFIG_I2C_PCA_ISA is not set - -# -# Hardware Sensors Chip support -# -# CONFIG_I2C_SENSOR is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_FSCHER is not set -# CONFIG_SENSORS_FSCPOS is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set - -# -# Other I2C Chip support -# -# CONFIG_SENSORS_DS1337 is not set -# CONFIG_SENSORS_EEPROM is not set -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# Dallas's 1-wire bus -# -# CONFIG_W1 is not set - -# -# Misc devices -# - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=y - -# -# Video For Linux -# - -# -# Video Adapters -# -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DPC is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_OVCAMCHIP is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set - -# -# Graphics support -# -CONFIG_FB=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SOFT_CURSOR=y -# CONFIG_FB_MACMODES is not set -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON_OLD is not set -CONFIG_FB_RADEON=y -CONFIG_FB_RADEON_I2C=y -CONFIG_FB_RADEON_DEBUG=y -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -CONFIG_VGA_CONSOLE=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE is not set - -# -# Logo configuration -# -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -CONFIG_LOGO_LINUX_CLUT224=y -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set - -# -# Sound -# -CONFIG_SOUND=y - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_HWDEP=y -CONFIG_SND_RAWMIDI=y -CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y -CONFIG_SND_SEQUENCER_OSS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set - -# -# Generic devices -# -CONFIG_SND_MPU401_UART=y -CONFIG_SND_OPL3_LIB=y -CONFIG_SND_DUMMY=y -CONFIG_SND_VIRMIDI=y -CONFIG_SND_MTPAV=y -CONFIG_SND_SERIAL_U16550=y -CONFIG_SND_MPU401=y - -# -# PCI devices -# -CONFIG_SND_AC97_CODEC=y -# CONFIG_SND_ALI5451 is not set -CONFIG_SND_ATIIXP=y -# CONFIG_SND_ATIIXP_MODEM is not set -# CONFIG_SND_AU8810 is not set -# CONFIG_SND_AU8820 is not set -# CONFIG_SND_AU8830 is not set -# CONFIG_SND_AZT3328 is not set -# CONFIG_SND_BT87X is not set -# CONFIG_SND_CS46XX is not set -# CONFIG_SND_CS4281 is not set -# CONFIG_SND_EMU10K1 is not set -# CONFIG_SND_EMU10K1X is not set -# CONFIG_SND_CA0106 is not set -# CONFIG_SND_KORG1212 is not set -# CONFIG_SND_MIXART is not set -# CONFIG_SND_NM256 is not set -# CONFIG_SND_RME32 is not set -# CONFIG_SND_RME96 is not set -# CONFIG_SND_RME9652 is not set -# CONFIG_SND_HDSP is not set -# CONFIG_SND_TRIDENT is not set -# CONFIG_SND_YMFPCI is not set -# CONFIG_SND_ALS4000 is not set -# CONFIG_SND_CMIPCI is not set -# CONFIG_SND_ENS1370 is not set -# CONFIG_SND_ENS1371 is not set -# CONFIG_SND_ES1938 is not set -# CONFIG_SND_ES1968 is not set -# CONFIG_SND_MAESTRO3 is not set -CONFIG_SND_FM801=y -CONFIG_SND_FM801_TEA575X=y -# CONFIG_SND_ICE1712 is not set -# CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set -# CONFIG_SND_INTEL8X0M is not set -# CONFIG_SND_SONICVIBES is not set -# CONFIG_SND_VIA82XX is not set -# CONFIG_SND_VIA82XX_MODEM is not set -# CONFIG_SND_VX222 is not set -# CONFIG_SND_HDA_INTEL is not set - -# -# USB devices -# -# CONFIG_SND_USB_AUDIO is not set - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set -# CONFIG_SOUND_ALI5455 is not set -# CONFIG_SOUND_FORTE is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_AD1980 is not set - -# -# USB support -# -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -CONFIG_USB_BANDWIDTH=y -# CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_SUSPEND is not set -# CONFIG_USB_OTG is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_SPLIT_ISO is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_UHCI_HCD=y -# CONFIG_USB_SL811_HCD is not set - -# -# USB Device Class drivers -# -CONFIG_USB_AUDIO=y -# CONFIG_USB_BLUETOOTH_TTY is not set -# CONFIG_USB_MIDI is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=y -CONFIG_USB_HIDINPUT=y -# CONFIG_HID_FF is not set -CONFIG_USB_HIDDEV=y -# CONFIG_USB_AIPTEK is not set -# CONFIG_USB_WACOM is not set -# CONFIG_USB_KBTAB is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_MTOUCH is not set -# CONFIG_USB_EGALAX is not set -# CONFIG_USB_XPAD is not set -# CONFIG_USB_ATI_REMOTE is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_VICAM is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_KONICAWC is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_SE401 is not set -# CONFIG_USB_SN9C102 is not set -# CONFIG_USB_STV680 is not set -# CONFIG_USB_PWC is not set - -# -# USB Network Adapters -# -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set -# CONFIG_USB_USBNET is not set -CONFIG_USB_MON=y - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_PHIDGETKIT is not set -# CONFIG_USB_PHIDGETSERVO is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_TEST is not set - -# -# USB ATM/DSL drivers -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# InfiniBand support -# -# CONFIG_INFINIBAND is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -CONFIG_EXT3_FS_POSIX_ACL=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -CONFIG_REISERFS_FS=y -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -# CONFIG_JFS_FS is not set -CONFIG_FS_POSIX_ACL=y - -# -# XFS support -# -CONFIG_XFS_FS=y -CONFIG_XFS_EXPORT=y -# CONFIG_XFS_RT is not set -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_SECURITY is not set -# CONFIG_XFS_POSIX_ACL is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -CONFIG_DNOTIFY=y -CONFIG_AUTOFS_FS=y -CONFIG_AUTOFS4_FS=y - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -# CONFIG_ZISOFS is not set -CONFIG_UDF_FS=y -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_KCORE=y -CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -CONFIG_TMPFS_XATTR=y -CONFIG_TMPFS_SECURITY=y -CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V4=y -CONFIG_NFS_DIRECTIO=y -CONFIG_NFSD=y -CONFIG_NFSD_V3=y -CONFIG_NFSD_V4=y -CONFIG_NFSD_TCP=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -CONFIG_RPCSEC_GSS_KRB5=y -# CONFIG_RPCSEC_GSS_SPKM3 is not set -CONFIG_SMB_FS=y -CONFIG_SMB_NLS_DEFAULT=y -CONFIG_SMB_NLS_REMOTE="cp437" -CONFIG_CIFS=y -# CONFIG_CIFS_STATS is not set -# CONFIG_CIFS_XATTR is not set -# CONFIG_CIFS_EXPERIMENTAL is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -CONFIG_SGI_PARTITION=y -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -CONFIG_EFI_PARTITION=y - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=y -CONFIG_NLS_CODEPAGE_775=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_CODEPAGE_852=y -CONFIG_NLS_CODEPAGE_855=y -CONFIG_NLS_CODEPAGE_857=y -CONFIG_NLS_CODEPAGE_860=y -CONFIG_NLS_CODEPAGE_861=y -CONFIG_NLS_CODEPAGE_862=y -CONFIG_NLS_CODEPAGE_863=y -CONFIG_NLS_CODEPAGE_864=y -CONFIG_NLS_CODEPAGE_865=y -CONFIG_NLS_CODEPAGE_866=y -CONFIG_NLS_CODEPAGE_869=y -CONFIG_NLS_CODEPAGE_936=y -CONFIG_NLS_CODEPAGE_950=y -CONFIG_NLS_CODEPAGE_932=y -CONFIG_NLS_CODEPAGE_949=y -CONFIG_NLS_CODEPAGE_874=y -CONFIG_NLS_ISO8859_8=y -# CONFIG_NLS_CODEPAGE_1250 is not set -CONFIG_NLS_CODEPAGE_1251=y -# CONFIG_NLS_ASCII is not set -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_2=y -CONFIG_NLS_ISO8859_3=y -CONFIG_NLS_ISO8859_4=y -CONFIG_NLS_ISO8859_5=y -CONFIG_NLS_ISO8859_6=y -CONFIG_NLS_ISO8859_7=y -CONFIG_NLS_ISO8859_9=y -CONFIG_NLS_ISO8859_13=y -CONFIG_NLS_ISO8859_14=y -CONFIG_NLS_ISO8859_15=y -CONFIG_NLS_KOI8_R=y -CONFIG_NLS_KOI8_U=y -CONFIG_NLS_UTF8=y - -# -# Library routines -# -# CONFIG_CRC_CCITT is not set -CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=20 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -CONFIG_IA64_GRANULE_16MB=y -# CONFIG_IA64_GRANULE_64MB is not set -CONFIG_IA64_PRINT_HAZARDS=y -# CONFIG_DISABLE_VHPT is not set -# CONFIG_IA64_DEBUG_CMPXCHG is not set -# CONFIG_IA64_DEBUG_IRQ is not set - -# -# Security options -# -# CONFIG_KEYS is not set -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -CONFIG_CRYPTO=y -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_NULL is not set -# CONFIG_CRYPTO_MD4 is not set -CONFIG_CRYPTO_MD5=y -# CONFIG_CRYPTO_SHA1 is not set -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_TGR192 is not set -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_TWOFISH is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_AES is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_TEA is not set -# CONFIG_CRYPTO_ARC4 is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_DEFLATE is not set -# CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_CRC32C is not set -# CONFIG_CRYPTO_TEST is not set - -# -# Hardware crypto devices -# diff --git a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_ia64 b/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_ia64 deleted file mode 100644 index 4cd3ad09f4..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_ia64 +++ /dev/null @@ -1,1261 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.12 -# Thu Sep 15 11:04:33 2005 -# - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_CLEAN_COMPILE is not set -CONFIG_BROKEN=y -CONFIG_BROKEN_ON_SMP=y -CONFIG_LOCK_KERNEL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 - -# -# General setup -# -CONFIG_LOCALVERSION="" -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_POSIX_MQUEUE is not set -CONFIG_BSD_PROCESS_ACCT=y -# CONFIG_BSD_PROCESS_ACCT_V3 is not set -CONFIG_SYSCTL=y -# CONFIG_AUDIT is not set -CONFIG_HOTPLUG=y -CONFIG_KOBJECT_UEVENT=y -# CONFIG_IKCONFIG is not set -# CONFIG_CPUSETS is not set -# CONFIG_EMBEDDED is not set -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SHMEM=y -CONFIG_CC_ALIGN_FUNCTIONS=0 -CONFIG_CC_ALIGN_LABELS=0 -CONFIG_CC_ALIGN_LOOPS=0 -CONFIG_CC_ALIGN_JUMPS=0 -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -# CONFIG_KMOD is not set - -# -# Processor type and features -# -CONFIG_IA64=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_TIME_INTERPOLATION=y -CONFIG_EFI=y -CONFIG_GENERIC_IOMAP=y -CONFIG_XEN=y -CONFIG_XEN_VT=n -CONFIG_ARCH_XEN=y -CONFIG_XEN_PRIVILEGED_GUEST=y -CONFIG_XEN_PHYSDEV_ACCESS=y -CONFIG_XEN_BLKDEV_GRANT=y -CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_VGA_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=n -CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y -# CONFIG_IA64_GENERIC is not set -# CONFIG_IA64_DIG is not set -CONFIG_IA64_HP_ZX1=y -# CONFIG_IA64_HP_ZX1_SWIOTLB is not set -# CONFIG_IA64_SGI_SN2 is not set -# CONFIG_IA64_HP_SIM is not set -# CONFIG_ITANIUM is not set -CONFIG_MCKINLEY=y -# CONFIG_IA64_PAGE_SIZE_4KB is not set -# CONFIG_IA64_PAGE_SIZE_8KB is not set -CONFIG_IA64_PAGE_SIZE_16KB=y -# CONFIG_IA64_PAGE_SIZE_64KB is not set -CONFIG_IA64_L1_CACHE_SHIFT=7 -# CONFIG_NUMA is not set -CONFIG_VIRTUAL_MEM_MAP=y -CONFIG_HOLES_IN_ZONE=y -# CONFIG_IA64_CYCLONE is not set -CONFIG_IOSAPIC=y -CONFIG_FORCE_MAX_ZONEORDER=18 -CONFIG_SMP=y -CONFIG_NR_CPUS=16 -# CONFIG_HOTPLUG_CPU is not set -# CONFIG_SCHED_SMT is not set -# CONFIG_PREEMPT is not set -CONFIG_HAVE_DEC_LOCK=y -# CONFIG_IA32_SUPPORT is not set -CONFIG_IA64_MCA_RECOVERY=y -CONFIG_PERFMON=y -CONFIG_IA64_PALINFO=y -CONFIG_ACPI_DEALLOCATE_IRQ=y - -# -# Firmware Drivers -# -CONFIG_EFI_VARS=y -CONFIG_EFI_PCDP=y -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=y - -# -# Power management and ACPI -# -CONFIG_PM=y -CONFIG_ACPI=y - -# -# ACPI (Advanced Configuration and Power Interface) Support -# -CONFIG_ACPI_BOOT=y -CONFIG_ACPI_INTERPRETER=y -CONFIG_ACPI_BUTTON=y -# CONFIG_ACPI_VIDEO is not set -CONFIG_ACPI_FAN=y -CONFIG_ACPI_PROCESSOR=y -CONFIG_ACPI_THERMAL=y -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_BUS=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_PCI=y -CONFIG_ACPI_SYSTEM=y -# CONFIG_ACPI_CONTAINER is not set - -# -# Bus options (PCI, PCMCIA) -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -# CONFIG_PCI_MSI is not set -CONFIG_PCI_LEGACY_PROC=y -CONFIG_PCI_NAMES=y -# CONFIG_PCI_DEBUG is not set - -# -# PCI Hotplug Support -# -CONFIG_HOTPLUG_PCI=y -# CONFIG_HOTPLUG_PCI_FAKE is not set -CONFIG_HOTPLUG_PCI_ACPI=y -# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set -# CONFIG_HOTPLUG_PCI_CPCI is not set -# CONFIG_HOTPLUG_PCI_SHPC is not set - -# -# PCCARD (PCMCIA/CardBus) support -# -# CONFIG_PCCARD is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_SX8 is not set -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -# CONFIG_CDROM_PKTCDVD is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_ATA_OVER_ETH is not set - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=y -CONFIG_CHR_DEV_OSST=y -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_CHR_DEV_SG=y - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y - -# -# SCSI Transport Attributes -# -CONFIG_SCSI_SPI_ATTRS=y -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_CPQFCTS is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -CONFIG_SCSI_SYM53C8XX_2=y -CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 -CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 -CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 -# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_PCI2000 is not set -# CONFIG_SCSI_PCI2220I is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -CONFIG_SCSI_QLOGIC_1280=y -# CONFIG_SCSI_QLOGIC_1280_1040 is not set -CONFIG_SCSI_QLA2XXX=y -# CONFIG_SCSI_QLA21XX is not set -# CONFIG_SCSI_QLA22XX is not set -# CONFIG_SCSI_QLA2300 is not set -# CONFIG_SCSI_QLA2322 is not set -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Fusion MPT device support -# -CONFIG_FUSION=y -CONFIG_FUSION_MAX_SGE=40 -# CONFIG_FUSION_CTL is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_TUNNEL is not set -# CONFIG_IP_TCPDIAG is not set -# CONFIG_IP_TCPDIAG_IPV6 is not set - -# -# IP: Virtual Server Configuration -# -# CONFIG_IP_VS is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_CONNTRACK_MARK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -CONFIG_IP_NF_ARPTABLES=y -# CONFIG_IP_NF_ARPFILTER is not set -# CONFIG_IP_NF_ARP_MANGLE is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_BRIDGE is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set -# CONFIG_NET_CLS_ROUTE is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -CONFIG_NET_TULIP=y -# CONFIG_DE2104X is not set -CONFIG_TULIP=y -CONFIG_TULIP_MWI=y -CONFIG_TULIP_MMIO=y -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -# CONFIG_DE4X5 is not set -# CONFIG_WINBOND_840 is not set -# CONFIG_DM9102 is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -CONFIG_E100=y -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -CONFIG_E1000=y -# CONFIG_E1000_NAPI is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_VIA_VELOCITY is not set -CONFIG_TIGON3=y -# CONFIG_BNX2 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_S2IO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set -# CONFIG_NETCONSOLE is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Telephony Support -# -# CONFIG_PHONE is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_JOYDEV=y -# CONFIG_INPUT_TSDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -# CONFIG_SERIO_I8042 is not set -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_PCIPS2 is not set -# CONFIG_SERIO_RAW is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_ACPI=y -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_HW_RANDOM is not set -CONFIG_EFI_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -CONFIG_AGP=y -CONFIG_AGP_HP_ZX1=y -CONFIG_DRM=y -# CONFIG_DRM_TDFX is not set -# CONFIG_DRM_GAMMA is not set -# CONFIG_DRM_R128 is not set -CONFIG_DRM_RADEON=y -# CONFIG_DRM_MGA is not set -# CONFIG_DRM_SIS is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HPET is not set -# CONFIG_HANGCHECK_TIMER is not set - -# -# TPM devices -# -# CONFIG_TCG_TPM is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -CONFIG_I2C_ALGOPCF=y -# CONFIG_I2C_ALGOPCA is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_I810 is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_ISA is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PROSAVAGE is not set -# CONFIG_I2C_SAVAGE4 is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set -# CONFIG_I2C_VOODOO3 is not set -# CONFIG_I2C_PCA_ISA is not set - -# -# Hardware Sensors Chip support -# -# CONFIG_I2C_SENSOR is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_FSCHER is not set -# CONFIG_SENSORS_FSCPOS is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set - -# -# Other I2C Chip support -# -# CONFIG_SENSORS_DS1337 is not set -# CONFIG_SENSORS_EEPROM is not set -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# Dallas's 1-wire bus -# -# CONFIG_W1 is not set - -# -# Misc devices -# - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=y - -# -# Video For Linux -# - -# -# Video Adapters -# -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_ZR36120 is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DPC is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_OVCAMCHIP is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set - -# -# Graphics support -# -CONFIG_FB=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SOFT_CURSOR=y -# CONFIG_FB_MACMODES is not set -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON_OLD is not set -CONFIG_FB_RADEON=y -CONFIG_FB_RADEON_I2C=y -CONFIG_FB_RADEON_DEBUG=y -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Logo configuration -# -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -CONFIG_LOGO_LINUX_CLUT224=y -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set - -# -# Sound -# -CONFIG_SOUND=y - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_HWDEP=y -CONFIG_SND_RAWMIDI=y -CONFIG_SND_SEQUENCER=y -# CONFIG_SND_SEQ_DUMMY is not set -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y -CONFIG_SND_SEQUENCER_OSS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set - -# -# Generic devices -# -CONFIG_SND_MPU401_UART=y -CONFIG_SND_OPL3_LIB=y -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_VIRMIDI is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_MPU401 is not set - -# -# PCI devices -# -CONFIG_SND_AC97_CODEC=y -# CONFIG_SND_ALI5451 is not set -# CONFIG_SND_ATIIXP is not set -# CONFIG_SND_ATIIXP_MODEM is not set -# CONFIG_SND_AU8810 is not set -# CONFIG_SND_AU8820 is not set -# CONFIG_SND_AU8830 is not set -# CONFIG_SND_AZT3328 is not set -# CONFIG_SND_BT87X is not set -# CONFIG_SND_CS46XX is not set -# CONFIG_SND_CS4281 is not set -# CONFIG_SND_EMU10K1 is not set -# CONFIG_SND_EMU10K1X is not set -# CONFIG_SND_CA0106 is not set -# CONFIG_SND_KORG1212 is not set -# CONFIG_SND_MIXART is not set -# CONFIG_SND_NM256 is not set -# CONFIG_SND_RME32 is not set -# CONFIG_SND_RME96 is not set -# CONFIG_SND_RME9652 is not set -# CONFIG_SND_HDSP is not set -# CONFIG_SND_TRIDENT is not set -# CONFIG_SND_YMFPCI is not set -# CONFIG_SND_ALS4000 is not set -# CONFIG_SND_CMIPCI is not set -# CONFIG_SND_ENS1370 is not set -# CONFIG_SND_ENS1371 is not set -# CONFIG_SND_ES1938 is not set -# CONFIG_SND_ES1968 is not set -# CONFIG_SND_MAESTRO3 is not set -CONFIG_SND_FM801=y -CONFIG_SND_FM801_TEA575X=y -# CONFIG_SND_ICE1712 is not set -# CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set -# CONFIG_SND_INTEL8X0M is not set -# CONFIG_SND_SONICVIBES is not set -# CONFIG_SND_VIA82XX is not set -# CONFIG_SND_VIA82XX_MODEM is not set -# CONFIG_SND_VX222 is not set -# CONFIG_SND_HDA_INTEL is not set - -# -# USB devices -# -# CONFIG_SND_USB_AUDIO is not set - -# -# Open Sound System -# -# CONFIG_SOUND_PRIME is not set - -# -# USB support -# -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -# CONFIG_USB_DEVICEFS is not set -CONFIG_USB_BANDWIDTH=y -# CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_SUSPEND is not set -# CONFIG_USB_OTG is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_SPLIT_ISO is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_UHCI_HCD=y -# CONFIG_USB_SL811_HCD is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH_TTY is not set -# CONFIG_USB_MIDI is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=y -CONFIG_USB_HIDINPUT=y -# CONFIG_HID_FF is not set -CONFIG_USB_HIDDEV=y -# CONFIG_USB_AIPTEK is not set -# CONFIG_USB_WACOM is not set -# CONFIG_USB_KBTAB is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_MTOUCH is not set -# CONFIG_USB_EGALAX is not set -# CONFIG_USB_XPAD is not set -# CONFIG_USB_ATI_REMOTE is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_VICAM is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_KONICAWC is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_SE401 is not set -# CONFIG_USB_SN9C102 is not set -# CONFIG_USB_STV680 is not set -# CONFIG_USB_PWC is not set - -# -# USB Network Adapters -# -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set -# CONFIG_USB_USBNET is not set -CONFIG_USB_MON=y - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_PHIDGETKIT is not set -# CONFIG_USB_PHIDGETSERVO is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_SISUSBVGA is not set - -# -# USB ATM/DSL drivers -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# InfiniBand support -# -# CONFIG_INFINIBAND is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -# CONFIG_EXT2_FS_POSIX_ACL is not set -# CONFIG_EXT2_FS_SECURITY is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set - -# -# XFS support -# -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -CONFIG_DNOTIFY=y -CONFIG_AUTOFS_FS=y -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -# CONFIG_ZISOFS is not set -CONFIG_UDF_FS=y -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_KCORE=y -CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -CONFIG_TMPFS_XATTR=y -CONFIG_TMPFS_SECURITY=y -CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V4=y -# CONFIG_NFS_DIRECTIO is not set -CONFIG_NFSD=y -CONFIG_NFSD_V3=y -# CONFIG_NFSD_V4 is not set -# CONFIG_NFSD_TCP is not set -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -CONFIG_RPCSEC_GSS_KRB5=y -# CONFIG_RPCSEC_GSS_SPKM3 is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -CONFIG_EFI_PARTITION=y - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=y -CONFIG_NLS_CODEPAGE_775=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_CODEPAGE_852=y -CONFIG_NLS_CODEPAGE_855=y -CONFIG_NLS_CODEPAGE_857=y -CONFIG_NLS_CODEPAGE_860=y -CONFIG_NLS_CODEPAGE_861=y -CONFIG_NLS_CODEPAGE_862=y -CONFIG_NLS_CODEPAGE_863=y -CONFIG_NLS_CODEPAGE_864=y -CONFIG_NLS_CODEPAGE_865=y -CONFIG_NLS_CODEPAGE_866=y -CONFIG_NLS_CODEPAGE_869=y -CONFIG_NLS_CODEPAGE_936=y -CONFIG_NLS_CODEPAGE_950=y -CONFIG_NLS_CODEPAGE_932=y -CONFIG_NLS_CODEPAGE_949=y -CONFIG_NLS_CODEPAGE_874=y -CONFIG_NLS_ISO8859_8=y -# CONFIG_NLS_CODEPAGE_1250 is not set -CONFIG_NLS_CODEPAGE_1251=y -# CONFIG_NLS_ASCII is not set -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_2=y -CONFIG_NLS_ISO8859_3=y -CONFIG_NLS_ISO8859_4=y -CONFIG_NLS_ISO8859_5=y -CONFIG_NLS_ISO8859_6=y -CONFIG_NLS_ISO8859_7=y -CONFIG_NLS_ISO8859_9=y -CONFIG_NLS_ISO8859_13=y -CONFIG_NLS_ISO8859_14=y -CONFIG_NLS_ISO8859_15=y -CONFIG_NLS_KOI8_R=y -CONFIG_NLS_KOI8_U=y -CONFIG_NLS_UTF8=y - -# -# Library routines -# -# CONFIG_CRC_CCITT is not set -CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_LOG_BUF_SHIFT=17 -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set -CONFIG_IA64_GRANULE_16MB=y -# CONFIG_IA64_GRANULE_64MB is not set -CONFIG_IA64_PRINT_HAZARDS=y -# CONFIG_DISABLE_VHPT is not set -# CONFIG_IA64_DEBUG_CMPXCHG is not set -# CONFIG_IA64_DEBUG_IRQ is not set - -# -# Security options -# -# CONFIG_KEYS is not set -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -CONFIG_CRYPTO=y -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_NULL is not set -# CONFIG_CRYPTO_MD4 is not set -CONFIG_CRYPTO_MD5=y -# CONFIG_CRYPTO_SHA1 is not set -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_TGR192 is not set -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_TWOFISH is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_AES is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_TEA is not set -# CONFIG_CRYPTO_ARC4 is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_DEFLATE is not set -# CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_CRC32C is not set -# CONFIG_CRYPTO_TEST is not set - -# -# Hardware crypto devices -# diff --git a/linux-2.6-xen-sparse/arch/xen/i386/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/Makefile deleted file mode 100644 index 313f5708af..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/Makefile +++ /dev/null @@ -1,108 +0,0 @@ -# -# i386/Makefile -# -# This file is included by the global makefile so that you can add your own -# architecture-specific flags and dependencies. Remember to do have actions -# for "archclean" cleaning up for this architecture. -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# -# Copyright (C) 1994 by Linus Torvalds -# -# 19990713 Artur Skawina <skawina@geocities.com> -# Added '-march' and '-mpreferred-stack-boundary' support -# -# 20050320 Kianusch Sayah Karadji <kianusch@sk-tech.net> -# Added support for GEODE CPU - -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -LDFLAGS := -m elf_i386 -LDFLAGS_vmlinux := -CHECK := $(CHECK) -D__i386__=1 - -CFLAGS += -m32 -AFLAGS += -m32 - -CFLAGS += -pipe -msoft-float - -# prevent gcc from keeping the stack 16 byte aligned -CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,) - -align := $(cc-option-align) -cflags-$(CONFIG_M386) += -march=i386 -cflags-$(CONFIG_M486) += -march=i486 -cflags-$(CONFIG_M586) += -march=i586 -cflags-$(CONFIG_M586TSC) += -march=i586 -cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586) -cflags-$(CONFIG_M686) += -march=i686 -cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call cc-option,-mtune=pentium2) -cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call cc-option,-mtune=pentium3) -cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call cc-option,-mtune=pentium3) -cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call cc-option,-mtune=pentium4) -cflags-$(CONFIG_MK6) += -march=k6 -# Please note, that patches that add -march=athlon-xp and friends are pointless. -# They make zero difference whatsosever to performance at this time. -cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4) -cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)) -cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 -cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call cc-option,-mtune=pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 -cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586) -cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586) -cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586) -cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 -cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686) - -# AMD Elan support -cflags-$(CONFIG_X86_ELAN) += -march=i486 - -# Geode GX1 support -cflags-$(CONFIG_MGEODEGX1) += $(call cc-option,-march=pentium-mmx,-march=i486) - -# -mregparm=3 works ok on gcc-3.0 and later -# -GCC_VERSION := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) -cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) - -# Disable unit-at-a-time mode, it makes gcc use a lot more stack -# due to the lack of sharing of stacklots. -CFLAGS += $(call cc-option,-fno-unit-at-a-time,) - -CFLAGS += $(cflags-y) - -head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o - -libs-y += arch/i386/lib/ -core-y += arch/xen/i386/kernel/ \ - arch/xen/i386/mm/ \ - arch/xen/i386/mach-default/ \ - arch/i386/crypto/ -# \ -# arch/xen/$(mcore-y)/ -drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ -drivers-$(CONFIG_PCI) += arch/xen/i386/pci/ -# must be linked after kernel/ -drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ -drivers-$(CONFIG_PM) += arch/i386/power/ - -# for clean -obj- += kernel/ mm/ pci/ -#obj- += ../../i386/lib/ ../../i386/mm/ -#../../i386/$(mcore-y)/ -#obj- += ../../i386/pci/ ../../i386/oprofile/ ../../i386/power/ - -xenflags-y += -Iinclude/asm-xen/asm-i386/mach-xen \ - -Iinclude/asm-i386/mach-default -CFLAGS += $(xenflags-y) -AFLAGS += $(xenflags-y) - -prepare: include/asm-$(XENARCH)/asm_offsets.h -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h - -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \ - include/linux/version.h include/config/MARKER - -include/asm-$(XENARCH)/asm_offsets.h: arch/$(XENARCH)/kernel/asm-offsets.s - $(call filechk,gen-asm-offsets) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/kernel/Makefile deleted file mode 100644 index d315d94b12..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/Makefile +++ /dev/null @@ -1,100 +0,0 @@ -# -# Makefile for the linux kernel. -# - -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/kernel -AFLAGS += -Iarch/$(XENARCH)/kernel - -extra-y := head.o init_task.o - -obj-y := process.o signal.o entry.o traps.o \ - time.o ioport.o ldt.o setup.o \ - pci-dma.o i386_ksyms.o irq.o quirks.o fixup.o - -c-obj-y := semaphore.o vm86.o \ - ptrace.o sys_i386.o \ - i387.o dmi_scan.o bootflag.o -s-obj-y := - -obj-y += cpu/ -#obj-y += timers/ -obj-$(CONFIG_ACPI_BOOT) += acpi/ -#c-obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o -c-obj-$(CONFIG_MCA) += mca.o -c-obj-$(CONFIG_X86_MSR) += msr.o -c-obj-$(CONFIG_X86_CPUID) += cpuid.o -obj-$(CONFIG_MICROCODE) += microcode.o -c-obj-$(CONFIG_APM) += apm.o -obj-$(CONFIG_X86_SMP) += smp.o -#obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o -obj-$(CONFIG_X86_MPPARSE) += mpparse.o -obj-$(CONFIG_X86_LOCAL_APIC) += apic.o -c-obj-$(CONFIG_X86_LOCAL_APIC) += nmi.o -obj-$(CONFIG_X86_IO_APIC) += io_apic.o -c-obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups.o -c-obj-$(CONFIG_X86_NUMAQ) += numaq.o -c-obj-$(CONFIG_X86_SUMMIT_NUMA) += summit.o -c-obj-$(CONFIG_MODULES) += module.o -c-obj-y += sysenter.o -obj-y += vsyscall.o -c-obj-$(CONFIG_ACPI_SRAT) += srat.o -c-obj-$(CONFIG_HPET_TIMER) += time_hpet.o -c-obj-$(CONFIG_EFI) += efi.o efi_stub.o -c-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -c-obj-$(CONFIG_SMP_ALTERNATIVES)+= smpalts.o -obj-$(CONFIG_SWIOTLB) += swiotlb.o - -EXTRA_AFLAGS := -traditional - -c-obj-$(CONFIG_SCx200) += scx200.o - -# vsyscall.o contains the vsyscall DSO images as __initdata. -# We must build both images before we can assemble it. -# Note: kbuild does not track this dependency due to usage of .incbin -$(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so -targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) -targets += vsyscall-note.o vsyscall.lds - -# The DSO images are built using a special linker script. -quiet_cmd_syscall = SYSCALL $@ - cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \ - -Wl,-T,$(filter-out FORCE,$^) -o $@ - -export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH) - -vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 -SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) -SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) - -$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ -$(obj)/vsyscall-%.so: $(src)/vsyscall.lds \ - $(obj)/vsyscall-%.o $(obj)/vsyscall-note.o FORCE - $(call if_changed,syscall) - -# We also create a special relocatable object that should mirror the symbol -# table and layout of the linked DSO. With ld -R we can then refer to -# these symbols in the kernel code rather than hand-coded addresses. -extra-y += vsyscall-syms.o -$(obj)/built-in.o: $(obj)/vsyscall-syms.o -$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o - -SYSCFLAGS_vsyscall-syms.o = -r -$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds \ - $(obj)/vsyscall-sysenter.o $(obj)/vsyscall-note.o FORCE - $(call if_changed,syscall) - -c-link := -s-link := vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o vsyscall.lds.o - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-obj-m) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): - @ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@ - -$(obj)/vsyscall-int80.S: $(obj)/vsyscall-sigreturn.S - -obj-y += $(c-obj-y) $(s-obj-y) -obj-m += $(c-obj-m) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-m) $(c-obj-) $(c-link)) -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/Makefile deleted file mode 100644 index 9254f472f2..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -obj-$(CONFIG_ACPI_BOOT) := boot.o -c-obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o -c-obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/i386/kernel/acpi/$(notdir $@) $@ - -obj-y += $(c-obj-y) $(s-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/Makefile deleted file mode 100644 index faac0e1acc..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -# Makefile for x86-compatible CPU details and quirks -# - -CFLAGS += -Iarch/i386/kernel/cpu - -obj-y := common.o -c-obj-y += proc.o - -c-obj-y += amd.o -c-obj-y += cyrix.o -c-obj-y += centaur.o -c-obj-y += transmeta.o -c-obj-y += intel.o intel_cacheinfo.o -c-obj-y += rise.o -c-obj-y += nexgen.o -c-obj-y += umc.o - -#obj-$(CONFIG_X86_MCE) += ../../../../i386/kernel/cpu/mcheck/ - -obj-$(CONFIG_MTRR) += mtrr/ -#obj-$(CONFIG_CPU_FREQ) += ../../../../i386/kernel/cpu/cpufreq/ - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/i386/kernel/cpu/$(notdir $@) $@ - -obj-y += $(c-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile deleted file mode 100644 index e25eb7264e..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -obj-y := main.o -c-obj-y := if.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): $(obj)/mtrr.h - @ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(obj-y)): $(obj)/mtrr.h - -$(obj)/mtrr.h: - @ln -fsn $(srctree)/arch/i386/kernel/cpu/mtrr/mtrr.h $@ - -obj-y += $(c-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall.S b/linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall.S deleted file mode 100644 index f2bcb7f206..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/vsyscall.S +++ /dev/null @@ -1,15 +0,0 @@ -#include <linux/init.h> - -__INITDATA - - .globl vsyscall_int80_start, vsyscall_int80_end -vsyscall_int80_start: - .incbin "arch/xen/i386/kernel/vsyscall-int80.so" -vsyscall_int80_end: - - .globl vsyscall_sysenter_start, vsyscall_sysenter_end -vsyscall_sysenter_start: - .incbin "arch/xen/i386/kernel/vsyscall-sysenter.so" -vsyscall_sysenter_end: - -__FINIT diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mach-default/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/mach-default/Makefile deleted file mode 100644 index 7d50b2926e..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/mach-default/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -# -# Makefile for the linux kernel. -# - -c-obj-y := topology.o - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y)): - @ln -fsn $(srctree)/arch/i386/mach-default/$(notdir $@) $@ - -obj-y += $(c-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/mm/Makefile deleted file mode 100644 index 50d99c2d3d..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# -# Makefile for the linux i386-specific parts of the memory manager. -# - -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/mm - -obj-y := init.o pgtable.o fault.o ioremap.o hypervisor.o -c-obj-y := extable.o mmap.o pageattr.o - -c-obj-$(CONFIG_DISCONTIGMEM) += discontig.o -c-obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o -obj-$(CONFIG_HIGHMEM) += highmem.o -c-obj-$(CONFIG_BOOT_IOREMAP) += boot_ioremap.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/i386/mm/$(notdir $@) $@ - -obj-y += $(c-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/pci/Makefile b/linux-2.6-xen-sparse/arch/xen/i386/pci/Makefile deleted file mode 100644 index 8ee668f45a..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/i386/pci/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/pci - -obj-y := i386.o - -#c-obj-$(CONFIG_PCI_BIOS) += pcbios.o -c-obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o -c-obj-$(CONFIG_PCI_DIRECT) += direct.o - -c-pci-y := fixup.o -c-pci-$(CONFIG_ACPI_PCI) += acpi.o -c-pci-y += legacy.o -# Make sure irq.o gets linked in after legacy.o -l-pci-y += irq.o - -c-pci-$(CONFIG_X86_VISWS) := visws.o fixup.o -pci-$(CONFIG_X86_VISWS) := -c-pci-$(CONFIG_X86_NUMAQ) := numa.o -l-pci-$(CONFIG_X86_NUMAQ) := irq.o - -obj-y += $(pci-y) -c-obj-y += $(c-pci-y) common.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/i386/pci/$(notdir $@) $@ - -# Make sure irq.o gets linked in before common.o -obj-y += $(patsubst common.o,$(l-pci-y) common.o,$(c-obj-y)) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/Makefile deleted file mode 100644 index 3c25ae9a1c..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/Makefile +++ /dev/null @@ -1,93 +0,0 @@ -# -# x86_64/Makefile -# -# This file is included by the global makefile so that you can add your own -# architecture-specific flags and dependencies. Remember to do have actions -# for "archclean" and "archdep" for cleaning up and making dependencies for -# this architecture -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# -# Copyright (C) 1994 by Linus Torvalds -# -# 19990713 Artur Skawina <skawina@geocities.com> -# Added '-march' and '-mpreferred-stack-boundary' support -# 20000913 Pavel Machek <pavel@suse.cz> -# Converted for x86_64 architecture -# 20010105 Andi Kleen, add IA32 compiler. -# ....and later removed it again.... -# 20050205 Jun Nakajima <jun.nakajima@intel.com> -# Modified for Xen -# -# $Id: Makefile,v 1.31 2002/03/22 15:56:07 ak Exp $ - -# -# early bootup linking needs 32bit. You can either use real 32bit tools -# here or 64bit tools in 32bit mode. -# -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -IA32_CC := $(CC) $(CPPFLAGS) -m32 -O2 -fomit-frame-pointer -IA32_LD := $(LD) -m elf_i386 -IA32_AS := $(CC) $(AFLAGS) -m32 -Wa,--32 -traditional -c -IA32_OBJCOPY := $(CROSS_COMPILE)objcopy -IA32_CPP := $(CROSS_COMPILE)gcc -m32 -E -export IA32_CC IA32_LD IA32_AS IA32_OBJCOPY IA32_CPP - - -LDFLAGS := -m elf_x86_64 -#LDFLAGS_vmlinux := -e stext - -CHECKFLAGS += -D__x86_64__ -m64 - -cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8) -cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona) -CFLAGS += $(cflags-y) - -CFLAGS += -mno-red-zone -CFLAGS += -mcmodel=kernel -CFLAGS += -pipe -# this makes reading assembly source easier, but produces worse code -# actually it makes the kernel smaller too. -CFLAGS += -fno-reorder-blocks -CFLAGS += -Wno-sign-compare -ifneq ($(CONFIG_DEBUG_INFO),y) -CFLAGS += -fno-asynchronous-unwind-tables -# -fweb shrinks the kernel a bit, but the difference is very small -# it also messes up debugging, so don't use it for now. -#CFLAGS += $(call cc-option,-fweb) -endif -# -funit-at-a-time shrinks the kernel .text considerably -# unfortunately it makes reading oopses harder. -CFLAGS += $(call cc-option,-funit-at-a-time,) - -head-y := arch/xen/x86_64/kernel/head.o arch/xen/x86_64/kernel/head64.o arch/xen/x86_64/kernel/init_task.o - -libs-y += arch/x86_64/lib/ -core-y += arch/xen/x86_64/kernel/ arch/xen/x86_64/mm/ -core-$(CONFIG_IA32_EMULATION) += arch/xen/x86_64/ia32/ -drivers-$(CONFIG_PCI) += arch/xen/x86_64/pci/ -drivers-$(CONFIG_OPROFILE) += arch/x86_64/oprofile/ - -# for clean -obj- += kernel/ mm/ pci/ - -xenflags-y += -Iinclude/asm-xen/asm-x86_64/mach-xen - -CFLAGS += $(xenflags-y) -AFLAGS += $(xenflags-y) - -prepare: include/asm-$(XENARCH)/asm_offsets.h -CLEAN_FILES += include/asm-$(XENARCH)/asm_offsets.h - -arch/$(XENARCH)/kernel/asm-offsets.s: include/asm include/.asm-ignore \ - include/linux/version.h include/config/MARKER - -include/asm-$(XENARCH)/offset.h: arch/$(XENARCH)/kernel/asm-offsets.s - $(call filechk,gen-asm-offsets) - -include/asm-$(XENARCH)/asm_offsets.h: include/asm-$(XENARCH)/offset.h - ln -fsn offset.h include/asm-$(XENARCH)/asm_offsets.h - ln -fsn offset.h include/asm-$(XENARCH)/asm_offset.h diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/Makefile deleted file mode 100644 index ebb06316d5..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/ia32/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# Makefile for the ia32 kernel emulation subsystem. -# -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/kernel - -obj-$(CONFIG_IA32_EMULATION) := ia32entry.o syscall32.o - -c-obj-$(CONFIG_IA32_EMULATION) := sys_ia32.o ia32_ioctl.o \ - ia32_signal.o tls32.o \ - ia32_binfmt.o fpu32.o ptrace32.o - -s-obj-y := - -sysv-$(CONFIG_SYSVIPC) := ipc32.o -c-obj-$(CONFIG_IA32_EMULATION) += $(sysv-y) - -c-obj-$(CONFIG_IA32_AOUT) += ia32_aout.o - -$(obj)/syscall32.o: $(src)/syscall32.c \ - $(foreach F,int80 sysenter syscall,$(obj)/vsyscall-$F.so) - -# syscall32.c currently contains inline asm which has .incbin directives. -# This defeats ccache's signature checks, and also breaks distcc. -# Make sure neither ccache nor distcc compiles this file. -# -$(obj)/syscall32.o: override CC := env CCACHE_DISABLE=1 DISTCC_HOSTS=localhost $(CC) - -# Teach kbuild about targets -targets := $(foreach F,int80 sysenter syscall,vsyscall-$F.o vsyscall-$F.so) - -# The DSO images are built using a special linker script -quiet_cmd_syscall = SYSCALL $@ - cmd_syscall = $(CC) -m32 -nostdlib -shared -s \ - -Wl,-soname=linux-gate.so.1 -o $@ \ - -Wl,-T,$(filter-out FORCE,$^) - - -$(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so $(obj)/vsyscall-syscall.so: \ -$(obj)/vsyscall-%.so: $(obj)/vsyscall.lds $(obj)/vsyscall-%.o FORCE - $(call if_changed,syscall) - -AFLAGS_vsyscall-int80.o = -m32 -I$(obj) -AFLAGS_vsyscall-sysenter.o = -m32 -I$(obj) -AFLAGS_vsyscall-syscall.o = -m32 -I$(obj) -CFLAGS_ia32_ioctl.o += -Ifs/ - -s-link := vsyscall-syscall.o vsyscall-sysenter.o vsyscall-sigreturn.o - -$(obj)/vsyscall.lds: - @ln -fsn $(srctree)/arch/x86_64/ia32/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): - @ln -fsn $(srctree)/arch/x86_64/ia32/$(notdir $@) $@ - -$(obj)/vsyscall-int80.o $(obj)/vsyscall-sysenter.o $(obj)/vsyscall-syscall.o: \ - $(obj)/vsyscall-sigreturn.S $(obj)/../../i386/kernel/vsyscall-note.S - -$(obj)/../../i386/kernel/vsyscall-note.S: - @ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@ - -obj-y += $(c-obj-y) $(s-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/Makefile deleted file mode 100644 index f45c5751c4..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/Makefile +++ /dev/null @@ -1,71 +0,0 @@ -# -# Makefile for the linux kernel. -# -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/kernel - -extra-y := head.o head64.o init_task.o - -obj-y := process.o signal.o entry.o traps.o \ - ioport.o ldt.o setup.o \ - x8664_ksyms.o vsyscall.o \ - setup64.o e820.o irq.o early_printk.o -c-obj-y := semaphore.o i387.o sys_x86_64.o \ - ptrace.o quirks.o syscall.o bootflag.o - -i386-obj-y := time.o -#obj-y += ../../i386/kernel/timers/ - -s-obj-y := - -#obj-$(CONFIG_X86_MCE) += mce.o -#obj-$(CONFIG_MTRR) += ../../i386/kernel/cpu/mtrr/ -obj-$(CONFIG_ACPI_BOOT) += acpi/ -c-obj-$(CONFIG_X86_MSR) += msr.o -obj-$(CONFIG_MICROCODE) += microcode.o -obj-$(CONFIG_X86_CPUID) += cpuid.o -obj-$(CONFIG_SMP) += smp.o -obj-$(CONFIG_X86_LOCAL_APIC) += apic.o -c-obj-$(CONFIG_X86_LOCAL_APIC) += nmi.o -obj-$(CONFIG_X86_IO_APIC) += io_apic.o mpparse.o -obj-$(CONFIG_X86_XEN_GENAPIC) += genapic.o genapic_xen.o -c-obj-$(CONFIG_X86_IO_APIC) += genapic_cluster.o genapic_flat.o -#obj-$(CONFIG_PM) += suspend.o -#obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o -#obj-$(CONFIG_CPU_FREQ) += cpufreq/ -#obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -#obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o -obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o -i386-obj-$(CONFIG_DUMMY_IOMMU) += pci-dma.o -i386-obj-$(CONFIG_SWIOTLB) += swiotlb.o -obj-$(CONFIG_KPROBES) += kprobes.o -#obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o - -c-obj-$(CONFIG_MODULES) += module.o - -obj-y += topology.o -c-obj-y += intel_cacheinfo.o - -bootflag-y += ../../../i386/kernel/bootflag.o -cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../../i386/kernel/cpuid.o -topology-y += ../../../i386/mach-default/topology.o -#swiotlb-$(CONFIG_SWIOTLB) += ../../../ia64/lib/swiotlb.o -microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o -intel_cacheinfo-y += ../../../i386/kernel/cpu/intel_cacheinfo.o -quirks-y += ../../i386/kernel/quirks.o - -c-link := init_task.o -s-link := vsyscall.o - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-obj-m) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): - @ln -fsn $(srctree)/arch/x86_64/kernel/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(i386-obj-y)): - @ln -fsn $(srctree)/arch/xen/i386/kernel/$(notdir $@) $@ - -obj-y += $(c-obj-y) $(s-obj-y) $(i386-obj-y) -obj-m += $(c-obj-m) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-m) $(c-obj-) $(c-link) $(i386-obj-y)) -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/acpi/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/acpi/Makefile deleted file mode 100644 index ef8ec506c8..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/acpi/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -i386-obj-$(CONFIG_ACPI_BOOT) := boot.o -c-obj-$(CONFIG_X86_IO_APIC) := earlyquirk.o -c-obj-$(CONFIG_ACPI_SLEEP) += sleep.o -s-obj-$(CONFIG_ACPI_SLEEP) += wakeup.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/i386/kernel/acpi/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)): - @ln -fsn $(srctree)/arch/x86_64/kernel/acpi/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(i386-obj-y)): - @ln -fsn $(srctree)/arch/xen/i386/kernel/acpi/$(notdir $@) $@ - -obj-y += $(c-obj-y) $(s-obj-y) $(i386-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) -clean-files += $(patsubst %.o,%.S,$(s-obj-y) $(s-obj-) $(s-link)) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/Makefile deleted file mode 100644 index 682e63541c..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -# Makefile for the linux x86_64-specific parts of the memory manager. -# - -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CFLAGS += -Iarch/$(XENARCH)/mm - -obj-y := init.o fault.o pageattr.o -c-obj-y := extable.o - -i386-obj-y := hypervisor.o ioremap.o - -#obj-y := init.o fault.o ioremap.o extable.o pageattr.o -#c-obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o -c-obj-$(CONFIG_DISCONTIGMEM) += numa.o -c-obj-$(CONFIG_K8_NUMA) += k8topology.o - -hugetlbpage-y = ../../../i386/mm/hugetlbpage.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/x86_64/mm/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(i386-obj-y)): - ln -fsn $(srctree)/arch/xen/i386/mm/$(notdir $@) $@ - -obj-y += $(c-obj-y) $(i386-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link) $(i386-obj-y)) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile b/linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile deleted file mode 100644 index d88992e155..0000000000 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/pci/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# Makefile for X86_64 specific PCI routines -# -# Reuse the i386 PCI subsystem -# -XENARCH := $(subst ",,$(CONFIG_XENARCH)) -CFLAGS += -Iarch/$(XENARCH)/pci - -CFLAGS += -Iarch/i386/pci - -c-xen-obj-y := i386.o -c-i386-obj-y += fixup.o -c-i386-obj-$(CONFIG_ACPI_PCI) += acpi.o -c-i386-obj-y += legacy.o common.o -c-i386-obj-$(CONFIG_PCI_DIRECT)+= direct.o -c-xen-obj-y += irq.o -# mmconfig has a 64bit special -c-obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o - -c-obj-$(CONFIG_NUMA) += k8-bus.o - -c-link := - -$(patsubst %.o,$(obj)/%.c,$(c-xen-obj-y)): - @ln -fsn $(srctree)/arch/xen/i386/pci/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)): - @ln -fsn $(srctree)/arch/x86_64/pci/$(notdir $@) $@ - -$(patsubst %.o,$(obj)/%.c,$(c-i386-obj-y)): - @ln -fsn $(srctree)/arch/i386/pci/$(notdir $@) $@ - -# Make sure irq.o gets linked in before common.o -obj-y += $(patsubst common.o,$(c-xen-obj-y) common.o,$(c-i386-obj-y)) -obj-y += $(c-obj-y) - -clean-files += $(patsubst %.o,%.c,$(c-obj-y) $(c-obj-) $(c-link)) -clean-files += $(patsubst %.o,%.c,$(c-i386-obj-y) $(c-i386-obj-)) -clean-files += $(patsubst %.o,%.c,$(c-xen-obj-y) $(c-xen-obj-)) diff --git a/linux-2.6-xen-sparse/drivers/Kconfig b/linux-2.6-xen-sparse/drivers/Kconfig new file mode 100644 index 0000000000..cdc6fde4c6 --- /dev/null +++ b/linux-2.6-xen-sparse/drivers/Kconfig @@ -0,0 +1,71 @@ +# drivers/Kconfig + +menu "Device Drivers" + +source "drivers/base/Kconfig" + +if !XEN || XEN_PHYSDEV_ACCESS +source "drivers/mtd/Kconfig" + +source "drivers/parport/Kconfig" + +source "drivers/pnp/Kconfig" +endif + +source "drivers/block/Kconfig" + +if !XEN || XEN_PHYSDEV_ACCESS +source "drivers/ide/Kconfig" +endif + +source "drivers/scsi/Kconfig" + +if !XEN || XEN_PHYSDEV_ACCESS +source "drivers/cdrom/Kconfig" +endif + +source "drivers/md/Kconfig" + +if !XEN || XEN_PHYSDEV_ACCESS +source "drivers/message/fusion/Kconfig" + +source "drivers/ieee1394/Kconfig" + +source "drivers/message/i2o/Kconfig" + +source "drivers/macintosh/Kconfig" +endif + +source "net/Kconfig" + +if !XEN || XEN_PHYSDEV_ACCESS +source "drivers/isdn/Kconfig" + +source "drivers/telephony/Kconfig" + +# input before char - char/joystick depends on it. As does USB. + +source "drivers/input/Kconfig" + +source "drivers/char/Kconfig" + +source "drivers/i2c/Kconfig" + +source "drivers/w1/Kconfig" + +source "drivers/misc/Kconfig" + +source "drivers/media/Kconfig" + +source "drivers/video/Kconfig" + +source "sound/Kconfig" + +source "drivers/usb/Kconfig" + +source "drivers/mmc/Kconfig" + +source "drivers/infiniband/Kconfig" +endif + +endmenu diff --git a/linux-2.6-xen-sparse/drivers/Makefile b/linux-2.6-xen-sparse/drivers/Makefile index 786cbad645..195643169f 100644 --- a/linux-2.6-xen-sparse/drivers/Makefile +++ b/linux-2.6-xen-sparse/drivers/Makefile @@ -30,7 +30,7 @@ obj-y += base/ block/ misc/ net/ media/ obj-$(CONFIG_NUBUS) += nubus/ obj-$(CONFIG_ATM) += atm/ obj-$(CONFIG_PPC_PMAC) += macintosh/ -obj-$(CONFIG_ARCH_XEN) += xen/ +obj-$(CONFIG_XEN) += xen/ obj-$(CONFIG_IDE) += ide/ obj-$(CONFIG_FC4) += fc4/ obj-$(CONFIG_SCSI) += scsi/ diff --git a/linux-2.6-xen-sparse/drivers/acpi/tables.c b/linux-2.6-xen-sparse/drivers/acpi/tables.c index 4abd09de68..b133808062 100644 --- a/linux-2.6-xen-sparse/drivers/acpi/tables.c +++ b/linux-2.6-xen-sparse/drivers/acpi/tables.c @@ -565,7 +565,7 @@ acpi_table_get_sdt ( * * result: sdt_entry[] is initialized */ -#if defined(CONFIG_XEN_X86) || defined(CONFIG_XEN_X86_64) +#if defined(CONFIG_X86_XEN) || defined(CONFIG_X86_64_XEN) #define acpi_rsdp_phys_to_va(rsdp_phys) isa_bus_to_virt(rsdp_phys) #else #define acpi_rsdp_phys_to_va(rsdp_phys) __va(rsdp_phys) diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig b/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig index 28f6e82b66..ccd29dc250 100644 --- a/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig +++ b/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig @@ -6,7 +6,7 @@ menu "TPM devices" config TCG_TPM tristate "TPM Hardware Support" - depends on EXPERIMENTAL && PCI + depends on EXPERIMENTAL && (PCI || XEN) ---help--- If you have a TPM security chip in your system, which implements the Trusted Computing Group's specification, @@ -20,7 +20,7 @@ config TCG_TPM config TCG_NSC tristate "National Semiconductor TPM Interface" - depends on TCG_TPM + depends on TCG_TPM && !XEN_UNPRIVILEGED_GUEST ---help--- If you have a TPM security chip from National Semicondutor say Yes and it will be accessible from within Linux. To @@ -29,7 +29,7 @@ config TCG_NSC config TCG_ATMEL tristate "Atmel TPM Interface" - depends on TCG_TPM + depends on TCG_TPM && !XEN_UNPRIVILEGED_GUEST ---help--- If you have a TPM security chip from Atmel say Yes and it will be accessible from within Linux. To compile this driver @@ -37,7 +37,7 @@ config TCG_ATMEL config TCG_XEN tristate "XEN TPM Interface" - depends on TCG_TPM && ARCH_XEN && XEN_TPMDEV_FRONTEND + depends on TCG_TPM && XEN && XEN_TPMDEV_FRONTEND ---help--- If you want to make TPM support available to a Xen user domain, say Yes and it will diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig.domU b/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig.domU deleted file mode 100644 index 18992dedc3..0000000000 --- a/linux-2.6-xen-sparse/drivers/char/tpm/Kconfig.domU +++ /dev/null @@ -1,30 +0,0 @@ -# -# TPM device configuration -# - -menu "TPM devices" - -config TCG_TPM - tristate "TPM Support for XEN" - depends on ARCH_XEN && !XEN_PHYSDEV_ACCESS - ---help--- - If you want to make TPM security available in your system, - say Yes and it will be accessible from within a user domain. For - more information see <http://www.trustedcomputinggroup.org>. - An implementation of the Trusted Software Stack (TSS), the - userspace enablement piece of the specification, can be - obtained at: <http://sourceforge.net/projects/trousers>. To - compile this driver as a module, choose M here; the module - will be called tpm. If unsure, say N. - -config TCG_XEN - tristate "XEN TPM Interface" - depends on TCG_TPM && ARCH_XEN && XEN_TPMDEV_FRONTEND - ---help--- - If you want to make TPM support available to a Xen - user domain, say Yes and it will - be accessible from within Linux. To compile this driver - as a module, choose M here; the module will be called - tpm_xen. - -endmenu diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/Makefile b/linux-2.6-xen-sparse/drivers/char/tpm/Makefile index c28feccc91..b35b7df8ac 100644 --- a/linux-2.6-xen-sparse/drivers/char/tpm/Makefile +++ b/linux-2.6-xen-sparse/drivers/char/tpm/Makefile @@ -1,13 +1,7 @@ # # Makefile for the kernel tpm device drivers. # -ifeq ($(CONFIG_XEN_PHYSDEV_ACCESS),y) obj-$(CONFIG_TCG_TPM) += tpm.o obj-$(CONFIG_TCG_NSC) += tpm_nsc.o obj-$(CONFIG_TCG_ATMEL) += tpm_atmel.o -obj-$(CONFIG_TCG_TIS) += tpm_tis.o obj-$(CONFIG_TCG_XEN) += tpm_xen.o -else -obj-$(CONFIG_TCG_TPM) += tpm.o -obj-$(CONFIG_TCG_XEN) += tpm_xen.o -endif diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c index acb0cdcc71..ec18465905 100644 --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c @@ -22,7 +22,7 @@ #include <asm/uaccess.h> #include <linux/list.h> -#include <asm-xen/tpmfe.h> +#include <xen/tpmfe.h> #include <linux/device.h> #include <linux/interrupt.h> #include "tpm.h" diff --git a/linux-2.6-xen-sparse/drivers/char/tty_io.c b/linux-2.6-xen-sparse/drivers/char/tty_io.c index 69e42bdcb4..9a4894bb93 100644 --- a/linux-2.6-xen-sparse/drivers/char/tty_io.c +++ b/linux-2.6-xen-sparse/drivers/char/tty_io.c @@ -2968,19 +2968,17 @@ static int __init tty_init(void) #endif #ifdef CONFIG_VT - if (console_use_vt) { - cdev_init(&vc0_cdev, &console_fops); - if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) || - register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, - "/dev/vc/0") < 0) - panic("Couldn't register /dev/tty0 driver\n"); - devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, - "vc/0"); - class_simple_device_add(tty_class, MKDEV(TTY_MAJOR, 0), NULL, - "tty0"); - - vty_init(); - } + if (!console_use_vt) + goto out_vt; + cdev_init(&vc0_cdev, &console_fops); + if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) || + register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0) + panic("Couldn't register /dev/tty0 driver\n"); + devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vc/0"); + class_simple_device_add(tty_class, MKDEV(TTY_MAJOR, 0), NULL, "tty0"); + + vty_init(); + out_vt: #endif return 0; } diff --git a/linux-2.6-xen-sparse/drivers/firmware/Kconfig b/linux-2.6-xen-sparse/drivers/firmware/Kconfig new file mode 100644 index 0000000000..15d2edba32 --- /dev/null +++ b/linux-2.6-xen-sparse/drivers/firmware/Kconfig @@ -0,0 +1,61 @@ +# +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/kconfig-language.txt. +# + +menu "Firmware Drivers" + +config EDD + tristate "BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)" + depends on EXPERIMENTAL + depends on !IA64 && !XEN + help + Say Y or M here if you want to enable BIOS Enhanced Disk Drive + Services real mode BIOS calls to determine which disk + BIOS tries boot from. This information is then exported via sysfs. + + This option is experimental and is known to fail to boot on some + obscure configurations. Most disk controller BIOS vendors do + not yet implement this feature. + +config EFI_VARS + tristate "EFI Variable Support via sysfs" + depends on EFI + default n + help + If you say Y here, you are able to get EFI (Extensible Firmware + Interface) variable information via sysfs. You may read, + write, create, and destroy EFI variables through this interface. + + Note that using this driver in concert with efibootmgr requires + at least test release version 0.5.0-test3 or later, which is + available from Matt Domsch's website located at: + <http://linux.dell.com/efibootmgr/testing/efibootmgr-0.5.0-test3.tar.gz> + + Subsequent efibootmgr releases may be found at: + <http://linux.dell.com/efibootmgr> + +config EFI_PCDP + bool "Console device selection via EFI PCDP or HCDP table" + depends on ACPI && EFI && IA64 + default y if IA64 + help + If your firmware supplies the PCDP table, and you want to + automatically use the primary console device it describes + as the Linux console, say Y here. + + If your firmware supplies the HCDP table, and you want to + use the first serial port it describes as the Linux console, + say Y here. If your EFI ConOut path contains only a UART + device, it will become the console automatically. Otherwise, + you must specify the "console=hcdp" kernel boot argument. + + Neither the PCDP nor the HCDP affects naming of serial devices, + so a serial console may be /dev/ttyS0, /dev/ttyS1, etc, depending + on how the driver discovers devices. + + You must also enable the appropriate drivers (serial, VGA, etc.) + + See <http://www.dig64.org/specifications/DIG64_HCDPv20_042804.pdf> + +endmenu diff --git a/linux-2.6-xen-sparse/drivers/pci/Kconfig b/linux-2.6-xen-sparse/drivers/pci/Kconfig new file mode 100644 index 0000000000..9c70e9dcdd --- /dev/null +++ b/linux-2.6-xen-sparse/drivers/pci/Kconfig @@ -0,0 +1,60 @@ +# +# PCI configuration +# +config PCI_MSI + bool "Message Signaled Interrupts (MSI and MSI-X)" + depends on PCI + depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64 + depends on !XEN + help + This allows device drivers to enable MSI (Message Signaled + Interrupts). Message Signaled Interrupts enable a device to + generate an interrupt using an inbound Memory Write on its + PCI bus instead of asserting a device IRQ pin. + + If you don't know what to do here, say N. + +config PCI_LEGACY_PROC + bool "Legacy /proc/pci interface" + depends on PCI + ---help--- + This feature enables a procfs file -- /proc/pci -- that provides a + summary of PCI devices in the system. + + This feature has been deprecated as of v2.5.53, in favor of using the + tool lspci(8). This feature may be removed at a future date. + + lspci can provide the same data, as well as much more. lspci is a part of + the pci-utils package, which should be installed by your distribution. + See <file:Documentation/Changes> for information on where to get the latest + version. + + When in doubt, say N. + +config PCI_NAMES + bool "PCI device name database" + depends on PCI + ---help--- + By default, the kernel contains a database of all known PCI device + names to make the information in /proc/pci, /proc/ioports and + similar files comprehensible to the user. + + This database increases size of the kernel image by about 80KB. This + memory is freed after the system boots up if CONFIG_HOTPLUG is not set. + + Anyway, if you are building an installation floppy or kernel for an + embedded system where kernel image size really matters, you can disable + this feature and you'll get device ID numbers instead of names. + + When in doubt, say Y. + +config PCI_DEBUG + bool "PCI Debugging" + depends on PCI && DEBUG_KERNEL + help + Say Y here if you want the PCI core to produce a bunch of debug + messages to the system log. Select this if you are having a + problem with PCI support and want to see more of what is going on. + + When in doubt, say N. + diff --git a/linux-2.6-xen-sparse/drivers/serial/Kconfig b/linux-2.6-xen-sparse/drivers/serial/Kconfig new file mode 100644 index 0000000000..df000a3058 --- /dev/null +++ b/linux-2.6-xen-sparse/drivers/serial/Kconfig @@ -0,0 +1,846 @@ +# +# Serial device configuration +# +# $Id: Kconfig,v 1.11 2004/03/11 18:08:04 lethal Exp $ +# + +menu "Serial drivers" + +# +# The new 8250/16550 serial drivers +config SERIAL_8250 + tristate "8250/16550 and compatible serial support" + depends on (BROKEN || !(SPARC64 || SPARC32 || XEN_DISABLE_SERIAL)) + select SERIAL_CORE + ---help--- + This selects whether you want to include the driver for the standard + serial ports. The standard answer is Y. People who might say N + here are those that are setting up dedicated Ethernet WWW/FTP + servers, or users that have one of the various bus mice instead of a + serial mouse and don't intend to use their machine's standard serial + port for anything. (Note that the Cyclades and Stallion multi + serial port drivers do not need this driver built in for them to + work.) + + To compile this driver as a module, choose M here: the + module will be called serial. + [WARNING: Do not compile this driver as a module if you are using + non-standard serial ports, since the configuration information will + be lost when the driver is unloaded. This limitation may be lifted + in the future.] + + BTW1: If you have a mouseman serial mouse which is not recognized by + the X window system, try running gpm first. + + BTW2: If you intend to use a software modem (also called Winmodem) + under Linux, forget it. These modems are crippled and require + proprietary drivers which are only available under Windows. + + Most people will say Y or M here, so that they can use serial mice, + modems and similar devices connecting to the standard serial ports. + +config SERIAL_8250_CONSOLE + bool "Console on 8250/16550 and compatible serial port" + depends on SERIAL_8250=y + select SERIAL_CORE_CONSOLE + ---help--- + If you say Y here, it will be possible to use a serial port as the + system console (the system console is the device which receives all + kernel messages and warnings and which allows logins in single user + mode). This could be useful if some terminal or printer is connected + to that serial port. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyS1". (Try "man bootparam" or see the documentation of + your boot loader (grub or lilo or loadlin) about how to pass options + to the kernel at boot time.) + + If you don't have a VGA card installed and you say Y here, the + kernel will automatically use the first serial line, /dev/ttyS0, as + system console. + + If unsure, say N. + +config SERIAL_8250_CS + tristate "8250/16550 PCMCIA device support" + depends on PCMCIA && SERIAL_8250 + ---help--- + Say Y here to enable support for 16-bit PCMCIA serial devices, + including serial port cards, modems, and the modem functions of + multi-function Ethernet/modem cards. (PCMCIA- or PC-cards are + credit-card size devices often used with laptops.) + + To compile this driver as a module, choose M here: the + module will be called serial_cs. + + If unsure, say N. + +config SERIAL_8250_ACPI + bool "8250/16550 device discovery via ACPI namespace" + default y if IA64 + depends on ACPI_BUS && SERIAL_8250 + ---help--- + If you wish to enable serial port discovery via the ACPI + namespace, say Y here. If unsure, say N. + +config SERIAL_8250_NR_UARTS + int "Maximum number of non-legacy 8250/16550 serial ports" + depends on SERIAL_8250 + default "4" + ---help--- + Set this to the number of non-legacy serial ports you want + the driver to support. This includes any ports discovered + via ACPI or PCI enumeration and any ports that may be added + at run-time via hot-plug. + +config SERIAL_8250_EXTENDED + bool "Extended 8250/16550 serial driver options" + depends on SERIAL_8250 + help + If you wish to use any non-standard features of the standard "dumb" + driver, say Y here. This includes HUB6 support, shared serial + interrupts, special multiport support, support for more than the + four COM 1/2/3/4 boards, etc. + + Note that the answer to this question won't directly affect the + kernel: saying N will just cause the configurator to skip all + the questions about serial driver options. If unsure, say N. + +config SERIAL_8250_MANY_PORTS + bool "Support more than 4 legacy serial ports" + depends on SERIAL_8250_EXTENDED && !IA64 + help + Say Y here if you have dumb serial boards other than the four + standard COM 1/2/3/4 ports. This may happen if you have an AST + FourPort, Accent Async, Boca (read the Boca mini-HOWTO, available + from <http://www.tldp.org/docs.html#howto>), or other custom + serial port hardware which acts similar to standard serial port + hardware. If you only use the standard COM 1/2/3/4 ports, you can + say N here to save some memory. You can also say Y if you have an + "intelligent" multiport card such as Cyclades, Digiboards, etc. + +config SERIAL_8250_SHARE_IRQ + bool "Support for sharing serial interrupts" + depends on SERIAL_8250_EXTENDED + help + Some serial boards have hardware support which allows multiple dumb + serial ports on the same board to share a single IRQ. To enable + support for this in the serial driver, say Y here. + +config SERIAL_8250_DETECT_IRQ + bool "Autodetect IRQ on standard ports (unsafe)" + depends on SERIAL_8250_EXTENDED + help + Say Y here if you want the kernel to try to guess which IRQ + to use for your serial port. + + This is considered unsafe; it is far better to configure the IRQ in + a boot script using the setserial command. + + If unsure, say N. + +config SERIAL_8250_MULTIPORT + bool "Support special multiport boards" + depends on SERIAL_8250_EXTENDED + help + Some multiport serial ports have special ports which are used to + signal when there are any serial ports on the board which need + servicing. Say Y here to enable the serial driver to take advantage + of those special I/O ports. + +config SERIAL_8250_RSA + bool "Support RSA serial ports" + depends on SERIAL_8250_EXTENDED + help + ::: To be written ::: + +comment "Non-8250 serial port support" + +config SERIAL_8250_ACORN + tristate "Acorn expansion card serial port support" + depends on ARM && ARCH_ACORN && SERIAL_8250 + help + If you have an Atomwide Serial card or Serial Port card for an Acorn + system, say Y to this option. The driver can handle 1, 2, or 3 port + cards. If unsure, say N. + +config SERIAL_AMBA_PL010 + tristate "ARM AMBA PL010 serial port support" + depends on ARM_AMBA + select SERIAL_CORE + help + This selects the ARM(R) AMBA(R) PrimeCell PL010 UART. If you have + an Integrator/AP or Integrator/PP2 platform, say Y or M here. + + If unsure, say N. + +config SERIAL_AMBA_PL010_CONSOLE + bool "Support for console on AMBA serial port" + depends on SERIAL_AMBA_PL010=y + select SERIAL_CORE_CONSOLE + ---help--- + Say Y here if you wish to use an AMBA PrimeCell UART as the system + console (the system console is the device which receives all kernel + messages and warnings and which allows logins in single user mode). + + Even if you say Y here, the currently visible framebuffer console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyAM0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_AMBA_PL011 + tristate "ARM AMBA PL011 serial port support" + depends on ARM_AMBA + select SERIAL_CORE + help + This selects the ARM(R) AMBA(R) PrimeCell PL011 UART. If you have + an Integrator/PP2, Integrator/CP or Versatile platform, say Y or M + here. + + If unsure, say N. + +config SERIAL_AMBA_PL011_CONSOLE + bool "Support for console on AMBA serial port" + depends on SERIAL_AMBA_PL011=y + select SERIAL_CORE_CONSOLE + ---help--- + Say Y here if you wish to use an AMBA PrimeCell UART as the system + console (the system console is the device which receives all kernel + messages and warnings and which allows logins in single user mode). + + Even if you say Y here, the currently visible framebuffer console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyAM0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_CLPS711X + tristate "CLPS711X serial port support" + depends on ARM && ARCH_CLPS711X + select SERIAL_CORE + help + ::: To be written ::: + +config SERIAL_CLPS711X_CONSOLE + bool "Support for console on CLPS711X serial port" + depends on SERIAL_CLPS711X=y + select SERIAL_CORE_CONSOLE + help + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyCL1". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_S3C2410 + tristate "Samsung S3C2410 Serial port support" + depends on ARM && ARCH_S3C2410 + select SERIAL_CORE + help + Support for the on-chip UARTs on the Samsung S3C2410X CPU, + providing /dev/ttySAC0, 1 and 2 (note, some machines may not + provide all of these ports, depending on how the serial port + pins are configured. + +config SERIAL_S3C2410_CONSOLE + bool "Support for console on S3C2410 serial port" + depends on SERIAL_S3C2410=y + select SERIAL_CORE_CONSOLE + help + Allow selection of the S3C2410 on-board serial ports for use as + an virtual console. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttySACx". (Try "man bootparam" or see the documentation of + your boot loader about how to pass options to the kernel at + boot time.) + +config SERIAL_BAST_SIO + bool "Support for BAST SuperIO serial ports" + depends on ARCH_BAST && SERIAL_8250=y + help + Support for registerin the SuperIO chip on BAST board with + the 8250/16550 uart code. + +config SERIAL_DZ + bool "DECstation DZ serial driver" + depends on MACH_DECSTATION && MIPS32 + select SERIAL_CORE + help + DZ11-family serial controllers for VAXstations, including the + DC7085, M7814, and M7819. + +config SERIAL_DZ_CONSOLE + bool "Support console on DECstation DZ serial driver" + depends on SERIAL_DZ=y + select SERIAL_CORE_CONSOLE + help + If you say Y here, it will be possible to use a serial port as the + system console (the system console is the device which receives all + kernel messages and warnings and which allows logins in single user + mode). Note that the firmware uses ttyS0 as the serial console on + the Maxine and ttyS2 on the others. + + If unsure, say Y. + +config SERIAL_21285 + tristate "DC21285 serial port support" + depends on ARM && FOOTBRIDGE + select SERIAL_CORE + help + If you have a machine based on a 21285 (Footbridge) StrongARM(R)/ + PCI bridge you can enable its onboard serial port by enabling this + option. + +config SERIAL_21285_CONSOLE + bool "Console on DC21285 serial port" + depends on SERIAL_21285=y + select SERIAL_CORE_CONSOLE + help + If you have enabled the serial port on the 21285 footbridge you can + make it the console by answering Y to this option. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyFB". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_UART00 + bool "Excalibur serial port (uart00) support" + depends on ARM && ARCH_CAMELOT + select SERIAL_CORE + help + Say Y here if you want to use the hard logic uart on Excalibur. This + driver also supports soft logic implementations of this uart core. + +config SERIAL_UART00_CONSOLE + bool "Support for console on Excalibur serial port" + depends on SERIAL_UART00 + select SERIAL_CORE_CONSOLE + help + Say Y here if you want to support a serial console on an Excalibur + hard logic uart or uart00 IP core. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyS1". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_MPSC + bool "Marvell MPSC serial port support" + depends on PPC32 && MV64X60 + select SERIAL_CORE + help + Say Y here if you want to use the Marvell MPSC serial controller. + +config SERIAL_MPSC_CONSOLE + bool "Support for console on Marvell MPSC serial port" + depends on SERIAL_MPSC + select SERIAL_CORE_CONSOLE + help + Say Y here if you want to support a serial console on a Marvell MPSC. + +config SERIAL_PXA + bool "PXA serial port support" + depends on ARM && ARCH_PXA + select SERIAL_CORE + help + If you have a machine based on an Intel XScale PXA2xx CPU you + can enable its onboard serial ports by enabling this option. + +config SERIAL_PXA_CONSOLE + bool "Console on PXA serial port" + depends on SERIAL_PXA + select SERIAL_CORE_CONSOLE + help + If you have enabled the serial port on the Intel XScale PXA + CPU you can make it the console by answering Y to this option. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttySA0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_SA1100 + bool "SA1100 serial port support" + depends on ARM && ARCH_SA1100 + select SERIAL_CORE + help + If you have a machine based on a SA1100/SA1110 StrongARM(R) CPU you + can enable its onboard serial port by enabling this option. + Please read <file:Documentation/arm/SA1100/serial_UART> for further + info. + +config SERIAL_SA1100_CONSOLE + bool "Console on SA1100 serial port" + depends on SERIAL_SA1100 + select SERIAL_CORE_CONSOLE + help + If you have enabled the serial port on the SA1100/SA1110 StrongARM + CPU you can make it the console by answering Y to this option. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttySA0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_IMX + bool "IMX serial port support" + depends on ARM && ARCH_IMX + select SERIAL_CORE + help + If you have a machine based on a Motorola IMX CPU you + can enable its onboard serial port by enabling this option. + +config SERIAL_IMX_CONSOLE + bool "Console on IMX serial port" + depends on SERIAL_IMX + select SERIAL_CORE_CONSOLE + help + If you have enabled the serial port on the Motorola IMX + CPU you can make it the console by answering Y to this option. + + Even if you say Y here, the currently visible virtual console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttySA0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_SUNCORE + bool + depends on SPARC32 || SPARC64 + select SERIAL_CORE + select SERIAL_CORE_CONSOLE + default y + +config SERIAL_SUNZILOG + tristate "Sun Zilog8530 serial support" + depends on SPARC32 || SPARC64 + help + This driver supports the Zilog8530 serial ports found on many Sparc + systems. Say Y or M if you want to be able to these serial ports. + +config SERIAL_SUNZILOG_CONSOLE + bool "Console on Sun Zilog8530 serial port" + depends on SERIAL_SUNZILOG=y + help + If you would like to be able to use the Zilog8530 serial port + on your Sparc system as the console, you can do so by answering + Y to this option. + +config SERIAL_SUNSU + tristate "Sun SU serial support" + depends on (SPARC32 || SPARC64) && PCI + help + This driver supports the 8250 serial ports that run the keyboard and + mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able + to these serial ports. + +config SERIAL_SUNSU_CONSOLE + bool "Console on Sun SU serial port" + depends on SERIAL_SUNSU=y + help + If you would like to be able to use the SU serial port + on your Sparc system as the console, you can do so by answering + Y to this option. + +config SERIAL_MUX + tristate "Serial MUX support" + depends on PARISC + select SERIAL_CORE + default y + ---help--- + Saying Y here will enable the hardware MUX serial driver for + the Nova and K class systems. The hardware MUX is not 8250/16550 + compatible therefore the /dev/ttyB0 device is shared between the + Serial MUX and the PDC software console. The following steps + need to be completed to use the Serial MUX: + + 1. create the device entry (mknod /dev/ttyB0 c 11 0) + 2. Edit the /etc/inittab to start a getty listening on /dev/ttyB0 + 3. Add device ttyB0 to /etc/securetty (if you want to log on as + root on this console.) + 4. Change the kernel command console parameter to: console=ttyB0 + +config SERIAL_MUX_CONSOLE + bool "Support for console on serial MUX" + depends on SERIAL_MUX + select SERIAL_CORE_CONSOLE + default y + +config PDC_CONSOLE + bool "PDC software console support" + depends on PARISC && !SERIAL_MUX && VT + default n + help + Saying Y here will enable the software based PDC console to be + used as the system console. This is useful for machines in + which the hardware based console has not been written yet. The + following steps must be competed to use the PDC console: + + 1. create the device entry (mknod /dev/ttyB0 c 11 0) + 2. Edit the /etc/inittab to start a getty listening on /dev/ttyB0 + 3. Add device ttyB0 to /etc/securetty (if you want to log on as + root on this console.) + 4. Change the kernel command console parameter to: console=ttyB0 + +config SERIAL_SUNSAB + tristate "Sun Siemens SAB82532 serial support" + depends on (SPARC32 || SPARC64) && PCI + help + This driver supports the Siemens SAB82532 DUSCC serial ports on newer + (PCI) UltraSPARC systems. Say Y or M if you want to be able to these + serial ports. + +config SERIAL_SUNSAB_CONSOLE + bool "Console on Sun Siemens SAB82532 serial port" + depends on SERIAL_SUNSAB=y + help + If you would like to be able to use the SAB82532 serial port + on your Sparc system as the console, you can do so by answering + Y to this option. + +config SERIAL_IP22_ZILOG + tristate "IP22 Zilog8530 serial support" + depends on SGI_IP22 + select SERIAL_CORE + help + This driver supports the Zilog8530 serial ports found on SGI IP22 + systems. Say Y or M if you want to be able to these serial ports. + +config SERIAL_IP22_ZILOG_CONSOLE + bool "Console on IP22 Zilog8530 serial port" + depends on SERIAL_IP22_ZILOG=y + select SERIAL_CORE_CONSOLE + +config V850E_UART + bool "NEC V850E on-chip UART support" + depends on V850E_MA1 || V850E_ME2 || V850E_TEG || V850E2_ANNA || V850E_AS85EP1 + select SERIAL_CORE + default y + +config V850E_UARTB + bool + depends V850E_UART && V850E_ME2 + default y + +config V850E_UART_CONSOLE + bool "Use NEC V850E on-chip UART for console" + depends on V850E_UART + select SERIAL_CORE_CONSOLE + +config SERIAL_SH_SCI + tristate "SH SCI(F) serial port support" + depends on SUPERH || H8300 + select SERIAL_CORE + +config SERIAL_SH_SCI_CONSOLE + bool "Support for console on SH SCI(F)" + depends on SERIAL_SH_SCI=y + select SERIAL_CORE_CONSOLE + +config SERIAL_AU1X00 + bool "Enable Au1x00 UART Support" + depends on MIPS && SOC_AU1X00 + select SERIAL_CORE + help + If you have an Alchemy AU1X00 processor (MIPS based) and you want + to use serial ports, say Y. Otherwise, say N. + +config SERIAL_AU1X00_CONSOLE + bool "Enable Au1x00 serial console" + depends on SERIAL_AU1X00 + select SERIAL_CORE_CONSOLE + help + If you have an Alchemy AU1X00 processor (MIPS based) and you want + to use a console on a serial port, say Y. Otherwise, say N. + +config SERIAL_CORE + tristate + +config SERIAL_CORE_CONSOLE + bool + +config SERIAL_68328 + bool "68328 serial support" + depends on M68328 || M68EZ328 || M68VZ328 + help + This driver supports the built-in serial port of the Motorola 68328 + (standard, EZ and VZ varities). + +config SERIAL_68328_RTS_CTS + bool "Support RTS/CTS on 68328 serial port" + depends on SERIAL_68328 + +config SERIAL_COLDFIRE + bool "ColdFire serial support" + depends on COLDFIRE + help + This driver supports the built-in serial ports of the Motorola ColdFire + family of CPUs. + +config SERIAL_68360_SMC + bool "68360 SMC uart support" + depends on M68360 + help + This driver supports the SMC serial ports of the Motorola 68360 CPU. + +config SERIAL_68360_SCC + bool "68360 SCC uart support" + depends on M68360 + help + This driver supports the SCC serial ports of the Motorola 68360 CPU. + +config SERIAL_68360 + bool + depends on SERIAL_68360_SMC || SERIAL_68360_SCC + default y + +config SERIAL_PMACZILOG + tristate "PowerMac z85c30 ESCC support" + depends on PPC_OF && PPC_PMAC + select SERIAL_CORE + help + This driver supports the Zilog z85C30 serial ports found on + PowerMac machines. + Say Y or M if you want to be able to these serial ports. + +config SERIAL_PMACZILOG_CONSOLE + bool "Console on PowerMac z85c30 serial port" + depends on SERIAL_PMACZILOG=y + select SERIAL_CORE_CONSOLE + help + If you would like to be able to use the z85c30 serial port + on your PowerMac as the console, you can do so by answering + Y to this option. + +config SERIAL_LH7A40X + tristate "Sharp LH7A40X embedded UART support" + depends on ARM && ARCH_LH7A40X + select SERIAL_CORE + help + This enables support for the three on-board UARTs of the + Sharp LH7A40X series CPUs. Choose Y or M. + +config SERIAL_LH7A40X_CONSOLE + bool "Support for console on Sharp LH7A40X serial port" + depends on SERIAL_LH7A40X=y + select SERIAL_CORE_CONSOLE + help + Say Y here if you wish to use one of the serial ports as the + system console--the system console is the device which + receives all kernel messages and warnings and which allows + logins in single user mode. + + Even if you say Y here, the currently visible framebuffer console + (/dev/tty0) will still be used as the default system console, but + you can alter that using a kernel command line, for example + "console=ttyAM1". + +config SERIAL_CPM + tristate "CPM SCC/SMC serial port support" + depends on CPM2 || 8xx + select SERIAL_CORE + help + This driver supports the SCC and SMC serial ports on Motorola + embedded PowerPC that contain a CPM1 (8xx) or CPM2 (8xxx) + +config SERIAL_CPM_CONSOLE + bool "Support for console on CPM SCC/SMC serial port" + depends on SERIAL_CPM=y + select SERIAL_CORE_CONSOLE + help + Say Y here if you wish to use a SCC or SMC CPM UART as the system + console (the system console is the device which receives all kernel + messages and warnings and which allows logins in single user mode). + + Even if you say Y here, the currently visible framebuffer console + (/dev/tty0) will still be used as the system console by default, but + you can alter that using a kernel command line option such as + "console=ttyCPM0". (Try "man bootparam" or see the documentation of + your boot loader (lilo or loadlin) about how to pass options to the + kernel at boot time.) + +config SERIAL_CPM_SCC1 + bool "Support for SCC1 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SCC1 as a serial port + +config SERIAL_CPM_SCC2 + bool "Support for SCC2 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SCC2 as a serial port + +config SERIAL_CPM_SCC3 + bool "Support for SCC3 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SCC3 as a serial port + +config SERIAL_CPM_SCC4 + bool "Support for SCC4 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SCC4 as a serial port + +config SERIAL_CPM_SMC1 + bool "Support for SMC1 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SMC1 as a serial port + +config SERIAL_CPM_SMC2 + bool "Support for SMC2 serial port" + depends on SERIAL_CPM=y + help + Select the is option to use SMC2 as a serial port + +config SERIAL_SGI_L1_CONSOLE + bool "SGI Altix L1 serial console support" + depends on IA64_GENERIC || IA64_SGI_SN2 + select SERIAL_CORE + select SERIAL_CORE_CONSOLE + help + If you have an SGI Altix and you would like to use the system + controller serial port as your console (you want this!), + say Y. Otherwise, say N. + +config SERIAL_MPC52xx + tristate "Freescale MPC52xx family PSC serial support" + depends on PPC_MPC52xx + select SERIAL_CORE + help + This drivers support the MPC52xx PSC serial ports. If you would + like to use them, you must answer Y or M to this option. Not that + for use as console, it must be included in kernel and not as a + module. + +config SERIAL_MPC52xx_CONSOLE + bool "Console on a Freescale MPC52xx family PSC serial port" + depends on SERIAL_MPC52xx=y + select SERIAL_CORE_CONSOLE + help + Select this options if you'd like to use one of the PSC serial port + of the Freescale MPC52xx family as a console. + +config SERIAL_MPC52xx_CONSOLE_BAUD + int "Freescale MPC52xx family PSC serial port baud" + depends on SERIAL_MPC52xx_CONSOLE=y + default "9600" + help + Select the MPC52xx console baud rate. + This value is only used if the bootloader doesn't pass in the + console baudrate + +config SERIAL_ICOM + tristate "IBM Multiport Serial Adapter" + depends on PPC_ISERIES || PPC_PSERIES + select SERIAL_CORE + help + This driver is for a family of multiport serial adapters + including 2 port RVX, 2 port internal modem, 4 port internal + modem and a split 1 port RVX and 1 port internal modem. + + This driver can also be built as a module. If so, the module + will be called icom. + +config SERIAL_M32R_SIO + bool "M32R SIO I/F" + depends on M32R + default y + select SERIAL_CORE + help + Say Y here if you want to use the M32R serial controller. + +config SERIAL_M32R_SIO_CONSOLE + bool "use SIO console" + depends on SERIAL_M32R_SIO=y + select SERIAL_CORE_CONSOLE + help + Say Y here if you want to support a serial console. + + If you use an M3T-M32700UT or an OPSPUT platform, + please say also y for SERIAL_M32R_PLDSIO. + +config SERIAL_M32R_PLDSIO + bool "M32R SIO I/F on a PLD" + depends on SERIAL_M32R_SIO=y + default n + help + Say Y here if you want to use the M32R serial controller + on a PLD (Programmable Logic Device). + + If you use an M3T-M32700UT or an OPSPUT platform, + please say Y. + +config SERIAL_TXX9 + bool "TMPTX39XX/49XX SIO support" + depends HAS_TXX9_SERIAL + select SERIAL_CORE + default y + +config HAS_TXX9_SERIAL + bool + +config SERIAL_TXX9_CONSOLE + bool "TMPTX39XX/49XX SIO Console support" + depends on SERIAL_TXX9=y + select SERIAL_CORE_CONSOLE + +config SERIAL_TXX9_STDSERIAL + bool "TX39XX/49XX SIO act as standard serial" + depends on !SERIAL_8250 && SERIAL_TXX9 + +config SERIAL_VR41XX + tristate "NEC VR4100 series Serial Interface Unit support" + depends on CPU_VR41XX + select SERIAL_CORE + help + If you have a NEC VR4100 series processor and you want to use + Serial Interface Unit(SIU) or Debug Serial Interface Unit(DSIU) + (not include VR4111/VR4121 DSIU), say Y. Otherwise, say N. + +config SERIAL_VR41XX_CONSOLE + bool "Enable NEC VR4100 series Serial Interface Unit console" + depends on SERIAL_VR41XX + select SERIAL_CORE_CONSOLE + help + If you have a NEC VR4100 series processor and you want to use + a console on a serial port, say Y. Otherwise, say N. + +config SERIAL_JSM + tristate "Digi International NEO PCI Support" + depends on PCI + select SERIAL_CORE + help + This is a driver for Digi International's Neo series + of cards which provide multiple serial ports. You would need + something like this to connect more than two modems to your Linux + box, for instance in order to become a dial-in server. This driver + supports PCI boards only. + If you have a card like this, say Y here and read the file + <file:Documentation/jsm.txt>. + + To compile this driver as a module, choose M here: the + module will be called jsm. + +endmenu diff --git a/linux-2.6-xen-sparse/arch/xen/Kconfig b/linux-2.6-xen-sparse/drivers/xen/Kconfig index 8b3dd31e07..7d3c741f35 100644 --- a/linux-2.6-xen-sparse/arch/xen/Kconfig +++ b/linux-2.6-xen-sparse/drivers/xen/Kconfig @@ -1,37 +1,38 @@ # -# For a description of the syntax of this configuration file, -# see Documentation/kbuild/kconfig-language.txt. +# This Kconfig describe xen options # -mainmenu "Linux Kernel Configuration" +mainmenu "Xen Configuration" config XEN bool - default y + default y if X86_XEN || X86_64_XEN help This is the Linux Xen port. -config ARCH_XEN - bool - default y - - config NO_IDLE_HZ bool + depends on XEN default y - +if XEN menu "XEN" config XEN_PRIVILEGED_GUEST bool "Privileged Guest (domain 0)" + depends XEN default n select XEN_PHYSDEV_ACCESS help Support for privileged operation (domain 0) +config XEN_UNPRIVILEGED_GUEST + bool + default !XEN_PRIVILEGED_GUEST + config XEN_PHYSDEV_ACCESS bool "Physical device access" + depends XEN_PRIVILEGED_GUEST default XEN_PRIVILEGED_GUEST help Assume access is available to physical hardware devices @@ -83,31 +84,25 @@ config XEN_NETDEV_PIPELINED_TRANSMITTER are unsure; or if you experience network hangs when this option is enabled; then you must say N here. -config XEN_TPMDEV_FRONTEND - bool "TPM-device frontend driver" - default n - select TCG_TPM - select TCG_XEN - help - The TPM-device frontend driver. - config XEN_TPMDEV_BACKEND - bool "TPM-device backend driver" - default n - help - The TPM-device backend driver + bool "TPM-device backend driver" + depends on XEN_PHYSDEV_ACCESS + default n + help + The TPM-device backend driver config XEN_TPMDEV_CLOSE_IF_VTPM_FAILS - bool "TPM backend closes upon vTPM failure" - depends on XEN_TPMDEV_BACKEND - default n - help - The TPM backend closes the channel if the vTPM in userspace indicates - a failure. The corresponding domain's channel will be closed. - Say Y if you want this feature. + bool "TPM backend closes upon vTPM failure" + depends on XEN_TPMDEV_BACKEND + default n + help + The TPM backend closes the channel if the vTPM in userspace indicates + a failure. The corresponding domain's channel will be closed. + Say Y if you want this feature. config XEN_BLKDEV_FRONTEND tristate "Block-device frontend driver" + depends on XEN default y help The block-device frontend driver allows the kernel to access block @@ -117,6 +112,7 @@ config XEN_BLKDEV_FRONTEND config XEN_NETDEV_FRONTEND tristate "Network-device frontend driver" + depends on XEN default y help The network-device frontend driver allows the kernel to access @@ -133,11 +129,19 @@ config XEN_BLKDEV_TAP to a character device, allowing device prototyping in application space. Odds are that you want to say N here. +config XEN_TPMDEV_FRONTEND + bool "TPM-device frontend driver" + default n + select TCG_TPM + select TCG_XEN + help + The TPM-device frontend driver. + config XEN_SHADOW_MODE bool "Fake shadow mode" default n - help - fakes out a shadow mode kernel + help + fakes out a shadow mode kernel config XEN_SCRUB_PAGES @@ -151,21 +155,12 @@ config XEN_SCRUB_PAGES If security is not a concern then you may increase performance by saying N. -choice - prompt "Processor Type" - default XEN_X86 - -config XEN_X86 - bool "X86" - help - Choose this option if your computer is a X86 architecture. - -config XEN_X86_64 - bool "X86_64" +config XEN_DISABLE_SERIAL + bool "Disable serial port drivers" + default y help - Choose this option if your computer is a X86_64 architecture. - -endchoice + Disable serial port drivers, allowing the Xen console driver + to provide a serial console at ttyS0. endmenu @@ -177,36 +172,4 @@ config HAVE_ARCH_DEV_ALLOC_SKB bool default y -source "init/Kconfig" - -if XEN_X86 -source "arch/xen/i386/Kconfig" endif - -if XEN_X86_64 -source "arch/xen/x86_64/Kconfig" -endif - -menu "Executable file formats" - -source "fs/Kconfig.binfmt" - -endmenu - -source "arch/xen/Kconfig.drivers" - -if XEN_PRIVILEGED_GUEST -menu "Power management options" -source "drivers/acpi/Kconfig" -endmenu -endif - -source "fs/Kconfig" - -source "security/Kconfig" - -source "crypto/Kconfig" - -source "lib/Kconfig" - -source "arch/xen/Kconfig.debug" diff --git a/linux-2.6-xen-sparse/drivers/xen/Makefile b/linux-2.6-xen-sparse/drivers/xen/Makefile index f553c5a608..2da6cb06fb 100644 --- a/linux-2.6-xen-sparse/drivers/xen/Makefile +++ b/linux-2.6-xen-sparse/drivers/xen/Makefile @@ -2,6 +2,7 @@ obj-y += net_driver_util.o obj-y += util.o +obj-y += core/ obj-y += char/ obj-y += console/ obj-y += evtchn/ diff --git a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c index 89b98173fc..28f07388f1 100644 --- a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c +++ b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c @@ -41,17 +41,17 @@ #include <linux/bootmem.h> #include <linux/highmem.h> #include <linux/vmalloc.h> -#include <asm-xen/xen_proc.h> +#include <xen/xen_proc.h> #include <asm/hypervisor.h> -#include <asm-xen/balloon.h> -#include <asm-xen/xen-public/memory.h> +#include <xen/balloon.h> +#include <xen/interface/memory.h> #include <asm/pgalloc.h> #include <asm/pgtable.h> #include <asm/uaccess.h> #include <asm/tlb.h> #include <linux/list.h> -#include<asm-xen/xenbus.h> +#include <xen/xenbus.h> #define PAGES2KB(_p) ((_p)<<(PAGE_SHIFT-10)) diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c index a3586df439..23b47b5f72 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c @@ -14,7 +14,7 @@ #include <linux/spinlock.h> #include <linux/kthread.h> #include <linux/list.h> -#include <asm-xen/balloon.h> +#include <xen/balloon.h> #include <asm/hypervisor.h> #include "common.h" diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/common.h b/linux-2.6-xen-sparse/drivers/xen/blkback/common.h index 2576664e7c..aab5a9ff5b 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/common.h +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/common.h @@ -12,12 +12,12 @@ #include <asm/io.h> #include <asm/setup.h> #include <asm/pgalloc.h> -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/io/blkif.h> -#include <asm-xen/xen-public/io/ring.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/driver_util.h> +#include <xen/interface/io/blkif.h> +#include <xen/interface/io/ring.h> +#include <xen/gnttab.h> +#include <xen/driver_util.h> #define DPRINTK(_f, _a...) pr_debug("(file=%s, line=%d) " _f, \ __FILE__ , __LINE__ , ## _a ) diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c b/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c index ae25c965d8..090d1078d2 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c @@ -7,7 +7,7 @@ */ #include "common.h" -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> static kmem_cache_t *blkif_cachep; diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c b/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c index bbd33f7d54..b2d0939225 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c @@ -7,7 +7,7 @@ */ #include "common.h" -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #define vbd_sz(_v) ((_v)->bdev->bd_part ? \ (_v)->bdev->bd_part->nr_sects : (_v)->bdev->bd_disk->capacity) diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c index 486dcf9883..a87f0238f9 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c @@ -21,7 +21,7 @@ #include <stdarg.h> #include <linux/module.h> #include <linux/kthread.h> -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #include "common.h" #undef DPRINTK diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c index e7eacc3d58..da3791aca8 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c @@ -41,10 +41,10 @@ #include <linux/sched.h> #include <linux/interrupt.h> #include <scsi/scsi.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen-public/grant_table.h> -#include <asm-xen/gnttab.h> +#include <xen/evtchn.h> +#include <xen/xenbus.h> +#include <xen/interface/grant_table.h> +#include <xen/gnttab.h> #include <asm/hypervisor.h> #define BLKIF_STATE_DISCONNECTED 0 diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/block.h b/linux-2.6-xen-sparse/drivers/xen/blkfront/block.h index 1fde02dea1..a0dbae8375 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/block.h +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/block.h @@ -46,11 +46,11 @@ #include <linux/major.h> #include <linux/devfs_fs_kernel.h> #include <asm/hypervisor.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/io/blkif.h> -#include <asm-xen/xen-public/io/ring.h> +#include <xen/xenbus.h> +#include <xen/gnttab.h> +#include <xen/interface/xen.h> +#include <xen/interface/io/blkif.h> +#include <xen/interface/io/ring.h> #include <asm/io.h> #include <asm/atomic.h> #include <asm/uaccess.h> diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c b/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c index 104dd816e7..2442cea633 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c @@ -8,7 +8,7 @@ #include <linux/kernel.h> #include <linux/spinlock.h> -#include <asm-xen/balloon.h> +#include <xen/balloon.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/mm.h> diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/common.h b/linux-2.6-xen-sparse/drivers/xen/blktap/common.h index 635dd467b5..c261822cd1 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/common.h +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/common.h @@ -12,12 +12,12 @@ #include <asm/io.h> #include <asm/setup.h> #include <asm/pgalloc.h> -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/io/blkif.h> -#include <asm-xen/xen-public/io/ring.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/driver_util.h> +#include <xen/interface/io/blkif.h> +#include <xen/interface/io/ring.h> +#include <xen/gnttab.h> +#include <xen/driver_util.h> #define DPRINTK(_f, _a...) pr_debug("(file=%s, line=%d) " _f, \ __FILE__ , __LINE__ , ## _a ) diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c b/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c index 3e76ab2100..99cb7bfdb2 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c @@ -7,7 +7,7 @@ */ #include "common.h" -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> static kmem_cache_t *blkif_cachep; diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c index d93f622136..3dc91674a7 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c @@ -23,7 +23,7 @@ #include <stdarg.h> #include <linux/module.h> -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #include "common.h" struct backend_info diff --git a/linux-2.6-xen-sparse/drivers/xen/console/console.c b/linux-2.6-xen-sparse/drivers/xen/console/console.c index 44ae31d087..ec235af01b 100644 --- a/linux-2.6-xen-sparse/drivers/xen/console/console.c +++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c @@ -49,11 +49,11 @@ #include <asm/io.h> #include <asm/irq.h> #include <asm/uaccess.h> -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/event_channel.h> +#include <xen/interface/xen.h> +#include <xen/interface/event_channel.h> #include <asm/hypervisor.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xencons.h> +#include <xen/evtchn.h> +#include <xen/xencons.h> /* * Modes: diff --git a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c index 1f97c77657..fddb1bf8bf 100644 --- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c +++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c @@ -14,13 +14,13 @@ #include <linux/slab.h> #include <asm/hypervisor.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xencons.h> +#include <xen/evtchn.h> +#include <xen/xencons.h> #include <linux/wait.h> #include <linux/interrupt.h> #include <linux/sched.h> #include <linux/err.h> -#include <asm-xen/xen-public/io/console.h> +#include <xen/interface/io/console.h> static int xencons_irq; diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/Makefile b/linux-2.6-xen-sparse/drivers/xen/core/Makefile index f08ee48501..1d57a5b1ac 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/Makefile +++ b/linux-2.6-xen-sparse/drivers/xen/core/Makefile @@ -2,15 +2,6 @@ # Makefile for the linux kernel. # -XENARCH := $(subst ",,$(CONFIG_XENARCH)) - -CPPFLAGS_vmlinux.lds += -U$(XENARCH) - -$(obj)/vmlinux.lds.S: - @ln -fsn $(srctree)/arch/$(XENARCH)/kernel/vmlinux.lds.S $@ - -extra-y += vmlinux.lds - obj-y := evtchn.o reboot.o gnttab.o features.o obj-$(CONFIG_PROC_FS) += xen_proc.o diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c index 49c2b181e9..5779185e83 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c @@ -38,10 +38,10 @@ #include <asm/system.h> #include <asm/ptrace.h> #include <asm/synch_bitops.h> -#include <asm-xen/xen-public/event_channel.h> -#include <asm-xen/xen-public/physdev.h> +#include <xen/interface/event_channel.h> +#include <xen/interface/physdev.h> #include <asm/hypervisor.h> -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <linux/mc146818rtc.h> /* RTC_IRQ */ /* diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/features.c b/linux-2.6-xen-sparse/drivers/xen/core/features.c index c18567342a..82cd9d66a5 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/features.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/features.c @@ -8,7 +8,7 @@ #include <linux/types.h> #include <linux/cache.h> #include <asm/hypervisor.h> -#include <asm-xen/features.h> +#include <xen/features.h> /* When we rebase to a more recent Linux we can use __read_mostly here. */ unsigned long xen_features[XENFEAT_NR_SUBMAPS] __cacheline_aligned; @@ -26,13 +26,3 @@ void setup_xen_features(void) flags[i] = fi.submap; } } - -/* - * Local variables: - * c-file-style: "linux" - * indent-tabs-mode: t - * c-indent-level: 8 - * c-basic-offset: 8 - * tab-width: 8 - * End: - */ diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c b/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c index 50f6bde4cb..0b1a98b245 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c @@ -11,11 +11,11 @@ #include <linux/module.h> #include <linux/sched.h> #include <asm/pgtable.h> -#include <asm-xen/xen-public/xen.h> +#include <xen/interface/xen.h> #include <asm/fixmap.h> #include <asm/uaccess.h> -#include <asm-xen/linux-public/privcmd.h> -#include <asm-xen/gnttab.h> +#include <xen/public/privcmd.h> +#include <xen/gnttab.h> #include <asm/synch_bitops.h> #if 1 @@ -353,13 +353,8 @@ gnttab_resume(void) BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1)); BUG_ON(setup.status != 0); -#ifdef __ia64__ - shared = __va(frames[0] << PAGE_SHIFT); - printk("grant table at %p\n", shared); -#else for (i = 0; i < NR_GRANT_FRAMES; i++) set_fixmap(FIX_GNTTAB_END - i, frames[i] << PAGE_SHIFT); -#endif return 0; } @@ -385,9 +380,7 @@ gnttab_init(void) BUG_ON(gnttab_resume()); -#ifndef __ia64__ shared = (grant_entry_t *)fix_to_virt(FIX_GNTTAB_END); -#endif for (i = NR_RESERVED_ENTRIES; i < NR_GRANT_ENTRIES; i++) gnttab_list[i] = i + 1; diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c b/linux-2.6-xen-sparse/drivers/xen/core/reboot.c index 534c040c10..fa08cfc595 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/reboot.c @@ -9,13 +9,13 @@ #include <linux/stringify.h> #include <asm/irq.h> #include <asm/mmu_context.h> -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/dom0_ops.h> -#include <asm-xen/xenbus.h> +#include <xen/interface/dom0_ops.h> +#include <xen/xenbus.h> #include <linux/cpu.h> #include <linux/kthread.h> -#include <asm-xen/xencons.h> +#include <xen/xencons.h> #if defined(__i386__) || defined(__x86_64__) /* diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/skbuff.c b/linux-2.6-xen-sparse/drivers/xen/core/skbuff.c index 4534f362f2..4534f362f2 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/skbuff.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/skbuff.c diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c b/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c index 10582cba38..994a7739e7 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c @@ -21,9 +21,9 @@ #include <asm/desc.h> #include <asm/arch_hooks.h> #include <asm/pgalloc.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xen-public/vcpu.h> -#include <asm-xen/xenbus.h> +#include <xen/evtchn.h> +#include <xen/interface/vcpu.h> +#include <xen/xenbus.h> #ifdef CONFIG_SMP_ALTERNATIVES #include <asm/smp_alt.h> diff --git a/linux-2.6-xen-sparse/arch/xen/kernel/xen_proc.c b/linux-2.6-xen-sparse/drivers/xen/core/xen_proc.c index 050deec580..c5a8c14810 100644 --- a/linux-2.6-xen-sparse/arch/xen/kernel/xen_proc.c +++ b/linux-2.6-xen-sparse/drivers/xen/core/xen_proc.c @@ -1,7 +1,7 @@ #include <linux/config.h> #include <linux/proc_fs.h> -#include <asm-xen/xen_proc.h> +#include <xen/xen_proc.h> static struct proc_dir_entry *xen_base; diff --git a/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c b/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c index 6c94cfa8c0..7222429f08 100644 --- a/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c +++ b/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c @@ -45,8 +45,8 @@ #include <linux/irq.h> #include <linux/init.h> #include <linux/gfp.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/linux-public/evtchn.h> +#include <xen/evtchn.h> +#include <xen/public/evtchn.h> struct per_user_data { /* Notification ring, accessed via /dev/xen/evtchn. */ diff --git a/linux-2.6-xen-sparse/drivers/xen/net_driver_util.c b/linux-2.6-xen-sparse/drivers/xen/net_driver_util.c index 8826b80ca8..11c21c3b1e 100644 --- a/linux-2.6-xen-sparse/drivers/xen/net_driver_util.c +++ b/linux-2.6-xen-sparse/drivers/xen/net_driver_util.c @@ -30,7 +30,7 @@ #include <linux/if_ether.h> #include <linux/err.h> -#include <asm-xen/net_driver_util.h> +#include <xen/net_driver_util.h> int xen_net_read_mac(struct xenbus_device *dev, u8 mac[]) diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/common.h b/linux-2.6-xen-sparse/drivers/xen/netback/common.h index ce781d80a5..61f8d58ea1 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/common.h +++ b/linux-2.6-xen-sparse/drivers/xen/netback/common.h @@ -14,13 +14,13 @@ #include <linux/in.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xen-public/io/netif.h> +#include <xen/evtchn.h> +#include <xen/interface/io/netif.h> #include <asm/io.h> #include <asm/pgalloc.h> -#include <asm-xen/xen-public/grant_table.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/driver_util.h> +#include <xen/interface/grant_table.h> +#include <xen/gnttab.h> +#include <xen/driver_util.h> #define DPRINTK(_f, _a...) pr_debug("(file=%s, line=%d) " _f, \ __FILE__ , __LINE__ , ## _a ) diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c index 51838ccafc..97e4ba9f67 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c @@ -11,8 +11,8 @@ */ #include "common.h" -#include <asm-xen/balloon.h> -#include <asm-xen/xen-public/memory.h> +#include <xen/balloon.h> +#include <xen/interface/memory.h> /*#define NETBE_DEBUG_INTERRUPT*/ diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c index 9db90d2e5e..78f636a38d 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c @@ -20,8 +20,8 @@ #include <stdarg.h> #include <linux/module.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/net_driver_util.h> +#include <xen/xenbus.h> +#include <xen/net_driver_util.h> #include "common.h" diff --git a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c index 72d50c8e04..609386f822 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c @@ -51,16 +51,16 @@ #include <net/route.h> #include <asm/io.h> #include <asm/uaccess.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen-public/io/netif.h> -#include <asm-xen/xen-public/memory.h> -#include <asm-xen/balloon.h> +#include <xen/evtchn.h> +#include <xen/xenbus.h> +#include <xen/interface/io/netif.h> +#include <xen/interface/memory.h> +#include <xen/balloon.h> #include <asm/page.h> #include <asm/uaccess.h> -#include <asm-xen/xen-public/grant_table.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/net_driver_util.h> +#include <xen/interface/grant_table.h> +#include <xen/gnttab.h> +#include <xen/net_driver_util.h> #define GRANT_INVALID_REF 0 diff --git a/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c b/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c index a4a533aa6b..75ef91dedf 100644 --- a/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c +++ b/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c @@ -27,10 +27,10 @@ #include <asm/uaccess.h> #include <asm/tlb.h> #include <asm/hypervisor.h> -#include <asm-xen/linux-public/privcmd.h> -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/dom0_ops.h> -#include <asm-xen/xen_proc.h> +#include <xen/public/privcmd.h> +#include <xen/interface/xen.h> +#include <xen/interface/dom0_ops.h> +#include <xen/xen_proc.h> static struct proc_dir_entry *privcmd_intf; static struct proc_dir_entry *capabilities_intf; diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/common.h b/linux-2.6-xen-sparse/drivers/xen/tpmback/common.h index cd001d58ef..bcb01ac9da 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/common.h +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/common.h @@ -10,10 +10,10 @@ #include <linux/module.h> #include <linux/interrupt.h> #include <linux/slab.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/driver_util.h> -#include <asm-xen/xen-public/grant_table.h> -#include <asm-xen/xen-public/io/tpmif.h> +#include <xen/evtchn.h> +#include <xen/driver_util.h> +#include <xen/interface/grant_table.h> +#include <xen/interface/io/tpmif.h> #include <asm/io.h> #include <asm/pgalloc.h> diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c index c43fd0d72b..138dd9854f 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c @@ -12,7 +12,7 @@ */ #include "common.h" -#include <asm-xen/balloon.h> +#include <xen/balloon.h> #define TPMIF_HASHSZ (2 << 5) #define TPMIF_HASH(_d,_h) (((int)(_d)^(int)(_h))&(TPMIF_HASHSZ-1)) diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c index 8667c8d2fb..573c03da9d 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c @@ -12,15 +12,15 @@ */ #include "common.h" -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <linux/types.h> #include <linux/list.h> #include <linux/miscdevice.h> #include <linux/poll.h> #include <asm/uaccess.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen-public/grant_table.h> +#include <xen/xenbus.h> +#include <xen/interface/grant_table.h> /* local data structures */ diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c index 7b62227b41..556d23e8d3 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c @@ -18,7 +18,7 @@ */ #include <stdarg.h> #include <linux/module.h> -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #include "common.h" struct backend_info diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c index e4bb32328e..f6d4264772 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c @@ -38,17 +38,17 @@ #include <linux/errno.h> #include <linux/interrupt.h> #include <linux/init.h> -#include <asm-xen/tpmfe.h> +#include <xen/tpmfe.h> #include <linux/err.h> #include <asm/semaphore.h> #include <asm/io.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/xen-public/grant_table.h> -#include <asm-xen/xen-public/io/tpmif.h> +#include <xen/evtchn.h> +#include <xen/interface/grant_table.h> +#include <xen/interface/io/tpmif.h> #include <asm/uaccess.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen-public/grant_table.h> +#include <xen/xenbus.h> +#include <xen/interface/grant_table.h> #include "tpmfront.h" diff --git a/linux-2.6-xen-sparse/drivers/xen/util.c b/linux-2.6-xen-sparse/drivers/xen/util.c index 1b8c91bc1e..7f76a3903f 100644 --- a/linux-2.6-xen-sparse/drivers/xen/util.c +++ b/linux-2.6-xen-sparse/drivers/xen/util.c @@ -4,7 +4,7 @@ #include <linux/slab.h> #include <linux/vmalloc.h> #include <asm/uaccess.h> -#include <asm-xen/driver_util.h> +#include <xen/driver_util.h> static int f(pte_t *pte, struct page *pte_page, unsigned long addr, void *data) { diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c index 28724abfe0..530d303acc 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c @@ -27,9 +27,9 @@ * IN THE SOFTWARE. */ -#include <asm-xen/evtchn.h> -#include <asm-xen/gnttab.h> -#include <asm-xen/xenbus.h> +#include <xen/evtchn.h> +#include <xen/gnttab.h> +#include <xen/xenbus.h> /* xenbus_probe.c */ extern char *kasprintf(const char *fmt, ...); diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c index 82f656d462..59817f076b 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c @@ -28,12 +28,12 @@ */ #include <asm/hypervisor.h> -#include <asm-xen/evtchn.h> +#include <xen/evtchn.h> #include <linux/wait.h> #include <linux/interrupt.h> #include <linux/sched.h> #include <linux/err.h> -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #include "xenbus_comms.h" static int xenbus_irq; diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c index fc8b22453f..cdab7e82c2 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c @@ -41,8 +41,8 @@ #include <asm/uaccess.h> #include <asm/hypervisor.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen_proc.h> +#include <xen/xenbus.h> +#include <xen/xen_proc.h> #include <asm/hypervisor.h> struct xenbus_dev_transaction { diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c index ce4f863538..b8ae754fe5 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c @@ -43,11 +43,11 @@ #include <asm/page.h> #include <asm/pgtable.h> #include <asm/hypervisor.h> -#include <asm-xen/xenbus.h> -#include <asm-xen/xen_proc.h> -#include <asm-xen/balloon.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/linux-public/evtchn.h> +#include <xen/xenbus.h> +#include <xen/xen_proc.h> +#include <xen/balloon.h> +#include <xen/evtchn.h> +#include <xen/public/evtchn.h> #include "xenbus_comms.h" diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c index fa404870f1..1bc9177ec5 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c @@ -38,7 +38,7 @@ #include <linux/slab.h> #include <linux/fcntl.h> #include <linux/kthread.h> -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> #include "xenbus_comms.h" /* xenbus_probe.c */ diff --git a/linux-2.6-xen-sparse/fs/Kconfig b/linux-2.6-xen-sparse/fs/Kconfig new file mode 100644 index 0000000000..856067a34f --- /dev/null +++ b/linux-2.6-xen-sparse/fs/Kconfig @@ -0,0 +1,1730 @@ +# +# File system configuration +# + +menu "File systems" + +config EXT2_FS + tristate "Second extended fs support" + help + Ext2 is a standard Linux file system for hard disks. + + To compile this file system support as a module, choose M here: the + module will be called ext2. Be aware however that the file system + of your root partition (the one containing the directory /) cannot + be compiled as a module, and so this could be dangerous. + + If unsure, say Y. + +config EXT2_FS_XATTR + bool "Ext2 extended attributes" + depends on EXT2_FS + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). + + If unsure, say N. + +config EXT2_FS_POSIX_ACL + bool "Ext2 POSIX Access Control Lists" + depends on EXT2_FS_XATTR + help + Posix Access Control Lists (ACLs) support permissions for users and + groups beyond the owner/group/world scheme. + + To learn more about Access Control Lists, visit the Posix ACLs for + Linux website <http://acl.bestbits.at/>. + + If you don't know what Access Control Lists are, say N + +config EXT2_FS_SECURITY + bool "Ext2 Security Labels" + depends on EXT2_FS_XATTR + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the ext2 filesystem. + + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config EXT3_FS + tristate "Ext3 journalling file system support" + help + This is the journaling version of the Second extended file system + (often called ext3), the de facto standard Linux file system + (method to organize files on a storage device) for hard disks. + + The journaling code included in this driver means you do not have + to run e2fsck (file system checker) on your file systems after a + crash. The journal keeps track of any changes that were being made + at the time the system crashed, and can ensure that your file system + is consistent without the need for a lengthy check. + + Other than adding the journal to the file system, the on-disk format + of ext3 is identical to ext2. It is possible to freely switch + between using the ext3 driver and the ext2 driver, as long as the + file system has been cleanly unmounted, or e2fsck is run on the file + system. + + To add a journal on an existing ext2 file system or change the + behavior of ext3 file systems, you can use the tune2fs utility ("man + tune2fs"). To modify attributes of files and directories on ext3 + file systems, use chattr ("man chattr"). You need to be using + e2fsprogs version 1.20 or later in order to create ext3 journals + (available at <http://sourceforge.net/projects/e2fsprogs/>). + + To compile this file system support as a module, choose M here: the + module will be called ext3. Be aware however that the file system + of your root partition (the one containing the directory /) cannot + be compiled as a module, and so this may be dangerous. + +config EXT3_FS_XATTR + bool "Ext3 extended attributes" + depends on EXT3_FS + default y + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). + + If unsure, say N. + + You need this for POSIX ACL support on ext3. + +config EXT3_FS_POSIX_ACL + bool "Ext3 POSIX Access Control Lists" + depends on EXT3_FS_XATTR + help + Posix Access Control Lists (ACLs) support permissions for users and + groups beyond the owner/group/world scheme. + + To learn more about Access Control Lists, visit the Posix ACLs for + Linux website <http://acl.bestbits.at/>. + + If you don't know what Access Control Lists are, say N + +config EXT3_FS_SECURITY + bool "Ext3 Security Labels" + depends on EXT3_FS_XATTR + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the ext3 filesystem. + + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config JBD +# CONFIG_JBD could be its own option (even modular), but until there are +# other users than ext3, we will simply make it be the same as CONFIG_EXT3_FS +# dep_tristate ' Journal Block Device support (JBD for ext3)' CONFIG_JBD $CONFIG_EXT3_FS + tristate + default EXT3_FS + help + This is a generic journaling layer for block devices. It is + currently used by the ext3 file system, but it could also be used to + add journal support to other file systems or block devices such as + RAID or LVM. + + If you are using the ext3 file system, you need to say Y here. If + you are not using ext3 then you will probably want to say N. + + To compile this device as a module, choose M here: the module will be + called jbd. If you are compiling ext3 into the kernel, you cannot + compile this code as a module. + +config JBD_DEBUG + bool "JBD (ext3) debugging support" + depends on JBD + help + If you are using the ext3 journaled file system (or potentially any + other file system/device using JBD), this option allows you to + enable debugging output while the system is running, in order to + help track down any problems you are having. By default the + debugging output will be turned off. + + If you select Y here, then you will be able to turn on debugging + with "echo N > /proc/sys/fs/jbd-debug", where N is a number between + 1 and 5, the higher the number, the more debugging output is + generated. To turn debugging off again, do + "echo 0 > /proc/sys/fs/jbd-debug". + +config FS_MBCACHE +# Meta block cache for Extended Attributes (ext2/ext3) + tristate + depends on EXT2_FS_XATTR || EXT3_FS_XATTR + default y if EXT2_FS=y || EXT3_FS=y + default m if EXT2_FS=m || EXT3_FS=m + +config REISERFS_FS + tristate "Reiserfs support" + help + Stores not just filenames but the files themselves in a balanced + tree. Uses journaling. + + Balanced trees are more efficient than traditional file system + architectural foundations. + + In general, ReiserFS is as fast as ext2, but is very efficient with + large directories and small files. Additional patches are needed + for NFS and quotas, please see <http://www.namesys.com/> for links. + + It is more easily extended to have features currently found in + database and keyword search systems than block allocation based file + systems are. The next version will be so extended, and will support + plugins consistent with our motto ``It takes more than a license to + make source code open.'' + + Read <http://www.namesys.com/> to learn more about reiserfs. + + Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com. + + If you like it, you can pay us to add new features to it that you + need, buy a support contract, or pay us to port it to another OS. + +config REISERFS_CHECK + bool "Enable reiserfs debug mode" + depends on REISERFS_FS + help + If you set this to Y, then ReiserFS will perform every check it can + possibly imagine of its internal consistency throughout its + operation. It will also go substantially slower. More than once we + have forgotten that this was on, and then gone despondent over the + latest benchmarks.:-) Use of this option allows our team to go all + out in checking for consistency when debugging without fear of its + effect on end users. If you are on the verge of sending in a bug + report, say Y and you might get a useful error message. Almost + everyone should say N. + +config REISERFS_PROC_INFO + bool "Stats in /proc/fs/reiserfs" + depends on REISERFS_FS + help + Create under /proc/fs/reiserfs a hierarchy of files, displaying + various ReiserFS statistics and internal data at the expense of + making your kernel or module slightly larger (+8 KB). This also + increases the amount of kernel memory required for each mount. + Almost everyone but ReiserFS developers and people fine-tuning + reiserfs or tracing problems should say N. + +config REISERFS_FS_XATTR + bool "ReiserFS extended attributes" + depends on REISERFS_FS + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). + + If unsure, say N. + +config REISERFS_FS_POSIX_ACL + bool "ReiserFS POSIX Access Control Lists" + depends on REISERFS_FS_XATTR + help + Posix Access Control Lists (ACLs) support permissions for users and + groups beyond the owner/group/world scheme. + + To learn more about Access Control Lists, visit the Posix ACLs for + Linux website <http://acl.bestbits.at/>. + + If you don't know what Access Control Lists are, say N + +config REISERFS_FS_SECURITY + bool "ReiserFS Security Labels" + depends on REISERFS_FS_XATTR + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the ReiserFS filesystem. + + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config JFS_FS + tristate "JFS filesystem support" + select NLS + help + This is a port of IBM's Journaled Filesystem . More information is + available in the file <file:Documentation/filesystems/jfs.txt>. + + If you do not intend to use the JFS filesystem, say N. + +config JFS_POSIX_ACL + bool "JFS POSIX Access Control Lists" + depends on JFS_FS + help + Posix Access Control Lists (ACLs) support permissions for users and + groups beyond the owner/group/world scheme. + + To learn more about Access Control Lists, visit the Posix ACLs for + Linux website <http://acl.bestbits.at/>. + + If you don't know what Access Control Lists are, say N + +config JFS_SECURITY + bool "JFS Security Labels" + depends on JFS_FS + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the jfs filesystem. + + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config JFS_DEBUG + bool "JFS debugging" + depends on JFS_FS + help + If you are experiencing any problems with the JFS filesystem, say + Y here. This will result in additional debugging messages to be + written to the system log. Under normal circumstances, this + results in very little overhead. + +config JFS_STATISTICS + bool "JFS statistics" + depends on JFS_FS + help + Enabling this option will cause statistics from the JFS file system + to be made available to the user in the /proc/fs/jfs/ directory. + +config FS_POSIX_ACL +# Posix ACL utility routines (for now, only ext2/ext3/jfs/reiserfs) +# +# NOTE: you can implement Posix ACLs without these helpers (XFS does). +# Never use this symbol for ifdefs. +# + bool + depends on EXT2_FS_POSIX_ACL || EXT3_FS_POSIX_ACL || JFS_POSIX_ACL || REISERFS_FS_POSIX_ACL || NFSD_V4 + default y + +source "fs/xfs/Kconfig" + +config MINIX_FS + tristate "Minix fs support" + help + Minix is a simple operating system used in many classes about OS's. + The minix file system (method to organize files on a hard disk + partition or a floppy disk) was the original file system for Linux, + but has been superseded by the second extended file system ext2fs. + You don't want to use the minix file system on your hard disk + because of certain built-in restrictions, but it is sometimes found + on older Linux floppy disks. This option will enlarge your kernel + by about 28 KB. If unsure, say N. + + To compile this file system support as a module, choose M here: the + module will be called minix. Note that the file system of your root + partition (the one containing the directory /) cannot be compiled as + a module. + +config ROMFS_FS + tristate "ROM file system support" + ---help--- + This is a very small read-only file system mainly intended for + initial ram disks of installation disks, but it could be used for + other read-only media as well. Read + <file:Documentation/filesystems/romfs.txt> for details. + + To compile this file system support as a module, choose M here: the + module will be called romfs. Note that the file system of your + root partition (the one containing the directory /) cannot be a + module. + + If you don't know whether you need it, then you don't need it: + answer N. + +config QUOTA + bool "Quota support" + help + If you say Y here, you will be able to set per user limits for disk + usage (also called disk quotas). Currently, it works for the + ext2, ext3, and reiserfs file system. ext3 also supports journalled + quotas for which you don't need to run quotacheck(8) after an unclean + shutdown. You need additional software in order to use quota support + (you can download sources from + <http://www.sf.net/projects/linuxquota/>). For further details, read + the Quota mini-HOWTO, available from + <http://www.tldp.org/docs.html#howto>, or the documentation provided + with the quota tools. Probably the quota support is only useful for + multi user systems. If unsure, say N. + +config QFMT_V1 + tristate "Old quota format support" + depends on QUOTA + help + This quota format was (is) used by kernels earlier than 2.4.22. If + you have quota working and you don't want to convert to new quota + format say Y here. + +config QFMT_V2 + tristate "Quota format v2 support" + depends on QUOTA + help + This quota format allows using quotas with 32-bit UIDs/GIDs. If you + need this functionality say Y here. Note that you will need recent + quota utilities (>= 3.01) for new quota format with this kernel. + +config QUOTACTL + bool + depends on XFS_QUOTA || QUOTA + default y + +config DNOTIFY + bool "Dnotify support" if EMBEDDED + default y + help + Dnotify is a directory-based per-fd file change notification system + that uses signals to communicate events to user-space. There exist + superior alternatives, but some applications may still rely on + dnotify. + + Because of this, if unsure, say Y. + +config AUTOFS_FS + tristate "Kernel automounter support" + help + The automounter is a tool to automatically mount remote file systems + on demand. This implementation is partially kernel-based to reduce + overhead in the already-mounted case; this is unlike the BSD + automounter (amd), which is a pure user space daemon. + + To use the automounter you need the user-space tools from the autofs + package; you can find the location in <file:Documentation/Changes>. + You also want to answer Y to "NFS file system support", below. + + If you want to use the newer version of the automounter with more + features, say N here and say Y to "Kernel automounter v4 support", + below. + + To compile this support as a module, choose M here: the module will be + called autofs. + + If you are not a part of a fairly large, distributed network, you + probably do not need an automounter, and can say N here. + +config AUTOFS4_FS + tristate "Kernel automounter version 4 support (also supports v3)" + help + The automounter is a tool to automatically mount remote file systems + on demand. This implementation is partially kernel-based to reduce + overhead in the already-mounted case; this is unlike the BSD + automounter (amd), which is a pure user space daemon. + + To use the automounter you need the user-space tools from + <ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/>; you also + want to answer Y to "NFS file system support", below. + + To compile this support as a module, choose M here: the module will be + called autofs4. You will need to add "alias autofs autofs4" to your + modules configuration file. + + If you are not a part of a fairly large, distributed network or + don't have a laptop which needs to dynamically reconfigure to the + local network, you probably do not need an automounter, and can say + N here. + +menu "CD-ROM/DVD Filesystems" + +config ISO9660_FS + tristate "ISO 9660 CDROM file system support" + help + This is the standard file system used on CD-ROMs. It was previously + known as "High Sierra File System" and is called "hsfs" on other + Unix systems. The so-called Rock-Ridge extensions which allow for + long Unix filenames and symbolic links are also supported by this + driver. If you have a CD-ROM drive and want to do more with it than + just listen to audio CDs and watch its LEDs, say Y (and read + <file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO, + available from <http://www.tldp.org/docs.html#howto>), thereby + enlarging your kernel by about 27 KB; otherwise say N. + + To compile this file system support as a module, choose M here: the + module will be called isofs. + +config JOLIET + bool "Microsoft Joliet CDROM extensions" + depends on ISO9660_FS + select NLS + help + Joliet is a Microsoft extension for the ISO 9660 CD-ROM file system + which allows for long filenames in unicode format (unicode is the + new 16 bit character code, successor to ASCII, which encodes the + characters of almost all languages of the world; see + <http://www.unicode.org/> for more information). Say Y here if you + want to be able to read Joliet CD-ROMs under Linux. + +config ZISOFS + bool "Transparent decompression extension" + depends on ISO9660_FS + select ZLIB_INFLATE + help + This is a Linux-specific extension to RockRidge which lets you store + data in compressed form on a CD-ROM and have it transparently + decompressed when the CD-ROM is accessed. See + <http://www.kernel.org/pub/linux/utils/fs/zisofs/> for the tools + necessary to create such a filesystem. Say Y here if you want to be + able to read such compressed CD-ROMs. + +config ZISOFS_FS +# for fs/nls/Config.in + tristate + depends on ZISOFS + default ISO9660_FS + +config UDF_FS + tristate "UDF file system support" + help + This is the new file system used on some CD-ROMs and DVDs. Say Y if + you intend to mount DVD discs or CDRW's written in packet mode, or + if written to by other UDF utilities, such as DirectCD. + Please read <file:Documentation/filesystems/udf.txt>. + + To compile this file system support as a module, choose M here: the + module will be called udf. + + If unsure, say N. + +config UDF_NLS + bool + default y + depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y) + +endmenu + +menu "DOS/FAT/NT Filesystems" + +config FAT_FS + tristate + select NLS + help + If you want to use one of the FAT-based file systems (the MS-DOS and + VFAT (Windows 95) file systems), then you must say Y or M here + to include FAT support. You will then be able to mount partitions or + diskettes with FAT-based file systems and transparently access the + files on them, i.e. MSDOS files will look and behave just like all + other Unix files. + + This FAT support is not a file system in itself, it only provides + the foundation for the other file systems. You will have to say Y or + M to at least one of "MSDOS fs support" or "VFAT fs support" in + order to make use of it. + + Another way to read and write MSDOS floppies and hard drive + partitions from within Linux (but not transparently) is with the + mtools ("man mtools") program suite. You don't need to say Y here in + order to do that. + + If you need to move large files on floppies between a DOS and a + Linux box, say Y here, mount the floppy under Linux with an MSDOS + file system and use GNU tar's M option. GNU tar is a program + available for Unix and DOS ("man tar" or "info tar"). + + It is now also becoming possible to read and write compressed FAT + file systems; read <file:Documentation/filesystems/fat_cvf.txt> for + details. + + The FAT support will enlarge your kernel by about 37 KB. If unsure, + say Y. + + To compile this as a module, choose M here: the module will be called + fat. Note that if you compile the FAT support as a module, you + cannot compile any of the FAT-based file systems into the kernel + -- they will have to be modules as well. + +config MSDOS_FS + tristate "MSDOS fs support" + select FAT_FS + help + This allows you to mount MSDOS partitions of your hard drive (unless + they are compressed; to access compressed MSDOS partitions under + Linux, you can either use the DOS emulator DOSEMU, described in the + DOSEMU-HOWTO, available from + <http://www.tldp.org/docs.html#howto>, or try dmsdosfs in + <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you + intend to use dosemu with a non-compressed MSDOS partition, say Y + here) and MSDOS floppies. This means that file access becomes + transparent, i.e. the MSDOS files look and behave just like all + other Unix files. + + If you have Windows 95 or Windows NT installed on your MSDOS + partitions, you should use the VFAT file system (say Y to "VFAT fs + support" below), or you will not be able to see the long filenames + generated by Windows 95 / Windows NT. + + This option will enlarge your kernel by about 7 KB. If unsure, + answer Y. This will only work if you said Y to "DOS FAT fs support" + as well. To compile this as a module, choose M here: the module will + be called msdos. + +config VFAT_FS + tristate "VFAT (Windows-95) fs support" + select FAT_FS + help + This option provides support for normal Windows file systems with + long filenames. That includes non-compressed FAT-based file systems + used by Windows 95, Windows 98, Windows NT 4.0, and the Unix + programs from the mtools package. + + The VFAT support enlarges your kernel by about 10 KB and it only + works if you said Y to the "DOS FAT fs support" above. Please read + the file <file:Documentation/filesystems/vfat.txt> for details. If + unsure, say Y. + + To compile this as a module, choose M here: the module will be called + vfat. + +config FAT_DEFAULT_CODEPAGE + int "Default codepage for FAT" + depends on MSDOS_FS || VFAT_FS + default 437 + help + This option should be set to the codepage of your FAT filesystems. + It can be overridden with the "codepage" mount option. + See <file:Documentation/filesystems/vfat.txt> for more information. + +config FAT_DEFAULT_IOCHARSET + string "Default iocharset for FAT" + depends on VFAT_FS + default "iso8859-1" + help + Set this to the default input/output character set you'd + like FAT to use. It should probably match the character set + that most of your FAT filesystems use, and can be overridden + with the "iocharset" mount option for FAT filesystems. + Note that "utf8" is not recommended for FAT filesystems. + If unsure, you shouldn't set "utf8" here. + See <file:Documentation/filesystems/vfat.txt> for more information. + +config NTFS_FS + tristate "NTFS file system support" + select NLS + help + NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003. + + Saying Y or M here enables read support. There is partial, but + safe, write support available. For write support you must also + say Y to "NTFS write support" below. + + There are also a number of user-space tools available, called + ntfsprogs. These include ntfsundelete and ntfsresize, that work + without NTFS support enabled in the kernel. + + This is a rewrite from scratch of Linux NTFS support and replaced + the old NTFS code starting with Linux 2.5.11. A backport to + the Linux 2.4 kernel series is separately available as a patch + from the project web site. + + For more information see <file:Documentation/filesystems/ntfs.txt> + and <http://linux-ntfs.sourceforge.net/>. + + To compile this file system support as a module, choose M here: the + module will be called ntfs. + + If you are not using Windows NT, 2000, XP or 2003 in addition to + Linux on your computer it is safe to say N. + +config NTFS_DEBUG + bool "NTFS debugging support" + depends on NTFS_FS + help + If you are experiencing any problems with the NTFS file system, say + Y here. This will result in additional consistency checks to be + performed by the driver as well as additional debugging messages to + be written to the system log. Note that debugging messages are + disabled by default. To enable them, supply the option debug_msgs=1 + at the kernel command line when booting the kernel or as an option + to insmod when loading the ntfs module. Once the driver is active, + you can enable debugging messages by doing (as root): + echo 1 > /proc/sys/fs/ntfs-debug + Replacing the "1" with "0" would disable debug messages. + + If you leave debugging messages disabled, this results in little + overhead, but enabling debug messages results in very significant + slowdown of the system. + + When reporting bugs, please try to have available a full dump of + debugging messages while the misbehaviour was occurring. + +config NTFS_RW + bool "NTFS write support" + depends on NTFS_FS + help + This enables the partial, but safe, write support in the NTFS driver. + + The only supported operation is overwriting existing files, without + changing the file length. No file or directory creation, deletion or + renaming is possible. Note only non-resident files can be written to + so you may find that some very small files (<500 bytes or so) cannot + be written to. + + While we cannot guarantee that it will not damage any data, we have + so far not received a single report where the driver would have + damaged someones data so we assume it is perfectly safe to use. + + Note: While write support is safe in this version (a rewrite from + scratch of the NTFS support), it should be noted that the old NTFS + write support, included in Linux 2.5.10 and before (since 1997), + is not safe. + + This is currently useful with TopologiLinux. TopologiLinux is run + on top of any DOS/Microsoft Windows system without partitioning your + hard disk. Unlike other Linux distributions TopologiLinux does not + need its own partition. For more information see + <http://topologi-linux.sourceforge.net/> + + It is perfectly safe to say N here. + +endmenu + +menu "Pseudo filesystems" + +config PROC_FS + bool "/proc file system support" + help + This is a virtual file system providing information about the status + of the system. "Virtual" means that it doesn't take up any space on + your hard disk: the files are created on the fly by the kernel when + you try to access them. Also, you cannot read the files with older + version of the program less: you need to use more or cat. + + It's totally cool; for example, "cat /proc/interrupts" gives + information about what the different IRQs are used for at the moment + (there is a small number of Interrupt ReQuest lines in your computer + that are used by the attached devices to gain the CPU's attention -- + often a source of trouble if two devices are mistakenly configured + to use the same IRQ). The program procinfo to display some + information about your system gathered from the /proc file system. + + Before you can use the /proc file system, it has to be mounted, + meaning it has to be given a location in the directory hierarchy. + That location should be /proc. A command such as "mount -t proc proc + /proc" or the equivalent line in /etc/fstab does the job. + + The /proc file system is explained in the file + <file:Documentation/filesystems/proc.txt> and on the proc(5) manpage + ("man 5 proc"). + + This option will enlarge your kernel by about 67 KB. Several + programs depend on this, so everyone should say Y here. + +config PROC_KCORE + bool "/proc/kcore support" if !ARM + depends on PROC_FS && MMU + +config SYSFS + bool "sysfs file system support" if EMBEDDED + default y + help + The sysfs filesystem is a virtual filesystem that the kernel uses to + export internal kernel objects, their attributes, and their + relationships to one another. + + Users can use sysfs to ascertain useful information about the running + kernel, such as the devices the kernel has discovered on each bus and + which driver each is bound to. sysfs can also be used to tune devices + and other kernel subsystems. + + Some system agents rely on the information in sysfs to operate. + /sbin/hotplug uses device and object attributes in sysfs to assist in + delegating policy decisions, like persistantly naming devices. + + sysfs is currently used by the block subsystem to mount the root + partition. If sysfs is disabled you must specify the boot device on + the kernel boot command line via its major and minor numbers. For + example, "root=03:01" for /dev/hda1. + + Designers of embedded systems may wish to say N here to conserve space. + +config DEVFS_FS + bool "/dev file system support (OBSOLETE)" + depends on EXPERIMENTAL + help + This is support for devfs, a virtual file system (like /proc) which + provides the file system interface to device drivers, normally found + in /dev. Devfs does not depend on major and minor number + allocations. Device drivers register entries in /dev which then + appear automatically, which means that the system administrator does + not have to create character and block special device files in the + /dev directory using the mknod command (or MAKEDEV script) anymore. + + This is work in progress. If you want to use this, you *must* read + the material in <file:Documentation/filesystems/devfs/>, especially + the file README there. + + Note that devfs no longer manages /dev/pts! If you are using UNIX98 + ptys, you will also need to mount the /dev/pts filesystem (devpts). + + Note that devfs has been obsoleted by udev, + <http://www.kernel.org/pub/linux/utils/kernel/hotplug/>. + It has been stripped down to a bare minimum and is only provided for + legacy installations that use its naming scheme which is + unfortunately different from the names normal Linux installations + use. + + If unsure, say N. + +config DEVFS_MOUNT + bool "Automatically mount at boot" + depends on DEVFS_FS + help + This option appears if you have CONFIG_DEVFS_FS enabled. Setting + this to 'Y' will make the kernel automatically mount devfs onto /dev + when the system is booted, before the init thread is started. + You can override this with the "devfs=nomount" boot option. + + If unsure, say N. + +config DEVFS_DEBUG + bool "Debug devfs" + depends on DEVFS_FS + help + If you say Y here, then the /dev file system code will generate + debugging messages. See the file + <file:Documentation/filesystems/devfs/boot-options> for more + details. + + If unsure, say N. + +config DEVPTS_FS_XATTR + bool "/dev/pts Extended Attributes" + depends on UNIX98_PTYS + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). + + If unsure, say N. + +config DEVPTS_FS_SECURITY + bool "/dev/pts Security Labels" + depends on DEVPTS_FS_XATTR + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the /dev/pts filesystem. + + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config TMPFS + bool "Virtual memory file system support (former shm fs)" + help + Tmpfs is a file system which keeps all files in virtual memory. + + Everything in tmpfs is temporary in the sense that no files will be + created on your hard drive. The files live in memory and swap + space. If you unmount a tmpfs instance, everything stored therein is + lost. + + See <file:Documentation/filesystems/tmpfs.txt> for details. + +config TMPFS_XATTR + bool "tmpfs Extended Attributes" + depends on TMPFS + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). + + If unsure, say N. + +config TMPFS_SECURITY + bool "tmpfs Security Labels" + depends on TMPFS_XATTR + help + Security labels support alternative access control models + implemented by security modules like SELinux. This option + enables an extended attribute handler for file security + labels in the tmpfs filesystem. + If you are not using a security module that requires using + extended attributes for file security labels, say N. + +config HUGETLBFS + bool "HugeTLB file system support" + depends X86 || IA64 || PPC64 || SPARC64 || SUPERH || X86_64 || BROKEN + depends !XEN + +config HUGETLB_PAGE + def_bool HUGETLBFS + +config RAMFS + bool + default y + ---help--- + Ramfs is a file system which keeps all files in RAM. It allows + read and write access. + + It is more of an programming example than a useable file system. If + you need a file system which lives in RAM with limit checking use + tmpfs. + + To compile this as a module, choose M here: the module will be called + ramfs. + +endmenu + +menu "Miscellaneous filesystems" + +config ADFS_FS + tristate "ADFS file system support (EXPERIMENTAL)" + depends on EXPERIMENTAL + help + The Acorn Disc Filing System is the standard file system of the + RiscOS operating system which runs on Acorn's ARM-based Risc PC + systems and the Acorn Archimedes range of machines. If you say Y + here, Linux will be able to read from ADFS partitions on hard drives + and from ADFS-formatted floppy discs. If you also want to be able to + write to those devices, say Y to "ADFS write support" below. + + The ADFS partition should be the first partition (i.e., + /dev/[hs]d?1) on each of your drives. Please read the file + <file:Documentation/filesystems/adfs.txt> for further details. + + To compile this code as a module, choose M here: the module will be + called adfs. + + If unsure, say N. + +config ADFS_FS_RW + bool "ADFS write support (DANGEROUS)" + depends on ADFS_FS + help + If you say Y here, you will be able to write to ADFS partitions on + hard drives and ADFS-formatted floppy disks. This is experimental + codes, so if you're unsure, say N. + +config AFFS_FS + tristate "Amiga FFS file system support (EXPERIMENTAL)" + depends on EXPERIMENTAL + help + The Fast File System (FFS) is the common file system used on hard + disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y + if you want to be able to read and write files from and to an Amiga + FFS partition on your hard drive. Amiga floppies however cannot be + read with this driver due to an incompatibility of the floppy + controller used in an Amiga and the standard floppy controller in + PCs and workstations. Read <file:Documentation/filesystems/affs.txt> + and <file:fs/affs/Changes>. + + With this driver you can also mount disk files used by Bernd + Schmidt's Un*X Amiga Emulator + (<http://www.freiburg.linux.de/~uae/>). + If you want to do this, you will also need to say Y or M to "Loop + device support", above. + + To compile this file system support as a module, choose M here: the + module will be called affs. If unsure, say N. + +config HFS_FS + tristate "Apple Macintosh file system support (EXPERIMENTAL)" + depends on EXPERIMENTAL + help + If you say Y here, you will be able to mount Macintosh-formatted + floppy disks and hard drive partitions with full read-write access. + Please read <file:fs/hfs/HFS.txt> to learn about the available mount + options. + + To compile this file system support as a module, choose M here: the + module will be called hfs. + +config HFSPLUS_FS + tristate "Apple Extended HFS file system support" + select NLS + select NLS_UTF8 + help + If you say Y here, you will be able to mount extended format + Macintosh-formatted hard drive partitions with full read-write access. + + This file system is often called HFS+ and was introduced with + MacOS 8. It includes all Mac specific filesystem data such as + data forks and creator codes, but it also has several UNIX + style features such as file ownership and permissions. + +config BEFS_FS + tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)" + depends on EXPERIMENTAL + select NLS + help + The BeOS File System (BeFS) is the native file system of Be, Inc's + BeOS. Notable features include support for arbitrary attributes + on files and directories, and database-like indeces on selected + attributes. (Also note that this driver doesn't make those features + available at this time). It is a 64 bit filesystem, so it supports + extremly large volumes and files. + + If you use this filesystem, you should also say Y to at least one + of the NLS (native language support) options below. + + If you don't know what this is about, say N. + + To compile this as a module, choose M here: the module will be + called befs. + +config BEFS_DEBUG + bool "Debug BeFS" + depends on BEFS_FS + help + If you say Y here, you can use the 'debug' mount option to enable + debugging output from the driver. + +config BFS_FS + tristate "BFS file system support (EXPERIMENTAL)" + depends on EXPERIMENTAL + help + Boot File System (BFS) is a file system used under SCO UnixWare to + allow the bootloader access to the kernel image and other important + files during the boot process. It is usually mounted under /stand + and corresponds to the slice marked as "STAND" in the UnixWare + partition. You should say Y if you want to read or write the files + on your /stand slice from within Linux. You then also need to say Y + to "UnixWare slices support", below. More information about the BFS + file system is contained in the file + <file:Documentation/filesystems/bfs.txt>. + + If you don't know what this is about, say N. + + To compile this as a module, choose M here: the module will be called + bfs. Note that the file system of your root partition (the one + containing the directory /) cannot be compiled as a module. + + + +config EFS_FS + tristate "EFS file system support (read only) (EXPERIMENTAL)" + depends on EXPERIMENTAL + help + EFS is an older file system used for non-ISO9660 CD-ROMs and hard + disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer + uses the XFS file system for hard disk partitions however). + + This implementation only offers read-only access. If you don't know + what all this is about, it's safe to say N. For more information + about EFS see its home page at <http://aeschi.ch.eu.org/efs/>. + + To compile the EFS file system support as a module, choose M here: the + module will be called efs. + +config JFFS_FS + tristate "Journalling Flash File System (JFFS) support" + depends on MTD + help + JFFS is the Journaling Flash File System developed by Axis + Communications in Sweden, aimed at providing a crash/powerdown-safe + file system for disk-less embedded devices. Further information is + available at (<http://developer.axis.com/software/jffs/>). + +config JFFS_FS_VERBOSE + int "JFFS debugging verbosity (0 = quiet, 3 = noisy)" + depends on JFFS_FS + default "0" + help + Determines the verbosity level of the JFFS debugging messages. + +config JFFS_PROC_FS + bool "JFFS stats available in /proc filesystem" + depends on JFFS_FS && PROC_FS + help + Enabling this option will cause statistics from mounted JFFS file systems + to be made available to the user in the /proc/fs/jffs/ directory. + +config JFFS2_FS + tristate "Journalling Flash File System v2 (JFFS2) support" + select CRC32 + depends on MTD + help + JFFS2 is the second generation of the Journalling Flash File System + for use on diskless embedded devices. It provides improved wear + levelling, compression and support for hard links. You cannot use + this on normal block devices, only on 'MTD' devices. + + Further information on the design and implementation of JFFS2 is + available at <http://sources.redhat.com/jffs2/>. + +config JFFS2_FS_DEBUG + int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)" + depends on JFFS2_FS + default "0" + help + This controls the amount of debugging messages produced by the JFFS2 + code. Set it to zero for use in production systems. For evaluation, + testing and debugging, it's advisable to set it to one. This will + enable a few assertions and will print debugging messages at the + KERN_DEBUG loglevel, where they won't normally be visible. Level 2 + is unlikely to be useful - it enables extra debugging in certain + areas which at one point needed debugging, but when the bugs were + located and fixed, the detailed messages were relegated to level 2. + + If reporting bugs, please try to have available a full dump of the + messages at debug level 1 while the misbehaviour was occurring. + +config JFFS2_FS_NAND + bool "JFFS2 support for NAND flash" + depends on JFFS2_FS + default n + help + This enables the support for NAND flash in JFFS2. NAND is a newer + type of flash chip design than the traditional NOR flash, with + higher density but a handful of characteristics which make it more + interesting for the file system to use. + + Say 'N' unless you have NAND flash. + +config JFFS2_FS_NOR_ECC + bool "JFFS2 support for ECC'd NOR flash (EXPERIMENTAL)" + depends on JFFS2_FS && EXPERIMENTAL + default n + help + This enables the experimental support for NOR flash with transparent + ECC for JFFS2. This type of flash chip is not common, however it is + available from ST Microelectronics. + +config JFFS2_COMPRESSION_OPTIONS + bool "Advanced compression options for JFFS2" + depends on JFFS2_FS + default n + help + Enabling this option allows you to explicitly choose which + compression modules, if any, are enabled in JFFS2. Removing + compressors and mean you cannot read existing file systems, + and enabling experimental compressors can mean that you + write a file system which cannot be read by a standard kernel. + + If unsure, you should _definitely_ say 'N'. + +config JFFS2_ZLIB + bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS + select ZLIB_INFLATE + select ZLIB_DEFLATE + depends on JFFS2_FS + default y + help + Zlib is designed to be a free, general-purpose, legally unencumbered, + lossless data-compression library for use on virtually any computer + hardware and operating system. See <http://www.gzip.org/zlib/> for + further information. + + Say 'Y' if unsure. + +config JFFS2_RTIME + bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS + depends on JFFS2_FS + default y + help + Rtime does manage to recompress already-compressed data. Say 'Y' if unsure. + +config JFFS2_RUBIN + bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS + depends on JFFS2_FS + default n + help + RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure. + +choice + prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS + default JFFS2_CMODE_PRIORITY + depends on JFFS2_FS + help + You can set here the default compression mode of JFFS2 from + the available compression modes. Don't touch if unsure. + +config JFFS2_CMODE_NONE + bool "no compression" + help + Uses no compression. + +config JFFS2_CMODE_PRIORITY + bool "priority" + help + Tries the compressors in a predefinied order and chooses the first + successful one. + +config JFFS2_CMODE_SIZE + bool "size (EXPERIMENTAL)" + help + Tries all compressors and chooses the one which has the smallest + result. + +endchoice + +config CRAMFS + tristate "Compressed ROM file system support (cramfs)" + select ZLIB_INFLATE + help + Saying Y here includes support for CramFs (Compressed ROM File + System). CramFs is designed to be a simple, small, and compressed + file system for ROM based embedded systems. CramFs is read-only, + limited to 256MB file systems (with 16MB files), and doesn't support + 16/32 bits uid/gid, hard links and timestamps. + + See <file:Documentation/filesystems/cramfs.txt> and + <file:fs/cramfs/README> for further information. + + To compile this as a module, choose M here: the module will be called + cramfs. Note that the root file system (the one containing the + directory /) cannot be compiled as a module. + + If unsure, say N. + +config VXFS_FS + tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" + help + FreeVxFS is a file system driver that support the VERITAS VxFS(TM) + file system format. VERITAS VxFS(TM) is the standard file system + of SCO UnixWare (and possibly others) and optionally available + for Sunsoft Solaris, HP-UX and many other operating systems. + Currently only readonly access is supported. + + NOTE: the file system type as used by mount(1), mount(2) and + fstab(5) is 'vxfs' as it describes the file system format, not + the actual driver. + + To compile this as a module, choose M here: the module will be + called freevxfs. If unsure, say N. + + +config HPFS_FS + tristate "OS/2 HPFS file system support" + help + OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS + is the file system used for organizing files on OS/2 hard disk + partitions. Say Y if you want to be able to read files from and + write files to an OS/2 HPFS partition on your hard drive. OS/2 + floppies however are in regular MSDOS format, so you don't need this + option in order to be able to read them. Read + <file:Documentation/filesystems/hpfs.txt>. + + To compile this file system support as a module, choose M here: the + module will be called hpfs. If unsure, say N. + + + +config QNX4FS_FS + tristate "QNX4 file system support (read only)" + help + This is the file system used by the real-time operating systems + QNX 4 and QNX 6 (the latter is also called QNX RTP). + Further information is available at <http://www.qnx.com/>. + Say Y if you intend to mount QNX hard disks or floppies. + Unless you say Y to "QNX4FS read-write support" below, you will + only be able to read these file systems. + + To compile this file system support as a module, choose M here: the + module will be called qnx4. + + If you don't know whether you need it, then you don't need it: + answer N. + +config QNX4FS_RW + bool "QNX4FS write support (DANGEROUS)" + depends on QNX4FS_FS && EXPERIMENTAL && BROKEN + help + Say Y if you want to test write support for QNX4 file systems. + + It's currently broken, so for now: + answer N. + + + +config SYSV_FS + tristate "System V/Xenix/V7/Coherent file system support" + help + SCO, Xenix and Coherent are commercial Unix systems for Intel + machines, and Version 7 was used on the DEC PDP-11. Saying Y + here would allow you to read from their floppies and hard disk + partitions. + + If you have floppies or hard disk partitions like that, it is likely + that they contain binaries from those other Unix systems; in order + to run these binaries, you will want to install linux-abi which is a + a set of kernel modules that lets you run SCO, Xenix, Wyse, + UnixWare, Dell Unix and System V programs under Linux. It is + available via FTP (user: ftp) from + <ftp://ftp.openlinux.org/pub/people/hch/linux-abi/>). + NOTE: that will work only for binaries from Intel-based systems; + PDP ones will have to wait until somebody ports Linux to -11 ;-) + + If you only intend to mount files from some other Unix over the + network using NFS, you don't need the System V file system support + (but you need NFS file system support obviously). + + Note that this option is generally not needed for floppies, since a + good portable way to transport files and directories between unixes + (and even other operating systems) is given by the tar program ("man + tar" or preferably "info tar"). Note also that this option has + nothing whatsoever to do with the option "System V IPC". Read about + the System V file system in + <file:Documentation/filesystems/sysv-fs.txt>. + Saying Y here will enlarge your kernel by about 27 KB. + + To compile this as a module, choose M here: the module will be called + sysv. + + If you haven't heard about all of this before, it's safe to say N. + + + +config UFS_FS + tristate "UFS file system support (read only)" + help + BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD, + OpenBSD and NeXTstep) use a file system called UFS. Some System V + Unixes can create and mount hard disk partitions and diskettes using + this file system as well. Saying Y here will allow you to read from + these partitions; if you also want to write to them, say Y to the + experimental "UFS file system write support", below. Please read the + file <file:Documentation/filesystems/ufs.txt> for more information. + + The recently released UFS2 variant (used in FreeBSD 5.x) is + READ-ONLY supported. + + If you only intend to mount files from some other Unix over the + network using NFS, you don't need the UFS file system support (but + you need NFS file system support obviously). + + Note that this option is generally not needed for floppies, since a + good portable way to transport files and directories between unixes + (and even other operating systems) is given by the tar program ("man + tar" or preferably "info tar"). + + When accessing NeXTstep files, you may need to convert them from the + NeXT character set to the Latin1 character set; use the program + recode ("info recode") for this purpose. + + To compile the UFS file system support as a module, choose M here: the + module will be called ufs. + + If you haven't heard about all of this before, it's safe to say N. + +config UFS_FS_WRITE + bool "UFS file system write support (DANGEROUS)" + depends on UFS_FS && EXPERIMENTAL + help + Say Y here if you want to try writing to UFS partitions. This is + experimental, so you should back up your UFS partitions beforehand. + +endmenu + +menu "Network File Systems" + depends on NET + +config NFS_FS + tristate "NFS file system support" + depends on INET + select LOCKD + select SUNRPC + help + If you are connected to some other (usually local) Unix computer + (using SLIP, PLIP, PPP or Ethernet) and want to mount files residing + on that computer (the NFS server) using the Network File Sharing + protocol, say Y. "Mounting files" means that the client can access + the files with usual UNIX commands as if they were sitting on the + client's hard disk. For this to work, the server must run the + programs nfsd and mountd (but does not need to have NFS file system + support enabled in its kernel). NFS is explained in the Network + Administrator's Guide, available from + <http://www.tldp.org/docs.html#guide>, on its man page: "man + nfs", and in the NFS-HOWTO. + + A superior but less widely used alternative to NFS is provided by + the Coda file system; see "Coda file system support" below. + + If you say Y here, you should have said Y to TCP/IP networking also. + This option would enlarge your kernel by about 27 KB. + + To compile this file system support as a module, choose M here: the + module will be called nfs. + + If you are configuring a diskless machine which will mount its root + file system over NFS at boot time, say Y here and to "Kernel + level IP autoconfiguration" above and to "Root file system on NFS" + below. You cannot compile this driver as a module in this case. + There are two packages designed for booting diskless machines over + the net: netboot, available from + <http://ftp1.sourceforge.net/netboot/>, and Etherboot, + available from <http://ftp1.sourceforge.net/etherboot/>. + + If you don't know what all this is about, say N. + +config NFS_V3 + bool "Provide NFSv3 client support" + depends on NFS_FS + help + Say Y here if you want your NFS client to be able to speak version + 3 of the NFS protocol. + + If unsure, say Y. + +config NFS_V4 + bool "Provide NFSv4 client support (EXPERIMENTAL)" + depends on NFS_FS && EXPERIMENTAL + select RPCSEC_GSS_KRB5 + help + Say Y here if you want your NFS client to be able to speak the newer + version 4 of the NFS protocol. + + Note: Requires auxiliary userspace daemons which may be found on + http://www.citi.umich.edu/projects/nfsv4/ + + If unsure, say N. + +config NFS_DIRECTIO + bool "Allow direct I/O on NFS files (EXPERIMENTAL)" + depends on NFS_FS && EXPERIMENTAL + help + This option enables applications to perform uncached I/O on files + in NFS file systems using the O_DIRECT open() flag. When O_DIRECT + is set for a file, its data is not cached in the system's page + cache. Data is moved to and from user-level application buffers + directly. Unlike local disk-based file systems, NFS O_DIRECT has + no alignment restrictions. + + Unless your program is designed to use O_DIRECT properly, you are + much better off allowing the NFS client to manage data caching for + you. Misusing O_DIRECT can cause poor server performance or network + storms. This kernel build option defaults OFF to avoid exposing + system administrators unwittingly to a potentially hazardous + feature. + + For more details on NFS O_DIRECT, see fs/nfs/direct.c. + + If unsure, say N. This reduces the size of the NFS client, and + causes open() to return EINVAL if a file residing in NFS is + opened with the O_DIRECT flag. + +config NFSD + tristate "NFS server support" + depends on INET + select LOCKD + select SUNRPC + select EXPORTFS + help + If you want your Linux box to act as an NFS *server*, so that other + computers on your local network which support NFS can access certain + directories on your box transparently, you have two options: you can + use the self-contained user space program nfsd, in which case you + should say N here, or you can say Y and use the kernel based NFS + server. The advantage of the kernel based solution is that it is + faster. + + In either case, you will need support software; the respective + locations are given in the file <file:Documentation/Changes> in the + NFS section. + + If you say Y here, you will get support for version 2 of the NFS + protocol (NFSv2). If you also want NFSv3, say Y to the next question + as well. + + Please read the NFS-HOWTO, available from + <http://www.tldp.org/docs.html#howto>. + + To compile the NFS server support as a module, choose M here: the + module will be called nfsd. If unsure, say N. + +config NFSD_V3 + bool "Provide NFSv3 server support" + depends on NFSD + help + If you would like to include the NFSv3 server as well as the NFSv2 + server, say Y here. If unsure, say Y. + +config NFSD_V4 + bool "Provide NFSv4 server support (EXPERIMENTAL)" + depends on NFSD_V3 && EXPERIMENTAL + select NFSD_TCP + help + If you would like to include the NFSv4 server as well as the NFSv2 + and NFSv3 servers, say Y here. This feature is experimental, and + should only be used if you are interested in helping to test NFSv4. + If unsure, say N. + +config NFSD_TCP + bool "Provide NFS server over TCP support" + depends on NFSD + default y + help + If you want your NFS server to support TCP connections, say Y here. + TCP connections usually perform better than the default UDP when + the network is lossy or congested. If unsure, say Y. + +config ROOT_NFS + bool "Root file system on NFS" + depends on NFS_FS=y && IP_PNP + help + If you want your Linux box to mount its whole root file system (the + one containing the directory /) from some other computer over the + net via NFS (presumably because your box doesn't have a hard disk), + say Y. Read <file:Documentation/nfsroot.txt> for details. It is + likely that in this case, you also want to say Y to "Kernel level IP + autoconfiguration" so that your box can discover its network address + at boot time. + + Most people say N here. + +config LOCKD + tristate + +config LOCKD_V4 + bool + depends on NFSD_V3 || NFS_V3 + default y + +config EXPORTFS + tristate + +config SUNRPC + tristate + +config SUNRPC_GSS + tristate + +config RPCSEC_GSS_KRB5 + tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" + depends on SUNRPC && EXPERIMENTAL + select SUNRPC_GSS + select CRYPTO + select CRYPTO_MD5 + select CRYPTO_DES + help + Provides for secure RPC calls by means of a gss-api + mechanism based on Kerberos V5. This is required for + NFSv4. + + Note: Requires an auxiliary userspace daemon which may be found on + http://www.citi.umich.edu/projects/nfsv4/ + + If unsure, say N. + +config RPCSEC_GSS_SPKM3 + tristate "Secure RPC: SPKM3 mechanism (EXPERIMENTAL)" + depends on SUNRPC && EXPERIMENTAL + select SUNRPC_GSS + select CRYPTO + select CRYPTO_MD5 + select CRYPTO_DES + help + Provides for secure RPC calls by means of a gss-api + mechanism based on the SPKM3 public-key mechanism. + + Note: Requires an auxiliary userspace daemon which may be found on + http://www.citi.umich.edu/projects/nfsv4/ + + If unsure, say N. + +config SMB_FS + tristate "SMB file system support (to mount Windows shares etc.)" + depends on INET + select NLS + help + SMB (Server Message Block) is the protocol Windows for Workgroups + (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share + files and printers over local networks. Saying Y here allows you to + mount their file systems (often called "shares" in this context) and + access them just like any other Unix directory. Currently, this + works only if the Windows machines use TCP/IP as the underlying + transport protocol, and not NetBEUI. For details, read + <file:Documentation/filesystems/smbfs.txt> and the SMB-HOWTO, + available from <http://www.tldp.org/docs.html#howto>. + + Note: if you just want your box to act as an SMB *server* and make + files and printing services available to Windows clients (which need + to have a TCP/IP stack), you don't need to say Y here; you can use + the program SAMBA (available from <ftp://ftp.samba.org/pub/samba/>) + for that. + + General information about how to connect Linux, Windows machines and + Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. + + To compile the SMB support as a module, choose M here: the module will + be called smbfs. Most people say N, however. + +config SMB_NLS_DEFAULT + bool "Use a default NLS" + depends on SMB_FS + help + Enabling this will make smbfs use nls translations by default. You + need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls + settings and you need to give the default nls for the SMB server as + CONFIG_SMB_NLS_REMOTE. + + The nls settings can be changed at mount time, if your smbmount + supports that, using the codepage and iocharset parameters. + + smbmount from samba 2.2.0 or later supports this. + +config SMB_NLS_REMOTE + string "Default Remote NLS Option" + depends on SMB_NLS_DEFAULT + default "cp437" + help + This setting allows you to specify a default value for which + codepage the server uses. If this field is left blank no + translations will be done by default. The local codepage/charset + default to CONFIG_NLS_DEFAULT. + + The nls settings can be changed at mount time, if your smbmount + supports that, using the codepage and iocharset parameters. + + smbmount from samba 2.2.0 or later supports this. + +config CIFS + tristate "CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers)" + depends on INET + select NLS + help + This is the client VFS module for the Common Internet File System + (CIFS) protocol which is the successor to the Server Message Block + (SMB) protocol, the native file sharing mechanism for most early + PC operating systems. The CIFS protocol is fully supported by + file servers such as Windows 2000 (including Windows 2003, NT 4 + and Windows XP) as well by Samba (which provides excellent CIFS + server support for Linux and many other operating systems). Currently + you must use the smbfs client filesystem to access older SMB servers + such as Windows 9x and OS/2. + + The intent of the cifs module is to provide an advanced + network file system client for mounting to CIFS compliant servers, + including support for dfs (hierarchical name space), secure per-user + session establishment, safe distributed caching (oplock), optional + packet signing, Unicode and other internationalization improvements, + and optional Winbind (nsswitch) integration. You do not need to enable + cifs if running only a (Samba) server. It is possible to enable both + smbfs and cifs (e.g. if you are using CIFS for accessing Windows 2003 + and Samba 3 servers, and smbfs for accessing old servers). If you need + to mount to Samba or Windows 2003 servers from this machine, say Y. + +config CIFS_STATS + bool "CIFS statistics" + depends on CIFS + help + Enabling this option will cause statistics for each server share + mounted by the cifs client to be displayed in /proc/fs/cifs/Stats + +config CIFS_XATTR + bool "CIFS extended attributes (EXPERIMENTAL)" + depends on CIFS + help + Extended attributes are name:value pairs associated with inodes by + the kernel or by users (see the attr(5) manual page, or visit + <http://acl.bestbits.at/> for details). CIFS maps the name of + extended attributes beginning with the user namespace prefix + to SMB/CIFS EAs. EAs are stored on Windows servers without the + user namespace prefix, but their names are seen by Linux cifs clients + prefaced by the user namespace prefix. The system namespace + (used by some filesystems to store ACLs) is not supported at + this time. + + If unsure, say N. + +config CIFS_POSIX + bool "CIFS POSIX Extensions (EXPERIMENTAL)" + depends on CIFS_XATTR + help + Enabling this option will cause the cifs client to attempt to + negotiate a newer dialect with servers, such as Samba 3.0.5 + or later, that optionally can handle more POSIX like (rather + than Windows like) file behavior. It also enables + support for POSIX ACLs (getfacl and setfacl) to servers + (such as Samba 3.10 and later) which can negotiate + CIFS POSIX ACL support. If unsure, say N. + +config CIFS_EXPERIMENTAL + bool "CIFS Experimental Features (EXPERIMENTAL)" + depends on CIFS + help + Enables cifs features under testing. These features + are highly experimental. If unsure, say N. + +config NCP_FS + tristate "NCP file system support (to mount NetWare volumes)" + depends on IPX!=n || INET + help + NCP (NetWare Core Protocol) is a protocol that runs over IPX and is + used by Novell NetWare clients to talk to file servers. It is to + IPX what NFS is to TCP/IP, if that helps. Saying Y here allows you + to mount NetWare file server volumes and to access them just like + any other Unix directory. For details, please read the file + <file:Documentation/filesystems/ncpfs.txt> in the kernel source and + the IPX-HOWTO from <http://www.tldp.org/docs.html#howto>. + + You do not have to say Y here if you want your Linux box to act as a + file *server* for Novell NetWare clients. + + General information about how to connect Linux, Windows machines and + Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. + + To compile this as a module, choose M here: the module will be called + ncpfs. Say N unless you are connected to a Novell network. + +source "fs/ncpfs/Kconfig" + +config CODA_FS + tristate "Coda file system support (advanced network fs)" + depends on INET + help + Coda is an advanced network file system, similar to NFS in that it + enables you to mount file systems of a remote server and access them + with regular Unix commands as if they were sitting on your hard + disk. Coda has several advantages over NFS: support for + disconnected operation (e.g. for laptops), read/write server + replication, security model for authentication and encryption, + persistent client caches and write back caching. + + If you say Y here, your Linux box will be able to act as a Coda + *client*. You will need user level code as well, both for the + client and server. Servers are currently user level, i.e. they need + no kernel support. Please read + <file:Documentation/filesystems/coda.txt> and check out the Coda + home page <http://www.coda.cs.cmu.edu/>. + + To compile the coda client support as a module, choose M here: the + module will be called coda. + +config CODA_FS_OLD_API + bool "Use 96-bit Coda file identifiers" + depends on CODA_FS + help + A new kernel-userspace API had to be introduced for Coda v6.0 + to support larger 128-bit file identifiers as needed by the + new realms implementation. + + However this new API is not backward compatible with older + clients. If you really need to run the old Coda userspace + cache manager then say Y. + + For most cases you probably want to say N. + +config AFS_FS +# for fs/nls/Config.in + tristate "Andrew File System support (AFS) (Experimental)" + depends on INET && EXPERIMENTAL + select RXRPC + help + If you say Y here, you will get an experimental Andrew File System + driver. It currently only supports unsecured read-only AFS access. + + See <file:Documentation/filesystems/afs.txt> for more intormation. + + If unsure, say N. + +config RXRPC + tristate + +endmenu + +menu "Partition Types" + +source "fs/partitions/Kconfig" + +endmenu + +source "fs/nls/Kconfig" + +endmenu + diff --git a/linux-2.6-xen-sparse/include/asm-i386/atomic.h b/linux-2.6-xen-sparse/include/asm-i386/atomic.h new file mode 100644 index 0000000000..04247f3945 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/atomic.h @@ -0,0 +1,231 @@ +#ifndef __ARCH_I386_ATOMIC__ +#define __ARCH_I386_ATOMIC__ + +#include <linux/config.h> +#include <linux/compiler.h> +#include <asm/processor.h> +#include <asm/smp_alt.h> + +/* + * Atomic operations that C can't guarantee us. Useful for + * resource counting etc.. + */ + +/* + * Make sure gcc doesn't try to be clever and move things around + * on us. We need to use _exactly_ the address the user gave us, + * not some alias that contains the same information. + */ +typedef struct { volatile int counter; } atomic_t; + +#define ATOMIC_INIT(i) { (i) } + +/** + * atomic_read - read atomic variable + * @v: pointer of type atomic_t + * + * Atomically reads the value of @v. + */ +#define atomic_read(v) ((v)->counter) + +/** + * atomic_set - set atomic variable + * @v: pointer of type atomic_t + * @i: required value + * + * Atomically sets the value of @v to @i. + */ +#define atomic_set(v,i) (((v)->counter) = (i)) + +/** + * atomic_add - add integer to atomic variable + * @i: integer value to add + * @v: pointer of type atomic_t + * + * Atomically adds @i to @v. + */ +static __inline__ void atomic_add(int i, atomic_t *v) +{ + __asm__ __volatile__( + LOCK "addl %1,%0" + :"=m" (v->counter) + :"ir" (i), "m" (v->counter)); +} + +/** + * atomic_sub - subtract the atomic variable + * @i: integer value to subtract + * @v: pointer of type atomic_t + * + * Atomically subtracts @i from @v. + */ +static __inline__ void atomic_sub(int i, atomic_t *v) +{ + __asm__ __volatile__( + LOCK "subl %1,%0" + :"=m" (v->counter) + :"ir" (i), "m" (v->counter)); +} + +/** + * atomic_sub_and_test - subtract value from variable and test result + * @i: integer value to subtract + * @v: pointer of type atomic_t + * + * Atomically subtracts @i from @v and returns + * true if the result is zero, or false for all + * other cases. + */ +static __inline__ int atomic_sub_and_test(int i, atomic_t *v) +{ + unsigned char c; + + __asm__ __volatile__( + LOCK "subl %2,%0; sete %1" + :"=m" (v->counter), "=qm" (c) + :"ir" (i), "m" (v->counter) : "memory"); + return c; +} + +/** + * atomic_inc - increment atomic variable + * @v: pointer of type atomic_t + * + * Atomically increments @v by 1. + */ +static __inline__ void atomic_inc(atomic_t *v) +{ + __asm__ __volatile__( + LOCK "incl %0" + :"=m" (v->counter) + :"m" (v->counter)); +} + +/** + * atomic_dec - decrement atomic variable + * @v: pointer of type atomic_t + * + * Atomically decrements @v by 1. + */ +static __inline__ void atomic_dec(atomic_t *v) +{ + __asm__ __volatile__( + LOCK "decl %0" + :"=m" (v->counter) + :"m" (v->counter)); +} + +/** + * atomic_dec_and_test - decrement and test + * @v: pointer of type atomic_t + * + * Atomically decrements @v by 1 and + * returns true if the result is 0, or false for all other + * cases. + */ +static __inline__ int atomic_dec_and_test(atomic_t *v) +{ + unsigned char c; + + __asm__ __volatile__( + LOCK "decl %0; sete %1" + :"=m" (v->counter), "=qm" (c) + :"m" (v->counter) : "memory"); + return c != 0; +} + +/** + * atomic_inc_and_test - increment and test + * @v: pointer of type atomic_t + * + * Atomically increments @v by 1 + * and returns true if the result is zero, or false for all + * other cases. + */ +static __inline__ int atomic_inc_and_test(atomic_t *v) +{ + unsigned char c; + + __asm__ __volatile__( + LOCK "incl %0; sete %1" + :"=m" (v->counter), "=qm" (c) + :"m" (v->counter) : "memory"); + return c != 0; +} + +/** + * atomic_add_negative - add and test if negative + * @v: pointer of type atomic_t + * @i: integer value to add + * + * Atomically adds @i to @v and returns true + * if the result is negative, or false when + * result is greater than or equal to zero. + */ +static __inline__ int atomic_add_negative(int i, atomic_t *v) +{ + unsigned char c; + + __asm__ __volatile__( + LOCK "addl %2,%0; sets %1" + :"=m" (v->counter), "=qm" (c) + :"ir" (i), "m" (v->counter) : "memory"); + return c; +} + +/** + * atomic_add_return - add and return + * @v: pointer of type atomic_t + * @i: integer value to add + * + * Atomically adds @i to @v and returns @i + @v + */ +static __inline__ int atomic_add_return(int i, atomic_t *v) +{ + int __i; +#ifdef CONFIG_M386 + if(unlikely(boot_cpu_data.x86==3)) + goto no_xadd; +#endif + /* Modern 486+ processor */ + __i = i; + __asm__ __volatile__( + LOCK "xaddl %0, %1;" + :"=r"(i) + :"m"(v->counter), "0"(i)); + return i + __i; + +#ifdef CONFIG_M386 +no_xadd: /* Legacy 386 processor */ + local_irq_disable(); + __i = atomic_read(v); + atomic_set(v, i + __i); + local_irq_enable(); + return i + __i; +#endif +} + +static __inline__ int atomic_sub_return(int i, atomic_t *v) +{ + return atomic_add_return(-i,v); +} + +#define atomic_inc_return(v) (atomic_add_return(1,v)) +#define atomic_dec_return(v) (atomic_sub_return(1,v)) + +/* These are x86-specific, used by some header files */ +#define atomic_clear_mask(mask, addr) \ +__asm__ __volatile__(LOCK "andl %0,%1" \ +: : "r" (~(mask)),"m" (*addr) : "memory") + +#define atomic_set_mask(mask, addr) \ +__asm__ __volatile__(LOCK "orl %0,%1" \ +: : "r" (mask),"m" (*(addr)) : "memory") + +/* Atomic operations are already serializing on x86 */ +#define smp_mb__before_atomic_dec() barrier() +#define smp_mb__after_atomic_dec() barrier() +#define smp_mb__before_atomic_inc() barrier() +#define smp_mb__after_atomic_inc() barrier() + +#endif diff --git a/linux-2.6-xen-sparse/include/asm-i386/bitops.h b/linux-2.6-xen-sparse/include/asm-i386/bitops.h new file mode 100644 index 0000000000..29e05a4bad --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/bitops.h @@ -0,0 +1,457 @@ +#ifndef _I386_BITOPS_H +#define _I386_BITOPS_H + +/* + * Copyright 1992, Linus Torvalds. + */ + +#include <linux/config.h> +#include <linux/compiler.h> +#include <asm/smp_alt.h> + +/* + * These have to be done with inline assembly: that way the bit-setting + * is guaranteed to be atomic. All bit operations return 0 if the bit + * was cleared before the operation and != 0 if it was not. + * + * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1). + */ + +#define ADDR (*(volatile long *) addr) + +/** + * set_bit - Atomically set a bit in memory + * @nr: the bit to set + * @addr: the address to start counting from + * + * This function is atomic and may not be reordered. See __set_bit() + * if you do not require the atomic guarantees. + * + * Note: there are no guarantees that this function will not be reordered + * on non x86 architectures, so if you are writting portable code, + * make sure not to rely on its reordering guarantees. + * + * Note that @nr may be almost arbitrarily large; this function is not + * restricted to acting on a single-word quantity. + */ +static inline void set_bit(int nr, volatile unsigned long * addr) +{ + __asm__ __volatile__( LOCK + "btsl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} + +/** + * __set_bit - Set a bit in memory + * @nr: the bit to set + * @addr: the address to start counting from + * + * Unlike set_bit(), this function is non-atomic and may be reordered. + * If it's called on the same region of memory simultaneously, the effect + * may be that only one operation succeeds. + */ +static inline void __set_bit(int nr, volatile unsigned long * addr) +{ + __asm__( + "btsl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} + +/** + * clear_bit - Clears a bit in memory + * @nr: Bit to clear + * @addr: Address to start counting from + * + * clear_bit() is atomic and may not be reordered. However, it does + * not contain a memory barrier, so if it is used for locking purposes, + * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() + * in order to ensure changes are visible on other processors. + */ +static inline void clear_bit(int nr, volatile unsigned long * addr) +{ + __asm__ __volatile__( LOCK + "btrl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} + +static inline void __clear_bit(int nr, volatile unsigned long * addr) +{ + __asm__ __volatile__( + "btrl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} +#define smp_mb__before_clear_bit() barrier() +#define smp_mb__after_clear_bit() barrier() + +/** + * __change_bit - Toggle a bit in memory + * @nr: the bit to change + * @addr: the address to start counting from + * + * Unlike change_bit(), this function is non-atomic and may be reordered. + * If it's called on the same region of memory simultaneously, the effect + * may be that only one operation succeeds. + */ +static inline void __change_bit(int nr, volatile unsigned long * addr) +{ + __asm__ __volatile__( + "btcl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} + +/** + * change_bit - Toggle a bit in memory + * @nr: Bit to change + * @addr: Address to start counting from + * + * change_bit() is atomic and may not be reordered. It may be + * reordered on other architectures than x86. + * Note that @nr may be almost arbitrarily large; this function is not + * restricted to acting on a single-word quantity. + */ +static inline void change_bit(int nr, volatile unsigned long * addr) +{ + __asm__ __volatile__( LOCK + "btcl %1,%0" + :"=m" (ADDR) + :"Ir" (nr)); +} + +/** + * test_and_set_bit - Set a bit and return its old value + * @nr: Bit to set + * @addr: Address to count from + * + * This operation is atomic and cannot be reordered. + * It may be reordered on other architectures than x86. + * It also implies a memory barrier. + */ +static inline int test_and_set_bit(int nr, volatile unsigned long * addr) +{ + int oldbit; + + __asm__ __volatile__( LOCK + "btsl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr) : "memory"); + return oldbit; +} + +/** + * __test_and_set_bit - Set a bit and return its old value + * @nr: Bit to set + * @addr: Address to count from + * + * This operation is non-atomic and can be reordered. + * If two examples of this operation race, one can appear to succeed + * but actually fail. You must protect multiple accesses with a lock. + */ +static inline int __test_and_set_bit(int nr, volatile unsigned long * addr) +{ + int oldbit; + + __asm__( + "btsl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr)); + return oldbit; +} + +/** + * test_and_clear_bit - Clear a bit and return its old value + * @nr: Bit to clear + * @addr: Address to count from + * + * This operation is atomic and cannot be reordered. + * It can be reorderdered on other architectures other than x86. + * It also implies a memory barrier. + */ +static inline int test_and_clear_bit(int nr, volatile unsigned long * addr) +{ + int oldbit; + + __asm__ __volatile__( LOCK + "btrl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr) : "memory"); + return oldbit; +} + +/** + * __test_and_clear_bit - Clear a bit and return its old value + * @nr: Bit to clear + * @addr: Address to count from + * + * This operation is non-atomic and can be reordered. + * If two examples of this operation race, one can appear to succeed + * but actually fail. You must protect multiple accesses with a lock. + */ +static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr) +{ + int oldbit; + + __asm__( + "btrl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr)); + return oldbit; +} + +/* WARNING: non atomic and it can be reordered! */ +static inline int __test_and_change_bit(int nr, volatile unsigned long *addr) +{ + int oldbit; + + __asm__ __volatile__( + "btcl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr) : "memory"); + return oldbit; +} + +/** + * test_and_change_bit - Change a bit and return its old value + * @nr: Bit to change + * @addr: Address to count from + * + * This operation is atomic and cannot be reordered. + * It also implies a memory barrier. + */ +static inline int test_and_change_bit(int nr, volatile unsigned long* addr) +{ + int oldbit; + + __asm__ __volatile__( LOCK + "btcl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (ADDR) + :"Ir" (nr) : "memory"); + return oldbit; +} + +#if 0 /* Fool kernel-doc since it doesn't do macros yet */ +/** + * test_bit - Determine whether a bit is set + * @nr: bit number to test + * @addr: Address to start counting from + */ +static int test_bit(int nr, const volatile void * addr); +#endif + +static inline int constant_test_bit(int nr, const volatile unsigned long *addr) +{ + return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0; +} + +static inline int variable_test_bit(int nr, const volatile unsigned long * addr) +{ + int oldbit; + + __asm__ __volatile__( + "btl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit) + :"m" (ADDR),"Ir" (nr)); + return oldbit; +} + +#define test_bit(nr,addr) \ +(__builtin_constant_p(nr) ? \ + constant_test_bit((nr),(addr)) : \ + variable_test_bit((nr),(addr))) + +#undef ADDR + +/** + * find_first_zero_bit - find the first zero bit in a memory region + * @addr: The address to start the search at + * @size: The maximum size to search + * + * Returns the bit-number of the first zero bit, not the number of the byte + * containing a bit. + */ +static inline int find_first_zero_bit(const unsigned long *addr, unsigned size) +{ + int d0, d1, d2; + int res; + + if (!size) + return 0; + /* This looks at memory. Mark it volatile to tell gcc not to move it around */ + __asm__ __volatile__( + "movl $-1,%%eax\n\t" + "xorl %%edx,%%edx\n\t" + "repe; scasl\n\t" + "je 1f\n\t" + "xorl -4(%%edi),%%eax\n\t" + "subl $4,%%edi\n\t" + "bsfl %%eax,%%edx\n" + "1:\tsubl %%ebx,%%edi\n\t" + "shll $3,%%edi\n\t" + "addl %%edi,%%edx" + :"=d" (res), "=&c" (d0), "=&D" (d1), "=&a" (d2) + :"1" ((size + 31) >> 5), "2" (addr), "b" (addr) : "memory"); + return res; +} + +/** + * find_next_zero_bit - find the first zero bit in a memory region + * @addr: The address to base the search on + * @offset: The bitnumber to start searching at + * @size: The maximum size to search + */ +int find_next_zero_bit(const unsigned long *addr, int size, int offset); + +/** + * find_first_bit - find the first set bit in a memory region + * @addr: The address to start the search at + * @size: The maximum size to search + * + * Returns the bit-number of the first set bit, not the number of the byte + * containing a bit. + */ +static inline int find_first_bit(const unsigned long *addr, unsigned size) +{ + int d0, d1; + int res; + + /* This looks at memory. Mark it volatile to tell gcc not to move it around */ + __asm__ __volatile__( + "xorl %%eax,%%eax\n\t" + "repe; scasl\n\t" + "jz 1f\n\t" + "leal -4(%%edi),%%edi\n\t" + "bsfl (%%edi),%%eax\n" + "1:\tsubl %%ebx,%%edi\n\t" + "shll $3,%%edi\n\t" + "addl %%edi,%%eax" + :"=a" (res), "=&c" (d0), "=&D" (d1) + :"1" ((size + 31) >> 5), "2" (addr), "b" (addr) : "memory"); + return res; +} + +/** + * find_next_bit - find the first set bit in a memory region + * @addr: The address to base the search on + * @offset: The bitnumber to start searching at + * @size: The maximum size to search + */ +int find_next_bit(const unsigned long *addr, int size, int offset); + +/** + * ffz - find first zero in word. + * @word: The word to search + * + * Undefined if no zero exists, so code should check against ~0UL first. + */ +static inline unsigned long ffz(unsigned long word) +{ + __asm__("bsfl %1,%0" + :"=r" (word) + :"r" (~word)); + return word; +} + +/** + * __ffs - find first bit in word. + * @word: The word to search + * + * Undefined if no bit exists, so code should check against 0 first. + */ +static inline unsigned long __ffs(unsigned long word) +{ + __asm__("bsfl %1,%0" + :"=r" (word) + :"rm" (word)); + return word; +} + +/* + * fls: find last bit set. + */ + +#define fls(x) generic_fls(x) + +#ifdef __KERNEL__ + +/* + * Every architecture must define this function. It's the fastest + * way of searching a 140-bit bitmap where the first 100 bits are + * unlikely to be set. It's guaranteed that at least one of the 140 + * bits is cleared. + */ +static inline int sched_find_first_bit(const unsigned long *b) +{ + if (unlikely(b[0])) + return __ffs(b[0]); + if (unlikely(b[1])) + return __ffs(b[1]) + 32; + if (unlikely(b[2])) + return __ffs(b[2]) + 64; + if (b[3]) + return __ffs(b[3]) + 96; + return __ffs(b[4]) + 128; +} + +/** + * ffs - find first bit set + * @x: the word to search + * + * This is defined the same way as + * the libc and compiler builtin ffs routines, therefore + * differs in spirit from the above ffz (man ffs). + */ +static inline int ffs(int x) +{ + int r; + + __asm__("bsfl %1,%0\n\t" + "jnz 1f\n\t" + "movl $-1,%0\n" + "1:" : "=r" (r) : "rm" (x)); + return r+1; +} + +/** + * hweightN - returns the hamming weight of a N-bit word + * @x: the word to weigh + * + * The Hamming Weight of a number is the total number of bits set in it. + */ + +#define hweight32(x) generic_hweight32(x) +#define hweight16(x) generic_hweight16(x) +#define hweight8(x) generic_hweight8(x) + +#endif /* __KERNEL__ */ + +#ifdef __KERNEL__ + +#define ext2_set_bit(nr,addr) \ + __test_and_set_bit((nr),(unsigned long*)addr) +#define ext2_set_bit_atomic(lock,nr,addr) \ + test_and_set_bit((nr),(unsigned long*)addr) +#define ext2_clear_bit(nr, addr) \ + __test_and_clear_bit((nr),(unsigned long*)addr) +#define ext2_clear_bit_atomic(lock,nr, addr) \ + test_and_clear_bit((nr),(unsigned long*)addr) +#define ext2_test_bit(nr, addr) test_bit((nr),(unsigned long*)addr) +#define ext2_find_first_zero_bit(addr, size) \ + find_first_zero_bit((unsigned long*)addr, size) +#define ext2_find_next_zero_bit(addr, size, off) \ + find_next_zero_bit((unsigned long*)addr, size, off) + +/* Bitmap functions for the minix filesystem. */ +#define minix_test_and_set_bit(nr,addr) __test_and_set_bit(nr,(void*)addr) +#define minix_set_bit(nr,addr) __set_bit(nr,(void*)addr) +#define minix_test_and_clear_bit(nr,addr) __test_and_clear_bit(nr,(void*)addr) +#define minix_test_bit(nr,addr) test_bit(nr,(void*)addr) +#define minix_find_first_zero_bit(addr,size) \ + find_first_zero_bit((void*)addr,size) + +#endif /* __KERNEL__ */ + +#endif /* _I386_BITOPS_H */ diff --git a/linux-2.6-xen-sparse/include/asm-i386/mach-default/mach_traps.h b/linux-2.6-xen-sparse/include/asm-i386/mach-default/mach_traps.h new file mode 100644 index 0000000000..4e34a91be3 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-default/mach_traps.h @@ -0,0 +1,53 @@ +/* + * include/asm-i386/mach-default/mach_traps.h + * + * Machine specific NMI handling for generic. + * Split out from traps.c by Osamu Tomita <tomita@cinet.co.jp> + */ +#ifndef _MACH_TRAPS_H +#define _MACH_TRAPS_H + +#include <asm/mc146818rtc.h> + +static inline void clear_mem_error(unsigned char reason) +{ + reason = (reason & 0xf) | 4; + outb(reason, 0x61); +} + +static inline void clear_io_check_error(unsigned char reason) +{ + unsigned long i; + + reason = (reason & 0xf) | 8; + outb(reason, 0x61); + i = 2000; + while (--i) udelay(1000); + reason &= ~8; + outb(reason, 0x61); +} + +static inline unsigned char get_nmi_reason(void) +{ + return inb(0x61); +} + +static inline void reassert_nmi(void) +{ + int old_reg = -1; + + if (do_i_have_lock_cmos()) + old_reg = current_lock_cmos_reg(); + else + lock_cmos(0); /* register doesn't matter here */ + outb(0x8f, 0x70); + inb(0x71); /* dummy */ + outb(0x0f, 0x70); + inb(0x71); /* dummy */ + if (old_reg >= 0) + outb(old_reg, 0x70); + else + unlock_cmos(); +} + +#endif /* !_MACH_TRAPS_H */ diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/agp.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/agp.h index 138986300a..138986300a 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/agp.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/agp.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/desc.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h index 29c4211752..29c4211752 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/desc.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/desc.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/dma-mapping.h index e43cf21003..eaf824788c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/dma-mapping.h @@ -11,7 +11,7 @@ #include <asm/cache.h> #include <asm/io.h> #include <asm/scatterlist.h> -#include <asm-i386/swiotlb.h> +#include <asm/swiotlb.h> static inline int address_needs_mapping(struct device *hwdev, dma_addr_t addr) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/fixmap.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/fixmap.h index caac2e3f7c..1d2c4aa856 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/fixmap.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/fixmap.h @@ -27,7 +27,7 @@ #include <asm/acpi.h> #include <asm/apicdef.h> #include <asm/page.h> -#include <asm-xen/gnttab.h> +#include <xen/gnttab.h> #ifdef CONFIG_HIGHMEM #include <linux/threads.h> #include <asm/kmap_types.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/floppy.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/floppy.h index 2d5dd220ad..2d5dd220ad 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/floppy.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/floppy.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/highmem.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/highmem.h index ddf86feacf..ddf86feacf 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/highmem.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/highmem.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hw_irq.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hw_irq.h index c9523ed7c2..c9523ed7c2 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hw_irq.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hw_irq.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h index 96e12d1b22..1552bc568b 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h @@ -30,9 +30,9 @@ #ifndef __HYPERCALL_H__ #define __HYPERCALL_H__ -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/sched.h> -#include <asm-xen/xen-public/nmi.h> +#include <xen/interface/xen.h> +#include <xen/interface/sched.h> +#include <xen/interface/nmi.h> #define __STR(x) #x #define STR(x) __STR(x) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypervisor.h index 899734e1fb..00bbb3ad95 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypervisor.h @@ -34,8 +34,8 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/version.h> -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/dom0_ops.h> +#include <xen/interface/xen.h> +#include <xen/interface/dom0_ops.h> #include <asm/ptrace.h> #include <asm/page.h> #if defined(__i386__) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/io.h index eafb778df5..eafb778df5 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/io.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/kmap_types.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/kmap_types.h index 7a660e8e24..7a660e8e24 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/kmap_types.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/kmap_types.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu.h index 32987b80b1..32987b80b1 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu_context.h index 129f79aba0..129f79aba0 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mmu_context.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/mmu_context.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/page.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/page.h index d27891d7a2..95facf69e8 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/page.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/page.h @@ -17,8 +17,8 @@ #include <linux/types.h> #include <linux/kernel.h> #include <asm/bug.h> -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/foreign_page.h> +#include <xen/interface/xen.h> +#include <xen/foreign_page.h> #define arch_free_page(_page,_order) \ ({ int foreign = PageForeign(_page); \ diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/param.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/param.h index 5964228f06..5964228f06 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/param.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/param.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pci.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pci.h index 4e521c735d..4e521c735d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pci.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pci.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgalloc.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgalloc.h index 95f8d9dadb..95f8d9dadb 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgalloc.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgalloc.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h index 3791d2de39..3791d2de39 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level-defs.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level.h index ac5f7ace61..ac5f7ace61 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level-defs.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h index 10445c142c..10445c142c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level-defs.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level-defs.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h index eb77b6e02f..eb77b6e02f 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable.h index 9eaba23297..648098b7d7 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable.h @@ -412,7 +412,7 @@ do { \ ptep_set_access_flags(__vma, __address, __ptep, __entry, 1); \ } while (0) -#include <asm-xen/features.h> +#include <xen/features.h> void make_lowmem_page_readonly(void *va, unsigned int feature); void make_lowmem_page_writable(void *va, unsigned int feature); void make_page_readonly(void *va, unsigned int feature); diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/processor.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/processor.h index 2488ec4abc..2488ec4abc 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/processor.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/processor.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/ptrace.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ptrace.h index aa2e6248a9..aa2e6248a9 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/ptrace.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ptrace.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/scatterlist.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/scatterlist.h index bec2ff3c8b..bec2ff3c8b 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/scatterlist.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/scatterlist.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/segment.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/segment.h index 95edad964c..95edad964c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/segment.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/segment.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/setup.h index 5fd2eadc12..5fd2eadc12 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/setup.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/smp.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/smp.h index cf404f492b..cf404f492b 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/smp.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/smp.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/spinlock.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/spinlock.h index 4a6ff44f1d..4a6ff44f1d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/spinlock.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/spinlock.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/swiotlb.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/swiotlb.h index b38e56f1f5..b38e56f1f5 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/swiotlb.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/swiotlb.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h index 11f88c2507..11f88c2507 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/system.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/system.h index 0b6948437d..0b6948437d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/system.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/system.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/tlbflush.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/tlbflush.h index 4d13a650a2..4d13a650a2 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/tlbflush.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/tlbflush.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/vga.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/vga.h index 14b8209600..14b8209600 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/vga.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/vga.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/irq_vectors.h index 49e5ac07f0..49e5ac07f0 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/irq_vectors.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/mach_traps.h index 14c607962b..8daed2c0be 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/mach_traps.h @@ -7,7 +7,7 @@ #define _MACH_TRAPS_H #include <linux/bitops.h> -#include <asm-xen/xen-public/nmi.h> +#include <xen/interface/nmi.h> static inline void clear_mem_error(unsigned char reason) {} static inline void clear_io_check_error(unsigned char reason) {} diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h index fa7d6191b1..fa7d6191b1 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h index b18df6896c..b18df6896c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h +++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h diff --git a/linux-2.6-xen-sparse/include/asm-i386/rwsem.h b/linux-2.6-xen-sparse/include/asm-i386/rwsem.h new file mode 100644 index 0000000000..8ee70a1a31 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/rwsem.h @@ -0,0 +1,289 @@ +/* rwsem.h: R/W semaphores implemented using XADD/CMPXCHG for i486+ + * + * Written by David Howells (dhowells@redhat.com). + * + * Derived from asm-i386/semaphore.h + * + * + * The MSW of the count is the negated number of active writers and waiting + * lockers, and the LSW is the total number of active locks + * + * The lock count is initialized to 0 (no active and no waiting lockers). + * + * When a writer subtracts WRITE_BIAS, it'll get 0xffff0001 for the case of an + * uncontended lock. This can be determined because XADD returns the old value. + * Readers increment by 1 and see a positive value when uncontended, negative + * if there are writers (and maybe) readers waiting (in which case it goes to + * sleep). + * + * The value of WAITING_BIAS supports up to 32766 waiting processes. This can + * be extended to 65534 by manually checking the whole MSW rather than relying + * on the S flag. + * + * The value of ACTIVE_BIAS supports up to 65535 active processes. + * + * This should be totally fair - if anything is waiting, a process that wants a + * lock will go to the back of the queue. When the currently active lock is + * released, if there's a writer at the front of the queue, then that and only + * that will be woken up; if there's a bunch of consequtive readers at the + * front, then they'll all be woken up, but no other readers will be. + */ + +#ifndef _I386_RWSEM_H +#define _I386_RWSEM_H + +#ifndef _LINUX_RWSEM_H +#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead" +#endif + +#ifdef __KERNEL__ + +#include <linux/list.h> +#include <linux/spinlock.h> +#include <asm/smp_alt.h> + +struct rwsem_waiter; + +extern struct rw_semaphore *FASTCALL(rwsem_down_read_failed(struct rw_semaphore *sem)); +extern struct rw_semaphore *FASTCALL(rwsem_down_write_failed(struct rw_semaphore *sem)); +extern struct rw_semaphore *FASTCALL(rwsem_wake(struct rw_semaphore *)); +extern struct rw_semaphore *FASTCALL(rwsem_downgrade_wake(struct rw_semaphore *sem)); + +/* + * the semaphore definition + */ +struct rw_semaphore { + signed long count; +#define RWSEM_UNLOCKED_VALUE 0x00000000 +#define RWSEM_ACTIVE_BIAS 0x00000001 +#define RWSEM_ACTIVE_MASK 0x0000ffff +#define RWSEM_WAITING_BIAS (-0x00010000) +#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS +#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) + spinlock_t wait_lock; + struct list_head wait_list; +#if RWSEM_DEBUG + int debug; +#endif +}; + +/* + * initialisation + */ +#if RWSEM_DEBUG +#define __RWSEM_DEBUG_INIT , 0 +#else +#define __RWSEM_DEBUG_INIT /* */ +#endif + +#define __RWSEM_INITIALIZER(name) \ +{ RWSEM_UNLOCKED_VALUE, SPIN_LOCK_UNLOCKED, LIST_HEAD_INIT((name).wait_list) \ + __RWSEM_DEBUG_INIT } + +#define DECLARE_RWSEM(name) \ + struct rw_semaphore name = __RWSEM_INITIALIZER(name) + +static inline void init_rwsem(struct rw_semaphore *sem) +{ + sem->count = RWSEM_UNLOCKED_VALUE; + spin_lock_init(&sem->wait_lock); + INIT_LIST_HEAD(&sem->wait_list); +#if RWSEM_DEBUG + sem->debug = 0; +#endif +} + +/* + * lock for reading + */ +static inline void __down_read(struct rw_semaphore *sem) +{ + __asm__ __volatile__( + "# beginning down_read\n\t" +LOCK " incl (%%eax)\n\t" /* adds 0x00000001, returns the old value */ + " js 2f\n\t" /* jump if we weren't granted the lock */ + "1:\n\t" + LOCK_SECTION_START("") + "2:\n\t" + " pushl %%ecx\n\t" + " pushl %%edx\n\t" + " call rwsem_down_read_failed\n\t" + " popl %%edx\n\t" + " popl %%ecx\n\t" + " jmp 1b\n" + LOCK_SECTION_END + "# ending down_read\n\t" + : "=m"(sem->count) + : "a"(sem), "m"(sem->count) + : "memory", "cc"); +} + +/* + * trylock for reading -- returns 1 if successful, 0 if contention + */ +static inline int __down_read_trylock(struct rw_semaphore *sem) +{ + __s32 result, tmp; + __asm__ __volatile__( + "# beginning __down_read_trylock\n\t" + " movl %0,%1\n\t" + "1:\n\t" + " movl %1,%2\n\t" + " addl %3,%2\n\t" + " jle 2f\n\t" +LOCK " cmpxchgl %2,%0\n\t" + " jnz 1b\n\t" + "2:\n\t" + "# ending __down_read_trylock\n\t" + : "+m"(sem->count), "=&a"(result), "=&r"(tmp) + : "i"(RWSEM_ACTIVE_READ_BIAS) + : "memory", "cc"); + return result>=0 ? 1 : 0; +} + +/* + * lock for writing + */ +static inline void __down_write(struct rw_semaphore *sem) +{ + int tmp; + + tmp = RWSEM_ACTIVE_WRITE_BIAS; + __asm__ __volatile__( + "# beginning down_write\n\t" +LOCK " xadd %%edx,(%%eax)\n\t" /* subtract 0x0000ffff, returns the old value */ + " testl %%edx,%%edx\n\t" /* was the count 0 before? */ + " jnz 2f\n\t" /* jump if we weren't granted the lock */ + "1:\n\t" + LOCK_SECTION_START("") + "2:\n\t" + " pushl %%ecx\n\t" + " call rwsem_down_write_failed\n\t" + " popl %%ecx\n\t" + " jmp 1b\n" + LOCK_SECTION_END + "# ending down_write" + : "=m"(sem->count), "=d"(tmp) + : "a"(sem), "1"(tmp), "m"(sem->count) + : "memory", "cc"); +} + +/* + * trylock for writing -- returns 1 if successful, 0 if contention + */ +static inline int __down_write_trylock(struct rw_semaphore *sem) +{ + signed long ret = cmpxchg(&sem->count, + RWSEM_UNLOCKED_VALUE, + RWSEM_ACTIVE_WRITE_BIAS); + if (ret == RWSEM_UNLOCKED_VALUE) + return 1; + return 0; +} + +/* + * unlock after reading + */ +static inline void __up_read(struct rw_semaphore *sem) +{ + __s32 tmp = -RWSEM_ACTIVE_READ_BIAS; + __asm__ __volatile__( + "# beginning __up_read\n\t" +LOCK " xadd %%edx,(%%eax)\n\t" /* subtracts 1, returns the old value */ + " js 2f\n\t" /* jump if the lock is being waited upon */ + "1:\n\t" + LOCK_SECTION_START("") + "2:\n\t" + " decw %%dx\n\t" /* do nothing if still outstanding active readers */ + " jnz 1b\n\t" + " pushl %%ecx\n\t" + " call rwsem_wake\n\t" + " popl %%ecx\n\t" + " jmp 1b\n" + LOCK_SECTION_END + "# ending __up_read\n" + : "=m"(sem->count), "=d"(tmp) + : "a"(sem), "1"(tmp), "m"(sem->count) + : "memory", "cc"); +} + +/* + * unlock after writing + */ +static inline void __up_write(struct rw_semaphore *sem) +{ + __asm__ __volatile__( + "# beginning __up_write\n\t" + " movl %2,%%edx\n\t" +LOCK " xaddl %%edx,(%%eax)\n\t" /* tries to transition 0xffff0001 -> 0x00000000 */ + " jnz 2f\n\t" /* jump if the lock is being waited upon */ + "1:\n\t" + LOCK_SECTION_START("") + "2:\n\t" + " decw %%dx\n\t" /* did the active count reduce to 0? */ + " jnz 1b\n\t" /* jump back if not */ + " pushl %%ecx\n\t" + " call rwsem_wake\n\t" + " popl %%ecx\n\t" + " jmp 1b\n" + LOCK_SECTION_END + "# ending __up_write\n" + : "=m"(sem->count) + : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS), "m"(sem->count) + : "memory", "cc", "edx"); +} + +/* + * downgrade write lock to read lock + */ +static inline void __downgrade_write(struct rw_semaphore *sem) +{ + __asm__ __volatile__( + "# beginning __downgrade_write\n\t" +LOCK " addl %2,(%%eax)\n\t" /* transitions 0xZZZZ0001 -> 0xYYYY0001 */ + " js 2f\n\t" /* jump if the lock is being waited upon */ + "1:\n\t" + LOCK_SECTION_START("") + "2:\n\t" + " pushl %%ecx\n\t" + " pushl %%edx\n\t" + " call rwsem_downgrade_wake\n\t" + " popl %%edx\n\t" + " popl %%ecx\n\t" + " jmp 1b\n" + LOCK_SECTION_END + "# ending __downgrade_write\n" + : "=m"(sem->count) + : "a"(sem), "i"(-RWSEM_WAITING_BIAS), "m"(sem->count) + : "memory", "cc"); +} + +/* + * implement atomic add functionality + */ +static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) +{ + __asm__ __volatile__( +LOCK "addl %1,%0" + : "=m"(sem->count) + : "ir"(delta), "m"(sem->count)); +} + +/* + * implement exchange and add functionality + */ +static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) +{ + int tmp = delta; + + __asm__ __volatile__( +LOCK "xadd %0,(%2)" + : "+r"(tmp), "=m"(sem->count) + : "r"(sem), "m"(sem->count) + : "memory"); + + return tmp+delta; +} + +#endif /* __KERNEL__ */ +#endif /* _I386_RWSEM_H */ diff --git a/linux-2.6-xen-sparse/include/asm-i386/smp_alt.h b/linux-2.6-xen-sparse/include/asm-i386/smp_alt.h new file mode 100644 index 0000000000..67307c3d33 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/smp_alt.h @@ -0,0 +1,32 @@ +#ifndef __ASM_SMP_ALT_H__ +#define __ASM_SMP_ALT_H__ + +#include <linux/config.h> + +#ifdef CONFIG_SMP +#if defined(CONFIG_SMP_ALTERNATIVES) && !defined(MODULE) +#define LOCK \ + "6677: nop\n" \ + ".section __smp_alternatives,\"a\"\n" \ + ".long 6677b\n" \ + ".long 6678f\n" \ + ".previous\n" \ + ".section __smp_replacements,\"a\"\n" \ + "6678: .byte 1\n" \ + ".byte 1\n" \ + ".byte 0\n" \ + ".byte 1\n" \ + ".byte -1\n" \ + "lock\n" \ + "nop\n" \ + ".previous\n" +void prepare_for_smp(void); +void unprepare_for_smp(void); +#else +#define LOCK "lock ; " +#endif +#else +#define LOCK "" +#endif + +#endif /* __ASM_SMP_ALT_H__ */ diff --git a/linux-2.6-xen-sparse/include/asm-i386/spinlock.h b/linux-2.6-xen-sparse/include/asm-i386/spinlock.h new file mode 100644 index 0000000000..d85439f9a1 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/spinlock.h @@ -0,0 +1,277 @@ +#ifndef __ASM_SPINLOCK_H +#define __ASM_SPINLOCK_H + +#include <asm/atomic.h> +#include <asm/rwlock.h> +#include <asm/page.h> +#include <linux/config.h> +#include <linux/compiler.h> +#include <asm/smp_alt.h> + +asmlinkage int printk(const char * fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +/* + * Your basic SMP spinlocks, allowing only a single CPU anywhere + */ + +typedef struct { + volatile unsigned int slock; +#ifdef CONFIG_DEBUG_SPINLOCK + unsigned magic; +#endif +#ifdef CONFIG_PREEMPT + unsigned int break_lock; +#endif +} spinlock_t; + +#define SPINLOCK_MAGIC 0xdead4ead + +#ifdef CONFIG_DEBUG_SPINLOCK +#define SPINLOCK_MAGIC_INIT , SPINLOCK_MAGIC +#else +#define SPINLOCK_MAGIC_INIT /* */ +#endif + +#define SPIN_LOCK_UNLOCKED (spinlock_t) { 1 SPINLOCK_MAGIC_INIT } + +#define spin_lock_init(x) do { *(x) = SPIN_LOCK_UNLOCKED; } while(0) + +/* + * Simple spin lock operations. There are two variants, one clears IRQ's + * on the local processor, one does not. + * + * We make no fairness assumptions. They have a cost. + */ + +#define spin_is_locked(x) (*(volatile signed char *)(&(x)->slock) <= 0) +#define spin_unlock_wait(x) do { barrier(); } while(spin_is_locked(x)) + +#define spin_lock_string \ + "1:\n" \ + LOCK \ + "decb %0\n\t" \ + "jns 3f\n" \ + "2:\t" \ + "rep;nop\n\t" \ + "cmpb $0,%0\n\t" \ + "jle 2b\n\t" \ + "jmp 1b\n" \ + "3:\n\t" + +#define spin_lock_string_flags \ + "1:\n" \ + LOCK \ + "decb %0\n\t" \ + "jns 4f\n\t" \ + "2:\t" \ + "testl $0x200, %1\n\t" \ + "jz 3f\n\t" \ + "sti\n\t" \ + "3:\t" \ + "rep;nop\n\t" \ + "cmpb $0, %0\n\t" \ + "jle 3b\n\t" \ + "cli\n\t" \ + "jmp 1b\n" \ + "4:\n\t" + +/* + * This works. Despite all the confusion. + * (except on PPro SMP or if we are using OOSTORE) + * (PPro errata 66, 92) + */ + +#if !defined(CONFIG_X86_OOSTORE) && !defined(CONFIG_X86_PPRO_FENCE) + +#define spin_unlock_string \ + "movb $1,%0" \ + :"=m" (lock->slock) : : "memory" + + +static inline void _raw_spin_unlock(spinlock_t *lock) +{ +#ifdef CONFIG_DEBUG_SPINLOCK + BUG_ON(lock->magic != SPINLOCK_MAGIC); + BUG_ON(!spin_is_locked(lock)); +#endif + __asm__ __volatile__( + spin_unlock_string + ); +} + +#else + +#define spin_unlock_string \ + "xchgb %b0, %1" \ + :"=q" (oldval), "=m" (lock->slock) \ + :"0" (oldval) : "memory" + +static inline void _raw_spin_unlock(spinlock_t *lock) +{ + char oldval = 1; +#ifdef CONFIG_DEBUG_SPINLOCK + BUG_ON(lock->magic != SPINLOCK_MAGIC); + BUG_ON(!spin_is_locked(lock)); +#endif + __asm__ __volatile__( + spin_unlock_string + ); +} + +#endif + +static inline int _raw_spin_trylock(spinlock_t *lock) +{ + char oldval; +#ifdef CONFIG_SMP_ALTERNATIVES + __asm__ __volatile__( + "1:movb %1,%b0\n" + "movb $0,%1\n" + "2:" + ".section __smp_alternatives,\"a\"\n" + ".long 1b\n" + ".long 3f\n" + ".previous\n" + ".section __smp_replacements,\"a\"\n" + "3: .byte 2b - 1b\n" + ".byte 5f-4f\n" + ".byte 0\n" + ".byte 6f-5f\n" + ".byte -1\n" + "4: xchgb %b0,%1\n" + "5: movb %1,%b0\n" + "movb $0,%1\n" + "6:\n" + ".previous\n" + :"=q" (oldval), "=m" (lock->slock) + :"0" (0) : "memory"); +#else + __asm__ __volatile__( + "xchgb %b0,%1\n" + :"=q" (oldval), "=m" (lock->slock) + :"0" (0) : "memory"); +#endif + return oldval > 0; +} + +static inline void _raw_spin_lock(spinlock_t *lock) +{ +#ifdef CONFIG_DEBUG_SPINLOCK + if (unlikely(lock->magic != SPINLOCK_MAGIC)) { + printk("eip: %p\n", __builtin_return_address(0)); + BUG(); + } +#endif + __asm__ __volatile__( + spin_lock_string + :"=m" (lock->slock) : : "memory"); +} + +static inline void _raw_spin_lock_flags (spinlock_t *lock, unsigned long flags) +{ +#ifdef CONFIG_DEBUG_SPINLOCK + if (unlikely(lock->magic != SPINLOCK_MAGIC)) { + printk("eip: %p\n", __builtin_return_address(0)); + BUG(); + } +#endif + __asm__ __volatile__( + spin_lock_string_flags + :"=m" (lock->slock) : "r" (flags) : "memory"); +} + +/* + * Read-write spinlocks, allowing multiple readers + * but only one writer. + * + * NOTE! it is quite common to have readers in interrupts + * but no interrupt writers. For those circumstances we + * can "mix" irq-safe locks - any writer needs to get a + * irq-safe write-lock, but readers can get non-irqsafe + * read-locks. + */ +typedef struct { + volatile unsigned int lock; +#ifdef CONFIG_DEBUG_SPINLOCK + unsigned magic; +#endif +#ifdef CONFIG_PREEMPT + unsigned int break_lock; +#endif +} rwlock_t; + +#define RWLOCK_MAGIC 0xdeaf1eed + +#ifdef CONFIG_DEBUG_SPINLOCK +#define RWLOCK_MAGIC_INIT , RWLOCK_MAGIC +#else +#define RWLOCK_MAGIC_INIT /* */ +#endif + +#define RW_LOCK_UNLOCKED (rwlock_t) { RW_LOCK_BIAS RWLOCK_MAGIC_INIT } + +#define rwlock_init(x) do { *(x) = RW_LOCK_UNLOCKED; } while(0) + +/** + * read_can_lock - would read_trylock() succeed? + * @lock: the rwlock in question. + */ +#define read_can_lock(x) ((int)(x)->lock > 0) + +/** + * write_can_lock - would write_trylock() succeed? + * @lock: the rwlock in question. + */ +#define write_can_lock(x) ((x)->lock == RW_LOCK_BIAS) + +/* + * On x86, we implement read-write locks as a 32-bit counter + * with the high bit (sign) being the "contended" bit. + * + * The inline assembly is non-obvious. Think about it. + * + * Changed to use the same technique as rw semaphores. See + * semaphore.h for details. -ben + */ +/* the spinlock helpers are in arch/i386/kernel/semaphore.c */ + +static inline void _raw_read_lock(rwlock_t *rw) +{ +#ifdef CONFIG_DEBUG_SPINLOCK + BUG_ON(rw->magic != RWLOCK_MAGIC); +#endif + __build_read_lock(rw, "__read_lock_failed"); +} + +static inline void _raw_write_lock(rwlock_t *rw) +{ +#ifdef CONFIG_DEBUG_SPINLOCK + BUG_ON(rw->magic != RWLOCK_MAGIC); +#endif + __build_write_lock(rw, "__write_lock_failed"); +} + +#define _raw_read_unlock(rw) asm volatile(LOCK "incl %0" :"=m" ((rw)->lock) : : "memory") +#define _raw_write_unlock(rw) asm volatile(LOCK "addl $" RW_LOCK_BIAS_STR ",%0":"=m" ((rw)->lock) : : "memory") + +static inline int _raw_read_trylock(rwlock_t *lock) +{ + atomic_t *count = (atomic_t *)lock; + atomic_dec(count); + if (atomic_read(count) >= 0) + return 1; + atomic_inc(count); + return 0; +} + +static inline int _raw_write_trylock(rwlock_t *lock) +{ + atomic_t *count = (atomic_t *)lock; + if (atomic_sub_and_test(RW_LOCK_BIAS, count)) + return 1; + atomic_add(RW_LOCK_BIAS, count); + return 0; +} + +#endif /* __ASM_SPINLOCK_H */ diff --git a/linux-2.6-xen-sparse/include/asm-i386/system.h b/linux-2.6-xen-sparse/include/asm-i386/system.h new file mode 100644 index 0000000000..5130cef6dc --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-i386/system.h @@ -0,0 +1,517 @@ +#ifndef __ASM_SYSTEM_H +#define __ASM_SYSTEM_H + +#include <linux/config.h> +#include <linux/kernel.h> +#include <asm/segment.h> +#include <asm/cpufeature.h> +#include <asm/smp_alt.h> + +#ifdef __KERNEL__ + +struct task_struct; /* one of the stranger aspects of C forward declarations.. */ +extern struct task_struct * FASTCALL(__switch_to(struct task_struct *prev, struct task_struct *next)); + +#define switch_to(prev,next,last) do { \ + unsigned long esi,edi; \ + asm volatile("pushfl\n\t" \ + "pushl %%ebp\n\t" \ + "movl %%esp,%0\n\t" /* save ESP */ \ + "movl %5,%%esp\n\t" /* restore ESP */ \ + "movl $1f,%1\n\t" /* save EIP */ \ + "pushl %6\n\t" /* restore EIP */ \ + "jmp __switch_to\n" \ + "1:\t" \ + "popl %%ebp\n\t" \ + "popfl" \ + :"=m" (prev->thread.esp),"=m" (prev->thread.eip), \ + "=a" (last),"=S" (esi),"=D" (edi) \ + :"m" (next->thread.esp),"m" (next->thread.eip), \ + "2" (prev), "d" (next)); \ +} while (0) + +#define _set_base(addr,base) do { unsigned long __pr; \ +__asm__ __volatile__ ("movw %%dx,%1\n\t" \ + "rorl $16,%%edx\n\t" \ + "movb %%dl,%2\n\t" \ + "movb %%dh,%3" \ + :"=&d" (__pr) \ + :"m" (*((addr)+2)), \ + "m" (*((addr)+4)), \ + "m" (*((addr)+7)), \ + "0" (base) \ + ); } while(0) + +#define _set_limit(addr,limit) do { unsigned long __lr; \ +__asm__ __volatile__ ("movw %%dx,%1\n\t" \ + "rorl $16,%%edx\n\t" \ + "movb %2,%%dh\n\t" \ + "andb $0xf0,%%dh\n\t" \ + "orb %%dh,%%dl\n\t" \ + "movb %%dl,%2" \ + :"=&d" (__lr) \ + :"m" (*(addr)), \ + "m" (*((addr)+6)), \ + "0" (limit) \ + ); } while(0) + +#define set_base(ldt,base) _set_base( ((char *)&(ldt)) , (base) ) +#define set_limit(ldt,limit) _set_limit( ((char *)&(ldt)) , ((limit)-1)>>12 ) + +static inline unsigned long _get_base(char * addr) +{ + unsigned long __base; + __asm__("movb %3,%%dh\n\t" + "movb %2,%%dl\n\t" + "shll $16,%%edx\n\t" + "movw %1,%%dx" + :"=&d" (__base) + :"m" (*((addr)+2)), + "m" (*((addr)+4)), + "m" (*((addr)+7))); + return __base; +} + +#define get_base(ldt) _get_base( ((char *)&(ldt)) ) + +/* + * Load a segment. Fall back on loading the zero + * segment if something goes wrong.. + */ +#define loadsegment(seg,value) \ + asm volatile("\n" \ + "1:\t" \ + "mov %0,%%" #seg "\n" \ + "2:\n" \ + ".section .fixup,\"ax\"\n" \ + "3:\t" \ + "pushl $0\n\t" \ + "popl %%" #seg "\n\t" \ + "jmp 2b\n" \ + ".previous\n" \ + ".section __ex_table,\"a\"\n\t" \ + ".align 4\n\t" \ + ".long 1b,3b\n" \ + ".previous" \ + : :"m" (value)) + +/* + * Save a segment register away + */ +#define savesegment(seg, value) \ + asm volatile("mov %%" #seg ",%0":"=m" (value)) + +/* + * Clear and set 'TS' bit respectively + */ +#define clts() __asm__ __volatile__ ("clts") +#define read_cr0() ({ \ + unsigned int __dummy; \ + __asm__( \ + "movl %%cr0,%0\n\t" \ + :"=r" (__dummy)); \ + __dummy; \ +}) +#define write_cr0(x) \ + __asm__("movl %0,%%cr0": :"r" (x)); + +#define read_cr4() ({ \ + unsigned int __dummy; \ + __asm__( \ + "movl %%cr4,%0\n\t" \ + :"=r" (__dummy)); \ + __dummy; \ +}) +#define write_cr4(x) \ + __asm__("movl %0,%%cr4": :"r" (x)); +#define stts() write_cr0(8 | read_cr0()) + +#endif /* __KERNEL__ */ + +#define wbinvd() \ + __asm__ __volatile__ ("wbinvd": : :"memory"); + +static inline unsigned long get_limit(unsigned long segment) +{ + unsigned long __limit; + __asm__("lsll %1,%0" + :"=r" (__limit):"r" (segment)); + return __limit+1; +} + +#define nop() __asm__ __volatile__ ("nop") + +#define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) + +#define tas(ptr) (xchg((ptr),1)) + +struct __xchg_dummy { unsigned long a[100]; }; +#define __xg(x) ((struct __xchg_dummy *)(x)) + + +/* + * The semantics of XCHGCMP8B are a bit strange, this is why + * there is a loop and the loading of %%eax and %%edx has to + * be inside. This inlines well in most cases, the cached + * cost is around ~38 cycles. (in the future we might want + * to do an SIMD/3DNOW!/MMX/FPU 64-bit store here, but that + * might have an implicit FPU-save as a cost, so it's not + * clear which path to go.) + * + * cmpxchg8b must be used with the lock prefix here to allow + * the instruction to be executed atomically, see page 3-102 + * of the instruction set reference 24319102.pdf. We need + * the reader side to see the coherent 64bit value. + */ +static inline void __set_64bit (unsigned long long * ptr, + unsigned int low, unsigned int high) +{ + __asm__ __volatile__ ( + "\n1:\t" + "movl (%0), %%eax\n\t" + "movl 4(%0), %%edx\n\t" + "lock cmpxchg8b (%0)\n\t" + "jnz 1b" + : /* no outputs */ + : "D"(ptr), + "b"(low), + "c"(high) + : "ax","dx","memory"); +} + +static inline void __set_64bit_constant (unsigned long long *ptr, + unsigned long long value) +{ + __set_64bit(ptr,(unsigned int)(value), (unsigned int)((value)>>32ULL)); +} +#define ll_low(x) *(((unsigned int*)&(x))+0) +#define ll_high(x) *(((unsigned int*)&(x))+1) + +static inline void __set_64bit_var (unsigned long long *ptr, + unsigned long long value) +{ + __set_64bit(ptr,ll_low(value), ll_high(value)); +} + +#define set_64bit(ptr,value) \ +(__builtin_constant_p(value) ? \ + __set_64bit_constant(ptr, value) : \ + __set_64bit_var(ptr, value) ) + +#define _set_64bit(ptr,value) \ +(__builtin_constant_p(value) ? \ + __set_64bit(ptr, (unsigned int)(value), (unsigned int)((value)>>32ULL) ) : \ + __set_64bit(ptr, ll_low(value), ll_high(value)) ) + +/* + * Note: no "lock" prefix even on SMP: xchg always implies lock anyway + * Note 2: xchg has side effect, so that attribute volatile is necessary, + * but generally the primitive is invalid, *ptr is output argument. --ANK + */ +static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) +{ + switch (size) { + case 1: + __asm__ __volatile__("xchgb %b0,%1" + :"=q" (x) + :"m" (*__xg(ptr)), "0" (x) + :"memory"); + break; + case 2: + __asm__ __volatile__("xchgw %w0,%1" + :"=r" (x) + :"m" (*__xg(ptr)), "0" (x) + :"memory"); + break; + case 4: + __asm__ __volatile__("xchgl %0,%1" + :"=r" (x) + :"m" (*__xg(ptr)), "0" (x) + :"memory"); + break; + } + return x; +} + +/* + * Atomic compare and exchange. Compare OLD with MEM, if identical, + * store NEW in MEM. Return the initial value in MEM. Success is + * indicated by comparing RETURN with OLD. + */ + +#ifdef CONFIG_X86_CMPXCHG +#define __HAVE_ARCH_CMPXCHG 1 +#endif + +static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) +{ + unsigned long prev; + switch (size) { + case 1: + __asm__ __volatile__(LOCK "cmpxchgb %b1,%2" + : "=a"(prev) + : "q"(new), "m"(*__xg(ptr)), "0"(old) + : "memory"); + return prev; + case 2: + __asm__ __volatile__(LOCK "cmpxchgw %w1,%2" + : "=a"(prev) + : "q"(new), "m"(*__xg(ptr)), "0"(old) + : "memory"); + return prev; + case 4: + __asm__ __volatile__(LOCK "cmpxchgl %1,%2" + : "=a"(prev) + : "q"(new), "m"(*__xg(ptr)), "0"(old) + : "memory"); + return prev; + } + return old; +} + +#define cmpxchg(ptr,o,n)\ + ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ + (unsigned long)(n),sizeof(*(ptr)))) + +#ifdef __KERNEL__ +struct alt_instr { + __u8 *instr; /* original instruction */ + __u8 *replacement; + __u8 cpuid; /* cpuid bit set for replacement */ + __u8 instrlen; /* length of original instruction */ + __u8 replacementlen; /* length of new instruction, <= instrlen */ + __u8 pad; +}; +#endif + +/* + * Alternative instructions for different CPU types or capabilities. + * + * This allows to use optimized instructions even on generic binary + * kernels. + * + * length of oldinstr must be longer or equal the length of newinstr + * It can be padded with nops as needed. + * + * For non barrier like inlines please define new variants + * without volatile and memory clobber. + */ +#define alternative(oldinstr, newinstr, feature) \ + asm volatile ("661:\n\t" oldinstr "\n662:\n" \ + ".section .altinstructions,\"a\"\n" \ + " .align 4\n" \ + " .long 661b\n" /* label */ \ + " .long 663f\n" /* new instruction */ \ + " .byte %c0\n" /* feature bit */ \ + " .byte 662b-661b\n" /* sourcelen */ \ + " .byte 664f-663f\n" /* replacementlen */ \ + ".previous\n" \ + ".section .altinstr_replacement,\"ax\"\n" \ + "663:\n\t" newinstr "\n664:\n" /* replacement */ \ + ".previous" :: "i" (feature) : "memory") + +/* + * Alternative inline assembly with input. + * + * Pecularities: + * No memory clobber here. + * Argument numbers start with 1. + * Best is to use constraints that are fixed size (like (%1) ... "r") + * If you use variable sized constraints like "m" or "g" in the + * replacement maake sure to pad to the worst case length. + */ +#define alternative_input(oldinstr, newinstr, feature, input...) \ + asm volatile ("661:\n\t" oldinstr "\n662:\n" \ + ".section .altinstructions,\"a\"\n" \ + " .align 4\n" \ + " .long 661b\n" /* label */ \ + " .long 663f\n" /* new instruction */ \ + " .byte %c0\n" /* feature bit */ \ + " .byte 662b-661b\n" /* sourcelen */ \ + " .byte 664f-663f\n" /* replacementlen */ \ + ".previous\n" \ + ".section .altinstr_replacement,\"ax\"\n" \ + "663:\n\t" newinstr "\n664:\n" /* replacement */ \ + ".previous" :: "i" (feature), ##input) + +/* + * Force strict CPU ordering. + * And yes, this is required on UP too when we're talking + * to devices. + * + * For now, "wmb()" doesn't actually do anything, as all + * Intel CPU's follow what Intel calls a *Processor Order*, + * in which all writes are seen in the program order even + * outside the CPU. + * + * I expect future Intel CPU's to have a weaker ordering, + * but I'd also expect them to finally get their act together + * and add some real memory barriers if so. + * + * Some non intel clones support out of order store. wmb() ceases to be a + * nop for these. + */ + + +/* + * Actually only lfence would be needed for mb() because all stores done + * by the kernel should be already ordered. But keep a full barrier for now. + */ + +#define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) +#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) + +/** + * read_barrier_depends - Flush all pending reads that subsequents reads + * depend on. + * + * No data-dependent reads from memory-like regions are ever reordered + * over this barrier. All reads preceding this primitive are guaranteed + * to access memory (but not necessarily other CPUs' caches) before any + * reads following this primitive that depend on the data return by + * any of the preceding reads. This primitive is much lighter weight than + * rmb() on most CPUs, and is never heavier weight than is + * rmb(). + * + * These ordering constraints are respected by both the local CPU + * and the compiler. + * + * Ordering is not guaranteed by anything other than these primitives, + * not even by data dependencies. See the documentation for + * memory_barrier() for examples and URLs to more information. + * + * For example, the following code would force ordering (the initial + * value of "a" is zero, "b" is one, and "p" is "&a"): + * + * <programlisting> + * CPU 0 CPU 1 + * + * b = 2; + * memory_barrier(); + * p = &b; q = p; + * read_barrier_depends(); + * d = *q; + * </programlisting> + * + * because the read of "*q" depends on the read of "p" and these + * two reads are separated by a read_barrier_depends(). However, + * the following code, with the same initial values for "a" and "b": + * + * <programlisting> + * CPU 0 CPU 1 + * + * a = 2; + * memory_barrier(); + * b = 3; y = b; + * read_barrier_depends(); + * x = a; + * </programlisting> + * + * does not enforce ordering, since there is no data dependency between + * the read of "a" and the read of "b". Therefore, on some CPUs, such + * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() + * in cases like thiswhere there are no data dependencies. + **/ + +#define read_barrier_depends() do { } while(0) + +#ifdef CONFIG_X86_OOSTORE +/* Actually there are no OOO store capable CPUs for now that do SSE, + but make it already an possibility. */ +#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM) +#else +#define wmb() __asm__ __volatile__ ("": : :"memory") +#endif + +#ifdef CONFIG_SMP +#define smp_wmb() wmb() +#if defined(CONFIG_SMP_ALTERNATIVES) && !defined(MODULE) +#define smp_alt_mb(instr) \ +__asm__ __volatile__("6667:\nnop\nnop\nnop\nnop\nnop\nnop\n6668:\n" \ + ".section __smp_alternatives,\"a\"\n" \ + ".long 6667b\n" \ + ".long 6673f\n" \ + ".previous\n" \ + ".section __smp_replacements,\"a\"\n" \ + "6673:.byte 6668b-6667b\n" \ + ".byte 6670f-6669f\n" \ + ".byte 6671f-6670f\n" \ + ".byte 0\n" \ + ".byte %c0\n" \ + "6669:lock;addl $0,0(%%esp)\n" \ + "6670:" instr "\n" \ + "6671:\n" \ + ".previous\n" \ + : \ + : "i" (X86_FEATURE_XMM2) \ + : "memory") +#define smp_rmb() smp_alt_mb("lfence") +#define smp_mb() smp_alt_mb("mfence") +#define set_mb(var, value) do { \ +unsigned long __set_mb_temp; \ +__asm__ __volatile__("6667:movl %1, %0\n6668:\n" \ + ".section __smp_alternatives,\"a\"\n" \ + ".long 6667b\n" \ + ".long 6673f\n" \ + ".previous\n" \ + ".section __smp_replacements,\"a\"\n" \ + "6673: .byte 6668b-6667b\n" \ + ".byte 6670f-6669f\n" \ + ".byte 0\n" \ + ".byte 6671f-6670f\n" \ + ".byte -1\n" \ + "6669: xchg %1, %0\n" \ + "6670:movl %1, %0\n" \ + "6671:\n" \ + ".previous\n" \ + : "=m" (var), "=r" (__set_mb_temp) \ + : "1" (value) \ + : "memory"); } while (0) +#else +#define smp_rmb() rmb() +#define smp_mb() mb() +#define set_mb(var, value) do { xchg(&var, value); } while (0) +#endif +#define smp_read_barrier_depends() read_barrier_depends() +#else +#define smp_mb() barrier() +#define smp_rmb() barrier() +#define smp_wmb() barrier() +#define smp_read_barrier_depends() do { } while(0) +#define set_mb(var, value) do { var = value; barrier(); } while (0) +#endif + +#define set_wmb(var, value) do { var = value; wmb(); } while (0) + +/* interrupt control.. */ +#define local_save_flags(x) do { typecheck(unsigned long,x); __asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */); } while (0) +#define local_irq_restore(x) do { typecheck(unsigned long,x); __asm__ __volatile__("pushl %0 ; popfl": /* no output */ :"g" (x):"memory", "cc"); } while (0) +#define local_irq_disable() __asm__ __volatile__("cli": : :"memory") +#define local_irq_enable() __asm__ __volatile__("sti": : :"memory") +/* used in the idle loop; sti takes one instruction cycle to complete */ +#define safe_halt() __asm__ __volatile__("sti; hlt": : :"memory") + +#define irqs_disabled() \ +({ \ + unsigned long flags; \ + local_save_flags(flags); \ + !(flags & (1<<9)); \ +}) + +/* For spinlocks etc */ +#define local_irq_save(x) __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (x): /* no input */ :"memory") + +/* + * disable hlt during certain critical i/o operations + */ +#define HAVE_DISABLE_HLT +void disable_hlt(void); +void enable_hlt(void); + +extern int es7000_plat; +void cpu_idle_wait(void); + +extern unsigned long arch_align_stack(unsigned long sp); + +#endif diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h b/linux-2.6-xen-sparse/include/asm-ia64/fixmap.h index 4b32a82980..4b32a82980 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h +++ b/linux-2.6-xen-sparse/include/asm-ia64/fixmap.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h b/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h index e1bcb49913..e1bcb49913 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h +++ b/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypervisor.h b/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h index 494bd5bbde..494bd5bbde 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypervisor.h +++ b/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/synch_bitops.h b/linux-2.6-xen-sparse/include/asm-ia64/synch_bitops.h index ee1330659c..ee1330659c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/synch_bitops.h +++ b/linux-2.6-xen-sparse/include/asm-ia64/synch_bitops.h diff --git a/linux-2.6-xen-sparse/include/asm-um/page.h b/linux-2.6-xen-sparse/include/asm-um/page.h new file mode 100644 index 0000000000..6d984587f2 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-um/page.h @@ -0,0 +1,139 @@ +/* + * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Copyright 2003 PathScale, Inc. + * Licensed under the GPL + */ + +#ifndef __UM_PAGE_H +#define __UM_PAGE_H + +struct page; + +#include <linux/config.h> +#include <asm/vm-flags.h> + +/* PAGE_SHIFT determines the page size */ +#define PAGE_SHIFT 12 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +/* + * These are used to make use of C type-checking.. + */ + +#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) +#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) + +#define clear_user_page(page, vaddr, pg) clear_page(page) +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) + +#if defined(CONFIG_3_LEVEL_PGTABLES) && !defined(CONFIG_64BIT) + +typedef struct { unsigned long pte_low, pte_high; } pte_t; +typedef struct { unsigned long long pmd; } pmd_t; +typedef struct { unsigned long pgd; } pgd_t; +#define pte_val(x) ((x).pte_low | ((unsigned long long) (x).pte_high << 32)) + +#define pte_get_bits(pte, bits) ((pte).pte_low & (bits)) +#define pte_set_bits(pte, bits) ((pte).pte_low |= (bits)) +#define pte_clear_bits(pte, bits) ((pte).pte_low &= ~(bits)) +#define pte_copy(to, from) ({ (to).pte_high = (from).pte_high; \ + smp_wmb(); \ + (to).pte_low = (from).pte_low; }) +#define pte_is_zero(pte) (!((pte).pte_low & ~_PAGE_NEWPAGE) && !(pte).pte_high) +#define pte_set_val(pte, phys, prot) \ + ({ (pte).pte_high = (phys) >> 32; \ + (pte).pte_low = (phys) | pgprot_val(prot); }) + +#define pmd_val(x) ((x).pmd) +#define __pmd(x) ((pmd_t) { (x) } ) + +typedef unsigned long long pfn_t; +typedef unsigned long long phys_t; + +#else + +typedef struct { unsigned long pte; } pte_t; +typedef struct { unsigned long pgd; } pgd_t; + +#ifdef CONFIG_3_LEVEL_PGTABLES +typedef struct { unsigned long pmd; } pmd_t; +#define pmd_val(x) ((x).pmd) +#define __pmd(x) ((pmd_t) { (x) } ) +#endif + +#define pte_val(x) ((x).pte) + + +#define pte_get_bits(p, bits) ((p).pte & (bits)) +#define pte_set_bits(p, bits) ((p).pte |= (bits)) +#define pte_clear_bits(p, bits) ((p).pte &= ~(bits)) +#define pte_copy(to, from) ((to).pte = (from).pte) +#define pte_is_zero(p) (!((p).pte & ~_PAGE_NEWPAGE)) +#define pte_set_val(p, phys, prot) (p).pte = (phys | pgprot_val(prot)) + +typedef unsigned long pfn_t; +typedef unsigned long phys_t; + +#endif + +typedef struct { unsigned long pgprot; } pgprot_t; + +#define pgd_val(x) ((x).pgd) +#define pgprot_val(x) ((x).pgprot) + +#define __pte(x) ((pte_t) { (x) } ) +#define __pgd(x) ((pgd_t) { (x) } ) +#define __pgprot(x) ((pgprot_t) { (x) } ) + +/* to align the pointer to the (next) page boundary */ +#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) + +extern unsigned long uml_physmem; + +#define PAGE_OFFSET (uml_physmem) +#define KERNELBASE PAGE_OFFSET + +#define __va_space (8*1024*1024) + +extern unsigned long to_phys(void *virt); +extern void *to_virt(unsigned long phys); + +/* Cast to unsigned long before casting to void * to avoid a warning from + * mmap_kmem about cutting a long long down to a void *. Not sure that + * casting is the right thing, but 32-bit UML can't have 64-bit virtual + * addresses + */ +#define __pa(virt) to_phys((void *) (unsigned long) virt) +#define __va(phys) to_virt((unsigned long) phys) + +#define page_to_pfn(page) ((page) - mem_map) +#define pfn_to_page(pfn) (mem_map + (pfn)) + +#define phys_to_pfn(p) ((p) >> PAGE_SHIFT) +#define pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) + +#define pfn_valid(pfn) ((pfn) < max_mapnr) +#define virt_addr_valid(v) pfn_valid(phys_to_pfn(__pa(v))) + +/* Pure 2^n version of get_order */ +static __inline__ int get_order(unsigned long size) +{ + int order; + + size = (size-1) >> (PAGE_SHIFT-1); + order = -1; + do { + size >>= 1; + order++; + } while (size); + return order; +} + +extern struct page *arch_validate(struct page *page, int mask, int order); +#define HAVE_ARCH_VALIDATE + +extern int arch_free_page(struct page *page, int order); +#define HAVE_ARCH_FREE_PAGE + +#endif diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/arch_hooks.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/arch_hooks.h index 28b96a6fb9..28b96a6fb9 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/arch_hooks.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/arch_hooks.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/bootsetup.h index 7983eecd56..7983eecd56 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/bootsetup.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/desc.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h index 15a10a135d..15a10a135d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/desc.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/desc.h diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/dma-mapping.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/dma-mapping.h new file mode 100644 index 0000000000..a608959ecb --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/dma-mapping.h @@ -0,0 +1 @@ +#include <asm-i386/mach-xen/asm/dma-mapping.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/fixmap.h index 4da91b46de..088027882c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/fixmap.h @@ -14,7 +14,7 @@ #include <linux/config.h> #include <linux/kernel.h> #include <asm/apicdef.h> -#include <asm-xen/gnttab.h> +#include <xen/gnttab.h> #include <asm/page.h> #include <asm/vsyscall.h> #include <asm/vsyscall32.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/floppy.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/floppy.h index dd6a76bc06..dd6a76bc06 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/floppy.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/floppy.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hw_irq.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hw_irq.h index e63cff81d6..e63cff81d6 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hw_irq.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hw_irq.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h index 7c3acc4123..7332cd020c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h @@ -34,8 +34,8 @@ #ifndef __HYPERCALL_H__ #define __HYPERCALL_H__ -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/xen-public/sched.h> +#include <xen/interface/xen.h> +#include <xen/interface/sched.h> #define __STR(x) #x #define STR(x) __STR(x) diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypervisor.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypervisor.h new file mode 100644 index 0000000000..cbfa5a3a95 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypervisor.h @@ -0,0 +1,2 @@ + +#include <asm-i386/mach-xen/asm/hypervisor.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/io.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h index f861c89564..f861c89564 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/io.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/io.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/irq.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irq.h index ccd85685fd..ccd85685fd 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/irq.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irq.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu.h index 5a5547c520..5a5547c520 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h index f7580d3b0c..f7580d3b0c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/nmi.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/nmi.h index 1c5d28dad2..545a192068 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/nmi.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/nmi.h @@ -6,7 +6,7 @@ #include <linux/pm.h> -#include <asm-xen/xen-public/nmi.h> +#include <xen/interface/nmi.h> struct pt_regs; diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/page.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/page.h index cd186ea8ff..0b10ac8e85 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/page.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/page.h @@ -6,8 +6,8 @@ #ifndef __ASSEMBLY__ #include <linux/types.h> #endif -#include <asm-xen/xen-public/xen.h> -#include <asm-xen/foreign_page.h> +#include <xen/interface/xen.h> +#include <xen/foreign_page.h> #define arch_free_page(_page,_order) \ ({ int foreign = PageForeign(_page); \ diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/param.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/param.h index 5145e63610..5145e63610 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/param.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/param.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pci.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pci.h index 9181f47e9d..9181f47e9d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pci.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pci.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgalloc.h index 16ada718c5..d3acb80c4f 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgalloc.h @@ -7,7 +7,7 @@ #include <linux/mm.h> #include <asm/io.h> /* for phys_to_virt and page_to_pseudophys */ -#include <asm-xen/features.h> +#include <xen/features.h> void make_page_readonly(void *va, unsigned int feature); void make_page_writable(void *va, unsigned int feature); void make_pages_readonly(void *va, unsigned int nr, unsigned int feature); diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgtable.h index 010044c623..010044c623 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgtable.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/processor.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h index 58ffd06351..58ffd06351 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/processor.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/processor.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/ptrace.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h index e1c0ea6d0b..e1c0ea6d0b 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/ptrace.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/segment.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/segment.h index e00247dc81..e00247dc81 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/segment.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/segment.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/smp.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h index 303af66824..303af66824 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/smp.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/smp.h diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/synch_bitops.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/synch_bitops.h new file mode 100644 index 0000000000..ab71cd1a11 --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/synch_bitops.h @@ -0,0 +1,2 @@ + +#include <asm-i386/mach-xen/asm/synch_bitops.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/system.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/system.h index 0b485568ac..f10e248d8a 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/system.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/system.h @@ -6,7 +6,7 @@ #include <asm/segment.h> #include <asm/synch_bitops.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/arch-x86_64.h> +#include <xen/interface/arch-x86_64.h> #ifdef __KERNEL__ diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/timer.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/timer.h index 40c54f6978..40c54f6978 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/timer.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/timer.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/tlbflush.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/tlbflush.h index cc936335c3..cc936335c3 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/tlbflush.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/tlbflush.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/vga.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/vga.h index 14b8209600..14b8209600 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/vga.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/vga.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/xor.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/xor.h index 6ec68fd4ff..6ec68fd4ff 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/xor.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/xor.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/io_ports.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/io_ports.h index a96d9f6604..a96d9f6604 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/io_ports.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/io_ports.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/irq_vectors.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/irq_vectors.h index c7d85b1967..c7d85b1967 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/irq_vectors.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/irq_vectors.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_time.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_time.h index 4db611ecb0..4db611ecb0 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_time.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_time.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_timer.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_timer.h index 4b9703bb02..4b9703bb02 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/mach_timer.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/mach_timer.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h index 84186bbe96..84186bbe96 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_pre.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_pre.h index b18df6896c..b18df6896c 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_pre.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_pre.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/dma-mapping.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/dma-mapping.h deleted file mode 100644 index 773454240b..0000000000 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/dma-mapping.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-i386/dma-mapping.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypervisor.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypervisor.h deleted file mode 100644 index dc3e5e5d3b..0000000000 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypervisor.h +++ /dev/null @@ -1,2 +0,0 @@ - -#include <asm-i386/hypervisor.h> diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/synch_bitops.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/synch_bitops.h deleted file mode 100644 index 9b5d468c26..0000000000 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/synch_bitops.h +++ /dev/null @@ -1,2 +0,0 @@ - -#include <asm-i386/synch_bitops.h> diff --git a/linux-2.6-xen-sparse/include/linux/gfp.h b/linux-2.6-xen-sparse/include/linux/gfp.h index f9d3d5eb99..e852bd88b5 100644 --- a/linux-2.6-xen-sparse/include/linux/gfp.h +++ b/linux-2.6-xen-sparse/include/linux/gfp.h @@ -77,12 +77,12 @@ struct vm_area_struct; * optimized to &contig_page_data at compile-time. */ +#ifndef HAVE_ARCH_FREE_PAGE /* * If arch_free_page returns non-zero then the generic free_page code can * immediately bail: the arch-specific function has done all the work. */ -#ifndef HAVE_ARCH_FREE_PAGE -#define arch_free_page(page, order) 0 +static inline int arch_free_page(struct page *page, int order) { return 0; } #endif extern struct page * diff --git a/linux-2.6-xen-sparse/include/linux/highmem.h b/linux-2.6-xen-sparse/include/linux/highmem.h index 54c3fa78af..c4d152c7d9 100644 --- a/linux-2.6-xen-sparse/include/linux/highmem.h +++ b/linux-2.6-xen-sparse/include/linux/highmem.h @@ -13,12 +13,16 @@ /* declarations for linux/mm/highmem.c */ unsigned int nr_free_highpages(void); +#ifdef CONFIG_XEN void kmap_flush_unused(void); +#endif #else /* CONFIG_HIGHMEM */ static inline unsigned int nr_free_highpages(void) { return 0; } +#ifdef CONFIG_XEN static inline void kmap_flush_unused(void) { } +#endif static inline void *kmap(struct page *page) { diff --git a/linux-2.6-xen-sparse/include/linux/init.h b/linux-2.6-xen-sparse/include/linux/init.h new file mode 100644 index 0000000000..59008c3826 --- /dev/null +++ b/linux-2.6-xen-sparse/include/linux/init.h @@ -0,0 +1,262 @@ +#ifndef _LINUX_INIT_H +#define _LINUX_INIT_H + +#include <linux/config.h> +#include <linux/compiler.h> + +/* These macros are used to mark some functions or + * initialized data (doesn't apply to uninitialized data) + * as `initialization' functions. The kernel can take this + * as hint that the function is used only during the initialization + * phase and free up used memory resources after + * + * Usage: + * For functions: + * + * You should add __init immediately before the function name, like: + * + * static void __init initme(int x, int y) + * { + * extern int z; z = x * y; + * } + * + * If the function has a prototype somewhere, you can also add + * __init between closing brace of the prototype and semicolon: + * + * extern int initialize_foobar_device(int, int, int) __init; + * + * For initialized data: + * You should insert __initdata between the variable name and equal + * sign followed by value, e.g.: + * + * static int init_variable __initdata = 0; + * static char linux_logo[] __initdata = { 0x32, 0x36, ... }; + * + * Don't forget to initialize data not at file scope, i.e. within a function, + * as gcc otherwise puts the data into the bss section and not into the init + * section. + * + * Also note, that this data cannot be "const". + */ + +/* These are for everybody (although not all archs will actually + discard it in modules) */ +#define __init __attribute__ ((__section__ (".init.text"))) +#define __initdata __attribute__ ((__section__ (".init.data"))) +#define __exitdata __attribute__ ((__section__(".exit.data"))) +#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit"))) + +#ifdef MODULE +#define __exit __attribute__ ((__section__(".exit.text"))) +#else +#define __exit __attribute_used__ __attribute__ ((__section__(".exit.text"))) +#endif + +/* For assembly routines */ +#define __INIT .section ".init.text","ax" +#define __FINIT .previous +#define __INITDATA .section ".init.data","aw" + +#ifndef __ASSEMBLY__ +/* + * Used for initialization calls.. + */ +typedef int (*initcall_t)(void); +typedef void (*exitcall_t)(void); + +extern initcall_t __con_initcall_start[], __con_initcall_end[]; +extern initcall_t __security_initcall_start[], __security_initcall_end[]; + +/* Defined in init/main.c */ +extern char saved_command_line[]; +#endif + +#ifndef MODULE + +#ifndef __ASSEMBLY__ + +/* initcalls are now grouped by functionality into separate + * subsections. Ordering inside the subsections is determined + * by link order. + * For backwards compatibility, initcall() puts the call in + * the device init subsection. + */ + +#define __define_initcall(level,fn) \ + static initcall_t __initcall_##fn __attribute_used__ \ + __attribute__((__section__(".initcall" level ".init"))) = fn + +#define core_initcall(fn) __define_initcall("1",fn) +#define postcore_initcall(fn) __define_initcall("2",fn) +#define arch_initcall(fn) __define_initcall("3",fn) +#define subsys_initcall(fn) __define_initcall("4",fn) +#define fs_initcall(fn) __define_initcall("5",fn) +#define device_initcall(fn) __define_initcall("6",fn) +#define late_initcall(fn) __define_initcall("7",fn) + +#define __initcall(fn) device_initcall(fn) + +#define __exitcall(fn) \ + static exitcall_t __exitcall_##fn __exit_call = fn + +#define console_initcall(fn) \ + static initcall_t __initcall_##fn \ + __attribute_used__ __attribute__((__section__(".con_initcall.init")))=fn + +#define security_initcall(fn) \ + static initcall_t __initcall_##fn \ + __attribute_used__ __attribute__((__section__(".security_initcall.init"))) = fn + +struct obs_kernel_param { + const char *str; + int (*setup_func)(char *); + int early; +}; + +/* + * Only for really core code. See moduleparam.h for the normal way. + * + * Force the alignment so the compiler doesn't space elements of the + * obs_kernel_param "array" too far apart in .init.setup. + */ +#define __setup_param(str, unique_id, fn, early) \ + static char __setup_str_##unique_id[] __initdata = str; \ + static struct obs_kernel_param __setup_##unique_id \ + __attribute_used__ \ + __attribute__((__section__(".init.setup"))) \ + __attribute__((aligned((sizeof(long))))) \ + = { __setup_str_##unique_id, fn, early } + +#define __setup_null_param(str, unique_id) \ + __setup_param(str, unique_id, NULL, 0) + +#define __setup(str, fn) \ + __setup_param(str, fn, fn, 0) + +#define __obsolete_setup(str) \ + __setup_null_param(str, __LINE__) + +/* NOTE: fn is as per module_param, not __setup! Emits warning if fn + * returns non-zero. */ +#define early_param(str, fn) \ + __setup_param(str, fn, fn, 1) + +/* Relies on saved_command_line being set */ +void __init parse_early_param(void); +#endif /* __ASSEMBLY__ */ + +/** + * module_init() - driver initialization entry point + * @x: function to be run at kernel boot time or module insertion + * + * module_init() will either be called during do_initcalls (if + * builtin) or at module insertion time (if a module). There can only + * be one per module. + */ +#define module_init(x) __initcall(x); + +/** + * module_exit() - driver exit entry point + * @x: function to be run when driver is removed + * + * module_exit() will wrap the driver clean-up code + * with cleanup_module() when used with rmmod when + * the driver is a module. If the driver is statically + * compiled into the kernel, module_exit() has no effect. + * There can only be one per module. + */ +#define module_exit(x) __exitcall(x); + +#else /* MODULE */ + +/* Don't use these in modules, but some people do... */ +#define core_initcall(fn) module_init(fn) +#define postcore_initcall(fn) module_init(fn) +#define arch_initcall(fn) module_init(fn) +#define subsys_initcall(fn) module_init(fn) +#define fs_initcall(fn) module_init(fn) +#define device_initcall(fn) module_init(fn) +#define late_initcall(fn) module_init(fn) + +#define security_initcall(fn) module_init(fn) + +/* These macros create a dummy inline: gcc 2.9x does not count alias + as usage, hence the `unused function' warning when __init functions + are declared static. We use the dummy __*_module_inline functions + both to kill the warning and check the type of the init/cleanup + function. */ + +/* Each module must use one module_init(), or one no_module_init */ +#define module_init(initfn) \ + static inline initcall_t __inittest(void) \ + { return initfn; } \ + int init_module(void) __attribute__((alias(#initfn))); + +/* This is only required if you want to be unloadable. */ +#define module_exit(exitfn) \ + static inline exitcall_t __exittest(void) \ + { return exitfn; } \ + void cleanup_module(void) __attribute__((alias(#exitfn))); + +#define __setup_param(str, unique_id, fn) /* nothing */ +#define __setup_null_param(str, unique_id) /* nothing */ +#define __setup(str, func) /* nothing */ +#define __obsolete_setup(str) /* nothing */ +#endif + +/* Data marked not to be saved by software_suspend() */ +#define __nosavedata __attribute__ ((__section__ (".data.nosave"))) + +/* This means "can be init if no module support, otherwise module load + may call it." */ +#ifdef CONFIG_MODULES +#define __init_or_module +#define __initdata_or_module +#else +#define __init_or_module __init +#define __initdata_or_module __initdata +#endif /*CONFIG_MODULES*/ + +#ifdef CONFIG_HOTPLUG +#define __devinit +#define __devinitdata +#define __devexit +#define __devexitdata +#else +#define __devinit __init +#define __devinitdata __initdata +#define __devexit __exit +#define __devexitdata __exitdata +#endif + +#ifdef CONFIG_HOTPLUG_CPU +#define __cpuinit +#define __cpuinitdata +#define __cpuexit +#define __cpuexitdata +#else +#define __cpuinit __init +#define __cpuinitdata __initdata +#define __cpuexit __exit +#define __cpuexitdata __exitdata +#endif + +/* Functions marked as __devexit may be discarded at kernel link time, depending + on config options. Newer versions of binutils detect references from + retained sections to discarded sections and flag an error. Pointers to + __devexit functions must use __devexit_p(function_name), the wrapper will + insert either the function_name or NULL, depending on the config options. + */ +#if defined(MODULE) || defined(CONFIG_HOTPLUG) +#define __devexit_p(x) x +#else +#define __devexit_p(x) NULL +#endif + +#ifdef MODULE +#define __exit_p(x) x +#else +#define __exit_p(x) NULL +#endif + +#endif /* _LINUX_INIT_H */ diff --git a/linux-2.6-xen-sparse/include/linux/irq.h b/linux-2.6-xen-sparse/include/linux/irq.h index 2e0aeb9d39..836d2004d0 100644 --- a/linux-2.6-xen-sparse/include/linux/irq.h +++ b/linux-2.6-xen-sparse/include/linux/irq.h @@ -74,7 +74,9 @@ extern irq_desc_t irq_desc [NR_IRQS]; #include <asm/hw_irq.h> /* the arch dependent stuff */ extern int setup_irq(unsigned int irq, struct irqaction * new); +#ifdef CONFIG_XEN extern int teardown_irq(unsigned int irq, struct irqaction * old); +#endif #ifdef CONFIG_GENERIC_HARDIRQS extern cpumask_t irq_affinity[NR_IRQS]; diff --git a/linux-2.6-xen-sparse/include/linux/mm.h b/linux-2.6-xen-sparse/include/linux/mm.h index 79b61e8b50..7ab59a3e20 100644 --- a/linux-2.6-xen-sparse/include/linux/mm.h +++ b/linux-2.6-xen-sparse/include/linux/mm.h @@ -161,7 +161,9 @@ extern unsigned int kobjsize(const void *objp); #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ +#ifdef CONFIG_XEN #define VM_FOREIGN 0x02000000 /* Has pages belonging to another VM */ +#endif #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS @@ -817,12 +819,13 @@ extern int check_user_page_readable(struct mm_struct *mm, unsigned long address) int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long, unsigned long, pgprot_t); +#ifdef CONFIG_XEN typedef int (*pte_fn_t)(pte_t *pte, struct page *pte_page, unsigned long addr, void *data); extern int generic_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, pte_fn_t fn, void *data); - +#endif #ifdef CONFIG_PROC_FS void __vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); #else diff --git a/linux-2.6-xen-sparse/include/linux/skbuff.h b/linux-2.6-xen-sparse/include/linux/skbuff.h index d10a3c5dc0..9b1b1b0403 100644 --- a/linux-2.6-xen-sparse/include/linux/skbuff.h +++ b/linux-2.6-xen-sparse/include/linux/skbuff.h @@ -254,8 +254,10 @@ struct sk_buff { unsigned char local_df, cloned:1, nohdr:1, +#ifdef CONFIG_XEN proto_csum_valid:1, proto_csum_blank:1, +#endif pkt_type, ip_summed; __u32 priority; diff --git a/linux-2.6-xen-sparse/include/asm-xen/balloon.h b/linux-2.6-xen-sparse/include/xen/balloon.h index 7f2be02660..7f2be02660 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/balloon.h +++ b/linux-2.6-xen-sparse/include/xen/balloon.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/driver_util.h b/linux-2.6-xen-sparse/include/xen/driver_util.h index fe45de57d5..fe45de57d5 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/driver_util.h +++ b/linux-2.6-xen-sparse/include/xen/driver_util.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/evtchn.h b/linux-2.6-xen-sparse/include/xen/evtchn.h index 8c573b13e0..594c1a6ec6 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/evtchn.h +++ b/linux-2.6-xen-sparse/include/xen/evtchn.h @@ -36,7 +36,7 @@ #include <asm/hypervisor.h> #include <asm/ptrace.h> #include <asm/synch_bitops.h> -#include <asm-xen/xen-public/event_channel.h> +#include <xen/interface/event_channel.h> #include <linux/smp.h> /* diff --git a/linux-2.6-xen-sparse/include/asm-xen/features.h b/linux-2.6-xen-sparse/include/xen/features.h index 33004c36a5..3c62c6a46d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/features.h +++ b/linux-2.6-xen-sparse/include/xen/features.h @@ -9,7 +9,7 @@ #ifndef __ASM_XEN_FEATURES_H__ #define __ASM_XEN_FEATURES_H__ -#include <asm-xen/xen-public/version.h> +#include <xen/interface/version.h> extern void setup_xen_features(void); diff --git a/linux-2.6-xen-sparse/include/asm-xen/foreign_page.h b/linux-2.6-xen-sparse/include/xen/foreign_page.h index 0af4e13b72..0af4e13b72 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/foreign_page.h +++ b/linux-2.6-xen-sparse/include/xen/foreign_page.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/gnttab.h b/linux-2.6-xen-sparse/include/xen/gnttab.h index 29159fe8fb..bd4d5779b8 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/gnttab.h +++ b/linux-2.6-xen-sparse/include/xen/gnttab.h @@ -15,7 +15,7 @@ #include <linux/config.h> #include <asm/hypervisor.h> -#include <asm-xen/xen-public/grant_table.h> +#include <xen/interface/grant_table.h> /* NR_GRANT_FRAMES must be less than or equal to that configured in Xen */ #ifdef __ia64__ diff --git a/linux-2.6-xen-sparse/include/asm-xen/net_driver_util.h b/linux-2.6-xen-sparse/include/xen/net_driver_util.h index 1892d8027c..130b4f0981 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/net_driver_util.h +++ b/linux-2.6-xen-sparse/include/xen/net_driver_util.h @@ -31,7 +31,7 @@ #define _ASM_XEN_NET_DRIVER_UTIL_H -#include <asm-xen/xenbus.h> +#include <xen/xenbus.h> /** diff --git a/linux-2.6-xen-sparse/include/asm-xen/linux-public/evtchn.h b/linux-2.6-xen-sparse/include/xen/public/evtchn.h index 456f246530..456f246530 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/linux-public/evtchn.h +++ b/linux-2.6-xen-sparse/include/xen/public/evtchn.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/linux-public/privcmd.h b/linux-2.6-xen-sparse/include/xen/public/privcmd.h index 074d66c79b..074d66c79b 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/linux-public/privcmd.h +++ b/linux-2.6-xen-sparse/include/xen/public/privcmd.h diff --git a/linux-2.6-xen-sparse/include/xen/public/xenstored.h b/linux-2.6-xen-sparse/include/xen/public/xenstored.h new file mode 100644 index 0000000000..3633e5eb74 --- /dev/null +++ b/linux-2.6-xen-sparse/include/xen/public/xenstored.h @@ -0,0 +1,89 @@ +/* + * Simple prototyle Xen Store Daemon providing simple tree-like database. + * Copyright (C) 2005 Rusty Russell IBM Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef _XENSTORED_H +#define _XENSTORED_H + +enum xsd_sockmsg_type +{ + XS_DEBUG, + XS_SHUTDOWN, + XS_DIRECTORY, + XS_READ, + XS_GET_PERMS, + XS_WATCH, + XS_WATCH_ACK, + XS_UNWATCH, + XS_TRANSACTION_START, + XS_TRANSACTION_END, + XS_OP_READ_ONLY = XS_TRANSACTION_END, + XS_INTRODUCE, + XS_RELEASE, + XS_GET_DOMAIN_PATH, + XS_WRITE, + XS_MKDIR, + XS_RM, + XS_SET_PERMS, + XS_WATCH_EVENT, + XS_ERROR, +}; + +#define XS_WRITE_NONE "NONE" +#define XS_WRITE_CREATE "CREATE" +#define XS_WRITE_CREATE_EXCL "CREATE|EXCL" + +/* We hand errors as strings, for portability. */ +struct xsd_errors +{ + int errnum; + const char *errstring; +}; +#define XSD_ERROR(x) { x, #x } +static struct xsd_errors xsd_errors[] __attribute__((unused)) = { + XSD_ERROR(EINVAL), + XSD_ERROR(EACCES), + XSD_ERROR(EEXIST), + XSD_ERROR(EISDIR), + XSD_ERROR(ENOENT), + XSD_ERROR(ENOMEM), + XSD_ERROR(ENOSPC), + XSD_ERROR(EIO), + XSD_ERROR(ENOTEMPTY), + XSD_ERROR(ENOSYS), + XSD_ERROR(EROFS), + XSD_ERROR(EBUSY), + XSD_ERROR(EAGAIN), + XSD_ERROR(EISCONN), +}; +struct xsd_sockmsg +{ + u32 type; + u32 len; /* Length of data following this. */ + + /* Generally followed by nul-terminated string(s). */ +}; + +#endif /* _XENSTORED_H */ diff --git a/linux-2.6-xen-sparse/include/asm-xen/tpmfe.h b/linux-2.6-xen-sparse/include/xen/tpmfe.h index 78f31a7e04..78f31a7e04 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/tpmfe.h +++ b/linux-2.6-xen-sparse/include/xen/tpmfe.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/xen_proc.h b/linux-2.6-xen-sparse/include/xen/xen_proc.h index dc895216a7..dc895216a7 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/xen_proc.h +++ b/linux-2.6-xen-sparse/include/xen/xen_proc.h diff --git a/linux-2.6-xen-sparse/include/asm-xen/xenbus.h b/linux-2.6-xen-sparse/include/xen/xenbus.h index 5534fbe99c..72a5777ad0 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/xenbus.h +++ b/linux-2.6-xen-sparse/include/xen/xenbus.h @@ -34,8 +34,8 @@ #include <linux/device.h> #include <linux/notifier.h> #include <asm/semaphore.h> -#include <asm-xen/xen-public/io/xenbus.h> -#include <asm-xen/xen-public/io/xs_wire.h> +#include <xen/interface/io/xenbus.h> +#include <xen/interface/io/xs_wire.h> #define XBT_NULL 0 diff --git a/linux-2.6-xen-sparse/include/asm-xen/xencons.h b/linux-2.6-xen-sparse/include/xen/xencons.h index fa2160d89d..fa2160d89d 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/xencons.h +++ b/linux-2.6-xen-sparse/include/xen/xencons.h diff --git a/linux-2.6-xen-sparse/kernel/irq/manage.c b/linux-2.6-xen-sparse/kernel/irq/manage.c index 47678cdd25..96efc2482e 100644 --- a/linux-2.6-xen-sparse/kernel/irq/manage.c +++ b/linux-2.6-xen-sparse/kernel/irq/manage.c @@ -146,14 +146,9 @@ int can_request_irq(unsigned int irq, unsigned long irqflags) return !action; } -/** - * setup_irq - register an irqaction structure - * @irq: Interrupt to register - * @irqaction: The irqaction structure to be registered - * - * Normally called by request_irq, this function can be used - * directly to allocate special interrupts that are part of the - * architecture. +/* + * Internal function to register an irqaction - typically used to + * allocate special interrupts that are part of the architecture. */ int setup_irq(unsigned int irq, struct irqaction * new) { @@ -222,6 +217,7 @@ int setup_irq(unsigned int irq, struct irqaction * new) return 0; } +#ifdef CONFIG_XEN /* * teardown_irq - unregister an irqaction * @irq: Interrupt line being freed @@ -319,6 +315,67 @@ void free_irq(unsigned int irq, void *dev_id) return; } +#else +/** + * free_irq - free an interrupt + * @irq: Interrupt line to free + * @dev_id: Device identity to free + * + * Remove an interrupt handler. The handler is removed and if the + * interrupt line is no longer in use by any driver it is disabled. + * On a shared IRQ the caller must ensure the interrupt is disabled + * on the card it drives before calling this function. The function + * does not return until any executing interrupts for this IRQ + * have completed. + * + * This function must not be called from interrupt context. + */ +void free_irq(unsigned int irq, void *dev_id) +{ + struct irq_desc *desc; + struct irqaction **p; + unsigned long flags; + + if (irq >= NR_IRQS) + return; + + desc = irq_desc + irq; + spin_lock_irqsave(&desc->lock,flags); + p = &desc->action; + for (;;) { + struct irqaction * action = *p; + + if (action) { + struct irqaction **pp = p; + + p = &action->next; + if (action->dev_id != dev_id) + continue; + + /* Found it - now remove it from the list of entries */ + *pp = action->next; + if (!desc->action) { + desc->status |= IRQ_DISABLED; + if (desc->handler->shutdown) + desc->handler->shutdown(irq); + else + desc->handler->disable(irq); + } + spin_unlock_irqrestore(&desc->lock,flags); + unregister_handler_proc(irq, action); + + /* Make sure it's not being used on another CPU */ + synchronize_irq(irq); + kfree(action); + return; + } + printk(KERN_ERR "Trying to free free IRQ%d\n",irq); + spin_unlock_irqrestore(&desc->lock,flags); + return; + } +} +#endif + EXPORT_SYMBOL(free_irq); /** diff --git a/linux-2.6-xen-sparse/lib/Kconfig.debug b/linux-2.6-xen-sparse/lib/Kconfig.debug new file mode 100644 index 0000000000..7224f96aca --- /dev/null +++ b/linux-2.6-xen-sparse/lib/Kconfig.debug @@ -0,0 +1,161 @@ + +config PRINTK_TIME + bool "Show timing information on printks" + help + Selecting this option causes timing information to be + included in printk output. This allows you to measure + the interval between kernel operations, including bootup + operations. This is useful for identifying long delays + in kernel startup. + + +config DEBUG_KERNEL + bool "Kernel debugging" + help + Say Y here if you are developing drivers or trying to debug and + identify kernel problems. + +config MAGIC_SYSRQ + bool "Magic SysRq key" + depends on DEBUG_KERNEL && !UML + help + If you say Y here, you will have some control over the system even + if the system crashes for example during kernel debugging (e.g., you + will be able to flush the buffer cache to disk, reboot the system + immediately or dump some status information). This is accomplished + by pressing various keys while holding SysRq (Alt+PrintScreen). It + also works on a serial console (on PC hardware at least), if you + send a BREAK and then within 5 seconds a command keypress. The + keys are documented in <file:Documentation/sysrq.txt>. Don't say Y + unless you really know what this hack does. + +config LOG_BUF_SHIFT + int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL + range 12 21 + default 17 if ARCH_S390 + default 16 if X86_NUMAQ || IA64 + default 15 if SMP + default 14 + help + Select kernel log buffer size as a power of 2. + Defaults and Examples: + 17 => 128 KB for S/390 + 16 => 64 KB for x86 NUMAQ or IA-64 + 15 => 32 KB for SMP + 14 => 16 KB for uniprocessor + 13 => 8 KB + 12 => 4 KB + +config SCHEDSTATS + bool "Collect scheduler statistics" + depends on DEBUG_KERNEL && PROC_FS + help + If you say Y here, additional code will be inserted into the + scheduler and related routines to collect statistics about + scheduler behavior and provide them in /proc/schedstat. These + stats may be useful for both tuning and debugging the scheduler + If you aren't debugging the scheduler or trying to tune a specific + application, you can say N to avoid the very slight overhead + this adds. + +config DEBUG_SLAB + bool "Debug memory allocations" + depends on DEBUG_KERNEL + help + Say Y here to have the kernel do limited verification on memory + allocation as well as poisoning memory on free to catch use of freed + memory. This can make kmalloc/kfree-intensive workloads much slower. + +config DEBUG_PREEMPT + bool "Debug preemptible kernel" + depends on DEBUG_KERNEL && PREEMPT + default y + help + If you say Y here then the kernel will use a debug variant of the + commonly used smp_processor_id() function and will print warnings + if kernel code uses it in a preemption-unsafe way. Also, the kernel + will detect preemption count underflows. + +config DEBUG_SPINLOCK + bool "Spinlock debugging" + depends on DEBUG_KERNEL + help + Say Y here and build SMP to catch missing spinlock initialization + and certain other kinds of spinlock errors commonly made. This is + best used in conjunction with the NMI watchdog so that spinlock + deadlocks are also debuggable. + +config DEBUG_SPINLOCK_SLEEP + bool "Sleep-inside-spinlock checking" + depends on DEBUG_KERNEL + help + If you say Y here, various routines which may sleep will become very + noisy if they are called with a spinlock held. + +config DEBUG_KOBJECT + bool "kobject debugging" + depends on DEBUG_KERNEL + help + If you say Y here, some extra kobject debugging messages will be sent + to the syslog. + +config DEBUG_HIGHMEM + bool "Highmem debugging" + depends on DEBUG_KERNEL && HIGHMEM + help + This options enables addition error checking for high memory systems. + Disable for production systems. + +config DEBUG_BUGVERBOSE + bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED + depends on BUG + depends on ARM || ARM26 || M32R || M68K || SPARC32 || SPARC64 || (X86 && !X86_64) || FRV + default !EMBEDDED + help + Say Y here to make BUG() panics output the file name and line number + of the BUG call as well as the EIP and oops trace. This aids + debugging but costs about 70-100K of memory. + +config DEBUG_INFO + bool "Compile the kernel with debug info" + depends on DEBUG_KERNEL && !X86_64_XEN + help + If you say Y here the resulting kernel image will include + debugging info resulting in a larger kernel image. + Say Y here only if you plan to debug the kernel. + + If unsure, say N. + +config DEBUG_IOREMAP + bool "Enable ioremap() debugging" + depends on DEBUG_KERNEL && PARISC + help + Enabling this option will cause the kernel to distinguish between + ioremapped and physical addresses. It will print a backtrace (at + most one every 10 seconds), hopefully allowing you to see which + drivers need work. Fixing all these problems is a prerequisite + for turning on USE_HPPA_IOREMAP. The warnings are harmless; + the kernel has enough information to fix the broken drivers + automatically, but we'd like to make it more efficient by not + having to do that. + +config DEBUG_FS + bool "Debug Filesystem" + depends on DEBUG_KERNEL + help + debugfs is a virtual file system that kernel developers use to put + debugging files into. Enable this option to be able to read and + write to these files. + + If unsure, say N. + +config FRAME_POINTER + bool "Compile the kernel with frame pointers" + depends on DEBUG_KERNEL && ((X86 && !X86_64) || CRIS || M68K || M68KNOMMU || FRV || UML) + default y if DEBUG_INFO && UML + help + If you say Y here the resulting kernel image will be slightly larger + and slower, but it will give very useful debugging information. + If you don't debug the kernel, you can say N, but we may not be able + to solve problems without frame pointers. + diff --git a/linux-2.6-xen-sparse/mkbuildtree b/linux-2.6-xen-sparse/mkbuildtree index ba89b1982d..5c70db12a4 100755 --- a/linux-2.6-xen-sparse/mkbuildtree +++ b/linux-2.6-xen-sparse/mkbuildtree @@ -108,9 +108,9 @@ relative_lndir ${RS} rm -f mkbuildtree # Create links to the shared definitions of the Xen interfaces. -rm -rf ${AD}/include/asm-xen/xen-public -mkdir ${AD}/include/asm-xen/xen-public -cd ${AD}/include/asm-xen/xen-public +rm -rf ${AD}/include/xen/interface +mkdir ${AD}/include/xen/interface +cd ${AD}/include/xen/interface relative_lndir ../../../${RS}/../xen/include/public # Arch-specific post-processing diff --git a/linux-2.6-xen-sparse/mm/highmem.c b/linux-2.6-xen-sparse/mm/highmem.c index b71abaf94b..7fd963046a 100644 --- a/linux-2.6-xen-sparse/mm/highmem.c +++ b/linux-2.6-xen-sparse/mm/highmem.c @@ -148,6 +148,7 @@ start: return vaddr; } +#ifdef CONFIG_XEN void kmap_flush_unused(void) { spin_lock(&kmap_lock); @@ -156,6 +157,7 @@ void kmap_flush_unused(void) } EXPORT_SYMBOL(kmap_flush_unused); +#endif void fastcall *kmap_high(struct page *page) { diff --git a/linux-2.6-xen-sparse/mm/memory.c b/linux-2.6-xen-sparse/mm/memory.c index e3e1451ea0..01e33025a1 100644 --- a/linux-2.6-xen-sparse/mm/memory.c +++ b/linux-2.6-xen-sparse/mm/memory.c @@ -940,24 +940,23 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, continue; } - if (vma && (vma->vm_flags & VM_FOREIGN)) - { - struct page **map = vma->vm_private_data; - int offset = (start - vma->vm_start) >> PAGE_SHIFT; - - if (map[offset] != NULL) { - if (pages) { - pages[i] = map[offset]; - } - if (vmas) - vmas[i] = vma; - i++; - start += PAGE_SIZE; - len--; - continue; - } +#ifdef CONFIG_XEN + if (vma && (vma->vm_flags & VM_FOREIGN)) { + struct page **map = vma->vm_private_data; + int offset = (start - vma->vm_start) >> PAGE_SHIFT; + + if (map[offset] != NULL) { + if (pages) + pages[i] = map[offset]; + if (vmas) + vmas[i] = vma; + i++; + start += PAGE_SIZE; + len--; + continue; + } } - +#endif if (!vma || (vma->vm_flags & VM_IO) || !(flags & vma->vm_flags)) return i ? : -EFAULT; @@ -1213,9 +1212,10 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, } EXPORT_SYMBOL(remap_pfn_range); +#ifdef CONFIG_XEN static inline int generic_pte_range(struct mm_struct *mm, - pmd_t *pmd, - unsigned long addr, + pmd_t *pmd, + unsigned long addr, unsigned long end, pte_fn_t fn, void *data) { @@ -1223,7 +1223,7 @@ static inline int generic_pte_range(struct mm_struct *mm, int err; struct page *pte_page; - pte = (mm == &init_mm) ? + pte = (mm == &init_mm) ? pte_alloc_kernel(mm, pmd, addr) : pte_alloc_map(mm, pmd, addr); if (!pte) @@ -1244,8 +1244,8 @@ static inline int generic_pte_range(struct mm_struct *mm, } static inline int generic_pmd_range(struct mm_struct *mm, - pud_t *pud, - unsigned long addr, + pud_t *pud, + unsigned long addr, unsigned long end, pte_fn_t fn, void *data) { @@ -1265,7 +1265,7 @@ static inline int generic_pmd_range(struct mm_struct *mm, return err; } -static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd, +static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd, unsigned long addr, unsigned long end, pte_fn_t fn, void *data) @@ -1290,7 +1290,7 @@ static inline int generic_pud_range(struct mm_struct *mm, pgd_t *pgd, * Scan a region of virtual memory, filling in page tables as necessary * and calling a provided function on each leaf page table. */ -int generic_page_range(struct mm_struct *mm, unsigned long addr, +int generic_page_range(struct mm_struct *mm, unsigned long addr, unsigned long size, pte_fn_t fn, void *data) { pgd_t *pgd; @@ -1310,6 +1310,7 @@ int generic_page_range(struct mm_struct *mm, unsigned long addr, spin_unlock(&mm->page_table_lock); return err; } +#endif /* * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when @@ -1365,15 +1366,33 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct * vma, struct page *old_page, *new_page; unsigned long pfn = pte_pfn(pte); pte_t entry; +#ifdef CONFIG_XEN struct page invalid_page; +#endif if (unlikely(!pfn_valid(pfn))) { +#ifdef CONFIG_XEN /* This can happen with /dev/mem (PROT_WRITE, MAP_PRIVATE). */ invalid_page.flags = (1<<PG_reserved) | (1<<PG_locked); old_page = &invalid_page; } else { old_page = pfn_to_page(pfn); +#else + /* + * This should really halt the system so it can be debugged or + * at least the kernel stops what it's doing before it corrupts + * data, but for the moment just pretend this is OOM. + */ + pte_unmap(page_table); + printk(KERN_ERR "do_wp_page: bogus page at address %08lx\n", + address); + spin_unlock(&mm->page_table_lock); + return VM_FAULT_OOM; +#endif } +#ifndef CONFIG_XEN + old_page = pfn_to_page(pfn); +#endif if (!TestSetPageLocked(old_page)) { int reuse = can_share_swap_page(old_page); @@ -1409,6 +1428,9 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct * vma, new_page = alloc_page_vma(GFP_HIGHUSER, vma, address); if (!new_page) goto no_new_page; +#ifndef CONFIG_XEN + copy_user_highpage(new_page, old_page, address); +#else if (old_page == &invalid_page) { char *vto = kmap_atomic(new_page, KM_USER1); copy_page(vto, (void *)(address & PAGE_MASK)); @@ -1416,6 +1438,7 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct * vma, } else { copy_user_highpage(new_page, old_page, address); } +#endif } /* * Re-check the pte - we dropped the lock diff --git a/linux-2.6-xen-sparse/mm/mmap.c b/linux-2.6-xen-sparse/mm/mmap.c index f2dd282348..5973314933 100644 --- a/linux-2.6-xen-sparse/mm/mmap.c +++ b/linux-2.6-xen-sparse/mm/mmap.c @@ -1907,7 +1907,6 @@ void exit_mmap(struct mm_struct *mm) #ifdef arch_exit_mmap arch_exit_mmap(mm); #endif - lru_add_drain(); spin_lock(&mm->page_table_lock); diff --git a/linux-2.6-xen-sparse/net/core/dev.c b/linux-2.6-xen-sparse/net/core/dev.c index 5c59e4ca79..d981468138 100644 --- a/linux-2.6-xen-sparse/net/core/dev.c +++ b/linux-2.6-xen-sparse/net/core/dev.c @@ -115,10 +115,11 @@ #endif /* CONFIG_NET_RADIO */ #include <asm/current.h> +#ifdef CONFIG_XEN #include <net/ip.h> #include <linux/tcp.h> #include <linux/udp.h> - +#endif /* This define, if set, will randomly drop a packet when congestion * is more than moderate. It helps fairness in the multi-interface @@ -1266,6 +1267,7 @@ int dev_queue_xmit(struct sk_buff *skb) __skb_linearize(skb, GFP_ATOMIC)) goto out_kfree_skb; +#ifdef CONFIG_XEN /* If a checksum-deferred packet is forwarded to a device that needs a * checksum, correct the pointers and force checksumming. */ @@ -1294,6 +1296,7 @@ int dev_queue_xmit(struct sk_buff *skb) goto out_kfree_skb; skb->ip_summed = CHECKSUM_HW; } +#endif /* If packet is not checksummed and device does not support * checksumming for this protocol, complete checksumming here. @@ -1714,6 +1717,7 @@ int netif_receive_skb(struct sk_buff *skb) } #endif +#ifdef CONFIG_XEN switch (skb->ip_summed) { case CHECKSUM_UNNECESSARY: skb->proto_csum_valid = 1; @@ -1724,6 +1728,7 @@ int netif_receive_skb(struct sk_buff *skb) skb->proto_csum_valid = 0; break; } +#endif list_for_each_entry_rcu(ptype, &ptype_all, list) { if (!ptype->dev || ptype->dev == skb->dev) { diff --git a/linux-2.6-xen-sparse/net/core/skbuff.c b/linux-2.6-xen-sparse/net/core/skbuff.c index 5f7d3503c4..626db2f7b3 100644 --- a/linux-2.6-xen-sparse/net/core/skbuff.c +++ b/linux-2.6-xen-sparse/net/core/skbuff.c @@ -355,8 +355,10 @@ struct sk_buff *skb_clone(struct sk_buff *skb, int gfp_mask) C(local_df); n->cloned = 1; n->nohdr = 0; +#ifdef CONFIG_XEN C(proto_csum_valid); C(proto_csum_blank); +#endif C(pkt_type); C(ip_summed); C(priority); diff --git a/linux-2.6-xen-sparse/scripts/Makefile.xen b/linux-2.6-xen-sparse/scripts/Makefile.xen new file mode 100644 index 0000000000..b3ec53a18c --- /dev/null +++ b/linux-2.6-xen-sparse/scripts/Makefile.xen @@ -0,0 +1,14 @@ + +# cherrypickxen($1 = allobj) +cherrypickxen = $(foreach var, $(1), \ + $(shell o=$(var); \ + c=$${o/%.o/-xen.c}; \ + s=$${o/%.o/-xen.S}; \ + oxen=$${o/%.o/-xen.o}; \ + [ -f $(srctree)/$(src)/$${c} ] || \ + [ -f $(srctree)/$(src)/$${s} ] \ + && echo $$oxen \ + || echo $(var) ) \ + ) +# filterxen($1 = allobj, $2 = noobjs) +filterxen = $(filter-out $(2), $(1)) diff --git a/tools/Rules.mk b/tools/Rules.mk index 4672a40888..c52de46915 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -41,4 +41,4 @@ mk-symlinks: ( cd xen/io && ln -sf ../../$(XEN_ROOT)/xen/include/public/io/*.h . ) mkdir -p xen/linux ( cd xen/linux && \ - ln -sf ../../$(LINUX_ROOT)/include/asm-xen/linux-public/*.h . ) + ln -sf ../../$(LINUX_ROOT)/include/xen/public/*.h . ) diff --git a/tools/debugger/pdb/linux-2.6-module/debug.c b/tools/debugger/pdb/linux-2.6-module/debug.c index 03d306ddde..e53dfbc1b1 100644 --- a/tools/debugger/pdb/linux-2.6-module/debug.c +++ b/tools/debugger/pdb/linux-2.6-module/debug.c @@ -7,10 +7,10 @@ #include <linux/mm.h> #include <linux/sched.h> #include <asm-i386/kdebug.h> -#include <asm-xen/asm-i386/processor.h> -#include <asm-xen/asm-i386/ptrace.h> -#include <asm-xen/asm-i386/tlbflush.h> -#include <asm-xen/xen-public/xen.h> +#include <asm-i386/mach-xen/asm/processor.h> +#include <asm-i386/mach-xen/asm/ptrace.h> +#include <asm-i386/mach-xen/asm/tlbflush.h> +#include <xen/interface/xen.h> #include "pdb_module.h" #include "pdb_debug.h" diff --git a/tools/debugger/pdb/linux-2.6-module/module.c b/tools/debugger/pdb/linux-2.6-module/module.c index 776a7a8b68..5ca0e025ca 100644 --- a/tools/debugger/pdb/linux-2.6-module/module.c +++ b/tools/debugger/pdb/linux-2.6-module/module.c @@ -13,13 +13,13 @@ #include <asm-i386/kdebug.h> -#include <asm-xen/evtchn.h> -#include <asm-xen/ctrl_if.h> -#include <asm-xen/hypervisor.h> -#include <asm-xen/xen-public/io/domain_controller.h> -#include <asm-xen/xen-public/xen.h> +#include <xen/evtchn.h> +#include <xen/ctrl_if.h> +#include <xen/hypervisor.h> +#include <xen/interface/io/domain_controller.h> +#include <xen/interface/xen.h> -#include <asm-xen/xen-public/io/ring.h> +#include <xen/interface/io/ring.h> #include "pdb_module.h" #include "pdb_debug.h" diff --git a/tools/guest-headers/Makefile b/tools/guest-headers/Makefile index 2033cb2caf..ce9395a8ab 100644 --- a/tools/guest-headers/Makefile +++ b/tools/guest-headers/Makefile @@ -8,6 +8,6 @@ check: install: mkdir -p $(DESTDIR)/usr/include/xen/linux - install -m0644 $(linuxsparsetree)/include/asm-xen/linux-public/*.h $(DESTDIR)/usr/include/xen/linux + install -m0644 $(linuxsparsetree)/include/xen/public/*.h $(DESTDIR)/usr/include/xen/linux clean: |