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
|