Fixes for first step in getting domU back up (by Kevin Tian)

This commit is contained in:
djm@kirby.fc.hp.com committed 2005-10-31 17:27:38 -06:00
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;
+4
View File
@@ -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;
+2 -2
View File
@@ -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);
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.