Xen ARM with Virtualization Extensions/Vexpress

From Xen
Revision as of 14:41, 19 July 2013 by Ijc (talk | contribs) (Updated for new hypervisor path)
  • If you are trying to run Xen on a Versatile Express Cortex A15 machine, you might want to copy xen (the Xen binary output, xen.git/xen/xen) and the Linux Dom0 zImage to the SOFTWARE directory and add the two following stanzas to your images.txt file:
NOR3UPDATE: AUTO                    ;IMAGE UPDATE:NONE/AUTO/FORCE
NOR3ADDRESS: 0c000000               ;Image Flash Address
NOR3FILE: \SOFTWARE\Xen\xen         ;Image File Name
NOR3LOAD: 80200000                  ;Image Load Address
NOR3ENTRY: 80200000                 ;Image Entry Point

NOR4UPDATE: AUTO                    ;IMAGE UPDATE:NONE/AUTO/FORCE
NOR4ADDRESS: 000c0000               ;Image Flash Address
NOR4FILE: \SOFTWARE\Xen\zImage      ;Image File Name
NOR4LOAD: 80008000                  ;Image Load Address
NOR4ENTRY: 80008000                 ;Image Entry Point

Note that before commit 47d1a51 (xen: arm: make zImage the default target which we install) it was necessary to use xen.git/xen/xen.bin for NOR3FILE instead of xen.git/xen/xen.

  • We recommend disabling the A7 cpus by editing the board.txt file under the SITE directory corresponding to your Cortex A15 daughterboard:
;SCC: 0x018 0x1FFFFFFF           ;Reset control (CA7s running, CA15s running) - uncomment this for normal operation
;SCC: 0x018 0x1FFFF000           ;Reset control - (CA7s running, CA15s reset) - uncomment this to hold A15 cluster in reset
SCC: 0x018 0x00001FFF            ;Reset control - (CA7s reset, CA15s running) - uncomment this to hold A7 cluster in 
  • The address of the Dom0 kernel in Flash at the moment is not configurable, it is defined as KERNEL_FLASH_ADDRESS in Xen. On a Versatile Express machine this address can be determined by executing flash list images from the boot manager. You'll have to manually change it.
  • In order to make your Dom0 boot sequence faster, you might want to consider passing init=/bin/bash to your kernel and then manually executing a minimal init script like this.