[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merge xen-2.0-testing "sync w/ unstable" changes.
ChangeSet 1.1392.1.1, 2005/04/28 21:47:24+01:00, cl349@xxxxxxxxxxxxxxxxxxxx Merge xen-2.0-testing "sync w/ unstable" changes. arch/xen/i386/Kconfig | 87 ++-- arch/xen/i386/kernel/ldt.c | 5 arch/xen/i386/mm/fault.c | 9 arch/xen/i386/mm/init.c | 15 arch/xen/i386/mm/pgtable.c | 183 ++++++---- arch/xen/kernel/Makefile | 6 arch/xen/kernel/reboot.c | 30 + include/asm-xen/asm-i386/desc.h | 5 include/asm-xen/asm-i386/fixmap.h | 3 include/asm-xen/asm-i386/pgtable-2level.h | 25 - include/asm-xen/asm-i386/pgtable.h | 56 +-- include/asm-xen/asm-i386/system.h | 77 ++-- include/asm-xen/asm-i386/tlbflush.h | 9 include/asm-xen/evtchn.h | 8 include/asm-xen/hypervisor.h | 536 ++---------------------------- 15 files changed, 325 insertions(+), 729 deletions(-) diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig --- a/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig 2005-04-28 18:03:34 -04:00 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig 2005-04-28 18:03:34 -04:00 @@ -9,6 +9,10 @@ string default i386 +config X86 + bool + default y + config MMU bool default y @@ -335,36 +339,33 @@ def_bool HPET_TIMER && RTC=y config SMP - bool - default n -#config SMP -# bool "Symmetric multi-processing support" -# ---help--- -# This enables support for systems with more than one CPU. If you have -# a system with only one CPU, like most personal computers, say N. If -# you have a system with more than one CPU, say Y. -# -# If you say N here, the kernel will run on single and multiprocessor -# machines, but will use only one CPU of a multiprocessor machine. If -# you say Y here, the kernel will run on many, but not all, -# singleprocessor machines. On a singleprocessor machine, the kernel -# will run faster if you say N here. -# -# Note that if you say Y here and choose architecture "586" or -# "Pentium" under "Processor family", the kernel will not work on 486 -# architectures. Similarly, multiprocessor kernels for the "PPro" -# architecture may not work on all Pentium based boards. -# -# People using multiprocessor machines who say Y here should also say -# Y to "Enhanced Real Time Clock Support", below. The "Advanced Power -# Management" code will be disabled if you say Y here. -# -# See also the <file:Documentation/smp.txt>, -# <file:Documentation/i386/IO-APIC.txt>, -# <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at -# <http://www.tldp.org/docs.html#howto>. -# -# If you don't know what to do here, say N. + bool "Symmetric multi-processing support" + ---help--- + This enables support for systems with more than one CPU. If you have + a system with only one CPU, like most personal computers, say N. If + you have a system with more than one CPU, say Y. + + If you say N here, the kernel will run on single and multiprocessor + machines, but will use only one CPU of a multiprocessor machine. If + you say Y here, the kernel will run on many, but not all, + singleprocessor machines. On a singleprocessor machine, the kernel + will run faster if you say N here. + + Note that if you say Y here and choose architecture "586" or + "Pentium" under "Processor family", the kernel will not work on 486 + architectures. Similarly, multiprocessor kernels for the "PPro" + architecture may not work on all Pentium based boards. + + People using multiprocessor machines who say Y here should also say + Y to "Enhanced Real Time Clock Support", below. The "Advanced Power + Management" code will be disabled if you say Y here. + + See also the <file:Documentation/smp.txt>, + <file:Documentation/i386/IO-APIC.txt>, + <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at + <http://www.tldp.org/docs.html#howto>. + + If you don't know what to do here, say N. config NR_CPUS int "Maximum number of CPUs (2-255)" @@ -662,6 +663,11 @@ -mregparm=3 is used. +config X86_LOCAL_APIC + bool + depends on (X86_VISWS || SMP) && !X86_VOYAGER + default n + if XEN_PHYSDEV_ACCESS menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" @@ -671,15 +677,10 @@ depends on X86_VISWS default y -config X86_LOCAL_APIC - bool - depends on (X86_VISWS || SMP) && !X86_VOYAGER - default y - -config X86_IO_APIC - bool - depends on SMP && !(X86_VISWS || X86_VOYAGER) - default y +#config X86_IO_APIC +# bool +# depends on SMP && !(X86_VISWS || X86_VOYAGER) +# default y config PCI bool "PCI support" if !X86_VISWS @@ -951,10 +952,10 @@ 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) +# default y config X86_BIOS_REBOOT bool diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c --- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c 2005-04-28 18:03:34 -04:00 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/ldt.c 2005-04-28 18:03:34 -04:00 @@ -72,7 +72,6 @@ if (oldsize) { make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) / PAGE_SIZE); - flush_page_update_queue(); if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE) vfree(oldldt); else @@ -89,7 +88,6 @@ memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE); make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) / PAGE_SIZE); - flush_page_update_queue(); return 0; } @@ -102,8 +100,8 @@ struct mm_struct * old_mm; int retval = 0; + memset(&mm->context, 0, sizeof(mm->context)); init_MUTEX(&mm->context.sem); - mm->context.size = 0; old_mm = current->mm; if (old_mm && old_mm->context.size > 0) { down(&old_mm->context.sem); @@ -124,7 +122,6 @@ make_pages_writable(mm->context.ldt, (mm->context.size * LDT_ENTRY_SIZE) / PAGE_SIZE); - flush_page_update_queue(); if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE) vfree(mm->context.ldt); else diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c 2005-04-28 18:03:34 -04:00 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/fault.c 2005-04-28 18:03:34 -04:00 @@ -21,6 +21,7 @@ #include <linux/vt_kern.h> /* For unblank_screen() */ #include <linux/highmem.h> #include <linux/module.h> +#include <linux/percpu.h> #include <asm/system.h> #include <asm/uaccess.h> @@ -29,7 +30,7 @@ extern void die(const char *,struct pt_regs *,long); -pgd_t *cur_pgd; /* XXXsmp */ +DEFINE_PER_CPU(pgd_t *, cur_pgd); /* * Unlock any spinlocks which will prevent us from getting the @@ -453,7 +454,8 @@ printk(" at virtual address %08lx\n",address); printk(KERN_ALERT " printing eip:\n"); printk("%08lx\n", regs->eip); - page = ((unsigned long *) cur_pgd)[address >> 22]; + page = ((unsigned long *) per_cpu(cur_pgd, smp_processor_id())) + [address >> 22]; printk(KERN_ALERT "*pde = ma %08lx pa %08lx\n", page, machine_to_phys(page)); /* @@ -529,7 +531,7 @@ pmd_t *pmd, *pmd_k; pte_t *pte_k; - pgd = index + cur_pgd; + pgd = index + per_cpu(cur_pgd, smp_processor_id()); pgd_k = init_mm.pgd + index; if (!pgd_present(*pgd_k)) @@ -551,7 +553,6 @@ if (!pmd_present(*pmd_k)) goto no_context; set_pmd(pmd, *pmd_k); - xen_flush_page_update_queue(); /* flush PMD update */ pte_k = pte_offset_kernel(pmd_k, address); if (!pte_present(*pte_k)) diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c 2005-04-28 18:03:34 -04:00 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c 2005-04-28 18:03:34 -04:00 @@ -192,7 +192,6 @@ } pte_ofs = 0; } - flush_page_update_queue(); } pmd_idx = 0; } @@ -356,9 +355,9 @@ */ memcpy(pgd_base, old_pgd, PTRS_PER_PGD_NO_HV*sizeof(pgd_t)); make_page_readonly(pgd_base); - queue_pgd_pin(__pa(pgd_base)); + xen_pgd_pin(__pa(pgd_base)); load_cr3(pgd_base); - queue_pgd_unpin(__pa(old_pgd)); + xen_pgd_unpin(__pa(old_pgd)); make_page_writable(old_pgd); __flush_tlb_all(); free_bootmem(__pa(old_pgd), PAGE_SIZE); @@ -563,7 +562,6 @@ zone_sizes_init(); /* Switch to the real shared_info page, and clear the dummy page. */ - flush_page_update_queue(); set_fixmap_ma(FIX_SHARED_INFO, xen_start_info.shared_info); HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO); memset(empty_zero_page, 0, sizeof(empty_zero_page)); @@ -712,18 +710,9 @@ kmem_cache_t *pgd_cache; kmem_cache_t *pmd_cache; -kmem_cache_t *pte_cache; void __init pgtable_cache_init(void) { - pte_cache = kmem_cache_create("pte", - PTRS_PER_PTE*sizeof(pte_t), _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |