On 22/01/2015 19:56, Stefano Stabellini wrote: > On Thu, 22 Jan 2015, Mao Mingy wrote: >> On 21/01/2015 18:51, Stefano Stabellini wrote: >>> On Wed, 21 Jan 2015, Mao Mingy wrote: >>>> I am trying to run the PVHVM guest on omap5 (arm arch) so that I can get >>>> the >>>> frame buffer shared by Domains. my setup are: >>>> 1. run xen4.5 after the u-boot. >>>> 2. start the dom0 (on linux kernel 3.12) on xen. >>> 3.12 is pretty old now >>> >>> >>>> 3. run the qemu (from xen 4.5) and HVM backend on xen. >>> Is this the QEMU binary that gets compiled as part of the Xen 4.5 build >>> and started automatically by xl if you configure the VM with a >>> framebuffer? >> Yes. it's compiled from Xen 4.5. exact location @ " >> ./xen_4.5/dist/install/usr/local/lib/xen/bin/qemu-system-i386 " >>>> 4. run the guest domain as "Machine: Dummy Virtual Machine, model: >>>> XENVM-4.5" >>>> 5. try to build a frame buffer on guest domain by >>>> CONFIG_XEN_FBDEV_FRONTEND = y >>>> CONFIG_FB_VIRTUAL=y >>>> >>>> after change to domain checking in the first list of xenfb_init(...) in >>>> xen-fbfront.c from >>>> if (!xen_pv_domain()) ---> if (!xen_domain()) >>>> the /dev/fb0 is built up on guest domain. However, writing to this fb has >>>> no >>>> response from screen. >>>> >>>> Why xenfb_init limited to PV domain only? >>> No it is not. In fact if you use a more recent Linux kernel, you won't >>> need to make any modifications and it should work out of the box. >> Thanks. Check the latest kernel source. it's already modified to if >> (!xen_domain()) >>>> Is the PVHVM mode supported by xen4.5 and linux3.12? >>> We don't call "PVHVM" guests on ARM: on ARM we only have one type of >>> guest. From the Linux kernel perspective, they are HVM domains. >>> >>> >>>> Looks at the xen.h at the linux kernel source: >>>> enum xen_domain_type { >>>> XEN_NATIVE, /* running on bare hardware */ >>>> XEN_PV_DOMAIN, /* running in a PV domain */ >>>> XEN_HVM_DOMAIN, /* running in a Xen hvm domain */ >>>> }; >>>> seems PVHVM is not there yet? >>> In this context PVHVM would just be XEN_PV_DOMAIN. >>> >>> >>>> Kindly enlighten me what could be the solution to get the frame buffer >>>> shared >>>> by Domains? >>> It should work out of the box with the latest Linux kernel and Xen 4.5, >>> if you add >>> >>> vfb=['vnc=1'] >>> >>> to the VM config file. >> Unfortunately, It's still no work after add the vfb=[ 'vnc=1' ]. fb >> open/write/ioctl/close from guest >> linux user space program return no error. However, just the screen do NOT >> display the contents wrote to vfb. >> Here is the configuration file when create the guest linux >> >> kernel = "/xen/images/zImage" >> memory = "128" >> name = "omap5" >> bootargs = "mem=128M vram=16M xencons=hvc" >> vcpus = 1 >> extra ="console=hvc0 xencons=hvc root=/dev/xvda ro" > You might want to use console=tty0 if you want to see the kernel output on the framebuffer. Thanks. I got the kernel trace output for my guest Linux. >> disk = [ 'phy:/dev/loop0,xvda,w' ] >> vfb=['vnc=1'] >> >> Kindly advise what could be the reason? > Do you have > > CONFIG_XEN_FBDEV_FRONTEND=y > CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y > CONFIG_FRAMEBUFFER_CONSOLE=y > > in your guest kernel config? > > Could you please post the output of xenstore-ls, executing the command > after creating the VM? > Yes. The CONFIG_XXX mentioned above is in my guest kernel config. I've attached the related CONFIG_XXX of the guest Linux. Unfortunately, it's not an option for me to go for latest Linux kernel right now, so I debugged the problem by adding tracing information into the kernel and qemu source code to trace the issue. On guest Linux, when writing to frame buffer, the call path is xenfb_write() xenfb_refresh() xenfb_do_update() <---- here the XENFB_TYPE_UPDATE event is sent out. However, in the QEMU size on Dom0, There is NO XENFB_TYPE_UPDATE event is observed in xenfb_handle_events() of xenfb.c Shoud the XENFB_TYPE_UPDATE event sent by guest Linux reach the QEMU and processed and write to real hardware by QEMU? If so. why it's not received? any point to check? So far, I checked the following two points 1. QEMU's start up parameter, changed the original from Xen4.5 /usr/local/lib/xen/bin/qemu-system-i386 -xen-domid 0 -xen-attach -name dom0 */-nographic/* -M xenpv -daemonize -monitor /dev/null -serial /dev/null -parallel /dev/null -pidfile /var/run/qemu-dom0.pid to /usr/local/lib/xen/bin/qemu-system-i386 -xen-domid 0 -xen-attach -name dom0 /*-vga xenfb */-M xenpv -daemonize -monitor /dev/null -serial /dev/null -parallel /dev/null -pidfile /var/run/qemu-dom0.pid but it does NOT make any different for this aspect. 2. The return value of xen_be_register("vfb", &xen_framebuffer_ops) of xen_machine_pv.c of the QEMU it's checked and return 0. Looks not a problem The result of xenstore-ls are attached as well. Regards, Mao Mingya