ChangeSet 1.1236.32.12, 2005/03/19 14:49:05+00:00, mafetter@xxxxxxxxxxxxxxxx
Christian's changes for linux 2.6.10 so that it boots in shadow mode
with translation enabled.
Signed-off-by: michael.fetterman@xxxxxxxxxxxx
linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig | 4
linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c | 2
linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c | 10 +-
linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c | 3
linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c | 2
linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c | 20 ++--
linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c | 9 -
linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c | 50
++++------
linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c | 14 +-
linux-2.6.10-xen-sparse/arch/xen/i386/mm/ioremap.c | 28 ++++-
linux-2.6.10-xen-sparse/arch/xen/i386/mm/pageattr.c | 5 -
linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c | 43
++++----
linux-2.6.10-xen-sparse/arch/xen/kernel/reboot.c | 14 +-
linux-2.6.10-xen-sparse/drivers/xen/balloon/balloon.c | 8 -
linux-2.6.10-xen-sparse/drivers/xen/blkback/blkback.c | 2
linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c | 8 -
linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c | 2
linux-2.6.10-xen-sparse/drivers/xen/netback/netback.c | 6 -
linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c | 14 +-
linux-2.6.10-xen-sparse/drivers/xen/privcmd/privcmd.c | 2
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/desc.h | 2
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/fixmap.h | 10 +-
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/io.h | 19 ++-
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/page.h | 34 +++---
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgalloc.h | 3
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h | 14 --
linux-2.6.10-xen-sparse/include/asm-xen/asm-i386/pgtable.h | 14 ++
xen/include/public/arch-x86_32.h | 4
28 files changed, 178 insertions(+), 168 deletions(-)
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig
b/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig
--- a/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig 2005-04-05
12:13:11 -04:00
@@ -12,9 +12,9 @@
#
CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PHYSDEV_ACCESS=y
-CONFIG_XEN_BLKDEV_BACKEND=y
+# CONFIG_XEN_BLKDEV_BACKEND is not set
# CONFIG_XEN_BLKDEV_TAP_BE is not set
-CONFIG_XEN_NETDEV_BACKEND=y
+# CONFIG_XEN_NETDEV_BACKEND is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/cpu/common.c 2005-04-05
12:13:11 -04:00
@@ -512,7 +512,7 @@
for (va = gdt_descr->address, f = 0;
va < gdt_descr->address + gdt_descr->size;
va += PAGE_SIZE, f++) {
- frames[f] = virt_to_machine(va) >> PAGE_SHIFT;
+ frames[f] = __vms_virt_to_machine(va) >> PAGE_SHIFT;
make_page_readonly((void *)va);
}
flush_page_update_queue();
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/ldt.c 2005-04-05
12:13:11 -04:00
@@ -61,8 +61,10 @@
cpumask_t mask;
preempt_disable();
#endif
+#if 0
make_pages_readonly(pc->ldt, (pc->size * LDT_ENTRY_SIZE) /
PAGE_SIZE);
+#endif
load_LDT(pc);
flush_page_update_queue();
#ifdef CONFIG_SMP
@@ -73,8 +75,10 @@
#endif
}
if (oldsize) {
+#if 0
make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) /
PAGE_SIZE);
+#endif
flush_page_update_queue();
if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE)
vfree(oldldt);
@@ -90,8 +94,10 @@
if (err < 0)
return err;
memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE);
+#if 0
make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) /
PAGE_SIZE);
+#endif
flush_page_update_queue();
return 0;
}
@@ -124,9 +130,11 @@
if (mm->context.size) {
if (mm == current->active_mm)
clear_LDT();
+#if 0
make_pages_writable(mm->context.ldt,
(mm->context.size * LDT_ENTRY_SIZE) /
PAGE_SIZE);
+#endif
flush_page_update_queue();
if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE)
vfree(mm->context.ldt);
@@ -222,7 +230,7 @@
}
lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *)
mm->context.ldt);
- mach_lp = arbitrary_virt_to_machine(lp);
+ mach_lp = arbitrary_virt_to_phys(lp);
/* Allow LDTs to be cleared by the user. */
if (ldt_info.base_addr == 0 && ldt_info.limit == 0) {
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/pci-dma.c 2005-04-05
12:13:11 -04:00
@@ -30,6 +30,8 @@
static void
xen_contig_memory(unsigned long vstart, unsigned int order)
{
+#define HACK
+#ifndef HACK
/*
* Ensure multi-page extents are contiguous in machine memory.
* This code could be cleaned up some, and the number of
@@ -76,6 +78,7 @@
xen_tlb_flush();
balloon_unlock(flags);
+#endif
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/process.c 2005-04-05
12:13:11 -04:00
@@ -518,7 +518,7 @@
if (unlikely(next->tls_array[i].a != prev->tls_array[i].a || \
next->tls_array[i].b != prev->tls_array[i].b)) \
queue_multicall3(__HYPERVISOR_update_descriptor, \
- virt_to_machine(&get_cpu_gdt_table(cpu) \
+ virt_to_phys(&get_cpu_gdt_table(cpu) \
[GDT_ENTRY_TLS_MIN + i]), \
((u32 *)&next->tls_array[i])[0], \
((u32 *)&next->tls_array[i])[1]); \
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c 2005-04-05
12:13:11 -04:00
@@ -345,8 +345,8 @@
shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
EXPORT_SYMBOL(HYPERVISOR_shared_info);
-unsigned int *phys_to_machine_mapping, *pfn_to_mfn_frame_list;
-EXPORT_SYMBOL(phys_to_machine_mapping);
+unsigned int *__vms_phys_to_machine_mapping, *__vms_pfn_to_mfn_frame_list;
+EXPORT_SYMBOL(__vms_phys_to_machine_mapping);
DEFINE_PER_CPU(multicall_entry_t, multicall_list[8]);
DEFINE_PER_CPU(int, nr_multicall_ents);
@@ -1142,7 +1142,7 @@
}
#endif
- phys_to_machine_mapping = (unsigned int *)xen_start_info.mfn_list;
+ __vms_phys_to_machine_mapping = (unsigned int *)xen_start_info.mfn_list;
return max_low_pfn;
}
@@ -1437,11 +1437,11 @@
/* Make sure we have a large enough P->M table. */
if (max_pfn > xen_start_info.nr_pages) {
- phys_to_machine_mapping = alloc_bootmem_low_pages(
+ __vms_phys_to_machine_mapping = alloc_bootmem_low_pages(
max_pfn * sizeof(unsigned long));
- memset(phys_to_machine_mapping, ~0,
+ memset(__vms_phys_to_machine_mapping, ~0,
max_pfn * sizeof(unsigned long));
- memcpy(phys_to_machine_mapping,
+ memcpy(__vms_phys_to_machine_mapping,
(unsigned long *)xen_start_info.mfn_list,
xen_start_info.nr_pages * sizeof(unsigned long));
free_bootmem(
@@ -1450,14 +1450,14 @@
sizeof(unsigned long))));
}
- pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE);
+ __vms_pfn_to_mfn_frame_list = alloc_bootmem_low_pages(PAGE_SIZE);
for ( i=0, j=0; i < max_pfn; i+=(PAGE_SIZE/sizeof(unsigned long)), j++ )
{
- pfn_to_mfn_frame_list[j] =
- virt_to_machine(&phys_to_machine_mapping[i]) >> PAGE_SHIFT;
+ __vms_pfn_to_mfn_frame_list[j] =
+ __vms_virt_to_machine(&__vms_phys_to_machine_mapping[i]) >>
PAGE_SHIFT;
}
HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list =
- virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT;
+ __vms_virt_to_machine(__vms_pfn_to_mfn_frame_list) >> PAGE_SHIFT;
/*
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c 2005-04-05 12:13:11
-04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/fault.c 2005-04-05 12:13:11
-04:00
@@ -458,8 +458,8 @@
printk("%08lx\n", regs->eip);
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));
+ printk(KERN_ALERT "*pde = ma %08lx pa %08lx\n",
+ __vms_phys_to_machine(page), page);
/*
* We must not directly access the pte in the highpte
* case, the page table might be allocated in highmem.
@@ -470,10 +470,9 @@
if (page & 1) {
page &= PAGE_MASK;
address &= 0x003ff000;
- page = machine_to_phys(page);
page = ((unsigned long *) __va(page))[address >> PAGE_SHIFT];
- printk(KERN_ALERT "*pte = ma %08lx pa %08lx\n", page,
- machine_to_phys(page));
+ printk(KERN_ALERT "*pte = ma %08lx pa %08lx\n",
+ __vms_phys_to_machine(page), page);
}
#endif
show_trace(NULL, (unsigned long *)®s[1]);
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c
b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c 2005-04-05
12:13:11 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c 2005-04-05
12:13:11 -04:00
@@ -56,7 +56,7 @@
#ifdef CONFIG_SMP
#define QUEUE_SIZE 1
#else
-#define QUEUE_SIZE 128
+#define QUEUE_SIZE 1
#endif
#endif
@@ -125,14 +125,12 @@
void queue_l1_entry_update(pte_t *ptr, unsigned long val)
{
- _flush_page_update_queue();
- *(unsigned long *)ptr = val;
+ set_pte(ptr, __pte(val));
}
void queue_l2_entry_update(pmd_t *ptr, unsigned long val)
{
- _flush_page_update_queue();
- *(unsigned long *)ptr = val;
+ set_pmd(ptr, __pmd(val));
}
void queue_pt_switch(unsigned long ptr)
@@ -142,7 +140,7 @@
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
idx = per_cpu(mmu_update_queue_idx, cpu);
- per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr);
+ per_cpu(update_queue[idx], cpu).ptr = __vms_phys_to_machine(ptr);
per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND;
per_cpu(update_queue[idx], cpu).val = MMUEXT_NEW_BASEPTR;
increment_index();
@@ -176,56 +174,56 @@
spin_unlock_irqrestore(&update_lock, flags);
}
-void queue_pgd_pin(unsigned long ptr)
+void __vms_queue_pgd_pin(unsigned long ptr)
{
int cpu = smp_processor_id();
int idx;
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
idx = per_cpu(mmu_update_queue_idx, cpu);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|