On Thu, 23 Mar 2017, Luca Miccio wrote:Il giorno 23 mar 2017, alle ore 01:27, Stefano Stabellini <sstabellini@xxxxxxxxxx> ha scritto:
On Thu, 23 Mar 2017, Luca Miccio wrote:
Hi Stefano and Julien,
Il giorno 22 mar 2017, alle ore 22:38, Stefano Stabellini <sstabellini@xxxxxxxxxx> ha scritto:
Hi Luca,
please don't use HTML emails.
Sorry for that.
On Wed, 22 Mar 2017, Julien Grall wrote:
On 22/03/2017 19:45, Luca Miccio wrote:
Hi Stefano,
Hello Luca,
aarch64-linux-gnu-gcc -DCNTFRQ=0x01800000-DUART_BASE=0x1c090000 -DSYSREGS_BASE=0x1c010000 -DGIC_DIST_BASE=0x2c001000 -DGIC_CPU_BASE=0x2c002000 -c -o boot.xen.o boot.S -DXEN aarch64-linux-gnu-gcc -DPHYS_OFFSET=0x80000000 -DMBOX_OFFSET=0xfff8 -DBOOT=boot.xen.o -DXEN_OFFSET=0xA00000 -DKERNEL_OFFSET=0x80000 -DFDT_OFFSET=0x08000000 -DFS_OFFSET=0x10000000 -DXEN=Xen -DKERNEL=Image -DFILESYSTEM=filesystem.cpio.gz -E -P -C -o model.xen.lds model.lds.S aarch64-linux-gnu-gcc -DCNTFRQ=0x01800000-DUART_BASE=0x1c090000 -DSYSREGS_BASE=0x1c010000 -DGIC_DIST_BASE=0x2c001000 -DGIC_CPU_BASE=0x2c002000 -c -o boot.o boot.S aarch64-linux-gnu-gcc -DPHYS_OFFSET=0x80000000 -DMBOX_OFFSET=0xfff8 -DBOOT=boot.o -DKERNEL_OFFSET=0x80000 -DFDT_OFFSET=0x08000000 -DFS_OFFSET=0x10000000 -DKERNEL=Image -DFILESYSTEM=filesystem.cpio.gz -E -P -C -o model.lds model.lds.S aarch64-linux-gnu-ld -o xen-system.axf --script=model.xen.lds aarch64-linux-gnu-ld: section .xen LMA [0000000080a00000,0000000080ac814f] overlaps section .kernel LMA [0000000080080000,0000000080f009ff] Makefile:78: set di istruzioni per l'obiettivo "xen-system.axf" non riuscito make: *** [xen-system.axf] Errore 1\
Clearly there is a problem with the offset of xen section but i can't figure out how to solve it.
I would recommend to use the latest version of bootwrapper which is now including support for Xen. I haven't yet updated the wiki with the runes but here a quick summary of the step I am using:
* Building bootwrapper
42sh> git clone git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git 42sh> autoreconf -i 42sh> ./configure --host=aarch64-linux-gnu --with-kernel-dir=<kernel-dir> --with-dtb=<dtb> \ --with-cmdline="console=hvc0 earlycon=pl011,0x1c090000 root=/dev/vda rw" --enable-psci \ --with-xen-cmdline="dtuart=serial0 console=dtuart no-bootscrub dom0_mem=512M" \ --with-xen=<xen-bin> --with-cpu-ids=0,1,2,3 42sh> make
Where: * <kernel-dir> is the path to the kernel repository * <dtb> is the path to the device-tree. I am using the one shipped with Linux in arch/arm64/boot/dts/arm/foundation-armv8.dtbs It will be built if you did make all in Linux * <xen-bin> is the path to Xen binary (xen/xen in the repo)
* Command line for the foundation model 42sh> Foundation_Platform --image=<image> --block-device=<rootfs> --cores=4
Where: * <image> is the path to xen-system.axf produced by bootwrapper * <rootfs> is the patch to your rootfs
Let me know if you need more details.
Thanks Julien, I successfully booted Xen and Linux following these steps. I quickly updated the wiki.
Luca, I took me a while to figure out that for root=/dev/vda to work properly, Linux requires not just all the filesystem and virtio options enabled in the kernel config, but also CONFIG_VIRTIO_MMIO=y. With that, you should be able to boot Xen, Linux and mount the root filesystem. If you download one of the Ubuntu arm64 cloud images, the root device will be /dev/vda1.
First of all, thank you for your help.
I think that i keep on doing somenthing wrong because now the bootwrapper produces with no errors the xen-system.axf with the configuration that Julien provided. But when i launch the emulator it simply stops at: (XEN) Bringing up CPU1
To help you understand, this is what i have done: - First i compiled the xen source with the following command: $ make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINT=fastmodel ( I am using the staging branch)
- Get the linux source with git: $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
-Checkout on the v4.4 branch
- Follow the steps described in the blog and, as you said, i set in my .config file: CONFIG_VIRTIO=y CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_BLK=y I also checked all the filesystem and virtio options.
- Compile the linux kernel with the toolchain: $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- all (to get also the .dtb file)
- Configured the bootwrapper with the command that Julian wrote and then launched the foundation model with the simple command: $ Foundation_Platform --image=/path/to/the/xen-system.axf --block-device=xenial-server-cloudimg-arm64.img --cores=4
Try removing --cores=4, does it work?
I have already tried this option with no results
The problem is that no matter the --cores=4 option, the device tree(foundation-v8.dtb) has 4 cpu cores by default. It also says that the"enable-method" is "spin-table". At the same time Julien wrote to pass--enable-psci to the bootwrapper, which is a different way to startsecondary cpus. I am guessing that is the problem. I suggest to changeboot method to psci, to do that you need to modify the dts (device treesource), see the attached patch for Linux. Then you can rebuild the dtb(device tree binary) with:make dtbsFinally rebuild again the bootwrapper and run the model with --cores 4.For me, that works. Great way to get familiar with device tree ;-)
I tried also this method but i had the same error. So i came up with the idea of removing the psci method from the configure and also from the dtsi file that i have changed.
With this configuration the model booted up correctly, even if the process took about 10 minutes. Just for my personal knowledge: it is normal that the boot is very slow? Is the rootfs that i’m using?
Thank you for your response, Luca
|