Re: [kvm-devel] Using VMChannel to communicate with the host.
Cam Macdonell wrote: > Dor Laor wrote: > >>> >> Hmm, well it's an old code that Uri will rebase for virtio so just >> drop it. >> I just thought it might help. >>> > > No worries. In terms of moving to virtIO I grabbed your tree > previously to look at it. To test and play around with virtIO, do I > need to use your kernel (or module) in the guest? > You can use any kernel, just load the kvm-pv, virtio-net, virtio-be, kvm-net modules in the guest in this order. Pull again since I fixed some bugs yesterday. - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Dor Laor wrote: >> > Hmm, well it's an old code that Uri will rebase for virtio so just drop it. > I just thought it might help. >> No worries. In terms of moving to virtIO I grabbed your tree previously to look at it. To test and play around with virtIO, do I need to use your kernel (or module) in the guest? Thanks, Cam - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Cameron Macdonell wrote: > > On 15-Sep-07, at 4:47 PM, Dor Laor wrote: > > > Cam Macdonell wrote: > >> It didn't work. I used the following option: -vmchannel > >> di:2258,tcp:0:,server (the // confused kvm) and when the VM > >> booted, > >> I connected with "telnet localhost " which allowed the boot to > >> proceed. But, I didn't get the hello host message when I loaded the > >> hypercall module. dmesg did show that the module loaded > >> successfully. > >> I'll dig around with it and see what else I can figure ou > >> > > I just tried it and it worked. I used fc7 2.6.21 kernel, 64 bits > > for the guest. > > Can you send the relevant dmesg? > > Here is the dmesg output within the guest. I am running KVM-39 on > Ubuntu 2.6.20 kernel, 32 bit for both > host and guest. > > [ 540.144000] Qumranet_hypercall_driver > [ 540.148000] pci dev :00:04.0 (id 5002:2258 rev 00) is a guest > hypercall device > [ 540.148000] PCI: Found IRQ 9 for device :00:04.0 > [ 540.148000] hypercall_init_board: PIO region size == 0x100 > [ 540.148000] hypercall_init_board: MMIO region size == 0x00 > [ 540.148000] name=: base_addr=0xc200, io_addr=0x1c200, IRQ=9 > Well this part looks good, I'll try to run 32 bit guest later on. > > For what it's worth, I can compile the driver/hypercall.c file that > comes with kvm-39. However, I can't compile your hypercall.c > implementation, I get the following error: > Hmm, well it's an old code that Uri will rebase for virtio so just drop it. I just thought it might help. > > make -C /lib/modules/2.6.20-16-generic/build M=`pwd` "$@" > make[1]: Entering directory `/usr/src/linux-headers-2.6.20-16-generic' >CC [M] /home/kvm/kvm-userspace/drivers/hypercall.o > /home/kvm/kvm-userspace/drivers/hypercall.c: In function > ‘hypercall_do_tasklet’: > /home/kvm/kvm-userspace/drivers/hypercall.c:226: error: invalid > lvalue in unary ‘&’ > /home/kvm/kvm-userspace/drivers/hypercall.c:226: error: invalid > lvalue in unary ‘&’ > /home/kvm/kvm-userspace/drivers/hypercall.c:231: warning: implicit > declaration of function ‘hypercall_tx’ > /home/kvm/kvm-userspace/drivers/hypercall.c: At top level: > /home/kvm/kvm-userspace/drivers/hypercall.c:236: error: static > declaration of ‘hypercall_tx’ follows non-static declaration > /home/kvm/kvm-userspace/drivers/hypercall.c:231: error: previous > implicit declaration of ‘hypercall_tx’ was here > /home/kvm/kvm-userspace/drivers/hypercall.c: In function > ‘hypercall_interrupt’: > /home/kvm/kvm-userspace/drivers/hypercall.c:302: warning: passing > argument 1 of ‘__constant_memcpy’ makes pointer from integer without > a cast > /home/kvm/kvm-userspace/drivers/hypercall.c:302: warning: passing > argument 1 of ‘__memcpy’ makes pointer from integer without a cast > /home/kvm/kvm-userspace/drivers/hypercall.c: In function > ‘hypercall_open’: > /home/kvm/kvm-userspace/drivers/hypercall.c:320: warning: passing > argument 2 of ‘request_irq’ from incompatible pointer type > /home/kvm/kvm-userspace/drivers/hypercall.c:326: warning: assignment > makes integer from pointer without a cast > /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: > ‘hypercall_task’ undeclared (first use in this function) > /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: (Each > undeclared identifier is reported only once > /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: for each > function it appears in.) > make[2]: *** [/home/kvm/kvm-userspace/drivers/hypercall.o] Error 1 > make[1]: *** [_module_/home/kvm/kvm-userspace/drivers] Error 2 > make[1]: Leaving directory `/usr/src/linux-headers-2.6.20-16-generic' > make: *** [all] Error 2 > > Thanks, > Cam > > --- > A. Cameron Macdonell > Ph.D. Student > Department of Computing Science > University of Alberta > [EMAIL PROTECTED] > > > - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
On 15-Sep-07, at 4:47 PM, Dor Laor wrote: > Cam Macdonell wrote: >> It didn't work. I used the following option: -vmchannel >> di:2258,tcp:0:,server (the // confused kvm) and when the VM >> booted, >> I connected with "telnet localhost " which allowed the boot to >> proceed. But, I didn't get the hello host message when I loaded the >> hypercall module. dmesg did show that the module loaded >> successfully. >> I'll dig around with it and see what else I can figure ou >> > I just tried it and it worked. I used fc7 2.6.21 kernel, 64 bits > for the guest. > Can you send the relevant dmesg? Here is the dmesg output within the guest. I am running KVM-39 on Ubuntu 2.6.20 kernel, 32 bit for both host and guest. [ 540.144000] Qumranet_hypercall_driver [ 540.148000] pci dev :00:04.0 (id 5002:2258 rev 00) is a guest hypercall device [ 540.148000] PCI: Found IRQ 9 for device :00:04.0 [ 540.148000] hypercall_init_board: PIO region size == 0x100 [ 540.148000] hypercall_init_board: MMIO region size == 0x00 [ 540.148000] name=: base_addr=0xc200, io_addr=0x1c200, IRQ=9 For what it's worth, I can compile the driver/hypercall.c file that comes with kvm-39. However, I can't compile your hypercall.c implementation, I get the following error: make -C /lib/modules/2.6.20-16-generic/build M=`pwd` "$@" make[1]: Entering directory `/usr/src/linux-headers-2.6.20-16-generic' CC [M] /home/kvm/kvm-userspace/drivers/hypercall.o /home/kvm/kvm-userspace/drivers/hypercall.c: In function ‘hypercall_do_tasklet’: /home/kvm/kvm-userspace/drivers/hypercall.c:226: error: invalid lvalue in unary ‘&’ /home/kvm/kvm-userspace/drivers/hypercall.c:226: error: invalid lvalue in unary ‘&’ /home/kvm/kvm-userspace/drivers/hypercall.c:231: warning: implicit declaration of function ‘hypercall_tx’ /home/kvm/kvm-userspace/drivers/hypercall.c: At top level: /home/kvm/kvm-userspace/drivers/hypercall.c:236: error: static declaration of ‘hypercall_tx’ follows non-static declaration /home/kvm/kvm-userspace/drivers/hypercall.c:231: error: previous implicit declaration of ‘hypercall_tx’ was here /home/kvm/kvm-userspace/drivers/hypercall.c: In function ‘hypercall_interrupt’: /home/kvm/kvm-userspace/drivers/hypercall.c:302: warning: passing argument 1 of ‘__constant_memcpy’ makes pointer from integer without a cast /home/kvm/kvm-userspace/drivers/hypercall.c:302: warning: passing argument 1 of ‘__memcpy’ makes pointer from integer without a cast /home/kvm/kvm-userspace/drivers/hypercall.c: In function ‘hypercall_open’: /home/kvm/kvm-userspace/drivers/hypercall.c:320: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type /home/kvm/kvm-userspace/drivers/hypercall.c:326: warning: assignment makes integer from pointer without a cast /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: ‘hypercall_task’ undeclared (first use in this function) /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: (Each undeclared identifier is reported only once /home/kvm/kvm-userspace/drivers/hypercall.c:328: error: for each function it appears in.) make[2]: *** [/home/kvm/kvm-userspace/drivers/hypercall.o] Error 1 make[1]: *** [_module_/home/kvm/kvm-userspace/drivers] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-2.6.20-16-generic' make: *** [all] Error 2 Thanks, Cam --- A. Cameron Macdonell Ph.D. Student Department of Computing Science University of Alberta [EMAIL PROTECTED] - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Cam Macdonell wrote: Dor Laor wrote: >>> You need to open the unix socket you passed to the vmchannel >>> parameter. >>> An easier alternative is to use -vmchannel di:2258,tcp:// >>> 0:,server. >>> Before the guest loads you'll need to telnet the port and then >>> you should receive the >>> hello world output once the driver is up. >>> -Dor >> I tried having a program listening on the unix domain socket. >> Actually, the VM won't even start until a program connects to the >> socket. I didn't get the message with my listening program, but I'll >> try the telnet method as I haven't programmed a socket in a while so >> I may have missed a step. > > Go for it, its 1 minute effort. Hi Dor, It didn't work. I used the following option: -vmchannel di:2258,tcp:0:,server (the // confused kvm) and when the VM booted, I connected with "telnet localhost " which allowed the boot to proceed. But, I didn't get the hello host message when I loaded the hypercall module. dmesg did show that the module loaded successfully. I'll dig around with it and see what else I can figure ou I just tried it and it worked. I used fc7 2.6.21 kernel, 64 bits for the guest. Can you send the relevant dmesg? - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Dor Laor wrote: >>> You need to open the unix socket you passed to the vmchannel >>> parameter. >>> An easier alternative is to use -vmchannel di:2258,tcp:// >>> 0:,server. >>> Before the guest loads you'll need to telnet the port and then >>> you should receive the >>> hello world output once the driver is up. >>> -Dor >> I tried having a program listening on the unix domain socket. >> Actually, the VM won't even start until a program connects to the >> socket. I didn't get the message with my listening program, but I'll >> try the telnet method as I haven't programmed a socket in a while so >> I may have missed a step. > > Go for it, its 1 minute effort. Hi Dor, It didn't work. I used the following option: -vmchannel di:2258,tcp:0:,server (the // confused kvm) and when the VM booted, I connected with "telnet localhost " which allowed the boot to proceed. But, I didn't get the hello host message when I loaded the hypercall module. dmesg did show that the module loaded successfully. I'll dig around with it and see what else I can figure out > >> While getting this working is novel to me, it seems from your email >> that not much can be done with the hypercall interface in terms of >> host-VM or VM-to-VM communication, correct? If reading and writing >> don't work, how can one exchange info between VMs? I'll look forward >> to the virtIO implementation. >> > > The vmchannel was not intended to VM-to-VM networking, although it can > work. > Next version will be better. Anyway, it should have similar performance > to pv network driver. Cool. Thanks, Cam - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
>> You need to open the unix socket you passed to the vmchannel >> parameter. >> An easier alternative is to use -vmchannel di:2258,tcp:// >> 0:,server. >> Before the guest loads you'll need to telnet the port and then >> you should receive the >> hello world output once the driver is up. >> -Dor > >I tried having a program listening on the unix domain socket. >Actually, the VM won't even start until a program connects to the >socket. I didn't get the message with my listening program, but I'll >try the telnet method as I haven't programmed a socket in a while so >I may have missed a step. Go for it, its 1 minute effort. >While getting this working is novel to me, it seems from your email >that not much can be done with the hypercall interface in terms of >host-VM or VM-to-VM communication, correct? If reading and writing >don't work, how can one exchange info between VMs? I'll look forward >to the virtIO implementation. > The vmchannel was not intended to VM-to-VM networking, although it can work. Next version will be better. Anyway, it should have similar performance to pv network driver. - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
On 11-Sep-07, at 1:09 AM, Dor Laor wrote: > Cam Macdonell wrote: >> >> Dor Laor wrote: >> > I just tested it, it got a little deprecated over time since it >> call >> > pci_module_init instead of pci_register_* and some more irq >> function >> > deprecation.The sysfs interface in not complete and you can't >> read/write >> > from the device. >> > The qemu parameters are -vmchannel di:2258,unix:/tmp/file,server >> > 2258 is the vendor id for the device, you can use unix sockets >> ot even >> > tcp for the host end. >> > >> >> Hi Dor, >> >> Thanks, that got it up and running. But in the hypercall.c code >> (from >> the git repo) there is a "hello host" message that looks like it >> should >> be written to the host. How do I trigger that to be sent so my very >> simple "listening" program can read it? >> >> Thanks, >> Cam >> > You need to open the unix socket you passed to the vmchannel > parameter. > An easier alternative is to use -vmchannel di:2258,tcp:// > 0:,server. > Before the guest loads you'll need to telnet the port and then > you should receive the > hello world output once the driver is up. > -Dor I tried having a program listening on the unix domain socket. Actually, the VM won't even start until a program connects to the socket. I didn't get the message with my listening program, but I'll try the telnet method as I haven't programmed a socket in a while so I may have missed a step. While getting this working is novel to me, it seems from your email that not much can be done with the hypercall interface in terms of host-VM or VM-to-VM communication, correct? If reading and writing don't work, how can one exchange info between VMs? I'll look forward to the virtIO implementation. Thanks, Cam --- A. Cameron Macdonell Ph.D. Student Department of Computing Science University of Alberta [EMAIL PROTECTED] - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Cam Macdonell wrote: > > Dor Laor wrote: > > I just tested it, it got a little deprecated over time since it call > > pci_module_init instead of pci_register_* and some more irq function > > deprecation.The sysfs interface in not complete and you can't read/write > > from the device. > > The qemu parameters are -vmchannel di:2258,unix:/tmp/file,server > > 2258 is the vendor id for the device, you can use unix sockets ot even > > tcp for the host end. > > > > Hi Dor, > > Thanks, that got it up and running. But in the hypercall.c code (from > the git repo) there is a "hello host" message that looks like it should > be written to the host. How do I trigger that to be sent so my very > simple "listening" program can read it? > > Thanks, > Cam > You need to open the unix socket you passed to the vmchannel parameter. An easier alternative is to use -vmchannel di:2258,tcp://0:,server. Before the guest loads you'll need to telnet the port and then you should receive the hello world output once the driver is up. -Dor - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Dor Laor wrote: > I just tested it, it got a little deprecated over time since it call > pci_module_init instead of pci_register_* and some more irq function > deprecation.The sysfs interface in not complete and you can't read/write > from the device. > The qemu parameters are -vmchannel di:2258,unix:/tmp/file,server > 2258 is the vendor id for the device, you can use unix sockets ot even > tcp for the host end. > Hi Dor, Thanks, that got it up and running. But in the hypercall.c code (from the git repo) there is a "hello host" message that looks like it should be written to the host. How do I trigger that to be sent so my very simple "listening" program can read it? Thanks, Cam - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Cam Macdonell wrote: > Hi, > > I'm trying to get a better understanding of VM-to-host communication > that doesn't involve going over virtual networks. I understand there > are a couple of developments underway, but I just want to play around a > better sense of things. I think the current hypercall mechanism is the > current way to do this using the -vmchannel option. But, I'm not very > experienced with PCI devices and their drivers so I need some help. All > I want to do is to communicate across a unix domain socket on the host. > Besides loading the hypercall module in the guest how do things needs > to be configured on the host? > > Is there a simple tutorial or just a webpage with examples for how to do > this? > > Thanks, > Cam > I just tested it, it got a little deprecated over time since it call pci_module_init instead of pci_register_* and some more irq function deprecation.The sysfs interface in not complete and you can't read/write from the device. The qemu parameters are -vmchannel di:2258,unix:/tmp/file,server 2258 is the vendor id for the device, you can use unix sockets ot even tcp for the host end. In several week we'll publish better version of it. Maybe we'll publish a preview before. -Dor - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
Troy Benjegerdes wrote: > On Fri, Sep 07, 2007 at 04:44:30PM -0600, Cam Macdonell wrote: > >> Hi, >> >> I'm trying to get a better understanding of VM-to-host communication >> that doesn't involve going over virtual networks. I understand there >> are a couple of developments underway, but I just want to play around a >> better sense of things. I think the current hypercall mechanism is the >> current way to do this using the -vmchannel option. But, I'm not very >> experienced with PCI devices and their drivers so I need some help. All >> I want to do is to communicate across a unix domain socket on the host. >> Besides loading the hypercall module in the guest how do things needs >> to be configured on the host? >> >> Is there a simple tutorial or just a webpage with examples for how to do >> this? >> > > I'm going to suggest that a better way to do VM-to-host or VM-to-VM > communication would be to write an OpenFabrics (www.openfabrics.org) > driver that uses hypercalls. There is probably some gotcha I am not > aware of, but I think this would allow direct userspace to userspace > communication between a process running on a host, and a process running > on a VM, while still maintaining isolation. > > Basically that's true but you need a host glue dirver to connect the two + the hypercall implementation. It can be easily added to KVM with a small cost. BTW: does all windows guest will have the guest side driver implemented? Including XP, 2k, Vista? - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
Re: [kvm-devel] Using VMChannel to communicate with the host.
On Fri, Sep 07, 2007 at 04:44:30PM -0600, Cam Macdonell wrote: > > Hi, > > I'm trying to get a better understanding of VM-to-host communication > that doesn't involve going over virtual networks. I understand there > are a couple of developments underway, but I just want to play around a > better sense of things. I think the current hypercall mechanism is the > current way to do this using the -vmchannel option. But, I'm not very > experienced with PCI devices and their drivers so I need some help. All > I want to do is to communicate across a unix domain socket on the host. > Besides loading the hypercall module in the guest how do things needs > to be configured on the host? > > Is there a simple tutorial or just a webpage with examples for how to do > this? I'm going to suggest that a better way to do VM-to-host or VM-to-VM communication would be to write an OpenFabrics (www.openfabrics.org) driver that uses hypercalls. There is probably some gotcha I am not aware of, but I think this would allow direct userspace to userspace communication between a process running on a host, and a process running on a VM, while still maintaining isolation. - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel
[kvm-devel] Using VMChannel to communicate with the host.
Hi, I'm trying to get a better understanding of VM-to-host communication that doesn't involve going over virtual networks. I understand there are a couple of developments underway, but I just want to play around a better sense of things. I think the current hypercall mechanism is the current way to do this using the -vmchannel option. But, I'm not very experienced with PCI devices and their drivers so I need some help. All I want to do is to communicate across a unix domain socket on the host. Besides loading the hypercall module in the guest how do things needs to be configured on the host? Is there a simple tutorial or just a webpage with examples for how to do this? Thanks, Cam - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/ ___ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel