[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] frame buffer shared by domains on arch arm linux




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






Attachment: xen_domu_config
Description: Text document

Attachment: xenstore-ls_20150123.txt
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.