[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Problem setting up a custom GDT
Simon Kagstrom wrote: The machine address you pass to Xen is a page table entry. Xen want a machine frame number.Hello! I have some problems setting up a custom GDT (I need one where the code is readable). Anyway, I try to switch to my own GDT as follows: unsigned long frames[16]; volatile unsigned long va = (unsigned long)GDT; volatile unsigned long pa = to_phys(va); volatile unsigned long ma = phys_to_machine(pa) & ~_PAGE_RW | _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_DIRTY; /* Make it read-only */ HYPERVISOR_update_va_mapping(va, (pte_t){ ma }, 0); frames[0] = ma; int ret = HYPERVISOR_set_gdt(frames, 16); (The GDT Is just copied from Linux' right now). When doing this, I always get -EINVAL from set_gdt, which I suspect is because HYPERVISOR_update_va_mapping for some reason does not succeed in setting the page read-only. I've checked the Linux implementation, and it does basically the same thing (pte_wrprotect() on the machine-address before calling update_va_mapping). Does anyone see what is wrong here? // Simon _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel frames[0] = ma >> PAGE_SHIFT; should fix you problem. Mathieu _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |