[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] Grant tables from dom0 userspace?
Hi Andrew -- > Are there implicit unmapping problems that you thing would remain unsolved if, > for instance, there was a vm area destructor early enough to allow the OS to > properly unmap active grants? I'm having a post-unmap balloon driver problem, but could be my fault (see below). I'm not convinced that implicit unmapping is an unreasonable thing to ask of Xen. It feels less complex overall to have Xen deal with this once, rather than N operating system deal with it N different ways. I'd be interested to hear arguments here. > When you say, "others remain," can you provide a little more detail? I tried to list some in my reply to Keir. While I've got you on the line... :^) I'm having two problems right now with my attempt at implicit unmap. The hacks let me limp along well enough to make progress on the code that uses the shared memory, but any thoughts on further improvements are most welcome. The implicit unmap code executes when the cleanup_writable_pagetable() code _PAGE_GNTMAP flag is found in a modified pte. The backtrace looks like this: (XEN) [<ff13603e>] put_page_from_l1e+0xd0/0x1af (XEN) [<ff13a891>] revalidate_l1+0x159/0x168 (XEN) [<ff13aac1>] ptwr_flush+0x221/0x32f (XEN) [<ff13b6a7>] cleanup_writable_pagetable+0x5c/0x7d (XEN) [<ff137c20>] do_mmuext_op+0x85/0x8c1 (XEN) [<ff149e0f>] hypercall+0x8f/0xaf At this point, the Linux has just squashed the pte. Xen code knows the l1e, and I've added a few more bits to the maptrack object to allow me to find a match from the corresponding pfn. It's kludgey, because this only works in the special case where only one map track entity exists for a given pfn per domain. This is problem #1. Ideas? If we had the exact address of the pte, there would be no ambiguity in which maptrack entry owns the mapping. I nosed around and did not find a way to get the pte addr, but still hold out hope that it's possible. Armed with the "correct" maptrack entry, I can do most of the ummapping work then and there. Later, I get the "late" vma_close() from the OS where my guest driver explicitly unmaps to finish the job. All is well, and I'm back at the guest command prompt. Problem #2 is that the balloon driver crashes me if I try to restart my user-level app. The dump looks like this: kernel BUG at drivers/xen/balloon/balloon.c:218! invalid operand: 0000 [#1] SMP Modules linked in: CPU: 0 EIP: 0061:[<c023d8c4>] Not tainted VLI EFLAGS: 00010097 (2.6.14-xenU) EIP is at increase_reservation+0x1c4/0x230 eax: c1000000 ebx: 0000f377 ecx: c11e6eec edx: c0042000 esi: 00000004 edi: c11e6ee0 ebp: c038bf18 esp: c038bed8 ds: 007b es: 007b ss: 0069 Process events/0 (pid: 5, threadinfo=c038a000 task=c03b3530) Stack: c11e6e80 c0346d00 00000000 00000000 cf3ac000 cf3ac000 00000004 00000000 00000000 00007ff0 cf8f5030 c03b3658 00000005 00000004 00000000 c038a000 c038bf34 c023db8a 00000004 c0132dff 00000000 c03b1c00 c02ff004 c038bfb4 Call Trace: [<c010845f>] show_stack+0x7f/0xa0 [<c0108612>] show_registers+0x162/0x1d0 [<c0108824>] die+0xf4/0x180 [<c02adb85>] do_trap+0xb5/0xc0 [<c0108bec>] do_invalid_op+0xbc/0xd0 [<c0108127>] error_code+0x2b/0x30 [<c023db8a>] balloon_process+0x3a/0xb0 [<c012e05c>] worker_thread+0x19c/0x240 [<c0132ada>] kthread+0xba/0xc0 [<c0105f49>] kernel_thread_helper+0x5/0xc Code: 00 00 00 00 31 d2 89 f8 e8 5a 51 f0 ff ff 45 cc 8b 55 08 39 55 cc 0f 82 6b ff ff ff e9 2b ff ff ff 0f 0b e7 00 3a 92 2d c0 eb cd <0f> 0b da 00 3a 92 2d c0 e9 76 ff ff ff 0f 0b d7 00 3a 92 2d c0 I haven't pursed this one at all, so it could be the result a dumb mistake on my part. -steve -----Original Message----- From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Andrew Warfield Sent: Thursday, March 09, 2006 10:59 AM To: King, Steven R Cc: Cihula, Joseph; Jacob Gorm Hansen; xen-devel Devel Subject: Re: [Xen-devel] Grant tables from dom0 userspace? Hi Steven, > I've hacked around many of > the problems, such as implicit unmapping of grant references, but > others remain. Some of the issues have no resolution in the grant > table architecture. It would be quite useful to know what specific problems you have encountered in this effort as insight for future versions of the code. The main problem that I have encountered in user-level foreign page mappings is (as discussed previously) that Linux is a bit hasty in blowing away user virtual memory areas, and doesn't provide a good mechanism to safely unmap the pages. The kernel has all the information it needs to do the right thing though, and I think this should be reasonably fixed in the future -- i don't see a compelling reason for Xen to do extra book-keeping to cover for something that the OS could just as easily do. Especially for something like cross-VM mappings, which don't exist in the non-virtualized system. Are there implicit unmapping problems that you thing would remain unsolved if, for instance, there was a vm area destructor early enough to allow the OS to properly unmap active grants? When you say, "others remain," can you provide a little more detail? thanks! a. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |