Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Nov 2014 22:35:36 +0000
From:      Julien Grall <julien.grall@linaro.org>
To:        freebsd-xen@freebsd.org,  "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>, gibbs@freebsd.org, freebsd-arm@freebsd.org, roger.pau@citrix.com
Cc:        Denis Schneider <v1ne2go@gmail.com>, Ian Campbell <Ian.Campbell@citrix.com>, Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Subject:   [RFC v2] Add support for Xen ARM guest on FreeBSD
Message-ID:  <54726138.3090003@linaro.org>

next in thread | raw e-mail | index | archive | help
Hello all,

At the beginning of the year, I have sent a first RFC to add support for 
FreeBSD on Xen ARM [1].

The first version was very primitive: hardcoded DTB, only single 
user-mode support,...

Since then, I have improved the support and rebased everything on 
master. Thanks for the FreeBSD ARM team which did a great job and remove 
all most of my issues (Userspace hanging, Device Tree Bindings).

Major changes in this new version:
  	* Add Device Tree support via Linux Boot ABI
	* Add zImage support
	* Netfront support
	* Blkfront fixes
	* DOM0 support (separate branch see below)

The former item is very hackish. I was wondering if there is another way 
to do it? Or maybe we should support FreeBSD Bootloader in ARM guest?

The patch series is divided in X parts:
	* #1 - #14: Clean up and bug fixes for Xen. They can be applied without 
the rest of the series
         * #15 - #19: Update Xen interface to 4.4 and fix compilation. 
It's required for ARM.
         * #20 - #26: Update Xen code to support ARM
         * #27 - #33: Rework the event channel code for supporting ARM. 
I will work with Royger to come with a common interface with x86
         * #34 - #36: Add support for ARM in Xen code
         * #37 - #46: ARM bug fixes and new features. Some of thoses 
patches (#37 - #40) could be applied without the rest of the series
         * #47 - #48: Add Xen ARM platform

I don't really know how works patch review on Freebsd. Therefore, I 
provided the series in git format and file format. All based on Royger's 
pvh dom0 work v8:
   git://xenbits.xen.org/people/julieng/freebsd.git branch xen-arm-v2
   http://xenbits.xen.org/people/julieng/xen-arm-v2.1/

As said above, there is a separate branch for DOM0, the patches are not 
part of this series. The support has been done and demoed for the 
Arndale (though I've been tested since a while), but there is lots of 
work to clean up (device tree stuff and hack in the code):
   git://xenbits.xen.org/people/julieng/freebsd.git branch dom0-arm-v0
   http://xenbits.xen.org/people/julieng/dom0-arm-v0

TODO:
	* Add SMP/PSCI support in FreeBSD. Could be useful other platform too
	* Only FreeBSD to load anywhere. Currently there is a 2M alignment 
which require a patch in Xen.
         * ELF support in Xen ARM? Not sure it's useful.

Any help, comments, questions are welcomed.

Sincerely yours,

[1] http://lists.freebsd.org/pipermail/freebsd-xen/2014-January/001974.html

============= Instruction to test FreeBSD on Xen on ARM ===========

FreeBSD miss some support to fully boot on Xen ARM. This patch applied 
to Xen ARM help FreeBSD to boot correctly for the time being:
	* https://patches.linaro.org/32742/

To compile and boot Xen on your board, you can refer to the wiki page:
http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions

The instruction to compile FreeBSD for Xen on ARM:
$ truncate -s 512 xenvm.img
$ sudo mdconfig -f xenvm.img -u0
$ sudo newfs /dev/md0
$ sudo mount /dev/md0 /mnt

$ sudo make TARGET_ARCH=armv6 kernel-toolchain
$ sudo make TARGET_ARCH=armv6 KERNCONF=XENHVM buildkernel
$ sudo make TARGET_ARCH=armv6 buildworld
$ sudo make TARGET_ARCH=armv6 DESTDIR=/mnt installworld distribution

$ echo "/dev/xbd0       /       ufs     rw      1       1" > /mnt/etc/fstab
$ vi /mnt/etc/ttys (add the line 'xc0 "/usr/libexec/getty Pc" xterm on 
secure")

$ sudo umount /mnt
$ sudo mdconfig -d u0

Then you can copy the rootfs and the kernel to DOM 0 on your board.

To boot the a FreeBSD your will required the following configuration file
$ cat freebsd.xl
kernel="kernel"
memory=64
name="freebsd"
vcpus=1
autoballon="off"
disk=[ 'phy:/dev/loop0,xvda,w' ]
$ losetup /dev/loop0 xenvm.img
$ xl create freebsd.xl
$ xl console freebsd

-- 
Julien Grall



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54726138.3090003>