mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Fixes for first step in getting domU back up (by Kevin Tian)
This commit is contained in:
1 parent
6a106a03b0
commit
4f4f651b8c
3 files changed
+33
-25
No files matched your search
@@ -11,39 +11,43 @@ diff -Naur xen/privcmd/privcmd.c xen.patched/privcmd/privcmd.c
|
||||
if ((rc = direct_remap_pfn_range(
|
||||
vma,
|
||||
msg[j].va&PAGE_MASK,
|
||||
@@ -148,6 +151,7 @@
|
||||
}
|
||||
break;
|
||||
@@ -180,6 +183,15 @@
|
||||
for (i = 0; i < m.num; i++, addr += PAGE_SIZE, p++) {
|
||||
if (get_user(mfn, p))
|
||||
return -EFAULT;
|
||||
+#ifdef __ia64__
|
||||
+ ret = remap_pfn_range(vma,
|
||||
+ addr&PAGE_MASK,
|
||||
+ mfn,
|
||||
+ 1<<PAGE_SHIFT,
|
||||
+ vma->vm_page_prot);
|
||||
+ if (ret < 0)
|
||||
+ goto batch_err;
|
||||
+#else
|
||||
|
||||
+#ifndef __ia64__
|
||||
case IOCTL_PRIVCMD_MMAPBATCH: {
|
||||
mmu_update_t u;
|
||||
privcmd_mmapbatch_t m;
|
||||
@@ -206,7 +210,9 @@
|
||||
}
|
||||
ret = create_lookup_pte_addr(vma->vm_mm, addr, &ptep);
|
||||
if (ret)
|
||||
@@ -190,6 +202,7 @@
|
||||
|
||||
if (HYPERVISOR_mmu_update(&u, 1, NULL, m.dom) < 0)
|
||||
put_user(0xF0000000 | mfn, p);
|
||||
+#endif
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
@@ -205,6 +218,7 @@
|
||||
break;
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
+#ifndef __ia64__
|
||||
case IOCTL_PRIVCMD_GET_MACH2PHYS_START_MFN: {
|
||||
unsigned long m2pv = (unsigned long)machine_to_phys_mapping;
|
||||
pgd_t *pgd = pgd_offset_k(m2pv);
|
||||
@@ -218,6 +224,7 @@
|
||||
@@ -216,6 +230,7 @@
|
||||
-EFAULT: 0;
|
||||
}
|
||||
break;
|
||||
+#endif
|
||||
|
||||
case IOCTL_PRIVCMD_INITDOMAIN_STORE: {
|
||||
extern int do_xenbus_probe(void*);
|
||||
@@ -241,6 +248,9 @@
|
||||
|
||||
/* Initial connect. Setup channel and page. */
|
||||
xen_start_info->store_evtchn = data;
|
||||
+#ifdef __ia64__
|
||||
+#define pfn_to_mfn(x) (x)
|
||||
+#endif
|
||||
xen_start_info->store_mfn =
|
||||
pfn_to_mfn(virt_to_phys((void *)page) >>
|
||||
PAGE_SHIFT);
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
@@ -187,6 +187,10 @@ ia64_hypercall (struct pt_regs *regs)
|
||||
regs->r8 = do_console_io(regs->r14, regs->r15, regs->r16);
|
||||
break;
|
||||
|
||||
case __HYPERVISOR_xen_version:
|
||||
regs->r8 = do_xen_version(regs->r14, regs->r15);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("unknown hypercall %x\n", regs->r2);
|
||||
regs->r8 = (unsigned long)-1;
|
||||
|
||||
@@ -290,8 +290,8 @@ void context_switch(struct vcpu *prev, struct vcpu *next)
|
||||
//prev->domain->domain_id,(long)prev&0xffffff,next->domain->domain_id,(long)next&0xffffff);
|
||||
//if (prev->domain->domain_id == 1 && next->domain->domain_id == 0) cs10foo();
|
||||
//if (prev->domain->domain_id == 0 && next->domain->domain_id == 1) cs01foo();
|
||||
printk("@@sw%d/%x %d->%d\n",smp_processor_id(), hard_smp_processor_id (),
|
||||
prev->domain->domain_id,next->domain->domain_id);
|
||||
//printk("@@sw%d/%x %d->%d\n",smp_processor_id(), hard_smp_processor_id (),
|
||||
// prev->domain->domain_id,next->domain->domain_id);
|
||||
if(VMX_DOMAIN(prev)){
|
||||
vtm_domain_out(prev);
|
||||
}
|
||||
|
||||