[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] Communication between HVM and dom0 through the Hypervisor
> -----Original Message----- > From: M.A. Williamson [mailto:maw48@xxxxxxxxxxxxxxxx] On > Behalf Of Mark Williamson > Sent: 19 April 2007 03:22 > To: xen-devel@xxxxxxxxxxxxxxxxxxx > Cc: Petersson, Mats; Daniele Sgandurra > Subject: Re: [Xen-devel] Communication between HVM and dom0 > through the Hypervisor > > > > Is there currently a method for passing information > > > between a HVM domain and domain 0 directly through the > > > hypervisor? > > > I understand there could be at least three ways to do > > > so: > > > > > > -VMCALL from HVM + params in registers. > > > -using "PV-on-HVM", but I think the frontend drivers > > > need to be ported in the mainline Linux kernel and > > > this is currently being done, right? > > > > What do you mean. There is the "unmodified_drivers" > directory in Xen, > > which contains, as far as I know, complete drivers for > block and network > > on HVM Linux. Of course, you'd need a differnet source-code > if you want > > Linux 2.4 drivers or Windows drivers, neither of which is > supplied with > > Xen's sources. > > I think Daniele has read confusing accounts of the PV-on-HVM > drivers vs the > mainline kernel merge. These are (semi) independent issues: > for Linux 2.6 > PV-on-HVM drivers can simply be built by the administrator > and installed into > their VM if they want them. > > The code that's being proposed for the Linux merge is to > support full PV, not > PV-on-HVM (as far as I know). > > > > -using XenStore/XenBus (is that possible?) > > > > I believe so, but I'm not entirely sure about how that > works in a HVM > > guest. > > Yes, but it requires the PV-on-HVM driver infrastructure. > I'm not clear on > the exact implementation details, but it involves the guest > talking to a > fake "Xen platform" PCI device, which enables it to then set > up a Xenstore > connection and share configuration data on it. Thanks for filling that in. > > > > As an example, suppose I have a HVM running Linux (on > > > Intel IVT-x), and I want to call a callback function > > > in dom0 each time the HVM contacts the hypervisor, > > > what would you suggest me to do? Imagine I want to > > > notify dom0 each time a process issues a system call, > > > by adding some code in the prologue of the syscall > > > handler to notify the hypervisor. > > > > You can use VM[M]CALL, although this is ALREADY being used > for PV-on-HVM > > drivers, so you'd have to filter your calls from the ones used by > > PV-on-HVM drivers (using a high bit to indicate that those are your > > functions rather than PV-calls would be the easiest method). > > > > Another possibility is to find a unused IO-port or memory > address and > > cause a IOIO-exit or Page-fault on a MMIO address that > isn't otherwise > > used. IO-ports such as 0xBCDE, 0xAAA0 are most likely not > used, so you > > could to a 8, 16 or 32-bit IO to one of those pretty easily. One thing I forgot to add: At the point of the intercept, you will have access to all CPU registers, so it's not really important which method you use for the intercept from that perspective. > > > > The NEXT problem is of course getting this information out of the > > hypervisor into Dom0. > > It it possible to arrange for a VMEXIT to occur on int 0x80 > (which IIRC is the > Linux system call... I guess VT-x would also be able to > intercept sysenter)? > That way the guest wouldn't have to be modified to notify > Xen. Xen would > then have to e.g. share a ring buffer with dom0 regarding > events of this > nature for each domain. You could hack something up so that > the guest > blocked on each syscall until dom0 acknowledged it... Now,that's a brilliant idea. Why didn't I think of that. Only one minor problem: It will only work for INT n instructions (but since it's possible to hide SYSENTER/SYSCALL instrutions from the guest via CPUID intercept, it can at least for 32-bit be forced to only do INT 80h calls), and only on AMD processors (this is more of a problem, as the original post talks about Intel processors). Intel processors don't allow intercepts of INT n instructions. Neither processor allow intercepts of SYSENTER/SYSCALL instructions. [It's still a very good idea, and I wish I had at least THOUGHT of it!] -- Mats > > There's also the Xen gdb server - maybe (if it supports HVM > guests?) you could > use this to watch the syscall paths. > > HTH, > cheers, > Mark > > -- > Dave: Just a question. What use is a unicyle with no seat? > And no pedals! > Mark: To answer a question with a question: What use is a skateboard? > Dave: Skateboards have wheels. > Mark: My wheel has a wheel! > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |