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

Re: [Xen-devel] [GSoC] Xen on ARM: create multiple guests from device tree




Il giorno 23 mar 2017, alle ore 01:55, Stefano Stabellini <sstabellini@xxxxxxxxxx> ha scritto:

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 start
secondary cpus. I am guessing that is the problem. I suggest to change
boot method to psci, to do that you need to modify the dts (device tree
source), see the attached patch for Linux. Then you can rebuild the dtb
(device tree binary) with:

make dtbs

Finally 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



The image was downloaded at : https://cloud-images.ubuntu.com/releases/16.04/release/

But, as I said, the emulator blocks at boot. I tried different rootfs images and i have configured the root device
properly to /dev/vda1.

Maybe my kernel configuration is wrong?
<1.txt>


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

 


Rackspace

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