1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-07-18 04:27:08 +00:00

Compare commits

..

422 Commits

Author SHA1 Message Date
Ross Burton a47060c989 arm-bsp/linux-stable-5.7: backport a patch to fix CoreSight builds
Backport a patch from master to fix builds of perf with CoreSight
enabled.

Change-Id: Iaf4f8c4a188c898bde9dc2a45df8609c6c825eea
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Ross Burton 94c7031e4e arm-bsp/linux-stable-5.6: fix build of perf
Backport a number of patches from master to fix the build of perf.

Change-Id: I0063b242116a15ba727ad6cf4c9b3abed61600ff
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Ross Burton 2d1e4b2af1 arm-bsp/linux-stable-5.3: fix build of perf
Backport a number of patches from master to fix the build of perf.

Change-Id: I4a0d38e62ba30c1622176bc8875e849a56f8aecb
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Ross Burton 1df9bebacf arm-bsp/linux-stable: move corstone700 tweaks to versioned bbappend
The corstone700-specific tweaks should be applied to just the 5.6
version of the linux-stable recipe, not all of them.  By appending all
of the versions they *all* become 5.6.14, which makes it impossible to
know what recipe is actually being used.

Change-Id: I77ccc1f16003fea7b6356732587c6947b20a2f4c
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Ross Burton c333787f64 arm/linux-arm64-ack: fix build of perf
Backport a number of patches from master to fix the build of perf.
These are incorporated into newer ACK 5.4.x releases but we're too close
to release of to bump the kernel version.

Change-Id: I60f599d9ffd9be170eb024622399d8df3e9a1fa1
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Ross Burton dbe4f2c92d arm-bsp/documentation: fix MACHINE reference
The MACHINE is foundation-armv8, not foundation-v8.

Change-Id: I557eb9c32914b2ccf938a76a6efb260483e83d22
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Nathan Dunne 628b8bc19a arm-autonomy/arm-autonomy-host-image-minimal: Resolve guest path if symlink
In ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS, remove fatal error if guest path
is a symlink, and instead resolve using os.path.realpath.

Issue-Id: SCM-638
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Change-Id: Ic4fdd7ae03ed6bb6caa55e722b89114080c90f4c
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-10 11:03:37 -05:00
Diego Sueiro 9dd5fcd6ce arm-autonomy/linux-arm-autonomy: Introduce xen-common.scc KERNEL_FEATURES
Add xen-common.scc KERNEL_FEATURES to group common kernel configs and patches
for both Xen Host and Guest.

Change-Id: I3a14386e387b9778c962dd9fdbe9a60ce2e97e77
Issue-Id: SCM-1520
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:44:10 -05:00
Ross Burton 598e1cc32c arm-bsp/n1sdp-board-firmware: rewrite recipe
Any recipe that needs to use RM_WORK_EXCLUDE is either being very clever
or is breaking expectations.  This recipe is doing several things in
non-idiomatic ways that breaks other tools, for example the source
doesn't exist in do_unpack.

Rename from board-firmware-n1sdp to n1sdp-board-firmware to match the
repository name.

As this recipe simply ships some precompiled binary, set
INHIBIT_DEFAULT_DEPS to avoid depending on the toolchain to reduce how
often it needs to be rebuilt.

Unpack normally and promptly delete the large SOFTWARE/ directory that
we don't care about, instead of unpacking in do_install.

Ensure deploy is scheduled appropriately.

Remove LICENSE_FLAGS, this is for licenses which need to be opted-in.
Setting LICENSE_FLAGS and then enabling it by default makes no sense.

Change-Id: I1fe906634977d323086de6f6c67a9c45aeb7585e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:44:10 -05:00
Ross Burton fc36f9d163 arm/trusted-firmware-a: fix 2.4 build with OpenSSL
2.4 has added support for a global OPENSSL_DIR make option, instead of
hard-coded /usr into the individual Makefiles.

The TC0 build is now using a snapshot of TF-A after that change landed,
so pass OPENSSL_DIR via EXTRA_OEMAKE to fix the build.

Change-Id: I9e06991d15bb67f983a203ec3a1b1754cc6e2d7e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:12:18 -05:00
Kamil Dziezyk 9fa07405df arm-autonomy/xenguest-network: fix for unbound variable in network-bridge.sh
Undefined 'XENGUEST_NETWORK_TYPE' caused an error during guest start.

Change-Id: I5b0adea523f884cd4b649e3b85ae7e8860eb019a
Issue-Id: SCM-1633
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:12:18 -05:00
Damodar Santhapuri 2c84a019c2 arm-bsp/firmware-image-juno: update offest addresses for NOR flash images
After migrating kernel vesion to >= 5.4, Image size has been increased
to >35MB . It causes the NOR flash memory corruption.This issue got
fixed by updating NOR flash offeset of effected images .

Change-Id: Ia635fd9d91724d8255866b9f19f1ec2d42a62d2e
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:12:18 -05:00
Damodar Santhapuri 3dab98935e arm-bsp/u-boot: fix autoboot issue on juno platform
this commit fixes memory corruption of uEnv.txt's DRAM memory at
${loadaddr} , by giving enough memory to kernel Image.

Change-Id: I0243b121f1e56b06b8d2f2a21420c594598fad31
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-09 11:12:18 -05:00
Ross Burton 91d5c596a6 arm/trusted-firmware-a: ensure LICENSE is correct
TF-A itself is BSD 3-clause licensed, so use that instead of the
generic BSD license.

The end result is only also Apache-2.0 licensed if mbed TLS is used,
so add this only if mbed TLS is enabled.

Change-Id: I243e664dcfc590d8b2dbe7b795bc414a973b379b
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-04 08:46:09 -05:00
Ross Burton d57027cc02 arm/trusted-firmware-a: clean up license assignments
trusted-firmware-a.inc can set LIC_FILES_CHKSUM so do += in the .bb files.

trusted-firmware-a.inc expects recipes to set LIC_FILES_CHKSUM_MBEDTLS,
so just use = in the .bb files.

Change-Id: I673aec6f2ae59c58cd11517e1f2aecc538427796
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-04 08:46:09 -05:00
Khem Raj 0de8e065f4 optee-client: Disable Werror with clang
Main flags are using gcc specific warning options e.g.
-Wunsafe-loop-optimizations which are unkown to clang so it reports then
under -Wunknown-warning-option as an error when -Werror is on

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-04 08:46:09 -05:00
Jon Mason 5b35ed7d4d arm-bsp: convert general u-boot bbappend to version specific
The generic u-boot bbappend is causing issues upstream when trying to
use new or older versions of u-boot, by trying to apply patches from
folders that do not exist.

Change-Id: I399e3234fba852382fc73ab68f14a7e826bb5a42
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Jon Mason 9a7ab6a47e arm-bsp: Fix cortexm tunes
Fix the cortex-m tunes to actually function properly.  Tested with
meta-zephyr on musca-b1.

Change-Id: Ib797cafc4f82f6a525cf6b9c0ce4a302a9ef65c2
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Ross Burton c0f9746d58 arm/python3-cbor: point the LIC_FILES_CHKSUM at the source tree
Upstream doesn't actually distribute the LICENSE file in the PyPi tarball,
so use a fragment of setup.py to checksum the license until they do.

Change-Id: I903fc82a18c6555ade9f249f31d00e4233e1c974
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Diego Sueiro 496763e0cc arm-autonomy/linux-arm-autonomy: Add CONFIG_OVERLAY_FS=y to docker-minimal.cfg
To reduce storage usage when pulling docker images we need to use the overlay2
storage driver. To achieve this we have to enable CONFIG_OVERLAY_FS in the
kernel.

Change-Id: I08e88bae41e353fc78c00e0d267a6009fbad1ca5
Issue-Id: SCM-1520
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Diego Sueiro 9425dbafc0 arm-bsp/n1sdp: Add support for Kernel PREEMPT_RT with linux-linaro-arm-rt
Add N1SDP settings and configurations for the kernel with PREEMPT_RT support
using the linux-linaro-arm-rt recipe.

Also, change linux-linaro-arm-n1sdp.inc to enable sharing commom patches for
N1SDP when building linux-linaro-arm or linux-linaro-arm-rt.

Change-Id: I101b2e6ffefa4f908389110048778aaf5226d5d0
Issue-Id: SCM-1653
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Diego Sueiro f24f7fde73 arm-bsp/kernel: Introduce linux-linaro-arm-rt recipe
The linux-linaro-arm-rt recipe provides the kernel with PREEMPT_RT patches and
is based on linux-linaro-arm_5.4.bb. Set PREFERRED_PROVIDER_virtual/kernel to
linux-linaro-arm-rt to enable it as the default kernel.

Change-Id: I8c3e59c476ff3f8e434841f8f0aa11eaa6c799bd
Issue-Id: SCM-1653
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Diego Sueiro 93ceeb7349 arm-bsp/linux-linaro-arm: require linux-yocto.inc
By requiring linux-yocto.inc we can have separate build dirs when building
LINUX_KERNEL_TYPE as 'standard' and 'preempt-rt', for example.

Change-Id: I6288d210f942d1bacd510397ef3d1f2858951e68
Issue-Id: SCM-1653
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Diego Sueiro 1091c186c5 arm-bsp/linux-linaro-arm: Move N1SDP specifics from .bbapend to .inc
Make usage of .inc for N1SDP to concentrate its specifics.

Change-Id: I190eca0e9db0e9ec614588ff33190dba6ee75897
Issue-Id: SCM-1653
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-03 12:31:26 -05:00
Ross Burton 45d7cf50a4 arm-bsp/documentation: add corstone700 documentation
Add brief documentation for the corstone700 BSPs.

Change-Id: I774e06aecca05ac13eaf2916623c6ec097c1c047
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Khasim Mohammed cd39898f06 arm-bsp/linux-linaro-arm-5.4: fixup perf to build with gcc 10
Many errors were observed while trying to build perf with gcc 10.
There were few patches which were merged on 5.4 stable which were missing in
our kernel repository, backporting the same here.

Change-Id: I4c4104fd3c99a60706662cc05b18f3ee94c7afa2
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 6c88dba4a4 arm/optee-test: don't attempt to build with musl
optee-test doesn't build on musl (or bionic) because libstdc++.a under musl
depends on libc providing the pthread functions, but TAs are built without
a libc.

Until this is fixed upstream (see https://github.com/OP-TEE/optee_test/issues/458)
simply refuse to build optee-test with musl.

Change-Id: If73fd43683e19e2943bf54f4027806786fb1dc7d
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 8dddb06aa2 arm/opencsd: build on 32-bit Arm/x86
OpenCSD supports 32-bit Arm and x86 too, so extend COMPATIBLE_HOST.

Change-Id: Icf64b4645c4062e3b660b2bd2f3404bfe6c061b7
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton c760240dd2 arm/optee: consolidate common variables
Move a number of shared varibles into optee.inc so that they don't have
to be duplicated repeatedly.

Change-Id: Ie2565dfa66cbd61aad199224a4cdc7b2e1af0c5d
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton e03b824d78 arm/optee-os: cleanup recipe
Clarify license and clean up oe_runmake calls.

Change-Id: I5952cd1b8014fa686ce4039fe8abca803fb4306a
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 46b3f67814 arm/optee-examples: cleanup recipe
Clarify the license and clean up oe_runmake calls.

Change-Id: I6d0eb9aee895e3ed9de73ea14f11084c214ca5af
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 90cf59de1a arm/optee-client: rewrite recipe
The license is 2-clause BSD, so specify that precisely.

No need to inherit python3native as it is not used.

Instead of using the bare Makefile build, use CMake.

Change-Id: I324f633428f10fdaabaa57b2f2561c2fdc847919
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 2b91b8383b arm/optee-os: fix the optee-test build with GCC 10
GCC 10 calls __getauxval in some situations so backport some patches
from upstream to fix the linking with this symbol.

Change-Id: I68af7ff9d058b9f602f54350a35908d178a8e688
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton accb5d3bb4 arm/optee-test: add bug links
These issues now have upstream bugs.

Change-Id: I9eacedbbf6e7874f6d1843b08fd9a8c04d030855
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Ross Burton 15e525c0e5 arm/optee-os: improve sysroot lookup
optee-test uses the same functionality to find libstdc++ and libgcc_eh,
so ensure that these libraries are found with the right sysroot too.

Change-Id: Ice0506a42655223045bcabec790eae3a3dbcf245
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Nathan Dunne acac8ed6ce arm-autonomy/xenguest-manager: Allow guests with substring names
Created new function for determining guest running state such that
two guests with names such as "myguest" and "myguest2" report
correctly, by searching for exact guestname instead of contains.

Also modified the status command to use the same function to avoid
duplication, and added a new nested function for testing status for
a particular guest, instead of recursively calling the whole bash
script.

Using the nested function speeds up "xenguest-manager status" from
~7.5s to ~1.5s my machine.

Change-Id: Ie6fc08cacc55f623c44b08478f76031510a59126
Issue-Id: SCM-1517
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-11-02 21:09:53 -05:00
Kamil Dziezyk 5f8eabe68f arm-autonomy/xenguest-network: add kea dhcp4 configuration
Since dhcp-server was removed from oe-core layer,
we decided to add kea dhcp support in meta-arm-autonomy.

This patch introduce following changes:
  (*) replaces all configuration and customization valid for dhcpd,
      with kea complatible one.
  (*) replaces dhcp-server rdependency with kea for xenguest-network recipe
  (*) replaces default kea dhcp4 server configuration with a minimal one.

Change-Id: I4202b5b8f3be6801cbb4f9068061eccfdadee5f0
Issue-Id: SCM-1522
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-28 10:25:48 -04:00
Kamil Dziezyk eb332aec8c arm-autonomy/recipes-connectivity: Revert "revert dhcp removal and bind update"
This reverts commit 67b359d532.

In oe-core master branch the dhcp recipe was removed and bind version was
bumped.

For now, arm-autonomy-host-image-minimal installs the dhcp-server package
which is generated by dhcp_4.4.2.bb recipe that depends on bind_9.11.22.bb
recipe.

In the near future arm-autonomy will be updated to use kea dhcp server
which is now used in oe-core.

Change-Id: I8d3e8a069d007b82f45814145e2e7ce209a49052
Issue-Id: SCM-1522
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-28 10:25:35 -04:00
Ross Burton 8bb333df5e arm/opencsd: upgrade to 1.43.3
Change-Id: I7487c116be0f267dfb53f45ff0a5974c8467dbb6
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-28 09:01:16 -04:00
Kamil Dziezyk 2d3ded053a arm-bsp/n1sdp: add board firmware recipe and documentation
board-firmware:
 * updates scp binaries
 * Custom license - STM-SLA0044-Rev5 - added in layer.conf,
   whitelisted in n1sdp.conf.

firmware-image:
 * Combines uefi, tf-a and scp binaries into a tarball.
 * There are 2 flavours available:
   - n1sdp-board-firmware_primary.tar.gz
   - n1sdp-board-firmware_secondary.tar.gz

Change-Id: I82d0c995956310a569b27431f98f7c21accf8330
Issue-Id: SCM-1508
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 16:21:30 -04:00
Nathan Dunne ceb5902e56 arm-autonomy/xenguest-manager: Allow guests named 'guest'
Prevented name collision on file guest.cfg when the name of the
guest is exactly 'guest'. Config is now piped into a tmp file
which can safely be deleted at the end of the start operation.

Change-Id: Id08ac08e52e9e64c508c841b257ecb28ed9d44ae
Issue-Id: SCM-1518
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Nathan Dunne 128af6b2d0 arm-autonomy/xenguest-manager: source init scripts
source init scripts in xenguest manager instead of executing
directly, so they can immediately access functions and
variables from the parent script.

Also added a check that init scripts are executable, and will
skip if not.

Change-Id: Ie6bbb1b480a7bfe5af095addcf1aefd122b57c50
Issue-Id: SCM-1587
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton cdfe259d13 arm-bsp/edk2-firmware: add platform for fvp-base.
Change-Id: I2b908006a0dca93241b6cdfdcc10dad31c723d14
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton 7221a0c0fe arm/edk2-firmware: build for qemuarm64 by default
edk2 has a qemu/aarch64 platform, so build this in the base recipe so
the recipe can always be tested with the latest release.

Change-Id: I22988cd3fab9a4a37e0014a0d70beac81301f21b
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton d931feb6b3 arm/edk2-firmware: don't assume that platforms are in edk2-platforms
Some platforms are inside edk2 itself, so don't assume that the platform
path is relative to edk2-platforms.

Remove the edk2-platforms path prefix from the tasks, and move the
prefix to EDK2_PLATFORM_DSC.

Change-Id: I53e3dcd499f4d9f1d72c4d68ac82faed4fec70f2
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton 1a97691749 arm/edk2-firmware: upgrade to latest release
Bump the default SRCREVs to the latest release (for edk2) and a
corresponding working commit (edk2-platforms).  Typically platforms will
pin to known good releases but at least the defaults can be up to date.

Change-Id: I58b436416e3f2e30501126a39f1f0621b3fb9602
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton e2a09790bb arm-bsp/edk2-firmware: fix N1SDP build with clang
Clang finds more bad code paths than GCC, and edk2 uses -Werror.

Pending status because the upstreamed support appears to have been
entirely rewritten.

Change-Id: I43d4e7f28f0a6acc4ecdd1514402c1b831871b5b
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton a878c3371c arm/edk2-firmware: set GCC_VER appropriately with meta-clang
Also as this isn't actually GCC-specific, rename the variable to
EDK_COMPILER.

Change-Id: I617f5da642c10decd83124e160b06579c46405ba
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton 1a8c987158 arm-bsp/edk2-firmware: use new variables for SRC_URI
In the N1SDP port simply set the new variables instead of overriding
SRC_URI entirely.

Change-Id: I3d970f679e60acded2275aa252a4011fe1280063
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Ross Burton f35c7f282d arm/edk2-firmware: add variables to ease SRC_URI changes
Some platforms may want to switch the edk2 or edk2-platform SRC_URI to
for example the landing-teams staging repository.  Add variables for the
base URLs so this can be done surgically.

Change-Id: I32612d164f77f9e63e8498c129b512c353b04eaa
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-26 11:04:56 -04:00
Abdellatif El Khlifi 92c0971055 arm-bsp/corstone700-test-app: adding test recipe for systems comms
This commit provides a recipe that generates a Linux userspace
application used for testing the communication between Corstone700 cores.

Change-Id: I7c00653b0fcd6d9074510bbb70a838762aed0150
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-25 09:48:47 -04:00
Anders Dellien 785f8bf4c1 arm-bsp/tc0: Add kernel patches
Add patches for SCMI, MHUv2 and DRM. Also update the kernel config
to enable boot to Android home screen instead of just console.

Change-Id: Ic2af15441667b967ef360d8410de94e83eb73de4
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-25 09:48:47 -04:00
Diego Sueiro 82ffc86baf arm-autonomy/linux-arm-autonomy: Fix runstate info page if kpti is enabled
This patch surpress Dom0/DomU kernel messages like these:
(XEN) p2m.c:1888: d0v1: Failed to walk page-table va 0xffff00005ddb6238
(XEN) p2m.c:1888: d0v1: Failed to walk page-table va 0xffff00005ddb6247

Change-Id: I10364516a9992da4a7b52a2cb02baa5c12ff8585
Issue-Id: SCM-1520
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-25 09:48:47 -04:00
Diego Sueiro 6c740e5cf0 arm-autonomy/xen: Backport improvements to xen 4.14
These patches improve the overall stability of Xen.

Change-Id: I40c93f1c28fe9bd9548883c1cc0c38e1be7f56c3
Issue-Id: SCM-1520
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-25 09:48:47 -04:00
Ross Burton a6d345f978 arm-bsp: fix typo in musca-b1 documentation
Change-Id: I7e39c39f14a9ccf32ccfbc732f57c0df79034885
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:47 -04:00
Ross Burton 67108e430e arm-bsp/layer.conf: add meta-python for musca
Change-Id: I46568f3144519bc25a65bce3d29d0ae659335f55
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:47 -04:00
Ross Burton 5659d038e3 arm/edk2-firmware: set do_configure[cleandirs] to ensure B is empty
Change-Id: I0df26d6f39613ee65cce5a297dbcd17f299ac0be
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Ross Burton ed66883f14 arm/edk2-firmware: rationalise $S
Currently edk2-firmware sets S to WORKDIR/git/ and unpacks edk2 into
WORKDIR/git/edk2. This isn't idiomatic and breaks tooling such as devtool
which expects a git fetcher to unpack a git repository to $S.

Move the edk2 unpack to $S directly, and update the recipe where required.

Change-Id: Ib9571032c14a01864860e2eb5a04ed73dd382710
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Ross Burton df856a631b arm-bsp/edk2-firmware: remove redundant SRC_URI
Now that the base recipe uses gitsm: the SRC_URI can be removed from here.

Change-Id: Ic070a8a84c49a9c731690ad660501fb61b092750
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Ross Burton 2f592aa7ea arm/edk2-firmare: use gitsm fetcher
The EDK2 repository contains a number of submodules and some builds need
them, so use the gitsm fetcher to ensure they're always fetched.

Change-Id: I63cf20900b3fa636f409926222c715b7f6a7bb89
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Ross Burton 37c9eea1cd arm/edk2-firware: don't handle obsolete GCC releases
There's no point in handling GCC cross compilers that are before version 5, as
GCC 5 came out in 2017 and is obsolete now.

Change-Id: I650ee44c433f70004d20c0219310ddbd4028addb
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Ross Burton 8492512109 arm/edk2-firmware: no need to inherit python3native
There are no python3-foo-native dependencies, so just set PYTHON to the host
python3 (which is in HOSTTOOLS) and remove the python3native inherit.

Change-Id: I1234d04df380a71a1e881328157e1d154f3cb49c
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 12:32:01 -04:00
Jon Mason 4f264deaa4 arm-bsp: remove dunfell u-boot support
u-boot version 2020.01 is not needed with dunfell not supported.  Remove
files and adjust the necessary.  Also, move tc0 support to match the
other BSPs

Change-Id: Ibc0f93a9eb0ca600a84b1399d77b35e6ae08753b
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 11:58:27 -04:00
Jon Mason 406e905d5e arm-bsp: remove cortex-a tune files
Cortex-a tune files have been accepted into openembedded-core.  So,
those should be used in place of these.  Removing these to prevent any
issues.

Change-Id: Ifca1557a88e50ce6947524222ba7f852fd9a282c
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 11:58:27 -04:00
Jon Mason e4d4b90ce2 Drop dunfell support
Drop dunfell support from the master branch in anticipation of the
gatestgarth release.  All dunfell users should reference the dunfell
branch.

Change-Id: I9c5806f698cca42773aaea1fb49e0dfff437eaf4
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-20 11:58:27 -04:00
Khasim Mohammed b0752bbc78 arm-bsp/linux-linaro-arm-5.4: remove linux kernel dtb and use one from TFA
DTB is generated from TFA therefore remove using the one from linux kernel.

Change-Id: I4647482b41b76db803fdd6a417580d99d2e79215
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 15:59:12 -04:00
Khasim Mohammed e4e060a063 arm-bsp/n1sdp: add support for startup.nsh file
UEFI EDK2 on N1SDP is unable to detect FS2 during boot resulting
in launching of EDK2 shell instead of launching grub.
The startup.nsh will force launching of grub.

Change-Id: I90426f2883251b7cc5fd4aa453ccfd606640d3bd
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 15:59:12 -04:00
Brett Warren 7611e8cf4a optee: upgrade to 3.11
optee 3.10 recipes have been upgraded to 3.11 to keep up with
the latest version.

Change-Id: fef3af6d7d04d2903d310cf99d17566b67e2f811
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren b419151acd optee: refactor into .inc files
To reduce code duplication, .inc files are used to hold common parts
of recipes, allowing .bb files to only specify things specific to that
recipe version.

Changed-Id: 740e6c9d36a957e2988f3599dd830c745f240beb
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren 5719261b4d wic/qemuarm64: enabled kernel arguments with u-boot
Kernel commandline arguments passed via runqemu don't
configure the kernel when booting with u-boot, as it finds
configuration in extlinux/extlinux.conf instead, which is
generated by wic.

A custom extlinux.conf file is now passed to wic with the
intended arguments, so that the kernel now configures
as directed.

Change-Id: Icbbcab47fe5cf70e4d8d39c7145371f1d6cd8db7
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren 5013182dda trusted-firmware-a: enable clang support
The CC and LD parameters are used to point make to the currently
used compiler and linkers.

This change enables TFA to be compiled successfully when
TOOLCHAIN=clang.

Change-Id: Ice465318b8c9b2b69c08fe4f48f6d36c610978f0
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren effcd18f5a optee: enable clang support
Patch 0002 and 0003 in optee-test remove -W options from make
to enable successful compilation with clang.

Patch 0007 modifies the libgcc$(sm) variable in optee so that it can
find the compiler-rt dependencies. Compiler-rt is also added as a
dependency to the optee recipe.

The compiler in use is passed to make via TOOLCHAIN. If TOOLCHAIN
doesn't exist (it is declared by meta-clang, and so doesn't exist
by default), 'gcc' is passed as a default.

These modifications allow optee to be successfully compiled
when TOOLCHAIN=clang

Change-Id: If565969e169078fabd5e3cf5716ca317cc49a126
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren 715c9f8f98 optee: upgraded recipes to 3.10
The optee recipes were upgraded due to issues booting with 3.8
on qemuarm64-secureboot, which were resolved by the upgrade.
The 3.8 recipes are retained for backwards compatibility.

optee-test and optee-examples were modified to pass a sysroot
to the LIBGCC_LOCATE_CFLAGS parameter, to ensure proper location
of the libgcc library.

Recipes have been renamed to reflect their current version.
As this makes the PV variables redundent, these have been removed.

Patch 0006 has been refreshed to work with 3.10 without fuzzing.
The original copy has been retained for the 3.8 recipes to use.

Change-Id: Iacaba02d64570a790d5cc20eca8be58246e39019
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Brett Warren a636818415 qemuarm64-secureboot: changed format of memory to MB
When running runqemu the memory argument in the kernel
commandline arguments expects megabytes, so with the previous
format "-m 1GM" ended up being passed.

Change-Id: I5d3bc9d5ce93fa3da5885c99feb99ce80367c993
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-19 09:50:13 -04:00
Ross Burton a7dc167104 gem5: use pre-generated keys instead of haveged in gem5 machine
As the gem5 image won't be used in production there is no need to
generate unique SSH keys on the first boot, which takes a long time in
gem5.

Instead of recommending haveged (from meta-oe) we can simply install
pre-generated SSH keys. These keys are static so should not be used in
production!

Change-Id: I134a421d66eb2b55cf0e4f44781021ac2c96106d
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-16 22:40:24 -04:00
Ross Burton 8d4a60880f arm-bsp: use pre-generated keys instead of haveged in FVP machines
As the FVP images won't be used in production there is no need to
generate unique SSH keys on the first boot, which takes a long time in a
FVP.

Instead of recommending haveged (from meta-oe) we can simply install
pre-generated SSH keys. These keys are static so should not be used in
production!

Change-Id: I6a538de6bee892a77816c1d938dd2b55c94257f4
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-16 22:40:24 -04:00
Jon Mason ad8ded94b9 arm-bsp: sgi575: update tune location
cortex-a75 location was upstreamed to a different location that
specified in this file.  Modify it so that the references the correct
location.

Change-Id: Ia2082e8368444b2355e6be6635f299a6383a7284
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-15 11:48:16 -04:00
Usama Arif c398ea17f5 arm-bsp/docmumentation: Add information about tc0
This includes an overview as well as build and run instructions
for the tc0 software stack.

Change-Id: I9abfc7d6dffc68da2a2cd4ceda82bec6bc5fcb10
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-15 11:48:16 -04:00
Ross Burton f77b8b1de4 arm-bsp/musca-*: use newlib for libc
Whilst glibc is definitely not an option for Cortex-M cores, newlib is
a viable libc implementation that is useful to default too.

Change-Id: I1f3a53e43945f486aa2e7bce019f105c55df5e87
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-15 11:48:16 -04:00
Kamil Dziezyk bab28a95cd arm-autonomy/xenguest-mkimage: add extra ramdisk support
Some guest images requires a ramdisk, that is built with a custom recipe.
This patch adds an option '--xen-ramdisk',
for xenguest-mkimage script to cover that.
Extra ramdisk support is also added to xenguest-image-extra bbclass,
via 'XENGUEST_EXTRA_RAMDISK' variable.

Issue-Id: SCM-1276
Change-Id: I8ec74a37c0c96ca83a3489911186f3b3262f80fd
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-15 11:48:16 -04:00
Usama Arif 553654ece7 arm-bsp/scp-firmware: Update SHA for tc0
This SHA includes the architecture changes introduced as
including switching Cortex M7 to M3 as well as memory and
interrupt map changes. The SRC_URI is also overwritten as
the patch
0001-tools-gen_module_code-atomically-rewrite-the-generat.patch
has already been merged applied in the base recipe has
already been merge in this SHA.

Change-Id: I85dc6b65390249673415789ec110aae74ba3b5af
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-13 09:35:14 -04:00
Usama Arif 3d32e6cb98 arm-bsp/trusted-firmware-a: Update SHA for tc0
This SHA of trusted-firmware-a includes support for
additional features for tc0 including TZC and cpuidle.

Change-Id: I004f9614b2bada9b88d2fce90f0f10064d8437e4
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-13 09:35:14 -04:00
Nathan Dunne 6a92503d9b arm-autonomy: Move machine override soft assignments to inc files
Moved assignments of the form:
     MYVAR_$MACHINE ?= "val"
to a machine specific .inc file, as the above will still set the
value when the base variable has been set in local.conf, e.g:
     MYVAR = "local_val"
despite the weak assignment.

Change-Id: I3ba77453be785ec92ab45255cbd34d7d77bbcf37
Issue-Id: SCM-1524
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-13 09:35:05 -04:00
Nathan Dunne c9ee368bee arm-autonomy: Drop foundation-armv8 support
Remove foundation-armv8 overrides from arm-autonomy recipes.

Change-Id: I7913ccdb3383bdf40b608fc852428716e1538318
Issue-Id: SCM-1525
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-13 09:34:22 -04:00
Jon Mason 90243d0713 arm-bsp: fix cortexa32 tune
Cortex-A32 is 32bit only, but the recent changes had it working as
64bit (causing build breaks).  This reverts that change in this file.

Change-Id: I58115096477424127baf99712b96131d2a0b0497
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-12 13:50:23 -04:00
Diego Sueiro 24f859cff2 arm-autonomy: Add minimal docker runtime in xenguest images
This patch introduces the 'docker' DISTRO_FEATURE do control whether or not to
have a minimal docker runtime installed in xenguest images.

A new packagegroup and kernel feature were introduced to ensure the minimal
kernel config is applied as well as the packages to be installed in the image.

Change-Id: Id973ca2421c43d5b0978c6f7311e1d0b4db5edca
Issue-Id: SCM-1533
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-12 13:50:23 -04:00
Diego Sueiro 37cfed754a arm-autonomy: Update Maintainers list
Change-Id: If01fcd1aaf971d0e58894661df7fe9f6ab7e5f4a
Issue-Id: SCM-1520
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-12 13:50:23 -04:00
lakshmi Kailasanathan f2abff9da8 arm-bsp/corstone700-mps3: Enabling NXP ISP1763 USB host controller in linux
This commit adds  usb host in the v5.6 kernel as a machine feature
to support the USB host controller and mass storage for MPS3 board.
The kernel binary size increase with this hence wks file updated.
The node for USB controller is added to device tree in the TF-A and
updated the sha to reflect it.

Change-Id: Iad3348f8dc599d5642ddfa0c5199485eeaca0991
Signed-off-by: lakshmi Kailasanathan <lakshmi.Kailasanathan@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-07 11:22:38 -04:00
Jon Mason 4cde2c189e arm-bsp: musca-b1: Add Zephyr support
Zephyr supports Musca B1, and QEMU has an emulated Musca B1 board.  Add
the relevant parts to get this compiling with meta-zephyr and (in
theory) run QEMU.

Change-Id: I9af4aea03e31e96f8eee17f44913e747b1241891
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:33:44 -04:00
Jon Mason 3b924302d6 arm-bsp: remove armv8m
Musca B1 and S1 should be using the external tune files.  Remove armv8,
as it is not correct anyway, and use the Cortex-M33 tune.

Note:  This change will prevent glibc from compiling (and possibly
others).  This isn't relevant for a Cortex-M, as it should be
running an RTOS not Linux.

Change-Id: Id88d2af41217e8b5bad01e98b337cf0523acf6e1
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:31:25 -04:00
Jon Mason a896f597c2 arm-bsp: rename musca_b1 and musca_s1
Rename musca_b1 and musca_s1 machines to have the standard hyphen
instead of underscore.

Change-Id: Ifd43d4f68cd964f5acd546a8380f165cc53588ab
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:54 -04:00
Jon Mason 7e67045530 arm-bsp: Add cortexm tunes
Until accepted into oe-core, add the cortex-m tunes here so that they
can be used in meta-arm-bsp.

Change-Id: Iaa74937da61cd8d35c27beae7e09351e996a262e
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:54 -04:00
Jon Mason a7db701d9b arm-bsp: Add cortexa tunes
Until accepted into oe-core, add the cortex-a tunes here so that they
can be used in meta-arm-bsp.  Also, this allows for them to be used for
dunfell support.

Change-Id: I9e0affef8d9d94f27cd68d5032b82276f51f7c1e
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:54 -04:00
Jon Mason 41832a15a6 gem5: remove reference to meta-arm-platforms
Change-Id: Ib279545916b7da00b3d74b58464fd35f511bdc11
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:54 -04:00
Jon Mason 6fd568a02f arm-bsp: Remove references to meta-arm-platforms
meta-arm-platforms does not exist.  Change to meta-arm-bsp.

Change-Id: Iacf74f2ec2d5cd2ddaa3a952e9190e71822bd9f5
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:54 -04:00
Diego Sueiro 1b2500bfb0 arm-autonomy/wic: Deploy Xen related artefacts in the wic boot partition
This patch brings the following changes:
* Documentation about how to customize the wic image for N1SDP
* Introduce a custom wks and grub.cfg file for N1SP when building with
  `DISTRO_FEATURES += "arm-autonomy-host"` to include Xen artefacts and boot
  option.
* Introduce a mechanism to include extra global settings for machines defined
  in meta-arm-bsp when building with `DISTRO_FEATURES += "arm-autonomy-host"`.

Change-Id: Ic9f36bae3bf04df1ee6a6c543e812f27c5c537a0
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:01 -04:00
Diego Sueiro fa846e808c arm-autonomy/grub-efi: Add xen_boot support when 'xen' is in DISTRO_FEATURES
Change-Id: Icb9d909beae96e3915f36093c1c16859181d0238
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-10-02 10:28:01 -04:00
Usama Arif c74446e6bc arm-bsp/linux-arm64-ack: remove bbappend for version 4.19
This version is not used by any arm bsps' anymore.

Change-Id: I14b78e78ce05a50b7cd3428993de280b9394ad48
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-30 18:11:46 -04:00
Ross Burton 6f85236d16 arm-bsp/documentation: add BSP documentation template
Add a template for future BSP documentation.

Change-Id: I614d43f477f1a5dfb898b808d4c5b78a5bb163b8
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-30 18:11:46 -04:00
Rui Miguel Silva f5cfc2f2df arm-bsp/u-boot: fix patches for a5ds
Some of the patches for u-boot do not apply without
fuzz in 2020.07, rebase them so we do not have the
ugly warnings during do_patch

Change-Id: I0c89b18ed66adad66c7cf41373ca7cdd3fdea3da
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-30 18:11:46 -04:00
Anders Dellien cebd9c5289 arm-bsp/recipes-kernel: Update fvp-base-arm32 BSP definition
Update to use the yocto-kernel-cache 'standard' configuration
and edit 'fvp-features.cfg' to remove duplicate configs.

Change-Id: I49617bdac554571aa1242080797cb60327e527da
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-28 21:42:38 -04:00
Diego Sueiro bc07e6c62a arm-autonomy/wic: Introduce empty plugin to create unformatted empty partitions
The empty wic plugin is used to create unformatted empty partitions for wic
images.

To use it you must pass "empty" as argument for the "--source" parameter in the
wks file. For example:
part foo --source empty --ondisk sda --size="1024" --align 1024

Change-Id: I0155561e9cc2ac11159e181eec9e4d9ae11555c3
Issue-Id: SCM-889
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-25 09:33:04 -04:00
Usama Arif d62dff99d3 arm-bsp/tc0: update kernel from 4.19 to 5.4
As the ack-4.19 patches are no longer used, they can
be removed.
The extra defconfig options have been removed as well
according for 5.4 kernel.

Change-Id: Iecbfe86107b7b142f17af6bdfbee086b9590fc1a
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-24 14:36:04 -04:00
Nathan Dunne f28d16dd5d arm-bsp/n1sdp: Use IMAGE_EFI_BOOT_FILES instead of IMAGE_BOOT_FILES
Replaced IMAGE_BOOT_FILES variable with IMAGE_EFI_BOOT_FILES
in the machine config file for N1SDP, in line with commit
85574ce0cf84eaf828334dd2fafadc18909e73b5 from oe-core.

Change-Id: Ib7b76c01870dc10f49be4bb9c0b7623bd2819d46
Issue-Id: SCM-1300
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-24 11:21:04 -04:00
Khasim Mohammed cd7b55ed68 arm-bsp/n1sdp: update TFA SRC_REV to include remote chip pcie support
This patch updates the SRC REV for TFA to latest version, this includes
patch required to add support for remote chip pcie.

Change-Id: Ifeba55ca14a3437e343c4bed72ca5bb2bbda7d2f
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-24 11:20:59 -04:00
Khasim Mohammed fc38cccad1 arm-bsp/linux-linaro-arm-5.4: fix N1SDP kernel configuration warnings
Update the cfg file to fix build time kernel configuration warnings
as shown below:

{{ [NOTE]: 'CONFIG_REALTEK_PHY' last val (m) and .config val do not match
[INFO]: CONFIG_REALTEK_PHY : y ## .config: 2358 :configs///defconfig (m)
[INFO]: raw config text:

Change-Id: Icdd0ed0ecdde887e4dcb5874cc59ce407c8d92db
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-24 11:20:59 -04:00
Usama Arif f54431b950 arm/linux-arm64-ack: update branch to 5.4 version
android-5.4-stable branch has been deprecated.
Update to new branch.

Change-Id: I6912005380e89cf62baf0f49404367a1492a45e3
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-24 08:56:20 -04:00
Anders Dellien 5db22bcc8d arm-bsp/u-boot: Rebase FVP patches on u-boot 2020.07
This removes fuzz warnings when applying the patches.

Also change 'earlyprintk' parameter to 'earlycon' as
the former isn't support for AArch64.

Change-Id: I7d9ee3e3ab47877e1d85862dbc835e0d5dac0ecc
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
2020-09-23 16:16:38 -04:00
Nathan Dunne c7a1a5f9fd arm-autonomy/documentation: Update arm-autonomy-quickstart.md with dependencies
Added dependencies on meta-kernel and meta-arm/meta-arm-toolchain layers
to quick start guide instructions.

Change-Id: I7d5a3c631ccdcc7a39b8003a958d5f68ecb606c7
Issue-Id: SCM-1298
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-22 21:39:06 -04:00
Nathan Dunne e4e1a7211a arm-bsp/u-boot: fix THISDIR name collision in u-boot_%.bbappend
Renamed ${THISDIR} user defined variable to ${THIS_DIR}, to prevent
it from breaking ${THISDIR} macro in subsequent u-boot .bbappend files

Change-Id: I4473ee5c3ac5c0aea9310557294cc9757579bdf1
Issue-Id: SCM-1302
Signed-off-by: Nathan Dunne <Nathan.Dunne@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-21 12:40:00 -04:00
Denys Dmytriyenko 804d3a5b68 external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries
Allows re-use of prebuilt ARM toolchain binaries for SDK generation.

This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
[Sumit: package headers corresponding to EAT_TARGET_SYS and add PV]
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-18 09:39:46 -04:00
Diego Sueiro 6cf9117016 arm-autonomy/xenguest-network: Add kernel-module-xt-masquerade to RDEPENDS
Newer versions of iptables requires the xt-MASQUARADE.ko.

Change-Id: I243365b8e1819407ddadc6f021704b867ab6dcf5
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-18 09:39:46 -04:00
Diego Sueiro 67b359d532 arm-autonomy/recipes-connectivity: revert dhcp removal and bind update
In oe-core master branch the dhcp recipe was removed and bind version was
bumped.

For now, arm-autonomy-host-image-minimal installs the dhcp-server package
which is generated by dhcp_4.4.2.bb recipe that depends on bind_9.11.22.bb
recipe.

In the near future arm-autonomy will be updated to use kea dhcp server
which is now used in oe-core.

Change-Id: I5f11b5ae8642d6afd90a52b905041dbcec2d0024
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-18 09:39:46 -04:00
Ross Burton ba05f5e7b9 arm/scp-firmware: fix build race
Backport a patch to fix a race in parallel builds.

Change-Id: I4b33b819f2da302369ca77429f25d5c15672c5f3
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-18 09:39:46 -04:00
Khasim Mohammed 1f3cf5812c arm-bsp/scp-firmware: set CCIX speed to GEN3 to work with interposer C2C setup
Set CCIX speed to GEN3 to work with interposer C2C setup.
In this usecase set downstream/upstream port transmitter preset value to 4.

Change-Id: I9795a46d9a349dc2813a4ed92944a481c0a2498e
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-08 10:25:52 -04:00
Khasim Mohammed 87e8e14b9a arm-bsp/linux-linaro-arm-5.4: n1sdp: pcie: add quirk support to enable remote chip PCIe
Base address mapping for remote chip Root PCIe ECAM space.

Remote Chip PCIe topology is enumerated in Firmware and current
change takes reference of enumerated PCIe hierarchy of Remote chip into the
kernel and include in complete PCIe topology for kernel framework.

Change-Id: I2bbceb5c89cc8fb4609e646652917cd97d638a27
Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-08 10:25:52 -04:00
Khasim Mohammed 2eeea26a51 arm-bsp/n1sdp: update SRC_REV to latest validated version
This patch updates the SRC REV for SCP, TFA and edk2-platforms to point to
latest versions.

Change-Id: Ib6825d51fac89a9514b936ce927e7f5f3e508e26
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-08 10:25:52 -04:00
Jon Mason 8ddfd20f79 arm-bsp: use neoverse-n1 for N1SDP
Per https://community.arm.com/developer/tools-software/oss-platforms/w/docs/458/neoverse-n1-sdp
The N1SDP is a Neoverse N1.  Use that tuning to get better optimization
for the platform.

Change-Id: I435931abd2537a17a08eae06395137ce185a49dc
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-04 05:00:48 -04:00
Jon Mason 91d5cf02b9 arm-bsp: SGI575 should use A75 tuning
Per https://community.arm.com/developer/tools-software/oss-platforms/w/docs/489/system-guidance-for-infrastructure-sgi
The SGI575 is a Cortex-A75.  Use that tuning to get better optimization
for the platform.

Change-Id: I6172820684f2c32eb57be1e86f2ac632fcb7cecd
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-04 05:00:48 -04:00
Jon Mason b2b0a833d2 arm-bsp: ARMv8-2a: Add tuning files
Add all the available ARMv8.2 tunings from GCC.  This belongs in
OE-Core, but adding here so that it can be used while trying to upstream
there.

Change-Id: I5025eef6d18545478116b5079daf9c4d12e93dca
Signed-off-by: Jon Mason <jon.mason@arm.com>
Reviewed-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
2020-09-04 05:00:27 -04:00
Jon Mason 43a5b21016 arm-bsp: add cortexa73-cortexa35 tune
Add ARMv8-A big.LITTLE tuning for cortexa73-cortexa35.  It is supported
in GCC, and is the only one missing from OE-Core.

Signed-off-by: Jon Mason <jon.mason@arm.com>
Reviewed-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
2020-09-04 05:00:14 -04:00
Diego Sueiro 00e56a20e7 arm-autonomy/xen/gem5: Update EARLY_PRINTK support
From Xen 4.14 version, the CONFIG_EARLY_PRINTK setting was moved from the
make define setting in xen/arch/arm/Rules.mk to the Kconfig infrastructure.
Hence, we need to make usage of config fragments to add this option to the
supported machines.

Change-Id: I64a7dfbe05c803e59f3296d7d0799126b2eb7d1f
Issue-Id: SCM-1197
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 75e7288e61 gem5: Backport pointer authentication fixes
Change-Id: I5152895f992e9bc85b24a9190e4affb3c74e44cd
Issue-ID: SCM-899
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 173dca73b9 arm-autonomy/gem5-aarch64-native: Set CPU and disable pointer authentication
When booting gem5-arm64 with Xen and Linux we need to set the cpu as Cortex A53
and remove support for pointer authentification.

Change-Id: Ib8ea61784f668bf88c1492e5e56737a0aa40d762
Issue-Id: SCM-899
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 616bb5cf41 arm-autonomy: Introduce arm-autonomy-host DISTRO_FEATURES_NATIVE
Some native recipes might want to apply specific settings when the
arm-autonomy-host or xen DISTRO_FEATURES is enable for the target build.
In this case the arm-autonomy-host needs to be also added to
DISTRO_FEATURES_NATIVE.

Change-Id: I11a8c4bbb99333d62520afc2c12a183cf08d6e1a
Issue-Id: SCM-899
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro a41e7a4893 arm-autonomy/xen,xen-tools: Remove sdl from PACKAGECONFIG for arm-autonomy-host
For arm-autonomy-host DISTRO_FEATURES we don't need xen and xen-tools
configured with sdl support.

Change-Id: Id7391b722ab37b8970aa4b72d4d34221fb566618
Issue-Id: SCM-889
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 6c7cc4288d arm-autonomy/xen-devicetree: Update XEN_DEVICETREE_DOM0_BOOTARGS for N1SDP
For N1SDP the wic image partition layout have the /dev/sda1 as the boot
partition and /dev/sda2 as the rootfs partition.

To reflect this, we need to update the XEN_DEVICETREE_DOM0_BOOTARGS to
set the "root=" command line parameter to /dev/sda2.

Change-Id: Iee52176ab4ac1232a3d726e955835261b0a5ae00
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 5a893d9a02 arm-autonomy/xen-devicetree: Fixes and updates for N1SDP
The N1SDP machine now uses the dtb generated by the tf-a recipe and for
now we are only interested in the single-chip mode.

The xen-n1sdp.dtsi needs to be updated by adding the extra
'soc' root path to have the dtc being enable to process the
nodes customizations.

Change-Id: I46eaec23d25f6c4a4b6ed86661d451ace590706d
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 7aac78e433 arm-autonomy/xen-devicetree: Use a different sed delimiter character
In the do_deploy task, replace the current sed delimiter (',') with '?'
since there are use cases where the bootargs variables have the ','
character in it which makes the sed command to fail.

Change-Id: If9b8221404ec63568768bf0f303be7759ba5f64d
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Diego Sueiro 2fa92f8e5f arm-autonomy/xen: Update EARLY_PRINTK support and remove custom defconfigs
From Xen 4.14 version, the CONFIG_EARLY_PRINTK setting was moved from the
make define setting in xen/arch/arm/Rules.mk to the Kconfig infrastructure.
Hence, we need to make usage of config fragments to add this option to the
supported machines.

Also, remove the custom machines defconfigs and rely on the Xen in tree
defconfig.

Change-Id: Ibd6058c4808eeea6ad1260ba558468a64877b231
Issue-Id: SCM-1197
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-03 21:51:18 -04:00
Khem Raj fff1d902a1 optee-examples: Respect LDFLAGS passed via environment
This ensures right linking flags e.g. gnu_hash settings

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-09-02 14:22:15 -04:00
Usama Arif 237c94f5ef arm/kernel: Introduce 5.4 Android Common Kernel
This recipe targets machines based on arm64. The patch
also adds an .inc file to for common code between different
ACK recipes.

The base commit is based on tag refs/tags/ASB-2020-06-05_5.4-stable

Change-Id: I5b5f1eeb8336910355fc9880670c729453a8096a
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Usama Arif 15b94c1f3f arm-bsp/machine: Fix ACK version for tc0 to 4.19
Change-Id: Ieca56d40c26367c158b9394d546323be4c1f81ce
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Ross Burton a6d45ae857 arm-bsp/trusted-firmware-a: remove redundant MBEDTLS_DIR assignment
The base recipe already does this, so there's no need to do it again.

Change-Id: I04f679ab267db3bcdbb812dce6be2efc8a25b633
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Ross Burton 6324b10be4 arm/trusted-firmware-a: don't build all targets in parallel
There are build races in the Makefiles when you build all targets at
once (missing dependencies):

| tools/fiptool/fiptool create [...]
| ERROR: fopen WORKDIR/build/juno/debug/fdts/juno_fw_config.dtb: No such file or directory

These are non-trivial to fix so whilst upstream works on this we can
just build each target serially.

Change-Id: Iba0d0ae7de6faf199efea073135fd3b7232b81a1
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Ross Burton 2ac291eea3 arm-bsp/trusted-firmware-a: remove duplicated Mbed TLS tarball
Now that trusted-firmware-a is actually adding the Mbed TLS tarball, the
machine-specific includes can stop doing it themselves.

Change-Id: I45754b8a4eba99c8fbf7c99e61d01f2a27da1b4a
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Ross Burton 24379d7e7f arm/trusted-firmware-a: actually add mbedtls to SRC_URI
trusted-firmware-a.inc was conditionally adding the Mbed TLS tarball to
SRC_URI, but all of the versioned recipes subsequently assigned over the
top of it so the Mbed TLS tarball was never actually in SRC_URI.  This
resulted in machine overrides needing to add the tarball themselves.

Solve by using _append so that the SRC_URI is actually changed.

Change-Id: I05cf1dec2c6422a40a42c615fb2b9b6e8d6f1cb0
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Ross Burton ad09efd4f0 arm-bsp/trusted-firmware-a: reorder the build targets
Build the DTBs before the FIP, as the latter depends on the former to exist.

Change-Id: I6059805458b12cb87c2af77eb924778844dc88ec
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-28 11:39:43 -04:00
Usama Arif f7ec7a1278 arm/scp-firmware: Fix build location
The build location is dependent on whether
debug or release version of scp is being built.

Change-Id: I22e0777c316ea59a49a6f178d620a59d24372e00
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-28 12:03:32 +01:00
Jon Mason 46941a67b7 arm-bsp: redundant entry in FVP TF-A
bl1 is specified twice in the FVP Arm32 include file, which seems
erroneous.

Change-Id: Ib2fc91b547151acfc28f57679e99f649bd0f49ab
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-25 11:13:28 -04:00
Jon Mason fc0ce7964e arm: trusted-firmware-a variable name misuse
"processes" should be "processed" in trusted-firmware-a.inc, as it
signifies if the relevant part has been installed/processed.

Change-Id: I2d1ffbb0c6d14d280b6f9c9cc45c04c7c32409a7
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-25 11:13:28 -04:00
Khasim Mohammed 2f3898a46e arm-bsp/trusted-firmware-a: Install dtbs from the generic TFA recipe
Configure TFA_INSTALL_TARGET to multi-chip and single-chip dtbs,
avoid installing dtbs in platform specific recipe instead use the generic
step.

Change-Id: I79835f2c4f4d0bde938e43d6cf59f73392520935
Issue-Id: PLATFORMS-3971
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-21 14:09:08 -04:00
Khasim Mohammed 3fc917ac8f arm/trusted-firmware-a: add support to install dtb built as part of TFA
Device tree blobs (DTBs) generated as part of TFA were installed separately
in the platform specific TFA recipes, its redundant as each platform was
executing similar installation steps.

The patch avoids skipping dtb installation and adds support to check for
DTB entries in TFA_INSTALL_TARGET and install the same to respective deploy folder.

Change-Id: I0f8f5c39dc4b4931d202696990fa915ea7ed60eb
Issue-Id: PLATFORMS-3971
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-21 14:09:08 -04:00
Khasim Mohammed 016f81a284 arm/trusted-firmware-a: fix variable name typo
Variable name "processes" is wrongly mentioned as "processed", this patch
fixes the same.

Change-Id: Id9362f514861c75f8f6a727582e11b0e65736349
Issue-Id: PLATFORMS-3971
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-21 14:09:08 -04:00
Khasim Mohammed 75b337d909 arm-bsp/linux-linaro-arm: Fix multiple definition of `yylloc'
Patch https://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto/commit/scripts/dtc/dtc-lexer.l?h=v5.4.56&id=35b34d264cb347909ec89d9fa895900035d5438c
is applied to fix kernel build failure due to multiple definition of 'yyloc'.

Refer to the bug report https://bugzilla.yoctoproject.org/show_bug.cgi?id=14014 for more details.

Change-Id: I801c6c40dc67ceea74993ccf26b077ba66ae58d8
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-19 11:47:44 -04:00
Jon Mason c6cee30268 arm-bsp: Correct documentation errors
Documentation for FVP and Foundation is incorrect in names and missing a
field.

Change-Id: I58de54e9d0883671166102e657f53cfad14a2cba
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-19 11:47:19 -04:00
Jon Mason 07699dadbc arm-bsp: Remove unused kernel recipe
Change-Id: I4203a6d4536702a701055b511fc2b9a27868082f
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-19 11:47:19 -04:00
Damodar Santhapuri 7bf455636a arm-bsp/juno: Move to linux-yocto 5.4
This commit includes
1. Move from linux-linaro-arm 4.9 to linux-yocto 5.4
2. MHU patches for SCMI
3. add patch to remove stale configs in v5.4

Observed the below error in kernel boot

[    7.177114] arm-scmi firmware:scmi: mbox timed out in resp(caller: scmi_power_state_set+0x78/0xc0)
[    7.197984] arm-scmi firmware:scmi: mbox timed out in resp(caller: scmi_power_state_set+0x78/0xc0)
[    7.201125] smsc911x 18000000.ethernet eth1: SMSC911x/921x identified at 0xffff800012a70000, IRQ: 8
[    7.206968] arm-scmi firmware:scmi: mbox timed out in resp(caller: scmi_power_state_set+0x78/0xc0)
[    7.206978] arm-scmi firmware:scmi: mbox timed out in resp(caller: scmi_power_state_set+0x78/0xc0)
[    7.216073] arm-scmi firmware:scmi: message for 5 is not expected!

Change-Id: I4651a142bcee06ba95faa315e3caaf871f406b5a
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-18 08:51:17 -04:00
Denys Dmytriyenko 38de27d05f external-arm-toolchain: check for TCLIBC being glibc
The old TARGET_OS check doesn't work, as it only checks for uclibc and musl at
the end, while TARGET_OS is usually "linux-musleabi", uclibc has been deprecated
and new options like "newlib" and "baremetal" were added. Plus it only works for
the target, but not SDK. Switch to simply checking for TCLIBC = glibc.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-14 15:55:31 +01:00
Denys Dmytriyenko ad86780072 external-arm-toolchain-versions: set per-component toolchain licenses
This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-14 15:55:31 +01:00
Denys Dmytriyenko 513afd26f8 external-arm-toolchain-versions: also collect binutils/bfd version
To be used by SDK packaging for binutils cross.

This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-14 15:55:31 +01:00
Anders Dellien ea506b8908 arm-bsp/recipes-kernel: Remove kernel config warnings for fvp-base machines
For fvp-base, enable CONFIG_COMPILE_TEST to remove warning regarding
CONFIG_ARM_TIMER_SP804

For fvp-base-arm32, enable CONFIG_MODULES to remove warning regarding
CONFIG_SCSI_DEBUG

Change-Id: I02457ae2d50e03367d1ec3aeb3a0f1571c0f2b05
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:19:47 -04:00
Abdellatif El Khlifi 64131db424 arm-bsp/linux: Enabling lan9115 Ethernet for corstone700-mps3
This commit enables lan9115 Ethernet in the v5.6 kernel
as a machine feature.

Change-Id: Ib8e724a64b24db3048a2b12973824bba9f3eecc4
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:13:40 -04:00
Abdellatif El Khlifi d789b0373a arm-bsp/machine: adding corstone700-mps3 machine
This machine provides corstone700 platform on the MPS3 FPGA board.

For more information about the platform, please check:
https://community.arm.com/developer/tools-software/oss-platforms/w/docs/444/corstone-700

Change-Id: I7b654fcb8dc5c6efa261a1413389271df87534cb
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:13:33 -04:00
Abdellatif El Khlifi 88cf980c5d arm-bsp/scp-firmware: adding scp support for corstone700 platform
Extend the scp recipe to support corstone700 plaform.

The scp runs on the boot processor (Secure Enclave).

Change-Id: I24289533a72367ebd2d2150c5230d9f435b4212f
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:13:16 -04:00
Abdellatif El Khlifi e9b47532e5 arm-bsp/u-boot: adding corstone700 platform to u-boot
Adding support for the new Arm corstone700 platform family.

The current supported corstone700 machine is corstone700-fvp.

The changes are as follows:

  - Making some adjustments to the mmio timer and to the cortex-a5
    designstart platform to share as much as possible between this
    platforms.

  - Disabling the use of the mmio_timer driver and enabling the
    arch_timer driver.
    The mmio_timer tries a direct access to the Armv8-A CNTFRQ generic timer
    frequency register through memory mapping. This can not be done because
    this register is only accessible through memory mapping under a secure
    mode only. u-boot runs in non secure Hypervisor mode. To read the counter
    frequency u-boot should use the mrc instruction to read the CNTFRQ system
    register. The arch_timer driver reads the CNTFRQ register using the mrc
    instruction.

  - adding bootx command to start XiP images

Change-Id: I40f5e91cfb8865e2904b0f5ac9920df75705b593
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:13:08 -04:00
Abdellatif El Khlifi 3225c78118 arm-bsp/external-system: enabling corstone700 platform support
This commit allows the external-system firmware to be used on the
corstone700 platform.

Change-Id: I746a970dcdceee60d91152e4315afa072ca843d3
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:13:02 -04:00
Abdellatif El Khlifi 30aa72f516 arm-bsp/trusted-firmware-a: adding support for corstone700 platform
This commit adds support for trusted-firmware-a to the corstone700
platform.

The trusted-firmware-a runs on the host processor.

Change-Id: I70ae2715e640bf50c756229a734dcb663c2d8e4d
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:12:53 -04:00
Abdellatif El Khlifi 98aa643ff1 arm-bsp/linux: configuring v5.6 kernel for corstone700 platforms
This commit enables kernel v5.6 for corstone700 and configures the kernel
using configuration fragments. The current available machine is
corstone700-fvp.

Change-Id: I43371f9ef0277e9bd82bc73c7911df5a99e5f59d
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:12:46 -04:00
Abdellatif El Khlifi 6c44a63bc8 arm-bsp/machine: adding corstone700-fvp machine
This machine provides corstone700 platform on FVP.

For more information about the platform, please check:
https://community.arm.com/developer/tools-software/oss-platforms/w/docs/444/corstone-700

Change-Id: I1197d3216f37ab8d2c792da82c4f5e7e17d5a09c
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:12:38 -04:00
Rui Miguel Silva 2996183867 arm-bsp/external-system: add external system recipe
Add recipe that allows building the external system firmware.

The external system is a Cortex-M3 platform provided by the partners
and intended to implement the sensor/realtime part of the IoT system.

Change-Id: I271eafcc90e44efb8090f8b2cc1c8acfd15eb929
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-14 09:12:12 -04:00
Ross Burton 74ef241a4b arm/layer.conf: unify on a layer priority of 5
This layer may want to ship older versions of software than oe-core for
some BSPs (such as u-boot), but we don't want to force those downgrades
on everyone else.  Unfortunately because the meta-arm layers have
priority 6, any recipe in this layer wins over newer versions in oe-core:
for example with an older release of u-boot in meta-arm, simply adding
meta-arm to BBLAYERS will result in qemux86 downgrading u-boot.

Solve this by lowering meta-arm's priority to match oe-core, so that
recipes are treated equally and the usual version ordering applies.

Change-Id: I6de7a6b493e71b8b88862018b9fa35608342c1b2
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:55:03 +01:00
Ross Burton 484847b1a1 arm/trusted-firmware-m: use hashes not tag names
Using tag names in SRCREV means a network operation every build, and
loss of reproducible builds if the tag moves.

Change-Id: I583e723925314a4a36a9ac1b6c932dbcf99e7da4
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:35 +01:00
Ross Burton eb0f1db950 arm/trusted-firmware-m: don't fetch mbedtls
The trusted-firmware-m build doesn't use mbedtls (just mbed-crypto), so
don't fetch it.

Change-Id: Idc7fe211a8a667262a59d1e8106e486fb96498bd
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:35 +01:00
Ross Burton 1a2c728f63 arm/trusted-firmware-m: no need to run parse_manifest_list
This is part of the test instrumentation that we don't currently build.
A future recipe or patch can enable this properly and ensure it is
tested.

Change-Id: I02584920b00085dfe4efbff166684c5717f6cdf5
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:35 +01:00
Ross Burton cd6f152aa2 arm/trusted-firmware-m: clean up configure/compile
Move B up a level so the build tree is entirely separate from the source
tree.

Use [cleandirs] to ensure that B is present and empty when rebuilding,
and remove now redundant code.

Finally add some comments to explain why trying to use cmake.bbclass is
pointless.

Change-Id: Ic8ddc08c46b9e945023e0b0a6e4ca1a6294b726b
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:35 +01:00
Prabin CA 2f275411d2 arm-bsp/wic: Introduce WIC support for sgi575
- Add custom wks script for SGI575.
            - Add grub.cfg for SGI575

Change-Id: I9d371426a1bd75b49f6fbc89e2f2c255d4b8c0ac
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Prabin CA f3f3333901 arm-bsp/sgi575: Add RAM filesystem support
Add cpio.gz to IMAGE_FSTYPES for compressed RAM filesystem support

Change-Id: Ia81563976069666f762492e56b1a706a4ee0c173
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Prabin CA b0c7888fe0 arm-bsp/grub: Add grub-efi support for SGI575
grub-mkimage is used make a bootable image of GRUB,
grub-efi dependency in added to conf file.

Change-Id: I3afde13902cf396c47fd3ddea01d09cafd2a996d
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Prabin CA ee55fe42f1 arm-bsp/linux: Build Linux stable 5.7 for sgi575
- Update linux-arm inc for including sgi575
        - Add machine conf to add image dependency
          for Linux components

Change-Id: I26c539793b73a3f4a31e40daa4272904a1751b3e
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Prabin CA f36c3d79d6 arm-bsp/fip-image: Build TFA/UEFI for sgi575
- Add bbappend recipe to build ARM-TF and UEFI firmware
          for SGI575.
        - Add machine conf to add image dependency
          for ARM-TF components.

Change-Id: I1f9dcc8877aa929c50bffd0b437e8f51527f3d45
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Prabin CA c9295e1030 arm-bsp/scp-firmware: Build SCP/MCP for sgi575
- Add bbappend recipe to build SCP and MCP firmware
      for SGI575.
    - Add machine conf to add image dependency
      for SCP-firmware components

Change-Id: Ic888ee11178979e5ec068f85a5e0d7f2cabb7f5e
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 19:54:08 +01:00
Ross Burton 0d47e826a2 gem5/linux: remove redundant CONFIG_DRM_ARM
This config option was made redundant in 5.1, so remove it.

https://github.com/torvalds/linux/commit/37fc9bb022c654e261c5a7d2ce600c6ce26c022d

Change-Id: I01aabec52ae71fc5cabe8a1589766b6b4c79b677
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-12 10:38:21 +01:00
Ross Burton 2d2544d827 arm/trusted-firmware-a: add branch name for mbedtls
The mbedtls repository has had some branch/tag pruning so the tags we
were using are no longer on 'master'.  Set the right branch name so the
fetch is successful.

Change-Id: I07dc7045cd7784b7e93e14c3a24721a22b79da8a
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-11 14:47:46 +01:00
Prabin CA 4037691088 arm/trusted-firmware-a: add branch name for mbedtls
It appears that the mbedtls team have moved the SHA which
meta-arm was using from master branch. It is still present
in mbedtls-2.16 branch so this is now used.

Change-Id: If24915b1a1dc889d55b359863943439c76f6ca85
Signed-off-by: Prabin CA <prabin.ca@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-11 14:42:23 +01:00
Damodar Santhapuri 5ac42f2e5a arm-bsp/trusted-firmware-a: Add v2.3 support for juno platform
Update machine/juno.conf to support tf-a v2.3

Change-Id: Ieced15e83818687c879d927bce2c4604a72b9b1e
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-11 11:52:37 +01:00
Damodar Santhapuri 02739e6914 arm-bsp/scp-firmware: build SCP firmware for juno
- Remove scp-firmware-juno_19.06.bb
- Enable v2.6 support for juno
- Add juno machine specific to scp-firmware
- Use romfw_bypass as scp_bl1.bin

Change-Id: Ib3f92e170a4e5701f6c6d18695541eae763de464
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-11 11:52:37 +01:00
Damodar Santhapuri dac985058b arm-bsp/scp-firmware: Introduce FW_INSTALL variable
Use the FW_INSTALL variable to select which firmware
binaries should be installed in the target.

Change-Id: I6bffa3db9adc27a5ee43b316a12a758c48acb43f
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-11 11:52:36 +01:00
Jon Mason fa5624af38 arm-bsp: Fix missing virtual/kernel warnings for musca
When building musca s1 and b1, the many warnings are seen.  As an
example:
NOTE: Multiple providers are available for virtual/kernel (linux-dummy, linux-linaro-arm, linux-mainline, linux-stable)
Consider defining a PREFERRED_PROVIDER entry to match virtual/kernel
NOTE: Multiple providers are available for runtime kernel-base (linux-linaro-arm, linux-mainline, linux-stable)
Consider defining a PREFERRED_RPROVIDER entry to match kernel-base
NOTE: Multiple providers are available for runtime kernel-image (linux-linaro-arm, linux-mainline, linux-stable)
Consider defining a PREFERRED_RPROVIDER entry to match kernel-image
NOTE: Multiple providers are available for runtime kernel-image-zimage (linux-linaro-arm, linux-mainline, linux-stable)
Consider defining a PREFERRED_RPROVIDER entry to match kernel-image-zimage
...

Add linux-dummy as the PREFERRED_PROVIDER to the musca inc file to
silence these.

Change-Id: I80eee816b51aa028f9f2ceb03ac137f9c5f8b461
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-08-10 17:00:17 -04:00
Ross Burton 1c125f216b arm/scp-firmware: don't set DEBUG_PREFIX_MAP
The current arm-none-eabi-gcc supports all the flags that oe-core uses,
so we can remove this.

Noticed because due to the override it wasn't actually being used.

Change-Id: I09aa8c5d427fa3877f9947a0508c36a4f060ae68
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 17:43:08 +01:00
Ross Burton 6b68a434a5 arm/scp-firmware: mark as machine-specific
Firmware is machine-specific, so set PACKAGE_ARCH.

Change-Id: Ib3247d04eaacd2b4240a1e11353f06ebd381a4c6
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 17:43:07 +01:00
Usama Arif d651ccd61c arm-bsp/recipes-kernel: Enable FRAMEBUFFER_CONSOLE for tc0
This enables extra ttys that are required by sysvinit 2.96 used
in dunfell.

Change-Id: I4ee0d1a3ec98665fd19cb8022b66c53c3d559499
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 17:42:20 +01:00
Khasim Syed Mohammed d080cb27c6 arm-bsp/wic: Introduce custom wks and grub.cfg for N1SDP
The standard canned WKS files like mkefidisk.wks doesn't allow
us to set custom grub.cfg hence a new wks file is created on the
lines of mkefidisk.wks to accept custom grub.cfg as config parameter
to bootloader command.

The custom grub.cfg allows user to select from different boot options
(acpi, devicetree for single and multi chip).

IMAGE_BOOT_FILES is updated to package n1sdp dtbs for single and multi chip
as part of the final image.

Change-Id: I29a64d0bd50d72d912cdcd99dbc593388be786bb
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 17:01:54 +01:00
Khasim Syed Mohammed 1ced26dcdf arm-bsp/trusted-firmware-a: generate single-chip and multi-chip dtbs for N1SDP
N1SDP supports both single-chip and multi-chip environment.
 - Updated SHA to latest TFA patchset to add support for both DTS files
 - generate dtbs for both single and multi-chip environment
 - Migrate N1SDP to use trusted-firmware-a version 2.3 as base line

Change-Id: I4b92e1680750041421fb9fbc9cef448250581f94
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 17:01:49 +01:00
Usama Arif 3ac76657bd arm-bsp/trusted-firmware: tc0: remove SHA for mbedtls
Use the default one from trusted-firmware-a_2.3

Change-Id: I496db01818b172b109e8dab04e39a66bafd35a2d
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 11:34:04 +01:00
Usama Arif 01d9c1ff3c arm/trusted-firmware-a: add branch name for mbedtls
It appears that the mbedtls team have moved the SHA which
meta-arm was using from master branch. It is still present
in mbedtls-2.18 branch so this is now used.

Change-Id: Ie932f446067767e85a25583b1bdc02b4739e323f
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Prabin CA <prabin.ca@rm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-08-05 11:33:39 +01:00
Anders Dellien 191f62e246 arm-bsp: Introduce 32-bit FVP-BASE platform and BSP
Also refactor fvp-common.inc to contain definitions shared
between fvp-base, fvp-base-arm32 and foundation-armv8

Change-Id: I3634c3fefa8d793d0bcf5fcfd7458e6dbd2a6622
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
2020-08-03 10:33:53 -04:00
Anders Dellien 98e3b9f6b1 arm-bsp/trusted-firmware-a: Add support for 32-bit FVP_BASE machine
Change-Id: Ia2b51de62564ed3f1489d749c0e7d78459fda993
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
2020-08-03 10:33:53 -04:00
Anders Dellien f42fc54033 arm-bsp/u-boot: Add support for 32-bit FVP BASE machine
Change-Id: I48ec5607c216b1c15d2fedc1375f3f0a914c9937
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
2020-08-03 10:33:53 -04:00
Jon Mason 921207e89d arm: add TF-A v1.5 recipes
Add trusted-firmware-a recipes for v1.5.  While old, there are platforms
that are still using this older version.

Change-Id: Id40414ad58fd274af86203bb2c8d449e18a10c7a
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-31 15:25:39 -04:00
Jon Mason f14b1b325b arm-bsp: remove redundant entry
Change-Id: I096c238ceec9244a130c1c5d7e30fc0dbc98997d
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-31 15:25:39 -04:00
Ross Burton 2c5bdd0f73 optee-os: fix build race
There's a rare build race where mk/conf.mk.tmp is written to before mk/
exists.  Add an explicit mkdir so that this directory is sure to exist.

Change-Id: I4e907f395679da9354d386301e7bf5da46afdbaf
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-31 08:10:37 -04:00
Diego Sueiro c4cf4382cd arm-autonomy: Move gem5-arm64 to dynamic-layers/meta-gem5
Since gem5-arm64 machine implementation was moved from meta-arm-bsp to
meta-gem5, we need to move the specific machine settings to
meta-arm-autonomy/dynamic-layers/meta-gem5.

Change-Id: I773189e7e1ee2ca77e569dcec2d92ecfb93d3719
Issue-Id: SCM-1133
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-31 08:10:37 -04:00
Khasim Mohammed a411cec3e0 arm-bsp/wic: fix WKS dependencies for N1SDP components
Add build-time dependencies to ensure the required components
(TFA, SCP, UEFI EDK2) are built and available before
the task to create wic image gets initiated.

Change-Id: I3789c8d1a44984a26d31ddd8ddd5d16f4d58c7d3
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-31 08:10:37 -04:00
Diego Sueiro 0ad8a1495c arm-autonomy/xenguest-network: Add NAT port forward support
When XENGUEST_IMAGE_NETWORK_TYPE="nat", add the option to set NAT port
forward to have access to the guest from the external network.

The port forward is applied per guest by the 00-xenguest-nat-port-forward.hook
script which is called by /etc/xen/scripts/vif-post.d/00-vif-xenguest.hook.
The ports can be customised by the XENGUEST_IMAGE_HOST_PORT and
XENGUEST_IMAGE_GUEST_PORT variables.

Change-Id: I49492f5ac881fd3cc38838ce24d1d4160a4e65df
Issue-Id: SCM-1019
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 16:15:02 -04:00
Diego Sueiro 7318d9ac3c arm-autonomy/xenguest-network: Add private network support for xenguest
Introduce the private/internal network support for xenguest by using NAT
and applying the proper iptables rules to allow the guest to have access
to the external network.

The XENGUEST_NETWORK_TYPE variable was introduced to allow the user to
setup the xenguest network type between "bridge" (default), "nat" and
"none".

Change-Id: I919e5b0fd0809093698b9dec3a9503b598b54828
Issue-Id: SCM-1019
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 16:14:58 -04:00
Diego Sueiro b37fd5b7a5 arm-autonomy/linux-arm-autonomy: Extend netfilter config for host
To properly set the iptables rules to be applied when configuring the
network between the host and guest we need to have the netfilter.scc
kernel feature and following kernel extra kernel configs:
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m

Change-Id: I6f3ff9e8db5d359efba5fb3ead04703f4f2ec88b
Issue-Id: SCM-1019
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 16:14:52 -04:00
Diego Sueiro e972ddb64b arm-autonomy/xen-tools: vif-nat script fixes
This patch introduces two fixes for the vif-nat script:
1- Setting the hostname is failing because the "$XENBUS_PATH/domain"
   doesn't exist anymore. To fix this we set it to dom$domid.
2- Copy temp files used to add/remove dhcpd configurations to avoid
   replacing potential symlinks.

Change-Id: I5f2ed917c15bbe1c6ff9ec3cc9ad2fc4e1c0fb60
Issue-Id: SCM-1019
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 16:14:44 -04:00
Khasim Mohammed 7841c775b9 arm-bsp/linux-linaro-arm: enable Realtek R8169 eth adapter driver for N1SDP
By default kernel defconfig is not enabled to support Realtek adapter driver
required to get ethernet working on N1SDP. This patch enables the CONFIG_R8169
to add the support.

Issue-Id: PLATFORMS-3134
Change-Id: I218ca8e0011db7f02329e103c1dea1350ccc3c28
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:58:10 -04:00
Khasim Mohammed d5f4b4680b arm-bsp/linux-linaro-arm: remove disable of CONFIG_EXTRA_FIRMWARE for N1SDP
The kernel defconfig has removed enabling of CONFIG_EXTRA_FIRMWARE,
disabling the CONFIG_EXTRA_FIRMWARE isn't required.

Change-Id: I032b1aa7dd84c63f6aece5f24dbab43d14da278c
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:58:10 -04:00
Ross Burton af341b0e2c arm-bsp/scp-firmware: bump TC0 SRCREV and fix PV
This is 2.6.0, not 2.6.

Also bump the SRCREV to match N1 SDP so that the core code is the same,
that BSP uses a newer commit.

Change-Id: I83168aa5973d83e4d93869019d91c05daf1e71e9
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:23:05 -04:00
Ross Burton 0803574292 arm-bsp/scp-firmware: use full version number 2.6.0, not 2.6
Change-Id: I34928c09d89eb836cfef80d824b3c5a060af7491
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:23:05 -04:00
Ross Burton 282cbd7029 arm/scp-firmware: move to 2.6.0 release tag
Instead of an arbitrary commit, set the base recipe to build the 2.6.0
release.

Change-Id: Iec78c6ed903edfd020cca1222770d8ec018ae78a
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:22:48 -04:00
Ross Burton c8c1f9e7a0 arm-bsp/scp-firmware: use wildcard bbappend
This doesn't care what specific version is being appended, so use a
wildcard.

Change-Id: I5e3a46c42616f8dfa62a20549c03b60e24fe8b20
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:11:12 -04:00
Ross Burton 3140f49fa9 arm-bsp/scp-firmware: remove cmsis SRCREV
This repository is no longer fetched explicitly by bitbake so remove the SRCREVs.

Change-Id: I2de11d354f1f708de941485d5cc4463d53e6018e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:11:12 -04:00
Ross Burton c44a476a8a arm/scp-firmware: use gitsm fetcher
The standard git fetcher ignores submodules but as scp-firmware uses
submodules it should use the gitsm: fetcher to automatically fetch cmsis
instead of doing it manually.

Change-Id: I2f83100fa53070b6560be6fb7322383345224bb1
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:10:50 -04:00
Ross Burton 7bc168740b arm/scp-firmware: always compile verbosely
The only downside of verbose builds is that the compile logs are larger,
but non-verbose logs are useless for debugging mysterious build failures.

Remove the option and always do a verbose build.

Change-Id: Ibfd0414f0f6d0d69e20ec1fadcae8e86b516d3fc
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:09:24 -04:00
Ross Burton b3e425f594 arm/scp-firmware: oe_runmake already passes EXTRA_OEMAKE
oe_runmake adds EXTRA_OEMAKE to the arguments, so there's no need to do
it again.

Change-Id: Id8f078faecba72156a4626c960fc7113a70c8eba
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:09:24 -04:00
Ross Burton 2b3c39bb5a arm/scp-firmware: merge bb/inc
There's no other recipe that uses scp-firmware.inc, so merge it into the
recipe for clarity.

Change-Id: Ife1874b54c8b2be2704e1d0f5a7013ff89b8ca6e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-30 15:09:24 -04:00
Ross Burton 5ceb140f37 gem5: recommend haveged, don't depend
Instead of explicitly adding haveged to IMAGE_INSTALL, add it to
MACHINE_EXTRA_RECOMMENDS.

This means people without haveged don't have failing builds, and tiny
images which don't need haveged are not forced to contain it.

Change-Id: I190cdd26dde38fc9039ca1017da3cd2d9ac78721
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-27 13:38:54 +01:00
Ross Burton d17850230d arm-bsp: recommend haveged, don't depend
Instead of explicitly adding haveged to IMAGE_INSTALL, add it to
MACHINE_EXTRA_RECOMMENDS.

This means people without haveged don't have failing builds, and tiny
images which don't need haveged are not forced to contain it.

Change-Id: Id30139f5b96fb0041eba8612776aaac07c7a3704
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-27 13:38:54 +01:00
Ross Burton 713a697e3d arm-bsp/linux: simplify fvp-base DTS additions
Recent changes to meta-kernel meant that we cannot be sure that do_patch
is shell or Python, so doing do_patch_append() is unwise.

Frustratingly we can't just use subdir= in the SRC_URI to drop the files
into the right place as the kernel build is unexpectedly complex.

Instead, just add the files in a patch.  In the future these will be
provided by TF-A so mark as Inappropriate and Sign-off by the developer
who added them initially.

Change-Id: I5bc3483d92c8d3abe3e7fbdde26579b602124d39
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-27 13:35:48 +01:00
Ross Burton d5e8453cb9 arm/trusted-firmware-a: fix TC0 build when host doesn't have openssl-dev
The TC0 bbappend needs the cert_create tool to be built, which hard-codes the
fact that openssl is installed in /usr.

Change-Id: I8a7ed54fe7d75697509f7873e7d73b3bf1b2b903
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-24 17:59:33 +01:00
Ross Burton 86be37565a arm/trusted-firmware-a: do verbose builds
Verbose builds are useful when looking for compile problems, and as the logs
go directly to files we can simply turn them on by default.

Change-Id: I91c6314e331a5024543138ea77a111b1d59cf371
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-23 14:39:56 +01:00
Jon Mason 4812a66527 arm-bsp: Fix a5ds dunfell support
Commit 65d336c807 updated the u-boot patches to work with newer
u-boots, but broke dunfell support by them not cleanly applying on
u-boot 2020.01.  To address this, take the original version of the
patches and put them in a location that will uniquely apply to the
dunfell version of u-boot.  Also, move the newer version of the
patches to a place that will only apply for it.

Fixes: 65d336c807 ("arm-bsp: u-boot: rebase a5ds patches")
Change-Id: I993ee097de709aa51ff28a6b00b7b4330bebd1ff
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-23 09:17:10 -04:00
Diego Sueiro e632cfd89f arm-autonomy: Extend compatibility to gatesgarth
Change-Id: I38c688f0b50bdfc8abc2119821977755dde33cad
Issue-Id: SCM-1065
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-21 09:13:37 -04:00
Jon Mason 815bd4a67a arm-bsp: u-boot error fixing and file clean-up
This commit fixes the errors while rebasing u-boot src to v2020.07.
Additional work necessary to preserve dunfell functionality.
Consolidate all of the files into a single inc file and single bbappend
file.

Change-Id: I442c843b1fafeb41ea283d2f11393522a48fc9d2
Signed-off-by: Damodar Santhapuri <damodar.santhapuri@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-21 09:13:37 -04:00
Jon Mason 77de189634 arm-bsp: FVP include cleanup
No real benefit to having the FVP inc file in a layer above the conf
files.  Move the file down one level and rename to make it more
consistent with the layout.

Change-Id: If32c0462352fbe2f3496957b1b2a169cfd7e7f66
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-20 08:58:58 -04:00
Ross Burton 76b639666e arm-toolchain/gcc-arm-none-eabi: support aarch64 hosts
This binary toolchain is also available for aarch64, so support fetching
that too.

Change-Id: I6206d8a9b4221d8461070d0cb7fff40c712c3df0
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:03:04 -04:00
Ross Burton 984e0ff52e arm-toolchain/gcc-aarch64-none-elf: support aarch64 hosts
This binary toolchain is also available for aarch64, so support fetching
that too.

Change-Id: I788fcd95c30b97f095593059e85de9a99710be05
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:59 -04:00
Ross Burton 35458c9665 arm-toolchain/arm-binary-toolchain: more QA skipping
When building nativesdk or target forms of these recipes more QA tests
are executed, which produce more warnings. As these recipes are quite
special, skip more tests:

- arch, as we ship ilp32 binaries in aarch64 packages
- dev-so, as the entire toolchain is put into a single package

Change-Id: Ib72b224749642c912278f0d5601fe04b30afc25f
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:54 -04:00
Ross Burton f78868e169 arm-toolchain/recipes-devtools: move compatible host assignments
Some of the toolchains are available in more than just x86-64, so move
the COMPATIBLE_HOST assignment out of the include and into the recipes.

Change-Id: I10977593935bc7dc50196132d43541aed585cc18
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:50 -04:00
Ross Burton b241f7b069 arm-toolchain/gcc-aarch-none-elf: don't use GFLD as license checksum
The GFDL license statement isn't a good choice for the GCC license
checksum, instead use Copying.html from the documentation.

Change-Id: I265bb0add795f3de40f49f8c31127ac9215d2566
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:44 -04:00
Ross Burton b09c368798 arm-toolchain/external-arm-toolchain: rename common include
These recipes all used a common include
external-arm-toolchain-x86host.inc, but that name isn't very meaningful:
the recipes are for x86-64, there typically are more than x86-64
binaries available, and it's not for an external toolchain but
integrating a binary toolchain.

Rename the include to arm-binary-toolchain.inc, as they're all the Arm
binary toolchain.

Change-Id: I59f5faa7373686958e226db0aa68e7880d36400e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:23 -04:00
Diego Sueiro c9b6941f3d arm-autonomy/qemu: Install qemu-system-i386 instead of qemu-xen
This patch cleans the qemu_%.bbappend and uses the already provided
qemu-system-i386 package from meta-virtualization to include only the
/usr/bin/qemu-system-i386 binary.

Change-Id: I6f1fc4db458d0b09c54013c1512398521cb349e2
Issue-Id: SCM-889
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:02:03 -04:00
Kamil Dziezyk c1be31f8c5 arm-bsp/image_types_disk_img: do not force 'ext4' FS by default
In some cases user doesn't want to create any file system on a specific partition.

Change-Id: I4596d97b95034952436cfd0a267a3f6ae4c0401d
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:01:35 -04:00
Khasim Mohammed 21c9ca3d7a arm-bsp/wic : add wic image support for N1SDP
- Update IMAGE_FSTYPES to generate a wic image
- Update MACHINE_FEATURES to include efi as supported feature on N1SDP

Change-Id: I8c75171270e3b643794af74b734825e1739999e5
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:01:18 -04:00
Jon Mason b0d3129ac1 arm-bsp: rename linux-yocto_5.4.bbappend for versatility
There is nothing unique about the 5.4 version of linux-yocto.  Rename
the file to allow for this to be applied against any version of
linux-yocto.

Change-Id: I15e0c4509b237d29969105ac5942dd8079eaeee9
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:01:15 -04:00
Jon Mason 2c8517e0c0 Limit legacy compatibility to dunfell
Layers are only being tested against dunfell and gatesgarth.  Limit the
layer compatibility to only those versions.

Change-Id: Ib4df617d8991b1c9096b8feaad9228174319bf11
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-17 09:00:44 -04:00
Ross Burton 8bd0cb6bab opencsd: upgrade to 0.14.2
Change-Id: Ic66533674e10b7c8cb71f9f49d907af1aac47e44
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 12:30:14 -04:00
Ross Burton c2916a4688 opencsd: put version into PV instead of SHA
Change-Id: I3615737fe64b26249a0405dc20843735913b3078
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 12:30:14 -04:00
Jon Mason b91737ec76 arm-bsp: Prepare to migrate linaro kernels to meta-kernel
Reorganize and clean-up the Linaro kernel recipes for migration to
meta-kernel.

Change-Id: I4291ae01b5679ee2c110b1deb38c963bde254177
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 12:28:44 -04:00
Jon Mason d43563f603 arm-bsp: Fix tc0 compile
TC0 does not compile on the latest master branch.  Clean-up the recipe
and get it compiling again.

Change-Id: I9eda0db826727ca33cac5a1f0be68024a8827900
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 12:27:16 -04:00
Jon Mason 5990cd6259 arm-bsp: Migrate a5ds to meta-kernel for stable kernels
a5ds is having issues building its stable kernel on master.  Migrate to
meta-kernel to fix the build break.  This has the benefit of meta-arm
not having a unique stable kernel recipe to maintain and support.

Also, change the name of linux-yocto-arm-platforms to be more
generic, as it doesn't accurately reflect where it is currently being
used and can be used by different kernels going forward.

Change-Id: I4e76c7f1ee4b84641279a389820940fac7130df1
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 12:25:49 -04:00
Ross Burton 20da562210 arm-bsp/trusted-firmware-a: move machine customisations to the versioned appends
By having MACHINE_TFA_REQUIRE set and required in both the wildcard
bbappend and the versioned append, the same file can get included twice
which results in a warning from bitbake:

WARNING: trusted-firmware-a_2.3.bb: Duplicate inclusion for
trusted-firmware-a-juno.inc in trusted-firmware-a_2.3.bbappend

Move the customisations from the wildcard bbappend to the specific
version of trusted-firmware-a that is used for that platform to be clear
about what platforms are supported and remove this warning.

Change-Id: Ib220aedbf94fa11d21ddc6c5f9ac2c5de5c66b7a
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 09:06:40 -04:00
Anders Dellien babe4b577d arm-bsp: Move to newer kernel for fvp-base and foundation-armv8
Change fvp-base and foundation-armv8 kernel from linux-linaro-arm-4.19
to linux-yocto_5.4.
Also add the necessary DTS files.

Change-Id: I6aa2e7706a2f20904d2f7a2bbfb928f0e53eb1eb
Signed-off-by: Anders Dellien <anders.dellien@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 09:06:40 -04:00
Ross Burton 9c35bf8cb1 arm/edk2-firmware: mark as machine-specific
As this recipe needs per-machine configuration to be set, mark the
package archicture as the machine architecture to ensure that multiple
BSPs don't conflict in the package feed.

Change-Id: I3db0be2621987290a0c9e7b689554cd5f51cb61e
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 09:06:40 -04:00
Ross Burton 46d6da1519 arm/edk2-firmware: merge the .bb/.inc files
There is no reason to split this recipe between two files, so merge them.

Change-Id: I130cfb0ef78baa3117d5683d4732bc9b86798869
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-14 09:06:40 -04:00
Ross Burton 940605ac1c arm-bsp/trusted-firmware-a: consolidate FILESEXTRAPATHS
There's no need to set FILESEXTRAPATHS to "${THISDIR}/files/n1sdp:" when
n1sdp is the name of the current MACHINE as bitbake will search for
override-named directories automatically.

Instead just add ${THISDIR}/files and let bitbake do it's thing.

Change-Id: I0f58933ff9e56ee41a8fdd55f467d263c4e1b1e7
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-08 23:05:11 -04:00
Ross Burton 4ed1f47078 arm-bsp/trusted-firmware-a: move A5 DesignStart to 2.3
0001-plat-arm-a5ds-move-dtb-to-a-new-address.patch was never applied,
and has been merged upstream so drop it.

The recipe was using the _git.bb recipe and setting the SRCREV to a
commit 300+ commits past 2.2 but not quite 2.3.  Instead, just use 2.3.

Change-Id: I76aee592e7ce3ec23268872d7f202efa945e5e59
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-08 23:05:11 -04:00
Usama Arif 02813ba953 arm-bsp/u-boot: Updated platform port for TC0
This makes the platform port independent of vexpress board
so it applies cleanly on both u-boot 2019.07 (zeus) and
2020.01 (dunfell). The SRCREV that existed in u-boot-tc0.inc
for v2020.07-rc3 has been removed and the default SRCREV is
now used.

Change-Id: Ieb65cb666a1812eeeb2e3e306aec06b5e538cf06
Signed-off-by: Usama Arif <usama.arif@arm.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
2020-07-08 15:24:15 +01:00
Jon Mason 55242ed6c6 arm-bsp: yocto-check-layer fixes
Changes necessary to get yocto-check-layer to pass

Change-Id: Ie9ea5047ab1344d14a585552277fdbd6b2bc48ab
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-07 09:09:26 -04:00
Khasim Mohammed 5892e1b8f0 arm-bsp/grub: Add grub-efi support for N1SDP
grub-mkimage is used make a bootable image of GRUB,
grub-efi dependency in added to conf file.

Change-Id: Iaf08ed8b5e221003f10fceef9edffbe22b752534
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-07 09:09:26 -04:00
Khasim Mohammed 5d5672ee9a arm-bsp/wic: add default wks file to create EFI disk image
Creates a partitioned EFI disk image that the user
can directly dd to boot media. The selected bootloader is grub-efi.

Change-Id: I1a5e8bc953274cdcc1840b27351d8e6444b2c5ab
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-07 09:09:26 -04:00
Gabor Abonyi c168b6731f arm-bsp: musca_s1: Add machine
Add Musca S1 machine. Also add it to the supported targets
for Trusted Firmware M.

Change-Id: I58cee5f71d695e364b324b7c92db920b4b1a3b69
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 15:41:05 -04:00
Gabor Abonyi 29bae2a017 arm-bsp: musca_b1: Add machine
Add Musca B1 machine. Also add it to the supported targets
for Trusted Firmware M.

Change-Id: I66dcc87df9a8dcb258de701ffbdcde264b0886c5
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 15:41:05 -04:00
Gabor Abonyi 6f613362f3 arm: trusted-firmware-m: Add recipe
Adds a recipe to pull down the trusted-firmware-m repository and the
ones it depends on. The recipe can either use gcc-arm-none-eabi-native
or armcompiler-native Clang toolchain to compile the firmware.

Change-Id: I37a4ba38982b5b1d387eccbb26bb5c79bddab0f7
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 15:41:05 -04:00
Gabor Abonyi b5998ff3d0 arm: python3-cbor: Add recipe
Adds a recipe to pull cbor pypi package for python3.
This package is required to compile Trusted Firmware M.

Change-Id: I86ef64a573e3daafb1b798800c4a0c05b292078f
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 15:41:05 -04:00
Gabor Abonyi 4f1ef2b3db arm-toolchain: armcompiler: Add Arm Clang recipe
Adds Arm Clang recipe to pull down the prebuilt Armcompiler for
compiling for Cortex-A, Cortex-R, and Cortex-M processors from ARM.
This toolchain is required to build Arm trusted-firmware-m with
different optimisations than GCC can provide for M-class processors.

This recipe is based on the gcc-arm-none-eabi-native toolchain.

Change-Id: I0110f899ec6e5b355c5b7661db1f4aa0e254e7e2
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 15:40:52 -04:00
Gabor Abonyi 91025496f7 arm-toolchain: external-arm-toolchain: Rename
Rename common external-arm-toolchain file, so it can be used by non-gcc
external toolchains too.

Change-Id: I48345dc53bc3d20f33b44fc0224b511f30107036
Signed-off-by: Gabor Abonyi <gabor.abonyi@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-02 11:15:48 -04:00
Ross Burton 0eb184e504 linux-linaro-arm_5.4: fix build of Perf with new BFD
Change-Id: Ice129ecddc17c3c24e177cf4f2d3445daeb6b455
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-01 10:39:20 -04:00
Jon Mason e654f319d7 gem5: Add README
README.md is needed or yocto-check-layer throws an error.  Add a simple
one which references the one present in the root directory.

Change-Id: I1e0bb52ff3679347ec72d2f6178e7807398d583a
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-01 10:39:20 -04:00
Jon Mason 72759e13dd gem5: add dunfell support
Add dunfell support to meta-gem5.  This allows for the master to work
with stable dunfell branches.

Change-Id: Ie43bd7ca0a145fd30d92d0c241431dfc0a307dd5
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-07-01 10:39:20 -04:00
Teo Couprie Diaz 435aea46a7 arm-bsp : Introduce TC0 platform and BSP
This patch introduces the Total Compute platform.
It adds support for the TC0 platform to the Android Common Kernel and
allows building all binaries needed to run Android on TC0.
It adds patches specific to TC0 for TF-A, SCP and U-Boot.

Change-Id: Ia83b79571c7381967c7449db031e3177b1990546
Signed-off-by: Teo Couprie Diaz <teo.coupriediaz@arm.com>
Signed-off-by: Usama Arif <usama.arif@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-30 11:23:03 -04:00
Teo Couprie Diaz 4991e2054d arm: Introduce 4.19 Android Common Kernel
This recipe targets machines based on arm64.
Change-Id: I9f9556c3ce3636a31fb3a6faf38494335be6b997
Signed-off-by: Teo Couprie Diaz <teo.coupriediaz@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-30 11:22:28 -04:00
Ross Burton 6147e82375 meta-gem5: extract the gem5 recipe and machine into a dedicate meta-gem5 layer
meta-arm-bsp no longer has to depend on meta-oe, and in the future
meta-gem5 could be moved out of meta-arm.

Change-Id: I49fa8f793b60af8c0cdb7e04b27fb53fc094cdad
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-29 08:46:17 -04:00
Khasim Mohammed 34224c961d arm-bsp/scp-firmware: Build SCP MCP firmware for N1SDP
- Add bbappend recipe to build SCP and MCP firmware
  for N1SDP.
- Use fiptool to package the binary images
- Update machine conf to add image dependency
  for SCP-firmware components

Issue-Id: PLATFORMS-3134

Change-Id: I24bb427179f2fdee0a8351257c9088d8024ca6b8
Signed-off-by: Patrik Berglund <patrik.berglund@arm.com>
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-24 13:44:23 -04:00
Khasim Mohammed 37a5fb3f58 arm/scp-firmware : allow setting scp log level to INFO or WARN
SCP code has been updated with new logging framework. The patch
is to allow setting of log level parameter to INFO or WARN.

Change-Id: I20ec19a9aa1bdb7f59c067d2344c299c057a088b
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-24 13:44:01 -04:00
Khasim Mohammed 2c08e207b6 arm/fiptool : provides fiptool for packaging
Firmware Image Package (FIP), is a packaging format used
by TF-A to package the firmware images in a single binary,
this tool is used to package the binaries in FIP format.

Change-Id: Ie4108915c5d63be340d6f53148a6dff03d6d48e7
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-24 13:43:08 -04:00
Jon Mason 831e317e8a arm-toolchain: Add Denys as co-maintainer
Per mailing list discussion, Denys is co-maintainer of the
meta-arm-toolchain layer.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-18 18:24:03 -04:00
Sumit Garg 3237858efa external-arm-toolchain: Add package specific licenses
Add license.inc file to state license of various packages provided by
pre-built Arm tool-set.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 15:00:14 -04:00
Sumit Garg 4ccff1d27a meta-arm-toolchain: Add README
Document usage details for GNU Arm toolchains which could either be built
from source or pre-built.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 15:00:14 -04:00
Sumit Garg 6eca170875 external-arm-toolchain: Align glibc packaging to OE TARGET_SYS
OE native and cross compilers (in case of SDK) uses OE TARGET_SYS to
create standard paths to search for libraries and headers during
compilation.

Currently external-arm-toolchain recipe temporarily override TARGET_SYS
with EAT_TARGET_SYS and packages libraries and headers corresponding to
EAT_TARGET_SYS which leads to failures during native and cross compilation
(in case of SDK) such as:

$ $CXX -o hello++ hello.cpp
In file included from hello.cpp:1:
/tmp/armsdk/sysroots/armv7at2hf-neon-oe-linux-gnueabi/usr/include/c++/9.2.1/iostream:38:10: fatal error: bits/c++config.h: No such file or directory
   38 | #include <bits/c++config.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.

$ $CC hello.c
real-ld: cannot find crtbeginS.o: No such file or directory

So remove temp override of TARGET_SYS and rather package libraries and
headers corresponding to OE TARGET_SYS.

This fixes changes added in commit:
https://git.linaro.org/openembedded/meta-linaro.git/commit/?id=91ea4d017bf0598e49944e76c889e66d58c066ce

Also, update location for unwind.h gcc-arm-common.inc accordingly.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 15:00:14 -04:00
Sumit Garg ceff030d5c external-arm-toolchain: Refine dev libraries/headers packaging
OE core by default package all libraies/headers installed as
"${libdir}/lib*.so", "${libdir}/*.la" and {includedir} as part of
FILES_${PN}-dev" but in case of external Arm toolchain recipe, multiple
packages are provided which needs to include specific libraries and
headers. And "${PN}-dev" is only meant to pick up remaining dev libraries
and headers that aren't picked up by other packages.

So in order to achieve above objective, re-order PACKAGES list to shift
${PN}-dev towards the end. And since some static libraries needs to be
packaged in ${PN}-dev, so we need to keep ${PN}-staticdev later in order.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 15:00:14 -04:00
Sumit Garg 0f352925ed external-arm-toolchain: Remove glibc locale dependency
Currently external Arm toolchain recipe doesn't provide packages
corresponding to OE glibc locale recipe. So explicitly remove corresponding
libc dependencies until we sort out glibc locale packaging rather than
blocking OE SDK generation which is still useful without glibc locale
packaging.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 15:00:14 -04:00
Diego Sueiro c4eb8e8958 arm-autonomy, xenguest-manager: Guest creation failure cleanup
When the guest creation process fails, we need to perform a proper
cleanup on the system, like removing configuration files and detaching
the disk previously attached to Xen.

This patch also adds an extra failure condition when the partition
assigned to guests is already formatted with a filesystem and it is not
a lvm partition.

Change-Id: I36087bf95fb8ff093160a6df406920fa5f293e09
Issue-Id: SCM-996
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 14:41:42 -04:00
Diego Sueiro f7635b43a0 arm-autonomy, xenguest: Fail if Dom0 is not properly initialized
During the xenguest initialization and when invoking the
xenguest-manager tool, abort the execution if Dom0 was not properly
initialized on top of Xen and with the proper kernel configurations.

Change-Id: I307c03e58a266a943968df1bc5ba39951912d2cb
Issue-Id: SCM-996
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 14:41:09 -04:00
Khasim Mohammed 150fdcc862 arm-bsp/edk2-firmware: fix destsuffix and PV for recursion error
Use relative paths in destsuffix as the paths are relative
to ${WORKDIR} and turn the existing PV ?= into PV =

Change-Id: Ib9367a15dde611e5b74c11eeff330d0b5a3de75d
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 14:40:30 -04:00
Khasim Mohammed 47b276bc3d arm/edk2-firmware: fix passing of linker flags
The build initially worked because host machine had
util-linux-dev installed, the build failed otherwise.
This patch will fix the passing of linker flags.

Change-Id: If2f31e8e31109b9c8fd62b32d2f80902a1dd3cfd
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 14:40:30 -04:00
Ross Burton 938b47f666 README: add git-config example for git-send-email
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 08:08:05 -04:00
Ross Burton 2e8653b6f0 README: add section on expected commit message style
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 08:08:05 -04:00
Ross Burton e510436c48 README: add Ross Burton as co-maintainer
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 08:08:05 -04:00
luca fancellu 92e8855124 arm-bsp: Move to linux-linaro-arm for fvp-base and foundation-armv8
Change fvp-base and foundation-armv8 kernel from linux-yocto_5.4
to linux-linaro-arm_4.19 because some drivers are not available.
Furthermore, for fvp-base the linaro kernel comes with the dts
file removing the needs to support it on our side.

Change-Id: I844d92f173406542c2bad8d89793513f8bc28fd1
Signed-off-by: luca fancellu <luca.fancellu@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-17 08:07:05 -04:00
Diego Sueiro ec8faf6b71 trusted-firmware-a: fiptool build using BUILD_CFLAGS and BUILD_LDFLAGS
Since the TF-A fiptool is native tool we should be using the
BUILD_CFLAGS and BUILD_LDFLAGS flags to proper build and execute it.

Change-Id: I9634604dbc42ba7da85d9b9449f1ed94ecb38df2
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-12 08:43:36 -04:00
Diego Sueiro d4dbb2ccb0 arm-bsp, gem5-arm64: Update to v20 version
This patch updates gem5-aarch64-bootloader and gem5-aarch64-native to
the release tag v20.0.0.1.

Also apply populate the right compiler and linker flags to get
gem5-aarch64-native properly building

Change-Id: Icc2203163105373cf030975c1b12f1d4f2fcb03c
Issue-Id: SCM-1014
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-11 09:04:25 -04:00
Diego Sueiro 2fafa9ab6c arm-autonomy, xenguest-network-bridge: Set bridge members per machine
By default, XENGUEST_NETWORK_BRIDGE_MEMBERS should be empty and only be
set per machine.

Change-Id: I67c56847eb785279c28757a6052f092c838babe0
Issue-Id: SCM-995
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-11 09:03:55 -04:00
Khasim Mohammed 24cbd0e702 arm-bsp: Build UEFI EDK2 firmware for N1SDP
- Add bbappend recipe to configure N1SDP specifics
- Enable UEFI EDK2 firmware build for N1SDP.
- Update machine conf to add dependency
  for EDK2 firmware components

Change-Id: I89d41c176f31bce6f1df7f3b3a7cd624b46c05e1
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-11 09:02:54 -04:00
Khasim Mohammed 4f8f8eae7f meta-arm: Add UEFI EDK2 support for Arm platforms
EDK2 Project is a modern, feature-rich, cross-platform
firmware development environment for the UEFI specifications
from www.uefi.org.

This patch adds a new recipe to fetch, configure and build
UEFI EDK2 firmware for Arm platforms.

Change-Id: Icfb157e5b68d87accfd4290f522fc529fe4e849e
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-11 09:02:21 -04:00
Rui Miguel Silva 65d336c807 arm-bsp: u-boot: rebase a5ds patches
Rebase a5ds u-boot patches so, they apply clean in top of
latest u-boot.

Change-Id: I12e596ef8460429b540777e2a8646ed64f81fbac
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-09 15:41:27 -04:00
Denys Dmytriyenko 22be9b620c gcc-x86host.inc: properly link triplet-prefixed binaries
Use the correct path for the binaries in ${datadir}, otherwise it results in a
single incorrect symlink like gcc-arm-none-eabi-*

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-08 09:08:06 -04:00
Denys Dmytriyenko b796672277 gcc-aarch64-none-elf: properly set ${S} that is different from default
Also use ${BINNAME} and ${PV} variables for automatic substitution.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-08 09:08:06 -04:00
Denys Dmytriyenko 7765d89009 external-arm-toolchain: un-break target compilation
Compiling on the target using runtime libs from external-arm-toolchain
requires libgcc.a, as libgcc_s.so explains:

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library.  */
GROUP ( libgcc_s.so.1 -lgcc )

Otherwise it results in errors like:
| /usr/lib/gcc/arm-linux-gnueabi/9.2.1/../../../../arm-linux-gnueabi/bin/ld: cannot find -lgcc
| /usr/lib/gcc/arm-linux-gnueabi/9.2.1/../../../../arm-linux-gnueabi/bin/ld: cannot find -lgcc
| collect2: error: ld returned 1 exit status

This already has been fixed before in this commit:
https://git.linaro.org/openembedded/meta-linaro.git/commit/?id=91ea4d017bf0598e49944e76c889e66d58c066ce

But then it got broken/undone here w/o due review:
https://git.linaro.org/openembedded/meta-linaro.git/commit/?id=b43d5f0ce431ba1e242504641266a63293ded5db

Even though it's a static library, we want it to be in libgcc-dev as it's
not optional, but rather required for development.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-08 09:08:06 -04:00
Denys Dmytriyenko f2069723f2 layer.conf: remove dependency on meta-python
Corresponding Python modules pycryptodome(x) and pyelftools, needed by optee,
were moved from meta-python to oe-core.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-07 09:51:19 -04:00
Khasim Mohammed f36666eb63 meta-arm: Add SCP MCP build support
SCP-firmware provides a software reference implementation for
the System Control Processor (SCP) and Manageability Control
Processor (MCP) components found in several Arm Compute
Sub-Systems.

This patch set adds support to fetch and build SCP and MCP
firmware binaries

Issue-Id: PLATFORMS-3134

Change-Id: Ic7259bb430c9e7e9711c9c8bc3283aafaacdf707
Signed-off-by: Patrik Berglund <patrik.berglund@arm.com>
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-07 09:50:19 -04:00
Khasim Mohammed b89693b16f arm-bsp: Add trusted firmware support for N1SDP
- Add new bbappend to fetch tfa ver 2.2 required for N1SDP
- Apply additional patch required for N1SDP
- Update machine conf to add image dependency for
  trusted firmware component

Issue-Id: PLATFORMS-3134
Change-Id: Ibf593c1818c9ea08acf71c6b5b80abc4aca79723
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-07 09:50:19 -04:00
Diego Sueiro ad8fdc96c0 arm-bsp, linux-linaro-arm: Don't perform SHA verification
Since the Linaro kernel-release repo doesn't have a master branch and
the branches are force pushed, we need to have the nobranch=1 setting
in the SRC_URI and have the SRCREV pointing to TAG commit SHA the will
not get modified.

Change-Id: Id1ad6b57a6f11ec4dadd3647043e6f2f48f498d4
Issue-ID: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-05 10:54:09 -04:00
Jon Mason 04eb583c4b arm-toolchain: merge binary toolchain recipes
Merge the majority of the binary toolchain recipes for building on an
x86 host into a common include file.

Also, found and fixed an error with both install commands where the name
was double nested on the copy.  For example,
/usr/share/arm-none-eabi/arm-none-eabi/ due to the way it was being
copied.

Signed-off-by: Jon Mason <jdmason@kudzu.us>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
2020-06-02 11:37:40 -04:00
Jon Mason a1918abd8d arm-bsp: a5ds: change SRC_URI to git
When building for a5ds dunfell, I am seeing the following error:
fatal: unable to access 'https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux/': server certificate verification failed. CAfile: none CRLfile: none

I do not see this error when using git instead of https to access the
tree.  So, change to that access method (and it should be faster too).

Change-Id: I8e793ece68edaaa918ed3c3a0e9b4e195775828f
Signed-off-by: Jon Mason <jon.mason@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
2020-06-02 08:43:12 -04:00
Joshua Watt 422001af4d optee-os: Refresh GCC 10 patches
The original fix for compiling with GCC 10 had to be reverted because it
failed on older versions. Upstream resolved this and re-instituted the
fix, so backport that patch series

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-01 17:37:06 -04:00
Khem Raj 8c9670108d optee-test: Fix build with musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-06-01 17:37:06 -04:00
Ralph Siemsen fdc51fe01a arm-toolchain: set CVE_VERSION to fix cve-check warnings
Yocto cve-check currently produces numerous warnings like:
    WARNING: gcc-cross-arm-arm-8.3-r2019.03 do_cve_check: gcc:
    Failed to compare arm-8.3 < 10.0 for CVE-2019-15847
In turn this means that some potential CVEs are not reported.

This occurs because PV has been prefixed with "arm-", to allow for
multiple gcc implementations.

Fix this by setting CVE_VERSION to the non-prefixed version.

Signed-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-29 10:27:14 -04:00
Denys Dmytriyenko b2f900e054 arm-toolchain: gcc-aarch64-none-elf: Add recipe
Adds a recipe to pull down the prebuilt GCC for compiling bare-metal targets
for Aarch64 processors from ARM.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-28 19:14:42 -04:00
Joshua Watt d341b6693f Add support for booting qemu with TFA and optee
Adds support for booting AArch64 Qemu machines using TF-A + optee +
u-boot. Most of the changes are applicable to any AArch64 qemu target,
and a reference machine called qemuarm64-secureboot has been added that
show how to enable support for it.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-28 10:08:47 -04:00
Joshua Watt d1255ee8fe optee-client: Add sysVinit service
Adds a sysVinit service to start tee-supplicant so that the optee-client
package can be used on distros where systemd is not used. Also does some
cleanup of the recipe including:
 1) Using @path@ tokens for replacemane in the .service file instead of
    paths
 2) Replacing tokens in the .service file after it is installed instead
    of editing the source file in ${WORKDIR}

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-28 10:08:22 -04:00
Joshua Watt 12604dc9d3 optee-{os,examples,client,test}: Build out of tree
Modifies the optee recipes to all build out of tree. This is cleaner and
helps prevent build error from stale builds when dependencies change.
Also allows the elimination of the OPTEEOUTPUTMACHINE variable in
optee-os.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-28 10:07:56 -04:00
Denys Dmytriyenko 0418996eba trusted-firmware-a: re-enable generation of packages
There is no need to inherit nopackages. Even when the output binaries are being
consumed from deploy or sysroot, and the main binary package is not meant to be
installed in the rootfs, package generation is still useful for SDK use cases
and as a way to distribute sources (e.g. src.rpm/SRPM) in Distros.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-19 11:16:44 -04:00
Joshua Watt f4206ef4d4 optee-os: Fix compile with GCC 10
Adds a patch to fix compiles with GCC 10 due to the way that libgcc
detects LSE support using __getauxval().

V2: Incorporate patch changes suggested by upstream

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-19 11:14:01 -04:00
Denys Dmytriyenko c8dbf892cc trusted-firmware-a: remove stale checksums, not used for git fetches
All SRC_URIs for trusted-firmware-a now use git and checksums are not needed.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-19 11:14:01 -04:00
Jon Mason f9ece576ad arm-toolchain: gcc-arm-none-eabi-native: Add recipe
Adds a recipe to pull down the prebuilt GCC for compiling on Cortex-R
and Cortex-M processors from ARM. This toolchain is required to build
Arm Trusted Firmware for the Rockchip rk3399 SoC, since it must compile
some firmware for the M0 coprocessor.

This was originally taken from meta-rockchip, but has been modified from
mailing list feedback.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 09:58:19 -04:00
Denys Dmytriyenko 06b648821a optee-os: replace old pycrypto with pycryptodome - a drop-in replacement
While pycryptodome is a drop-in replacement for the old pycrypto module,
pycryptodomex uses a separate namespace to not confict with pycrypto.
Unfortunately, optee-os uses both namespaces, hence both variants of
pycryptodome and pycryptodomex are needed.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 09:11:43 -04:00
Denys Dmytriyenko 726e0b9618 trusted-firmware-a: provide symlinks for canonical names
Some platforms expect canonical names, like bl31.bin, instead of bl31-<plat>.bin
Provide symlinks for those as well.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 08:45:09 -04:00
Denys Dmytriyenko 01825739a4 trusted-firmware-a: install/deploy multiple variants of the target
Installing and deploying .bin and .elf shouldn't be mutually exclusive.
There are scenarios where both can be useful - .bin for booting and .elf
for debugging.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 08:45:09 -04:00
Denys Dmytriyenko 5c1a30e532 trusted-firmware-a: add support for SPD (Secure Payload Dispatcher) services
Some platforms use Secure Payload Dispatcher - allow selecting one with TFA_SPD.

Official SPD description:
/*******************************************************************************
 * This is the Secure Payload Dispatcher (SPD). The dispatcher is meant to be a
 * plug-in component to the Secure Monitor, registered as a runtime service. The
 * SPD is expected to be a functional extension of the Secure Payload (SP) that
 * executes in Secure EL1. The Secure Monitor will delegate all SMCs targeting
 * the Trusted OS/Applications range to the dispatcher. The SPD will either
 * handle the request locally or delegate it to the Secure Payload. It is also
 * responsible for initialising and maintaining communication with the SP.
 ******************************************************************************/

Clean other EXTRA_OEMAKE to remove leading space not needed with +=

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 08:45:09 -04:00
Denys Dmytriyenko 7b9f1155e1 trusted-firmware-a: support multi-board platforms
Some platforms can have multiple board configurations, passed as TARGET_BOARD=""
that also becomes an extra directory level in the build output hierarchy.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-15 08:44:55 -04:00
Joshua Watt abb036ee56 trusted-firmware-a: Install .elf file from subdirectory
The ELF files produced are in a subdirectory named by the build target
(e.g. "bl31/bl31.elf") instead of the BUILD_PLAT directory.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-13 16:34:03 -04:00
Joshua Watt a4f15634db trusted-firmware-a: Build out of tree
Use the BUILD_BASE variable to specify an out-of-tree build. Eliminates
the need to set the TFA_BUILD_DIR.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-13 16:29:38 -04:00
Bertrand Marquis c7bd7651c4 arm-bsp: Switch to gem5 20.0 staging version
Switch gem5 to use current HEAD version of the staging 20.0 branch to
solve compilation issues related to the move to python3

Create a link named python to python3 as some of gem5 python scripts
are looking for python and are compatible with both python2 and
python3.

Change-Id: I59256a8a6783a9614f5a2d5d760fada5bd6d0337
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-12 15:42:50 -04:00
Diego Sueiro 43f90f06ba arm-bsp: n1sdp: linux-linaro-arm: Disable CONFIG_EXTRA_FIRMWARE
We don't want to build firmware blobs into the kernel binary. Also,
add linux-firmware-rtl8168 package to MACHINE_ESSENTIAL_EXTRA_RDEPENDS
to have it installed in any image by default.

Change-Id: If8a88a4ccbc6d474438a2555498989695a4b19dc
Issue-Id: SCM-954
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-12 15:42:44 -04:00
Diego Sueiro f3b1ce69f3 arm-bsp: linux-linaro-arm: Set COMPATIBLE_MACHINE to "invalid"
To keep consistency with trusted-firmware-a and optee recipes we should
use softer assignment to "invalid" for COMPATIBLE_MACHINE.

Change-Id: I57d0b220d92c4546e0539f95a54d391935f995fc
Issue-Id: SCM-954
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-12 15:42:37 -04:00
Jon Mason 8ff8beb6e8 Add recipes for TF-A versions 2.2 and 2.3
Add basic recipes for TF-A versions 2.2 and 2.3.  Also, rearrange fields
in the various TF-A recipes to make them uniform and move the
do_compile_prepend to the inc file.

Change-Id: I85e4ac7bdc44ed85449e40fd2c94d73bf3e7d9e8
Signed-off-by: Jon Mason <jon.mason@arm.com>
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
2020-05-12 15:42:20 -04:00
Kamil Dziezyk 4447316896 arm-autonomy: xenguest-mgr: Add support for compressed partition images
xenguest-manager now can create guest partition
using compressed images like *.img.gz or *.img.bz2.

Change-Id: Ifaec0b7c301b2b316ebccdd0ca85083262f2714c
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-11 15:09:02 -04:00
Diego Sueiro f5075e9cd9 arm-autonomy: Add support for N1SDP
This patch includes the following changes for n1sdp:

* Add the Xen defconfig and early printk setting;
* Setting the proper Xen device-tree boot args;
* Remove some entries in xen devicetree (PM and SMMU) to make is
compatible with XEN and extra registers settings required for PCI
quirks to communicate with SCP.

Change-Id: Ic968728115787de8d9bfcaaf883fd8573ff6c9c9
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-11 15:08:57 -04:00
Diego Sueiro 898003dbe9 arm-autonomy: Add CONFIG_MD and CONFIG_BLK_DEV_DM in xen-host.cfg
The CONFIG_MD (Multiple Devices) and CONFIG_BLK_DEV_DM (Device Mapper)
kernel configs are needed for LVM2, so add them in xen-host.cfg to be
included in the kernel configuration for DOM0.

Change-Id: Ib5f4f4d767751615ee1239e95da7a7d56cbbc2dc
Issue-Id: SCM-996
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-11 15:08:36 -04:00
Diego Sueiro 8cf7f8eb31 arm-bsp: n1sdp: Add Linux kernel device-tree support
Update both machine configuration and kernel recipe to
support Linux Kernel device-tree compilation.

Change-Id: I01fa654bd88e0d2b7a4bfcc7cb60222c120a0473
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-09 08:11:41 -04:00
Diego Sueiro 86a01f1ee4 arm-bsp: linux-linaro-arm-5.4: Fix kernel menuconfig task
When calling `bitbake virtual/kernel -c menuconfig` it fails if the
ncurses-dev package is not installed on the host machine.

This patch makes usage of the ncurses library built by yocto if it
is present.

Change-Id: I261578f2934b225956e77ca4038a2df5603cc1b1
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-09 08:11:41 -04:00
Khasim Syed Mohammed 76748af24b arm-bsp: Introduce ARM N1SDP platform
- Add support for N1SDP platform.
- Build Linux 5.4 from linaro tree for N1SDP platform.

Change-Id: I12e5169da9c2bab946eb7e49fe6cc7bbb07d182b
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-09 08:11:32 -04:00
Khasim Syed Mohammed 6e9b0b295f arm-bsp: Add linaro-arm-linux 5.4 kernel support
- Add support to fetch and build linaro-arm linux version 5.4 for N1SDP platform
- Add addtional N1SDP specific changes as patches
- Include intree default config

Change-Id: I3b4cf4b1de509beaa3862e1cad37ec2d88b7054d
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-09 08:11:22 -04:00
Diego Sueiro 6d4c3484b3 arm-autonomy: arm-autonomy-host-image-minimal: Abort on copy fail
If the guest image copy fails we need to abort the do_image execution.

Change-Id: I3785a0828e271ed27eb7f9212804b5b9b39f79ac
Issue-Id: SCM-990
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Bertrand Marquis b5381e5a7b arm-autonomy: Fix missing xen binary in deploy image
Change Xen package to be machine specific.
This is solving issues encountered when building 2 projects with the
same xen configuration but different machines.
In that case one of the project did not have a xen binary in the deploy
directory.

Change-Id: I2575d91b57455ab690eec9c51e07415673242c06
Issue-Id: SCM-815
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro fba2b7a05e arm-autonomy: arm-autonomy-host-image-minimal: Remove kernel-modules
To reduce final image size, remove the kernel-modules package from
IMAGE_INSTALL.

Change-Id: I61d7d2ea87c3007af1c8f7b4917e9692a1f9e001
Issue-Id: SCM-813
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro 21b0af0319 arm-autonomy qemu: Don't build with audio support when Xen is present
When xen is in DISTRO_FEATURES no audio support is needed. This will
helps reducing the final image size.

Change-Id: I50d83cfe007c3f30a8303dcad66abb188559713c
Issue-Id: SCM-813
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro e6029ccf12 arm-autonomy: Don't include kernels in arm-autonomy-host images
To reduce arm-autonomy-host images size we don't include the Kernel
image.

Change-Id: Ibcadf873fc71f3793b2824e5169a777ee8a0ece6
Issue-Id: SCM-813
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro 0bd69e03df arm-autonomy: qemu: Split qemu into qemu and qemu-xen packages
When xen is in DISTRO_FEATURES we split the qemu package and install
only the qemu-xen with /usr/bin/qemu-system-i386 binary in the image
to reduce its size.

Change-Id: I460e959eb87a180b1baa5a11dbbe7df100d5e6a6
Issue-Id: SCM-813
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro 09ed7fc673 arm-autonomy: Move meta-arm-bsp machines settings to BBFILES_DYNAMIC
All meta-arm-bsp machines specific settings should live at
meta-arm-autonomy/dynamic-layers/meta-arm-bsp/ and only be included if
meta-arm-bsp layer is present.

Change-Id: Ice8a301db85b5186384d602d9e3bedb909183320
Issue-Id: SCM-984
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Bertrand Marquis 2ed1b36c56 arm-autonomy: rework initramfs support in xenguest FSTYPE
Rework the initramfs support in xenguest FSTYPE to be compatible with
Dunfell and remove an error with non existing recipeinfo during build.
- remove initramfs support in FSTYPE and do_deploy function
- create a KERNEL CLASS to create a xenguest image containing the kernel
bundle with initramfs during kernel compilation (only done if FSTYPE
contain xenguest and initramfs bundle is activated)
- add kernel-xenguest to KERNEL_CLASSES when autonomy-guest
DISTRO_FEATURE is activated
- remove unused parameters from xenguest-image class

Change-Id: If163aa74a2bbbd4f22651abefe8d2ab4677e82b0
Issue-Id: SCM-990
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Diego Sueiro ad58d4ea81 arm-autonomy: firmware-image-juno: Add xen-devicetree dependency
The do_deploy task depends on xen-devicetree:do_deploy in order to
include the generated xen dtbs in the firmware image.
To avoid dependency loop between firmware-image-juno:do_install,
xen:do_deploy and xen-devicetree:do_deploy when
INITRAMFS_IMAGE_BUNDLE = "1", we need to handle the xen and
xen-devicetree binaries copying in the do_deploy task.

Also Use OVERRIDES to minimize the usage of
"@bb.utils.contains('DISTRO_FEATURES', 'xen', ..."

Change-Id: I8da476435de73445fb6d895ec418d85861b8c46c
Issue-Id: SCM-990
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:29 -04:00
Vineeth Raveendran 6ebe1db92c arm-autonomy: Move to dunfell
- make xenguest-manage rdepend on xen-tools to adapt to recipe
modifications in meta-virtualization
- add xen to IMAGE_EXTRADEPENDS to build xen binary when build
autonomy-host-image
- switch arm64-autonomy-machine to use Linux 5.4
- remove trace patch for xen as meta-virtualization is now using a xen
release which has this fixed
- rework xen bbappends to adapt to changes done in xen recipes

Change-Id: I439bde0df2c0a16f529436b65f1a96af5a2981af
Issue-Id: SCM-833
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:22:22 -04:00
Vineeth Raveendran 4338e38b8a arm-bsp: add dunfell support for fvps, juno and gem5
Make following machines compatible with dunfell:
- foundation-armv8
- fvp-base
- juno
- gem5

Major changes include moving kernel version to 5.4 and U-BOOT version
to v2020

Change-Id: Ia59ac874de4e4c4ea02c7a4f976e39a9b6996f75
Issue-Id: SCM-833
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:21:20 -04:00
Diego Sueiro 03139a9324 arm-bsp: trusted-firmware-a-fvp: Fix dependency loop
When building with INITRAMFS_IMAGE_BUNDLE set, there is a dependency
loop between trusted-firmware-a:do_install and virtual/kernel:do_deploy
since the trusted-firmware-a:do_install depends on the kernel dtb to be
passed to the fiptool to generate the fip.bin binary.

The kernel dtb is not mandatory to generate the fip.bin if we compile
the "dtbs" and "fip" targets which will include the in-tree device-tree
used for the --hw-config (HW_CONFIG property) dynamic configuration
during the cold boot.

Change-Id: I7147cc1eeecb7c4b66f198562163438b7b663eba
Issue-Id: SCM-990
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:19:27 -04:00
Bertrand Marquis 56c245133b arm-bsp: Update gem5 and switch to python3
This patch includes several fixes for gem5-aarch64
- Switch to a new version of gem5 supporting python3 and use python3 to
 build it.
 We use a version in develop branch of gem5 for now and we will have to
 switch to release 20 once it is released mid of may.
- Remove scons python2 recipes which were used before by gem5 as a
 workaround until gem5 was updated to support python3
- make gem5-aarch64-bootloader only compatible with gem5-aarch64
- remove unnecessary FILESEXTRAPATHS_prepend in gem5-aarch64-bootloader

Change-Id: Iad9af4f2e6073ef63a51c2c33a05ed3855dd8f08
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-08 10:19:23 -04:00
Denys Dmytriyenko 0ff012ecb2 external-arm-toolchain: remove unused /usr/share/info/dir
Fixes following QA issue:

WARNING: external-arm-toolchain-2019.12-r0 do_package_qa: QA Issue: The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir]

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 12:03:43 -04:00
Denys Dmytriyenko 33cc242bbc external-arm-toolchain: remove empty libexecdir
Fixes following QA issue (normally a warning, but Poky and other distros
may treat it as fatal):

ERROR: external-arm-toolchain-2019.12-r0 do_package: QA Issue: external-arm-toolchain: Files/directories were installed but not shipped in any package:
  /usr/libexec
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
external-arm-toolchain: 1 installed and not shipped files. [installed-vs-shipped]
ERROR: external-arm-toolchain-2019.12-r0 do_package: Fatal QA errors found, failing task.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 12:03:43 -04:00
Denys Dmytriyenko c10a9a2d3b gcc-arm: remove extra binary aliases when TCMODE=external-arm
When TCMODE=external-arm, TARGET_SYS!=EAT_TARGET_SYS and gcc installs extra
binary aliases, which could lead to QA errors:

ERROR: gcc-arm-9.2-r2019.12 do_package: QA Issue: gcc: Files/directories were installed but not shipped in any package:
  /usr/bin/arm-poky-linux-gnueabi-arm-none-linux-gnueabihf-g++
  /usr/bin/arm-poky-linux-gnueabi-arm-none-linux-gnueabihf-gcc
  /usr/bin/arm-poky-linux-gnueabi-arm-none-linux-gnueabihf-gcc-ar
  /usr/bin/arm-poky-linux-gnueabi-arm-none-linux-gnueabihf-gcc-ranlib
  /usr/bin/arm-poky-linux-gnueabi-arm-none-linux-gnueabihf-gcc-nm
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
gcc: 5 installed and not shipped files. [installed-vs-shipped]
ERROR: gcc-arm-9.2-r2019.12 do_package: Fatal QA errors found, failing task.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 12:03:43 -04:00
Denys Dmytriyenko 198f96ed20 gcc-arm: add re-staging of unwind.h from external-arm-toolchain
gcc-target.inc expects unwind.h to come from and be staged by libgcc.
When TCMODE="external-arm" libgcc is provided by external-arm-toolchain.bb
And while it stages the necessary unwind.h file, it ends up in slightly
different location, so re-stage it. More details are in the comments.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 12:03:43 -04:00
Diego Sueiro 13535294f6 Have meta-arm-bsp specific bbappends as BBFILES_DYNAMIC
The boot-wrapper-aarch64_%.bbappend and firmware-image-juno.bbappend
should be only considered when meta-arm-bsp layer is present.

Change-Id: Id66a989820675a281946a26b9afec6d5b3d29bca
Issue-Id: SCM-984
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:33:49 -04:00
Diego Sueiro 3fc6b1e702 firmware-image-juno: Remove unnecessary machine override
Since firmware-image-juno main recipe is only compatible with juno
MACHINE, the _juno machine override are not needed.

Change-Id: If1b880ee2b6b854f83087005f7ae89f0d77aef7d
Issue-Id: SCM-889
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:33:44 -04:00
Diego Sueiro fc1b6dc835 firmware-image-juno: Fix dependency loop
Kernel binaries copying have to be performed in the do_deploy task to
avoid dependency loop between firmware-image-juno do_install and
virtual/kernel do_deploy when INITRAMFS_IMAGE_BUNDLE is set.

Also, copy the kernel image bundled with initramfs to the firmware
image when INITRAMFS_IMAGE_BUNDLE is set.

Change-Id: I66083d294ab4eb77c643ec33cc1333000373125b
Issue-Id: SCM-987
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:33:40 -04:00
Diego Sueiro 119d84b39e xenguest-manager: Wait longer for /dev/xvdaX creation
Implement a wait block of 20s with exit condition for checking
/dev/xvdaX creation.
For example, in cases where the rootfs is mounted via NFS, a longer
time is needed until the xvda device appears in the system.

Change-Id: I44cbcf2a43aeb476eae92d5b6d2cfd683e4bdf21
Issue-Id: SCM-929
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:33:35 -04:00
Diego Sueiro 23f2f3d180 documentation: Update arm-autonomy-quickstart.md
Suggest the usage of `bitbake-layers add-layer` command to add all
dependant layers.

Change-Id: I1f40f6218b2edc5267e04723c592c16a434f2e82
Issue-Id: SCM-986
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:33:30 -04:00
Diego Sueiro d42632b6b7 optee: Use softer assignment to "invalid" for COMPATIBLE_MACHINE
To keep consistency with trusted-firmware-a recipe we should use
softer assignment to "invalid" for COMPATIBLE_MACHINE.

Change-Id: Ib05afcd62b6b2104188b90bad4d952eb055ae443
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-06 11:32:54 -04:00
Denys Dmytriyenko d68e63b965 external-arm-toolchain: drop unnecessary RDEPENDS on bash
The 2 scripts that still have /bin/bash shebang are ldd and tzselect. But
it seems upstream had fixed all bashisms in those scripts in recent years
and OE-Core versions of those scripts use /bin/sh already.

Dropping these unnecessary RDEPENDS on bash actually significantly prunes
dependency tree for simple BSP builds like u-boot, etc.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-01 10:01:11 -04:00
Denys Dmytriyenko efd0773165 external-arm-toolchain: drop unnecessary binutils-cross-${TARGET_ARCH} in PROVIDES
There's no need to directly provide binutils-cross-${TARGET_ARCH}, as the
PROVIDES list already contains virtual/${TARGET_PREFIX}binutils and correct
PREFERRED_PROVIDER is set in the corresponding tcmode-external-arm.inc file:

PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "external-arm-toolchain"

Similar to the compiler:

PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-arm-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "external-arm-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-arm-toolchain"

And similar to glibc:

PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "external-arm-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "external-arm-toolchain"

There shouldn't be any direct dependency on binutils-cross-${TARGET_ARCH}. And
if there is, it needs to be fixed to depend on virtual/${TARGET_PREFIX}binutils

During 8.x upgrade there was an attempt to clean it up:

https://git.linaro.org/openembedded/meta-linaro.git/commit/meta-linaro-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb?id=a8ce3dc47f3be9f98abc6ac98a849f918386cf9f

But unfortunately, it got re-added back w/o reasoning:

https://git.linaro.org/openembedded/meta-linaro.git/commit/?id=bb04bc8c67fd032fe04c47b2163ea5fa6b2ffa86

Also, while at it, fix indentation for glibc-mtrace in PROVIDES list.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-01 10:00:08 -04:00
Denys Dmytriyenko 8aaba503d3 tcmode-external-arm: drop unnecessary CPPFLAGS and LDFLAGS adjustments
These were there from the very beginning and they were used as crutches to
prop up the build by pointing directly to the external toolchain location,
in case early versions of external-arm-toolchain missed staging/packaging
something from there.

First of all, it is unnecessary to adjust CPPFLAGS and LDFLAGS in this way,
as external-arm-toolchain is supposed to stage everything needed from the
toolchain in internal sysroot.

And second, these settings can be harmful and conflict with component's own
CPPFLAGS/LDFLAGS. For example, OpenCV 4.1 fails to link internal libraries
because of incorrect -Wl,-rpath-link passed down the build.

After dropping these, I was able to verify that everything still builds,
including BSP, Wayland/Weston, Qt5, gstreamer, OpenCV, etc for Aarch64 and
Armv7a platforms.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-01 09:59:25 -04:00
Diego Sueiro d9fbf9da4e meta-arm-bsp: Remove fvp-base and foundation-armv8 simulation tools
Since the Fixed Virtual Platforms simulation tools are not publicly
available, remove them from meta-arm-bsp layer.

Change-Id: Ifece50bfd494241499540030b6ac5968abd8ad1f
Issue-Id: SCM-951
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-05-01 09:34:23 -04:00
Bertrand Marquis 987cb439ea arm-autonomy: Fix xenguest volume check on boot
Fix xenguest-manager to only check the device configured to be used for
LVM volumes for guests when a guest is created which needs it.

This prevent the manager doing errors during boot when the volume does
not exist even if it is not used by any guest.

Change-Id: Ibc285887836ea40595634412dcfa7ee9039dc220
Issue-Id: SCM-956
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:38:36 -04:00
Bertrand Marquis 9b9ed8bbbb arm-autonomy: Fix circle dependency in xen-dtb
Solve circle dependency in xen-devicetree when initramfs is activated as
compile depends on kernel:do_deploy and xen-devicetree is needed to
create the arm-autonomy-host-image-minimal.
Move all actions in do_deploy so that only do_deploy depends on the
kernel do_deploy.

Change-Id: I011df8f225550afa71b18a88e0ebe01debca0bed
Issue-Id: SCM-949
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:38:24 -04:00
Diego Sueiro e921026326 arm-autonomy: Append firmware-image-juno recipe to collect Xen binaries
For juno, the Xen binary and dtb are now collected by the
firmware-image-juno recipe instead of the trusted-firmware-a.

Change-Id: Iaf4e4821e80c09910771c57ba3dbd481626187d5
Issue-Id: SCM-754
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-By: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:29:24 -04:00
Diego Sueiro d7b179b934 meta-arm-bsp: Introduce firmware-image-juno recipe
Add the firmware-image-juno recipe to produce the Firmware Image for
Juno to be copied to the Configuration microSD card instead of the
trusted-firmware-a recipe.

Include the firmware-image-juno recipe in the EXTRA_IMAGEDEPENDS
only for juno MACHINE.

Change-Id: I316c70f22d57a3d85cc40386f1961ecd23edc865
Issue-Id: SCM-754 SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-By: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:29:19 -04:00
Diego Sueiro 4b84b124cc meta-arm-bsp: Introduce the scp-firmware-juno recipe
The scp-firmware-juno recipe is used to fetch the System Control
Processor (SCP) firmware in binary form for Juno.

Also update the trusted-firmware-a for juno to make usage of
the the SCP firmware binary from scp-firmware-juno recipe.

Change-Id: I2a7e517e06c3bbac6b0ffa3f28e0848d8f30589f
Issue-Id: SCM-754 SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-By: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:29:14 -04:00
Diego Sueiro bd65efd542 trusted-firmware-a: Deliver binaries artefacts to sysroot/firmware
Make usage of the do_install task to deliver binaries artefacts to
the `sysroot/firmware` path, making it easier for other recipes that
depends on it to make usage of those binaries instead of copying them
from the DEPLOY_DIR_IMAGE.

This recipe still deploys its artefacts to DEPLOY_DIR_IMAGE.

Change-Id: I97b97f90b23746557e981f8de10159c5f475becd
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-By: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:29:08 -04:00
Diego Sueiro 5368b21fea meta-arm-bsp:trusted-firmware-a: Remove custom do_clean task
The custom do_clean task is not necessary and is misbehaving by not
removing the output files from other tasks.

Change-Id: I5ff837dece88030f24a0dd20c75a738b7b277d61
Issue-Id: SCM-888
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-By: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-23 14:28:19 -04:00
Denys Dmytriyenko 74b76e3281 external-arm-toolchain: split and strip packages normally
In the past, some Linaro toolchain versions were shipped with already stripped
libraries, causing QA issues, hence splitting and stripping was disabled.

This is no longer the case and it is better to split and strip binaries and
libraries normally, generating smaller images, while retaining debug symbols
in corresponding -dbg packages.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-13 17:27:18 -04:00
Denys Dmytriyenko b1f540ffe2 optee-os: unbreak parsing when arch is not armv7a nor aarch64
When meta-arm is in the layer stack, parsing will break for unsupported archs,
like armv5, armv6, etc. Unbreak parsing by defining null default OPTEE_ARCH.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-13 17:27:18 -04:00
Khem Raj 327cd94f49 optee-os: Mark recipes dormant by default
All arm SOCs may not support optee and there are non-arm machines too
this makes this recipe fit into mutli-BSP environments, platforms which
support optee should be specifically called out via COMPATIBLE_MACHINE,
for general case it remains 'null'

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-13 17:27:18 -04:00
Denys Dmytriyenko c5643e7cff layer.conf: meta-arm-toolchain should depend on core layer
While core layer may be implied, it's still nice to depend on it explicitly
for building gcc and other toolchain components in this layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-13 17:27:18 -04:00
Sumit Garg ea741c16cf meta-arm-toolchain: use GCC 9.2 source tar ball insted of svn
GCC 9.2 source fetch from svn is quite slow as compared to source tar
ball. So switch to fetch GCC 9.2 source tar ball instead.

Reported-by: Riku Voipio <riku.voipio@linaro.org>
Suggested-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-10 10:21:29 -04:00
Diego Sueiro 7857cb4b12 arm-autonomy:init-ifupdown: Fix interfaces.d sub-dir scan
Add a missing line breake ("\") to do_install_append to effectually
append the "/etc/network/interfaces.d/" line into
"/etc/network/interfaces" file.

Change-Id: I1cf4e134639d1f63ada7d068cc2822d1ac4218ea
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:57:15 -04:00
Diego Sueiro 132db950a0 arm-autonomy: Add Xen specifics from meta-arm-bsp
Variables, settings and operations specific to Xen should be located
at meta-arm-autonomy.

Change-Id: Ida86119e9d196ce8a498b53890b16fefaa3d8d8b
Issue-Id: SCM-769
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:55:21 -04:00
Diego Sueiro 85eeeea87a meta-arm-bsp: Remove Xen specifics
Remove all variables, settings and operations specific to Xen from
meta-arm-bsp.

These implementations will be added later in another separate layer.

Change-Id: I971a6898f985f5ec7264da5ad5e4b6436067e3dd
Issue-Id: SCM-769
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:55:14 -04:00
Denys Dmytriyenko ed0e683ee5 optee-examples: cleanup
* Rename with _git suffix to match other optee recipes
* Set PV
* Add DESCRIPTION
* Depend on Python3 version of PyCryptodomex instead of Python2 version of PyCrypto

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:44 -04:00
Denys Dmytriyenko ae6533336f optee-test: upgrade 3.7.0 -> 3.8.0, cleanup
* Drop previously backported patch for Python3 support
* Add DESCRIPTION
* Use common HOMEPAGE
* Depend on PyCryptodomex instead of old PyCrypto

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:38 -04:00
Denys Dmytriyenko 6d0eefa084 optee-client: upgrade 3.7.0 -> 3.8.0, cleanup
* Rename with _git suffix to match other optee recipes
* Add DESCRIPTION
* Use common HOMEPAGE
* Use install command for header files instead of cp -a

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:32 -04:00
Denys Dmytriyenko 43bc224685 optee-os: upgrade 3.7.0 -> 3.8.0, cleanup
* Cleanup the recipe - add HOMEPAGE, update DESCRIPTION, indentation
* Depend on PyCryptodomex, but old PyCrypto is still required
* Ensure full support for arm32 platforms - build corresponding core and TA

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:26 -04:00
Denys Dmytriyenko 4f2443469f layer.conf: add meta-python to LAYERDEPENDS for optee components
optee components use pycrypto, pycryptodomex and pyelftools from meta-python layer

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:08 -04:00
Denys Dmytriyenko b1393356c0 layer.conf: update LAYERSERIES_COMPAT for dunfell
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-08 09:32:05 -04:00
Bertrand Marquis ad6a675817 arm-autonomy: Update quick start guide
Add more documentation to the quick start guide:
- to include guests images in host image
- to boot the host image
- to adapt the layer to new boards

Change-Id: I07ff13190daf404476d28803f43f330fc190cddc
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Reviewed-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis b3e13f492a arm-autonomy: Add external guests to host image
Add ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS variable to let user specifiy
a list of guests to be included directly in the host image.
The variable can be set to a space separated list of full path to
xenguest image files or SRC_URI compatible urls. Each entry can also
have a ';guestname=NAME' argument to set the destination name of the
guest added.

Change-Id: I4fc5e53df979b792ad930066a068ad1d4512c991
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis df189a806b arm-autonomy: Create xenguest network bridge
Add a xenguest-network-bridge script to create a network bridge with the
host interfaces.
Add a xenguest init script to create a xen network interface connected
to the bridge
Add a network interfaces configuration file to have dhcp configuration
on the network bridge
Add xenguest-network-bridge to the default host image
Add XENGUEST_IMAGE_NETWORK_BRIDGE parameter to xenguest-image to let
user setup if a guest should be or not connected to the bridge

Change-Id: Id15fde234386376e89c2562e1ffa935c51affa5b
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 16e4f7450e arm-autonomy: Add subdirectory config to ifupdown
Modify default interfaces file for network to scan sub-directory
interfaces.d to let other recipes contribute to the network
configuration file

Change-Id: I72cf7fd8ccb51e3cdfdafc368adb4574393fdc08
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 56196afc91 arm-autonomy: Create xenguest-nodisk-image recipe
Create a xenguest-nodisk-image recipe to be used when wanting to create
a xenguest image without packing in it a root filesystem generated by
Yocto.
This recipe can be used to use aio root filesystem from an external tar
file and just compile and take the linux kernel coming from Yocto.

To achieve this, the variable XENGUEST_IMAGE_SRC_URI_DISK_FILES should
be set to a SRC_URI compatible URL to the tar file and then call bitbake
xenguest-nodisk-image.

Change-Id: I1a8d80b89930f3bb6bcce40a55b4dfce9b5331ef
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 77c6d12f59 arm-autonomy: Create xenguest-image-extra class
Add class xenguest-image-extra to be used by recipes which wants to add
elements to the generated xenguest image.
The recipes using this call must inherit the deploy class and declare a
deploy task that will be extended by the class. The variables
XENGUEST_EXTRA_* documented in the class can be used to define what
should be used to extend the xenguest image.

Change-Id: I8a7682a7a7ca57b424ea815145408ccb8e4348ca
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 926ce4ffcd arm-autonomy: Create xenguest image type
Create an image type xenguest to create a xenguest image as part of a
Yocto image (add FSTYPE xenguest).

The image type is using xenguest-base-image as a producer for the
xenguest image directory, adds kernel defined by
XENGUEST_IMAGE_KERNEL to it, adds rootfs if listed in
XENGUEST_IMAGE_DISK_PARTITIONS and pack the final image with file
extension .xenguest with other types of images.

If initramfs is configured, a xenguest image containing the kernel with
initramfs is produced.

The xenguest image type is added to IMAGE_FSTYPES and IMAGE_CLASSES if
arm-autonomy-guest is set in DISTRO_FEATURES.

Change-Id: Ibae8a50d41375839492e43a2e28d9472dc71b4a1
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 5cd294263b arm-autonomy: Create xenguest-base-image recipe
Add xenguest-base-image recipe to create an initial xenguest image
directory in deploy.
This is using the xenguest-image class.
The recipe is also introducing several parameters named
XENGUEST_IMAGE_SRC_URI_* to allow the user to specify files or elements
to be added to the xenguest image.
Those parameters are documented inside the recipe.

Change-Id: I806a2fa07fb9593c366d88e2f4ee8b649cbcf8ea
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 4c76616c9c arm-autonomy: Create xenguest-image class
Create xenguest-image class to be used by recipes and other classes to
manipulate xenguest images.
The recipe is defining some variables to configure default parameters of
xenguest image (memory size, number of vcpus, command line, etc.). Those
parameters all have the prefix XENGUEST_IMAGE_ and are documented at the
beginning of the class.

The class also provide some helper functions:
- xenguest_image_create to create a xenguest image (using global
parameters) in deploy as xenguest image directory
- xenguest_image_clone to clone current xenguest image from deploy to be
able to extend it and pack it in a xenguest image file
- xenguest_image_rootfs_file function to allow other recipes to detect
if the rootfs should or not be embedded in the xenguest image

Change-Id: I4ba54aa2c41e72964c152f673b71fe32f30b4aca
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 3ebc163110 arm-autonomy: Create xenguest-manager
Add xenguest-manager to handle xenguest image based guests:
- create guest (use LVM to create disks for guests)
- start/stop guests
- provide init script to have guest auto started on boot
- add documentation

Change-Id: I5319ecb77f3aa9f8c1aff4891c05973288156f11
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 37505ea4fc arm-autonomy: Create xenguest-mkimage
Create a xenguest-mkimage tool to create Xen guest images.
Add documentation to explain what is a xenguest-image and how to use
xenguest-mkimage.

Change-Id: Id87240a4dfac2723f1dcceb8bfe969a7633ef261
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis bca1918461 arm-autonomy: Create xen-devicetree recipe
Create a xen-devicetree recipe to add entries required to boot Xen and a
Dom0 inside a DTB.
The recipe is introducing XEN_DEVICETREE_* parameters to define the xen
command line, the dom0 command line, the dom0 memory size, the dom0
kernel load address and size.
The recipe can also be extended using bbappend to adapt the device tree
and the parameters.
Adaptation are provided to support Juno, fvp-base and foundation-armv8
boards from meta-arm-bsp.
Add xen-devicetree as EXTRA_IMAGEDEPENDS to
arm-autonomy-host-image-minimal

Change-Id: Ibcfbd02c2377a9abcbd20caa47ea833b5308fbac
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 12c70f287f arm-autonomy: Create quick start documentation
Add a quick start documentation to help user to start using the layer.

Change-Id: I3aea950d2dfdcae41bbdb8f3df4f29196048338b
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 06bbe868de arm-autonomy: Create arm64-autonomy-guest machine
Create a minimalistic BSP to be used as an arm-autonomy-guest on ARM64.
The BSP is enabling ARM64 and SMP in the kernel configuration and is
enabling the arm-autonomy-guest in DISTRO_FEATURES.
Rework README.md file.

Change-Id: I7ef0176a3426748c4b66cdec5801aa34229187ba
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 23b3db93c3 arm-autonomy: Create arm-autonomy-guest feature
Introduce DISTRO_FEATURE arm-autonomy-guest which is:
- enabling ipv4 in distro features
- enabling xen frontend driver in the linux kernel using a kernel
feature
- enabling console over hvc0

Change-Id: Idd9a708799b35e483dbba22279ce677d9674ef09
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 882753f179 arm-autonomy: Create arm-autonomy-host image
Create minimal image suitable for an arm-autonomy-host containing:
- the boot packagegroup
- the ssh server packagegroup
- xen base tools
- qemu (required to start xen guests)

Change-Id: If864fc6b768cbe4ca19bfe24753c008146b7550c
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis 780adc19c3 arm-autonomy: Create arm-autonomy-host feature
Create a new distribution feature to enable functionalities for autonomy
host systems:
- enable xen and ipv4 in distribution features
- enable xen backend drivers in Linux kernel using a kmeta feature

For the feature to work properly, create a class inherited when the
layer is included to enable required parameters

Change-Id: Ia0cdaa2b69bc030515ea16d67c47fec6b1ea0897
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:32 -04:00
Bertrand Marquis c1a093a4d4 arm-autonomy: Create meta-arm-autonomy layer
Create a meta-arm-autonomy layer in meta-arm.
Add layer configuration file and Readme.

Change-Id: Idf3411edc21f3d13fdc7146fcf34700d2aab1c41
Issue-Id: SCM-767
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-04-07 23:32:23 -04:00
Jon Mason 3e1546ac57 meta-arm-bsp: add layer dependencies
meta-arm-bsp has dependencies on other layers, which are not being
represented in the layers.conf file.  This causes build breaks when
using tools like `bitbake-layers layerindex-fetch`, as it will not fetch
the depencies properly.  Currently, the dependencies on other layers are:
* core => u-boot, linux, etc
* openembedded-layer (meta-oe) => haveged
* meta-arm => trusted-firmware-a

Change-Id: Icafc2f1c55a6138172706bb4b99e9dc59904cad4
Signed-off-by: Jon Mason <jon.mason@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
2020-03-23 15:44:18 -04:00
Jon Mason f08f9b590c meta-arm-bsp: a5ds: Remove WIC references
The current WIC references in the A5DS config file are causing a build
break, due to not being defined.  These WIC files should be revisited
once the IOTA distro is present.

Change-Id: Ied2cd6f768625d18150ed60bd5fe317e06c7f48a
Signed-off-by: Jon Mason <jon.mason@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
2020-03-23 15:42:48 -04:00
Leo Yan 46b2d238ca OpenCSD: Support for Arm CoreSight decode lib
This patch is to add recipe for OpenCSD, which is an open source
CoreSight trace decode library and utility.

Also create a new folder recipes-devtools under meta-arm to place
this recipe.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-19 16:59:27 -04:00
Daniel D?az 3108c6debc conf/machine: Make preferred virtual/kernel overridable
A user of the BSP layer may decide to use the machine
configuration but a different kernel.

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-19 16:59:04 -04:00
Rahul Singh 29d57f0ac1 foundation: disable Scalable Vector Extension (SVE)
When foundation platform is booted with SVE enabled in linux
kernel and with Xen hypervisor, linux kernel is stopped by a
trap catched by Xen during early boot as Xen is configuring
the coprocessor to trap access to SVE to EL2.Disabling the SVE
in foundation to boot the guest and host.

Change-Id: I862540a46686f1fb5343a3143da61db6073bb1d3
Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-19 16:23:23 -04:00
Rahul Singh f63763443d Use xen dtb if xen image is present
Use xen dtb if xen image is present for foundation
and fvp pltaform.

Change-Id: I8ee0c5f59ea731202ca97c2cdef315cc5e6665e6
Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-19 16:22:23 -04:00
Diego Sueiro 42541f9f39 meta-arm-bsp:linux-linaro-arm: Fix kernel menuconfig task
When calling `bitbake virtual/kernel -c menuconfig` it fails if the
ncurses-dev package is not installed on the host machine.

This patch makes usage of the ncurses library built by yocto if it
is present.

Change-Id: I6a8c4ca6a7da07ac834b29a2d23e83e6c153efb3
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-18 22:05:25 -04:00
Rui Silva 00e87b1894 arm-bsp: add support to cortex-a5 designstart
Add tf-a recipes, u-boot, machine configuration, and documentation to
support Arm Cortex-A5 Designstart.

The output of this build is compatible to run on the FVP and
the FPGA implementation of the package.

For more information see:
https://community.arm.com/developer/ip-products/processors/\
designstart/b/blog/posts/\
pre-silicon-software-development-with-arm-models-for-cortex-a5-designstart

Change-Id: Ie2715ad1871975cb7620d7a195c8dd74144629da
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-17 10:27:01 -04:00
Rui Silva 89ac0f6602 arm-bsp: u-boot: move machine patches
Move Juno patches to machine specific directory. This will allow to
add others machines related patches later on.

Change-Id: I71c327ca4866fdb0205eeac0f40475e691caf4cc
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-17 10:26:56 -04:00
Rui Silva 9e1b4e045b arm-bsp: add upstream kernel inc and v5.3 recipe
Add support to build using the upstream (Linus tree) and as first user
add recipe for v5.3, which will be later.

Change-Id: I0f30a45002adca7c0b95a0421e0291a6852295eb
Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-17 10:26:31 -04:00
Patrik Berglund 5569afc1df TF-A: Add git development version
Change-Id: I7f734d2f89ad8da6eae55403691806b9d9106f15
Signed-off-by: Patrik Berglund <patrik.berglund@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-08 22:54:14 -04:00
Jon Mason b15ad02130 Remove meta-arm-iota
Feedback received that it is not acceptable to have a distro layer
inside (https://lists.yoctoproject.org/g/meta-arm/message/6).  Removing
from meta-arm and will create a separate git repository once that code
is ready.

Change-Id: I74d1083341d90caa038c1bd8c1d53aa565d28460
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-08 22:54:08 -04:00
Jon Mason ae19998d27 Fix MACHINE setting in start script
The current MACHINE setting could be different than when bitbake was
originally run, thus causing an error when the start scripts are run.
Set the MACHINE in each bitbake command call to get around this.

Change-Id: I778b58d751ea0ddbcac6d73f347e6861edcf1ecf
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-03-08 22:53:59 -04:00
Peter Griffin 11233ba158 optee-test_git.bb: add optee-test recipe & patches
This has moved from meta-linaro to meta-arm as this
is the new place for general recipes for Arm arch
and has a mailing list for external contributors.

python2 is now EOL. This patch updates to python3
but is a backport from v3.8.0 release.

Change-Id: Ib778b8dd9c605e1fbb69627f5e640c1683c3176b
Tested-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
2020-02-04 07:18:14 -05:00
Peter Griffin 72848d26e2 optee-examples.bb: add recipe for optee examples
This has moved from meta-linaro to meta-arm as this
is the new place for general recipes for Arm arch
and has a mailing list for external contributors.

Change-Id: I75de7398e9247c8a329f50292f912b7787ead372
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
2020-02-04 07:18:14 -05:00
Peter Griffin 94c5b5460d optee-os_git.bb: add optee-os recipe and patches
This has moved from meta-linaro to meta-arm as this
is the new place for general recipes for Arm arch
and has a mailing list for external contributors.

Change-Id: Id43f498e35350eb62a718e64011c8b2f8cd85fdd
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
2020-02-04 07:18:14 -05:00
Peter Griffin 0bce62510e optee-client.bb: add optee client recipe and patches
This has moved from meta-linaro to meta-arm as this
is the new place for general recipes for Arm arch
and has a mailing list for external contributors.

Change-Id: I5550620801d1d86217abb84f52fcd1e9a5873b08
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
2020-02-04 07:18:14 -05:00
Bertrand Marquis 8e5b91b42e Optimize execution on FVP and Foundation platform
Add an extra partition to the disk image generated for FVP and
Foundation platform (to be used for user data or extra usage). The
partition is created on the hard drive but is not formated.
Speed up running on FVP and Foundation by optimizing model parameters:
- disable options that are already set by default
- disable cache modelling on FVP
- disable secure memory
- disable real time on Foundation (prevents timeout as execution is a
lot slower then on a real system)

Change-Id: I20d613bd8b0f4cb7df87c294d45b9f718f6a8ed3
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2020-02-04 07:18:14 -05:00
Vineeth Raveendran 313544372c Fix to improve boot time on Emulators
Use haveged instead of rngd (That gets added when adding ssh) since rngd
init is taking ~7 mins during boot time

Change-Id: I038c42b8a7c025959248d78940483322421ad5ef
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
2020-02-04 07:18:14 -05:00
Sumit Garg c0a59f3d94 Import ARM GNU-A toolset recipes from meta-linaro
Add a new meta-arm-toolchain layer to hold ARM GNU-A toolset recipes
imported from meta-linaro tree, branch: master and commit ID:
504ca3b217c9602b10eda0ec8a9f1055b59e482f.

Change-Id: I5a2907874da2869ab94d7d48e0cf4a1bfe241041
Tested-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2020-01-27 16:44:36 -05:00
Bertrand Marquis 46b8667ac6 Remove DISTRO_FEATURES from juno.conf
Do not try to add distro features from juno machine definition.
Modify juno documentation to mention usbhost and usbgadget in case
someone use a distribution not activating them by default.

Change-Id: I7fc44c9921ce3fdbf069fd5354f37bb2ec38ac53
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2020-01-24 21:38:41 +00:00
Vineeth Raveendran c3b26ed67c Use Linaro kernel for Juno Yocto BSP
In order to have SCMi or HDMI support, the Juno BSP must use
the Linaro kernel instead of the standard Yocto one.

Change-Id: Ib53cb81a074439e9a4018bf356d749c7fd0a5d5a
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
2020-01-15 10:26:46 +00:00
Jon Mason 6ee3651287 Fix bitbake license warnings
The following warnings are seen when building fvp-base
WARNING: fvp-base-native-r11p7-30rel0-r0 do_populate_lic: fvp-base-native: No generic license file exists for: GPL in any provider
WARNING: fvp-base-native-r11p7-30rel0-r0 do_populate_lic: fvp-base-native: No generic license file exists for: Apache in any provider
Correct the license names to the expected strings resolves the issue

Change-Id: Ia4962736840de8b4a02d0c9d59b7c14c9999997c
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-01-07 20:31:13 -05:00
Jon Mason bd8bc290fd Remove meta-arm-integration
Remove meta-arm-integration, as it is not currently being used.  Also,
remove the reference in the README.md.  These can be added bach when
they are in use again.

Change-Id: If8535d6d9a0a307a42b24e8f42e0eb7847e047c4
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-01-07 20:07:52 -05:00
Jon Mason a3a41fc092 Move TF-A recipes to meta-arm directory
The TF-A recipes should only be in meta-arm-integration after we have
submitted them for inclusion in Yocto git tree.  Move them to the proper
location until this occurs.

Change-Id: Ia2fa5c5a377392aa45b801bd1f2ae4ca0f056c34
Signed-off-by: Jon Mason <jon.mason@arm.com>
2020-01-07 20:04:59 -05:00
Vineeth Raveendran aab12c535e Use += where ever possible instead of append
Exceptions will be cases involving overrides, machine specific
varible expansion and cases where variable modification needed to be
done after all += operations.

Change-Id: I7c76a77949d0a012238d488d5a75c489c54abf68
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
2019-12-13 16:28:49 +00:00
Bertrand Marquis c601acec48 Add support for Gem5 for arm64
Add Yocto support for Gem5:
- add kernel configuration
- add recipes to build an image using boot-wrapper-aarch64
- add recipes to build Gem5 native to run the produced image
- add script to start image using gem5
- add recipe to create a dtb using gem5
- add recipe to build an image using gem5 boot wrapper
- add dts to linux kernel for gem5 for arm64
- add scons for python2 as this is required to build gem5 (until gem5
will support python3)
- add xen patch to limit number of interrupts if hardware is claiming to
have to more interrupts then the number supported by xen

When an image has been built it can be directly started using gem5 using
this command (console is available using telnet localhost 3456):
./tmp/deploy/tools/start-gem5.sh

Change-Id: Iec5ef735fc22643685e29ffbdaf63a55b1111c60
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-13 16:26:49 +00:00
Bertrand Marquis 4ff58c5f89 Add support for arm Juno Development Board
Add Yocto support for Juno development board:
- add machine definition
- add kernel configuration
- add u-boot patch to get the environment from a file in flash
- add trusted firmware extension to produce a firmware image
- add ifupdown interfaces to start eth0 and eth1 on startup

Change-Id: I5046166cf1cc9e80a57815ef6bfb0cbb263a704e
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-10 15:38:44 +00:00
Bertrand Marquis 3ae02d723f Add support for arm FVP Base simulator
Add recipes and configuration files to add Yocto support
for FVP Base simulator from arm.
The following components are supported:
- trusted-firmware-a
- linux kernel (with specific kernel configuration and dts)
- xen (with meta-virtualization layer)
- unpacking and starting the generated image directly in Foundation
simulator (package must be download from www.arm.com website and put in
the directory downloads/licensed/silver.arm.com).

After building, the following command can be used to start a generated
image in fvp:
./tmp/deploy/tools/start-fvp-base.sh

Change-Id: I1759aecf32e84e25e813d7b0305f49616d4b47ef
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-10 15:38:44 +00:00
Bertrand Marquis ad73752f4b Add support for arm Foundation ARMv8 FVP simulator
Add recipes and configuration files to add Yocto support
for Foundation armv8 simulator from arm.
The following components are supported:
- trusted-firmware-a
- linux kernel (with specific kernel configuration)
- xen (with meta-virtualization layer)
- unpacking and starting the generated image directly in Foundation
simulator (package must be download from www.arm.com website and put in
the directory downloads/licensed/silver.arm.com).

After building, the following command can be used to start a generated
image in foundation:
./tmp/deploy/tools/start-foundation-armv8.sh

Change-Id: Iade343c38f0799ee8523434d555cb3ca42068a86
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-10 15:38:44 +00:00
Bertrand Marquis d8dd9ad0ad TF-A: Download mbedTLS if needed, set build dir
Fix TF-A recipe to only download mbedTLS when it is activated.
Allow user to modify TFA_BUILD_DIR and set BUILD_PLAT accordingly in
make arguments to properly set the build directory.

Change-Id: Ib53b245d4d3b2d62e41f0ef238ad03dc45bab056
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-09 14:08:28 +00:00
Jon Mason 6a7919518f Add layer.conf to all the sub-meta-layers
Also, removed empty README.md files (which were place holders for the
directories).

Change-Id: I1c1db95158f257015b5eb9f4a6f05219df489b4a
Signed-off-by: Jon Mason <jon.mason@arm.com>
2019-12-05 15:35:53 -05:00
Jon Mason 893d3305c0 README.md clean-up
Add a little more description for what belongs in meta-arm/meta-arm (per
feedback from Richard Purdie), and modify the max width to be 80
characters to improve readability.

Change-Id: I8f7b0598e3336132c2594c92cf3400dd5e216baf
Signed-off-by: Jon Mason <jon.mason@arm.com>
2019-12-05 15:35:53 -05:00
Bertrand Marquis c7c809e465 Create meta-arm-bsp layer
Create layer definition file for meta-arm-bsp sub-layer.

Change-Id: I305da32bf389b09750a721349fa0796c0b33b0ea
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-12-05 20:33:32 +00:00
Vineeth Raveendran ce6fa2ec19 Move to Zeus release of Yocto
Change-Id: Ic05d950971a5b161df1fafdcf6d3c01d9b3d5fb7
Signed-off-by: Vineeth Raveendran <vineeth.raveendran@arm.com>
2019-12-05 20:32:58 +00:00
Bertrand Marquis 0a5ba9885d Add a Trusted Firmware A recipe
Add a generic Trusted Firmware A recipe using TF-A version 2.1

Change-Id: I873509970bd44c6cfdaa0456516197a4eebf6ebd
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-11-15 11:19:35 -05:00
Bertrand Marquis 204d8e4a9d Create the meta-arm-integration layer
Add basic layer configuration file

Change-Id: I11b63d0bc74a33272feffeb73e6b0c6d717a259a
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
2019-11-15 11:19:35 -05:00
Filipe Rinaldi 793a8834f9 readme: Keep layers in alphabetical order
Signed-off-by: Filipe Rinaldi <filipe.rinaldi@arm.com>
2019-11-15 11:19:35 -05:00
Jon Mason 62028f103e Create skeleton for meta-arm layer
Add README and License Files in the root directory describing the layers
and process for interacting with the meta-arm layer.  Create the
directories for future layers (and add empty README files to force the
directories to be created by git).

Change-Id: I4d70759bf90b1c964e6d9040d145737b2f441205
Signed-off-by: Jon Mason <jon.mason@arm.com>
2019-11-15 11:19:35 -05:00
605 changed files with 43878 additions and 694 deletions
+12 -12
View File
@@ -1,17 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+50
View File
@@ -0,0 +1,50 @@
Introduction
------------
This repository contains Arm layers for OpenEmbedded
meta-arm:
This layer provides support for general recipes for the Arm
architecture. Anything that's not needed explicitly for BSPs, the IOTA
distribution, or destined to be upstreamed belongs here.
meta-arm-bsp:
This layer provides support for Arm reference platforms
meta-arm-iota:
This layer provides support for Arm's IOTA Linux Distribution
meta-arm-toolchain:
This layer provides support for Arm's GNU-A toolset releases
meta-arm-autonomy:
This layer provides a reference stack for autonomous systems.
Contributing
------------
Currently, we only accept patches from the meta-arm mailing list. For general
information on how to submit a patch, please read
https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
E-mail meta-arm@lists.yoctoproject.org with patches created using this process. You can configure git-send-email to automatically use this address for the meta-arm repository with the following git command:
$ git config --local --add sendemail.to meta-arm@lists.yoctoproject.org
Commits and patches added should follow the OpenEmbedded patch guidelines:
https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
The component being changed in the shortlog should be prefixed with the layer name (without the meta- prefix), for example:
arm-bsp/trusted-firmware-a: decrease frobbing level
arm-toolchain/gcc: enable foobar v2
Reporting bugs
--------------
E-mail meta-arm@lists.yoctoproject.org with the error encountered and the steps
to reproduce the issue.
Maintainer(s)
-------------
* Jon Mason <jon.mason@arm.com>
* Ross Burton <ross.burton@arm.com>
+92
View File
@@ -0,0 +1,92 @@
meta-arm-autonomy Yocto Layer
=============================
Introduction
------------
This layer provides an hypervisor based solution (currently based on Xen) for
autonomous system. It contains recipes and classes to build host and guests
systems.
To start using this layer, please check the
[Quick Start Guide](documentation/arm-autonomy-quickstart.md).
Dependencies
------------
This layer depends on several other Yocto layers:
* meta-openembedded (https://git.openembedded.org/meta-openembedded)
* poky (https://git.yoctoproject.org/poky)
* meta-virtualization (https://git.yoctoproject.org/meta-virtualization)
Distribution Features
---------------------
This layer is adding the following Yocto DISTRO_FEATURES:
* arm-autonomy-host: this feature activates functionalities required to build
an autonomy host system. It is doing the following:
- add 'xen' and 'ipv4' to DISTRO_FEATURES.
- add xen backend drivers to linux kernel configuration.
- To reduce the root filesystem image size the kernel image is not installed.
* arm-autonomy-guest: this feature activates functionalities to run as guest
of an autonomy system. It is doing the following:
- add 'ipv4' to DISTRO_FEATURES.
- add xen frontend drivers to linux kernel configuration.
- add console on hvc0 during init.
Bitbake variables
-----------------
Some recipes and classes in this layer are introducing variables which can be
modified by the user in local.conf.
Each recipe introducing such variables has a chapter "Bitbake parameters" in
its documentation.
Those documentation files should be checked for variables:
- [xen-devicetree](documentation/xen-devicetree.md)
- [xenguest-manager](documentation/xenguest-manager.md)
- [xenguest-network-bridge](documentation/xenguest-network-bridge.md)
BSPs
----
This layer is adding the following machines:
* arm64-autonomy-guest: this machines creates a minimal BSP suitable to be used
as an autonomy guest. It is in fact only activating ARM64 architecture and
SMP in the linux kernel and is enabling the DISTRO_FEATURE
arm-autonomy-guest.
Images
------
This layer is adding the following images:
* arm-autonomy-host-image-minimal: this image includes all elements required
to create a minimal arm-autonomy-host system. This includes xen and tools to
manage xen guests. This image depends on 'arm-autonomy-host' distribution
feature.
Recipes and classes
-------------------
This layer is adding the following recipes and classes:
* [xen-devicetree](documentation/xen-devicetree.md): this is a recipe to modify
a device tree blob to add information required to boot xen and a Dom0 linux.
* [xenguest-mkimage](documentation/xenguest-mkimage.md): this is a tool to
create and modify images to be used as Xen guests.
* [xenguest-manager](documentation/xenguest-manager.md): this is a tool to
create/remove/start/stop xen guest generated using xenguest-mkimage.
* [xenguest-network-bridge](documentation/xenguest-network-bridge.md): this
recipe add tools and init scripts to create a bridge connected to the
external network on the host and allow guests to be connected to it.
Contributing
------------
This project has not put in place a process for contributions currently. If you
would like to contribute, please contact the maintainers
Maintainer(s)
-------------
* Diego Sueiro <diego.sueiro@arm.com>
* Bertrand Marquis <bertrand.marquis@arm.com>
@@ -0,0 +1,5 @@
# Include arm-autonomy distro config files if the distro features are set
require ${@bb.utils.contains('DISTRO_FEATURES', 'arm-autonomy-host', '${ARM_AUTONOMY_DISTRO_CFGDIR}/arm-autonomy-host.inc', '', d)}
require ${@bb.utils.contains('DISTRO_FEATURES', 'arm-autonomy-guest', '${ARM_AUTONOMY_DISTRO_CFGDIR}/arm-autonomy-guest.inc', '', d)}
@@ -0,0 +1,108 @@
# Create a xenguest image with kernel and filesystem produced by Yocto
# This will create a .xenguest file that the xenguest-manager can use.
inherit xenguest-image
# We are creating our guest in a local subdirectory
# force the value so that we are not impacted if the user is changing it
XENGUEST_IMAGE_DEPLOY_DIR = "${WORKDIR}/tmp-xenguest"
# Name of deployed file (keep standard image name and add .xenguest)
XENGUEST_IMAGE_DEPLOY ??= "${IMAGE_NAME}"
# Add kernel XENGUEST_IMAGE_KERNEL from DEPLOY_DIR_IMAGE to image
xenguest_image_add_kernel() {
srcfile="${1:-}"
if [ -z "${srcfile}" ]; then
srcfile="${DEPLOY_DIR_IMAGE}/${XENGUEST_IMAGE_KERNEL}"
fi
call_xenguest_mkimage partial --xen-kernel=$srcfile
}
# Add rootfs file to the image
xenguest_image_add_rootfs() {
call_xenguest_mkimage partial \
--disk-add-file=${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_TYPEDEP_xenguest}:rootfs.${IMAGE_TYPEDEP_xenguest}
}
# Pack xenguest image
xenguest_image_pack() {
mkdir -p ${IMGDEPLOYDIR}
rm -f ${IMGDEPLOYDIR}/${XENGUEST_IMAGE_DEPLOY}.xenguest
call_xenguest_mkimage pack \
${IMGDEPLOYDIR}/${XENGUEST_IMAGE_DEPLOY}.xenguest
}
#
# Task finishing the bootimg
# We need this task to actually create the symlinks
#
python do_bootimg_xenguest() {
subtasks = d.getVarFlag('do_bootimg_xenguest', 'subtasks')
bb.build.exec_func('xenguest_image_clone', d)
if subtasks:
for tk in subtasks.split():
bb.build.exec_func(tk, d)
bb.build.exec_func('xenguest_image_pack', d)
bb.build.exec_func('create_symlinks', d)
}
# This is used to add sub-tasks to do_bootimg_xenguest
do_bootimg_xenguest[subtasks] = ""
# Those are required by create_symlinks to find our image
do_bootimg_xenguest[subimages] = "xenguest"
do_bootimg_xenguest[imgsuffix] = "."
do_bootimg_xenguest[depends] += "xenguest-base-image:do_deploy"
# Need to have rootfs so all recipes have deployed their content
do_bootimg_xenguest[depends] += "${PN}:do_rootfs"
# This set in python anonymous after, just set a default value here
IMAGE_TYPEDEP_xenguest ?= "tar"
# We must not be built at rootfs build time because we need the kernel
IMAGE_TYPES_MASKED += "xenguest"
IMAGE_TYPES += "xenguest"
python __anonymous() {
# Do not do anything if we are not in the want FSTYPES
if bb.utils.contains_any('IMAGE_FSTYPES', 'xenguest', '1', '0', d):
# Check the coherency of the configuration
rootfs_needed = False
rootfs_file = ''
kernel_needed = False
rootfs_file = xenguest_image_rootfs_file(d)
if rootfs_file:
rootfs_needed = True
if d.getVar('XENGUEST_IMAGE_KERNEL') and not d.getVar('INITRAMFS_IMAGE'):
# If INITRAMFS_IMAGE is set, even if INITRAMFS_IMAGE_BUNDLE is not
# set to 1 to bundle the initramfs with the kernel, kernel.bbclass
# is setting a dependency on ${PN}:do_image_complete. We cannot
# in this case depend on do_deploy as it would create a circular
# dependency:
# do_image_complete would depend on kernel:do_deploy which would
# depend on ${PN}:do_image_complete
# In the case INITRAMFS_IMAGE_BUNDLE = 1, the kernel-xenguest class
# will handle the creation of a xenguest image with the kernel.
# In the other case the kernel can be added manually to the image.
kernel_needed = True
bb.build.addtask('do_bootimg_xenguest', 'do_image_complete', None, d)
if rootfs_needed:
# tell do_bootimg_xenguest to call add_rootfs
d.appendVarFlag('do_bootimg_xenguest', 'subtasks', ' xenguest_image_add_rootfs')
# do_bootimg_xenguest will need the tar file
d.appendVarFlag('do_bootimg_xenguest', 'depends', ' %s:do_image_tar' % (d.getVar('PN')))
# set our TYPEDEP to the proper compression
d.setVar('IMAGE_TYPEDEP_xenguest', 'tar' + (rootfs_file.split('.tar', 1)[1] or ''))
if kernel_needed:
# Tell do_bootimg_xenguest to call xenguest_image_add_kernel
d.appendVarFlag('do_bootimg_xenguest', 'subtasks', ' xenguest_image_add_kernel')
# we will need kernel do_deploy
d.appendVarFlag('do_bootimg_xenguest', 'depends', ' virtual/kernel:do_deploy')
}
@@ -0,0 +1,34 @@
# Create a xenguest image containing the kernel with initramfs when
# initramfs is activated
# This is done using kernel-fitimage as model
# To activate this, kernel-xenguest must be added to KERNEL_CLASSES
inherit xenguest-image
# use a local copy to pack all together
XENGUEST_IMAGE_DEPLOY_DIR = "${WORKDIR}/tmp-xenguest"
python __anonymous () {
# only if xenguest image type is present
if bb.utils.contains('IMAGE_FSTYPES', 'xenguest', '1', '0', d):
# only if initramfs bundle is activated
if d.getVar('INITRAMFS_IMAGE') and d.getVar('INITRAMFS_IMAGE_BUNDLE') == "1":
if not bb.utils.contains('KERNEL_IMAGETYPES', 'Image', '1', '0', d):
bb.fatal("xenguest image type with initramfs require Image kernel image type")
bb.build.addtask('do_assemble_xenguest_initramfs', 'do_deploy', 'do_bundle_initramfs', d)
}
do_assemble_xenguest_initramfs() {
xenguest_image_clone
call_xenguest_mkimage partial --xen-kernel=${B}/${KERNEL_OUTPUT_DIR}/Image.initramfs
rm -f ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest
call_xenguest_mkimage pack ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest
}
do_assemble_xenguest_initramfs[depends] += "${INITRAMFS_IMAGE}:do_image_complete"
kernel_do_deploy_append() {
if [ -f "${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest" ]; then
install -m 0644 ${B}/${KERNEL_OUTPUT_DIR}/Image-initramfs.xenguest "$deployDir/Image-${INITRAMFS_NAME}.xenguest"
ln -snf Image-${INITRAMFS_NAME}.xenguest $deployDir/Image-${INITRAMFS_LINK_NAME}.xenguest
fi
}
@@ -0,0 +1,114 @@
# This class must be used to extend the xenguest image
# It provides variables to add init scripts, a dtb, xen files or disk files.
#
# The class is extending deploy function so you recipe must inherit deploy and
# have a do_deploy function (even if it is empty)
# Use standard xenguest-image
inherit xenguest-image
# Add a DTB file for the guest
# Only one file should be added, if this is set multiple times or in several
# recipes, the last recipe setting it will prevail.
XENGUEST_EXTRA_DTB ??= ""
# Add a ramdisk file for the guest
# Only one file should be added, if this is set multiple times or in several
# recipes, the last recipe setting it will prevail.
XENGUEST_EXTRA_RAMDISK ??= ""
# Append something to the guest xen configuration
# All files here will be merged together in the final xen configuration
# This can contain several files or be used in several recipes
XENGUEST_EXTRA_XENCONFIG ??= ""
# Add a xenguest init, init-pre or init-post script
XENGUEST_EXTRA_INIT_PRE ??= ""
XENGUEST_EXTRA_INIT ??= ""
XENGUEST_EXTRA_INIT_POST ??= ""
# Add xenguest files, (to be used in extra xen config for example)
# several files may be added, space separated, the path will be kept on the
# generated xenguest image (if dir1/file1 is added, it can be used as
# dir1/file1 file in the xen configuration).
XENGUEST_EXTRA_FILES ??= ""
# Add xenguest disk files (to be used as disk partition content)
# several files may be added, space separated, the path will be kept on the
# generated xenguest image (if dir1/file1 is added, it can be used as
# dir1/file1 file in the disk content parameters).
XENGUEST_EXTRA_DISK_FILES ??= ""
do_deploy_append() {
if [ -z "${XENGUEST_IMAGE_DEPLOY_DIR}" -o \
-z "${XENGUEST_IMAGE_DEPLOY_SUBDIR}" ]; then
die "Configuration error: XENGUEST_IMAGE_DEPLOY_DIR or XENGUEST_IMAGE_DEPLOY_SUBDIR is empty"
fi
rm -rf ${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
mkdir -p ${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
if [ -n "${XENGUEST_EXTRA_DTB}" ]; then
if [ ! -f ${XENGUEST_EXTRA_DTB} ]; then
die "xenguest-image: DTB file ${XENGUEST_EXTRA_DTB} does not exist"
fi
call_xenguest_mkimage partial --xen-device-tree=${XENGUEST_EXTRA_DTB}
fi
if [ -n "${XENGUEST_EXTRA_RAMDISK}" ]; then
if [ ! -f ${XENGUEST_EXTRA_RAMDISK} ]; then
die "xenguest-image: DTB file ${XENGUEST_EXTRA_RAMDISK} does not exist"
fi
call_xenguest_mkimage partial --xen-ramdisk=${XENGUEST_EXTRA_RAMDISK}
fi
if [ -n "${XENGUEST_EXTRA_XENCONFIG}" ]; then
for f in ${XENGUEST_EXTRA_XENCONFIG}; do
if [ ! -f $f ]; then
die "xenguest-image: Xen config $f does not exist"
fi
call_xenguest_mkimage partial --xen-append=$f
done
fi
if [ -n "${XENGUEST_EXTRA_INIT_PRE}" ]; then
if [ ! -f ${XENGUEST_EXTRA_INIT_PRE} ]; then
die "xenguest-image: Init script ${XENGUEST_EXTRA_INIT_PRE} does not exist"
fi
call_xenguest_mkimage partial --init-pre=${XENGUEST_EXTRA_INIT_PRE}
fi
if [ -n "${XENGUEST_EXTRA_INIT}" ]; then
if [ ! -f ${XENGUEST_EXTRA_INIT} ]; then
die "xenguest-image: Init script ${XENGUEST_EXTRA_INIT} does not exist"
fi
call_xenguest_mkimage partial --init-script=${XENGUEST_EXTRA_INIT}
fi
if [ -n "${XENGUEST_EXTRA_INIT_POST}" ]; then
if [ ! -f ${XENGUEST_EXTRA_INIT_POST} ]; then
die "xenguest-image: Init script ${XENGUEST_EXTRA_INIT_POST} does not exist"
fi
call_xenguest_mkimage partial --init-post=${XENGUEST_EXTRA_INIT_POST}
fi
if [ -n "${XENGUEST_EXTRA_FILES}" ]; then
for f in ${XENGUEST_EXTRA_FILES}; do
if [ ! -f $f ]; then
die "xenguest-image: Xen file $f does not exist"
fi
call_xenguest_mkimage partial --xen-add-file=$f
done
fi
if [ -n "${XENGUEST_EXTRA_DISK_FILES}" ]; then
for f in ${XENGUEST_EXTRA_DISK_FILES}; do
if [ ! -f $f ]; then
die "xenguest-image: Disk file $f does not exist"
fi
call_xenguest_mkimage partial --disk-add-file=$f
done
fi
}
# Need to have xenguest-image tool
do_deploy[depends] += "xenguest-base-image:do_deploy"
@@ -0,0 +1,199 @@
# This class must be used to create, extend or pack a xenguest image.
# It is using xenguest-mkimage tool to do operations
DEPENDS += "xenguest-mkimage-native"
#
# Xenguest image parameters
# All the following parameters can be modified in local.conf or on recipes
# inheriting this class
#
# Guest memory size in MB
XENGUEST_IMAGE_MEMORY_SIZE ??= "512"
# Guest number of vcpus
XENGUEST_IMAGE_NUM_VCPUS ??= "1"
# Guest auto boot during init, set to 1 to have guest started during init or
# to 0 if the guest should not be auto started
XENGUEST_IMAGE_AUTOBOOT ??= "1"
# Partition containing the root file system
# Xen will actually add root=${XENGUEST_IMAGE_ROOT} to your guest kernel
# command line
# You can let this empty if the root filesystem is specified in an other way
# and have root= option added to the command line for example or if you don't
# need a root filesystem mounted for your guest (initrd for example)
XENGUEST_IMAGE_ROOT ??= "/dev/xvda1"
# Guest kernel command line arguments
XENGUEST_IMAGE_CMDLINE ??= "earlyprintk=xenboot console=hvc0 rw"
# Extra commands to add to xenguest-image when creating the image
XENGUEST_IMAGE_EXTRA_CMD ??= ""
# Kernel binary
# This value is used by the xenguest image type but is declared here to have
# all variables in the same place
# If this value is empty no kernel will be added to the image
XENGUEST_IMAGE_KERNEL ??= "Image"
# Size of the disk to create (if 0 no disk will be created and rootfs will not
# be included in the xenguest image)
XENGUEST_IMAGE_DISK_SIZE ??= "${@ '4' if not d.getVar('INITRAMFS_IMAGE') else '0'}"
#
# XENGUEST_IMAGE_DISK PARTITIONS is used to describe the partitions to setup
# and their content.
# It must be set to a space separated list of entries with each entry having
# the format num:sz:fs:[file] where:
# - num is a partition number
# - sz is the partition size in Gigabit
# - fs is the filesystem to use for the partition
# - file is optionally pointing to a file to use as content of the partition
# Please check image_types_xenguest.bbclass for rootfs handling of files
#
# Default value creates a partition 1 using the full disk, formated with ext4
# and containing the root filesystem produced by Yocto
XENGUEST_IMAGE_DISK_PARTITIONS ??= "1:${XENGUEST_IMAGE_DISK_SIZE}:ext4:rootfs.tar.gz"
# XENGUEST_IMAGE_NETWORK_TYPE can be set to "bridge", "nat" or "none".
# The "bridge" type will share the physical eth interface from dom0 with the
# domU. This will allow the domU to have access to the external network.
# The "nat" type will setup a virtual network between dom0 and domU and also
# configure and run the kea dhcp4 server on dom0 to serve the domU.
# The "none" type will not affect any networking setting between on dom0 and
# domU.
XENGUEST_IMAGE_NETWORK_TYPE ??= "bridge"
# Sub-directory in wich the guest is created. This is create in deploy as a
# subdirectory and must be coherent between all components using this class so
# it must only be modified from local.conf if needed
XENGUEST_IMAGE_DEPLOY_SUBDIR ?= "xenguest"
# Directory in which the xenguest should be deployed
# a sub-directory named ${XENGUEST_IMAGE_DEPLOY_SUBDIR} will be created there.
# This should be set to:
# - ${DEPLOYDIR} (default) if creating or extending the xenguest for a normal
# recipe.
# - something in ${WORKDIR} if you need to clone and manipulate an image
XENGUEST_IMAGE_DEPLOY_DIR ??= "${DEPLOYDIR}"
#
# Wrapper to call xenguest-mkimage
# It is using XENGUEST_IMAGE_DEPLOY_DIR and XENGUEST_IMAGE_DEPLOY_SUBDIR
# to find the image to operate on
#
# Usage: call_xenguest_mkimage [operation] [args]
call_xenguest_mkimage() {
local cmd="${1}"
local img="${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}"
shift
echo "xenguest-mkimage $cmd $img $@"
xenguest-mkimage $cmd $img $@
}
#
# Create an initial xenguest image.
# This is a task which must be added in a recipe inheriting deploy
# It is using XENGUEST_IMAGE_MEMORY_SIZE, XENGUEST_IMAGE_NUM_VCPUS,
# XENGUEST_IMAGE_AUTOBOOT, XENGUEST_IMAGE_ROOT, XENGUEST_IMAGE_EXTRA_CMD,
# XENGUEST_IMAGE_CMDLINE, XENGUEST_IMAGE_DISK_SIZE and
# XENGUEST_IMAGE_DISK_PARTITIONS to customize the initial guest
#
xenguest_image_create() {
if [ -z "${XENGUEST_IMAGE_DEPLOY_DIR}" -o \
-z "${XENGUEST_IMAGE_DEPLOY_SUBDIR}" ]; then
die "Configuration error: XENGUEST_IMAGE_DEPLOY_DIR or XENGUEST_IMAGE_DEPLOY_SUBDIR is empty"
fi
rm -rf ${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
mkdir -p ${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
# Create the image
call_xenguest_mkimage create --xen-memory=${XENGUEST_IMAGE_MEMORY_SIZE} \
--xen-vcpus=${XENGUEST_IMAGE_NUM_VCPUS} \
--xen-root=${XENGUEST_IMAGE_ROOT} \
${XENGUEST_IMAGE_EXTRA_CMD}
# add command line
if [ -n "${XENGUEST_IMAGE_CMDLINE}" ]; then
call_xenguest_mkimage update --xen-clean-extra
for arg in ${XENGUEST_IMAGE_CMDLINE}; do
call_xenguest_mkimage update --xen-extra=$arg
done
fi
# create disk if needed
disksize="${XENGUEST_IMAGE_DISK_SIZE}"
if [ -z "$disksize" ]; then
disksize="0"
fi
if [ $disksize -gt 0 ]; then
# setup disk size
call_xenguest_mkimage update --disk-reset-config --disk-size=$disksize
diskparts="${XENGUEST_IMAGE_DISK_PARTITIONS}"
if [ -n "$diskparts" ]; then
for arg in $diskparts; do
call_xenguest_mkimage update --disk-add-part=$arg
partnum="$(expr $partnum + 1)"
done
fi
fi
if [ "${XENGUEST_IMAGE_AUTOBOOT}" = "1" ]; then
call_xenguest_mkimage update --set-param=GUEST_AUTOBOOT=1
else
call_xenguest_mkimage update --set-param=GUEST_AUTOBOOT=0
fi
if [ -n "${XENGUEST_IMAGE_NETWORK_TYPE}" ]; then
call_xenguest_mkimage update --set-param=XENGUEST_NETWORK_TYPE="${XENGUEST_IMAGE_NETWORK_TYPE}"
else
call_xenguest_mkimage update --set-param=XENGUEST_NETWORK_TYPE="none"
fi
}
#
# Clone the current xenguest from deploy to manipulate it locally
# This is required if you need to change things before packing an image
# To set the local directory where to clone you must set
# XENGUEST_IMAGE_DEPLOY_DIR if you don't want to use do_deploy to modify the
# image
#
xenguest_image_clone() {
if [ -z "${XENGUEST_IMAGE_DEPLOY_DIR}" -o \
-z "${XENGUEST_IMAGE_DEPLOY_SUBDIR}" ]; then
die "Configuration error: XENGUEST_IMAGE_DEPLOY_DIR or XENGUEST_IMAGE_DEPLOY_SUBDIR is empty"
fi
if [ ! -f ${DEPLOY_DIR_IMAGE}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}/guest.cfg ]; then
die "xenguest-image: ${DEPLOY_DIR_IMAGE}/${XENGUEST_IMAGE_DEPLOY_SUBDIR} does not contain a valid guest"
fi
rm -rf ${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
mkdir -p ${XENGUEST_IMAGE_DEPLOY_DIR}
cp -rf ${DEPLOY_DIR_IMAGE}/${XENGUEST_IMAGE_DEPLOY_SUBDIR} \
${XENGUEST_IMAGE_DEPLOY_DIR}/${XENGUEST_IMAGE_DEPLOY_SUBDIR}
}
# Helper function to retrieve rootfs file if present in one partition
# This can return an empty string or rootfs.tar[.COMP]
def xenguest_image_rootfs_file(d):
disksize = d.getVar('XENGUEST_IMAGE_DISK_SIZE')
# if disksize is 0, we don't create anything
if not disksize or disksize == '0':
return ""
# Find first partition with file=rootfs.tar*
partlist = d.getVar('XENGUEST_IMAGE_DISK_PARTITIONS')
if partlist:
for partdesc in partlist.split():
partelems = partdesc.split(':', 3)
if partelems[3]:
if partelems[3].startswith('rootfs.tar'):
return partelems[3]
return ""
@@ -0,0 +1,15 @@
# This files is added when DISTRO_FEATURES contains arm-autonomy-guest
# We need to have ipv4 activated
DISTRO_FEATURES_append = " ipv4"
# Build a xenguest type image
IMAGE_CLASSES += "image_types_xenguest"
IMAGE_FSTYPES += "xenguest"
# xenguest kernel extension to handle initramfs
KERNEL_CLASSES += "kernel-xenguest"
IMAGE_INSTALL_append = "${@bb.utils.contains('DISTRO_FEATURES', 'docker', \
' packagegroup-docker-runtime-minimal', \
'', d)}"
@@ -0,0 +1,21 @@
# This files is added when DISTRO_FEATURES contains arm-autonomy-host
# We need to have xen and ipv4 activated
DISTRO_FEATURES_append = " xen ipv4"
DISTRO_FEATURES_NATIVE_append = " arm-autonomy-host"
# Don't include kernels in standard images when building arm-autonomy-host
# If the kernel image is needed in the rootfs the following should be set from
# a bbappend: RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "${KERNEL_PACKAGE_NAME}-image"
RDEPENDS_${KERNEL_PACKAGE_NAME}-base ?= ""
# Require extra machine specific settings from meta-arm-bsp dynamic-layers only
# if meta-arm-bsp is in the bblayers.conf
# Directory for meta-arm-autonomy/dynamic-layers/meta-arm-bsp machine extra settings
ARM_AUTONOMY_ARM_BSP_DYNAMIC_EXTRA_CFGDIR = "${ARM_AUTONOMY_ARM_BSP_DYNAMIC_DIR}/conf/machine"
ARM_AUTONOMY_MACHINE_EXTRA_REQUIRE ?= \
"${ARM_AUTONOMY_ARM_BSP_DYNAMIC_EXTRA_CFGDIR}/arm-autonomy-machine-extra-settings.inc"
require ${@bb.utils.contains('BBFILE_COLLECTIONS', 'meta-arm-bsp', \
'${ARM_AUTONOMY_MACHINE_EXTRA_REQUIRE}' , \
'', d)}
+38
View File
@@ -0,0 +1,38 @@
# Add layer to BBPATH
BBPATH .= ":${LAYERDIR}"
# Add recipes-* directories to BBFILES
BBFILES += " \
${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend \
"
BBFILE_COLLECTIONS += "meta-arm-autonomy"
BBFILE_PATTERN_meta-arm-autonomy = "^${LAYERDIR}/"
BBFILE_PRIORITY_meta-arm-autonomy = "6"
LAYERDEPENDS_meta-arm-autonomy = " \
core \
yocto \
openembedded-layer \
virtualization-layer \
"
LAYERSERIES_COMPAT_meta-arm-autonomy = "gatesgarth"
# We don't activate virtualization feature from meta-virtualization as it
# brings in lots of stuff we don't need. We need to disable the sanity check
# otherwise the user will see a warning on each build.
SKIP_META_VIRT_SANITY_CHECK = "1"
ARM_AUTONOMY_LAYERDIR := "${LAYERDIR}"
# Directory of our distro config files
ARM_AUTONOMY_DISTRO_CFGDIR = "${ARM_AUTONOMY_LAYERDIR}/conf/distro/include/"
# Add class to handle arm-autonomy distro extensions
USER_CLASSES_append = " arm-autonomy-features"
BBFILES_DYNAMIC += " \
meta-arm-bsp:${LAYERDIR}/dynamic-layers/meta-arm-bsp/*/*/*.bbappend \
meta-gem5:${LAYERDIR}/dynamic-layers/meta-gem5/*/*/*.bbappend \
"
# Root directory for the meta-arm-autonomy/dynamic-layers/meta-arm-bsp
ARM_AUTONOMY_ARM_BSP_DYNAMIC_DIR = "${ARM_AUTONOMY_LAYERDIR}/dynamic-layers/meta-arm-bsp"
@@ -0,0 +1,17 @@
#@TYPE: Machine
#@NAME: Autonomy Guest ARM64 machine
#@DESCRIPTION: Machine configuration for ARM64 Autonomy Guest
TUNE_FEATURES = "aarch64"
require conf/machine/include/arm/arch-armv8a.inc
KERNEL_IMAGETYPE = "Image"
IMAGE_FSTYPES += "tar.bz2"
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
PREFERRED_VERSION_linux-yocto ?= "5.4%"
DISTRO_FEATURES += "arm-autonomy-guest"
@@ -0,0 +1,232 @@
arm-autonomy Quick Start
==================
This documentation is explaining how to quickly start with arm-autonomy layer
and the main features provided.
You will find in the documentation directory some more detailed documentation
for each of the functionalites provided by this layer.
What to use this layer for?
---------------------------
Using this layer, you can easily and rapidly create a system based on Xen with
one or more guests created using Yocto.
For this you will need to create at least 2 Yocto projects:
- a host project: This one will compile Xen and create a Linux system to be
used as Xen Dom0. The Linux system will contain all functionalities required
to start and manage guests.
- one or several guest projects: Those will create Linux systems with the
required Linux kernel configuration to run as Xen DomU.
Prepare your system
-------------------
First you must download the Yocto layers needed:
- [meta-openembedded](https://git.openembedded.org/meta-openembedded)
- [poky](https://git.yoctoproject.org/poky)
- [meta-virtualization](https://git.yoctoproject.org/meta-virtualization)
- [meta-arm](https://git.yoctoproject.org/meta-arm)
- [meta-kernel](https://gitlab.com/openembedded/community/meta-kernel.git)
- all other layers you might want to use
For each of the downloaded layer make sure you checkout the release of Yocto
you want to use (for example zeus using `git checkout zeus`).
Please follow [Yocto documentation](https://www.yoctoproject.org/docs/latest/brief-yoctoprojectqs/brief-yoctoprojectqs.html)
in order to have the required dependencies.
Create a project
----------------
Here are the main steps to create an arm-autonomy project:
1. create a new Yocto project using `oe-init-build-env` in a new directory:
```
oe-init-build-env my-project
```
2. Add `meta-arm/meta-arm-autonomy` layer to the list of layers of your
project in the `conf/bblayers.conf`. Also add any other layers you
might need (for example `meta-arm/meta-arm-bsp` and `meta-arm/meta-arm` to
use Arm boards like Juno or FVP emulator). You can achieve this by using
the `bitbake-layers add-layer layerdir [layerdir ...]` command.
For example:
```
export LAYERDIR_BASE="/home/user/arm-autonomy/"
bitbake-layers add-layer $LAYERDIR_BASE/meta-poky $LAYERDIR_BASE/meta-yocto-bsp \
$LAYERDIR_BASE/meta-openembedded/meta-oe $LAYERDIR_BASE/meta-openembedded/meta-python \
$LAYERDIR_BASE/meta-openembedded/meta-filesystems $LAYERDIR_BASE/meta-openembedded/meta-networking \
$LAYERDIR_BASE/meta-virtualization $LAYERDIR_BASE/meta-kernel \
$LAYERDIR_BASE/meta-arm/meta-arm $LAYERDIR_BASE/meta-arm/meta-arm-toolchain \
$LAYERDIR_BASE/meta-arm/meta-arm-bsp $LAYERDIR_BASE/meta-arm/meta-arm-autonomy \
```
Example of a `conf/bblayers.conf`:
```
BBLAYERS ?= " \
/home/user/arm-autonomy/poky/meta \
/home/user/arm-autonomy/poky/meta-poky \
/home/user/arm-autonomy/poky/meta-yocto-bsp \
/home/user/arm-autonomy/meta-openembedded/meta-oe \
/home/user/arm-autonomy/meta-openembedded/meta-python \
/home/user/arm-autonomy/meta-openembedded/meta-filesystems \
/home/user/arm-autonomy/meta-openembedded/meta-networking \
/home/user/arm-autonomy/meta-virtualization \
/home/user/arm-autonomy/meta-kernel \
/home/user/arm-autonomy/meta-arm/meta-arm \
/home/user/arm-autonomy/meta-arm/meta-arm-toolchain \
/home/user/arm-autonomy/meta-arm/meta-arm-bsp \
/home/user/arm-autonomy/meta-arm/meta-arm-autonomy \
"
```
Be aware that changing the order may break some dependencies if editing the
config file manually.
Those steps will have to be done for each project you will have to create.
Host project
------------
The host project will build Xen and the Dom0 Linux. It will be the only project
that will be specific to the board (MACHINE) you will be running on.
To create a host project:
1. Follow the steps of "Create a project"
2. Add the layers in `bblayers.conf` required to build a Yocto project for the
board you want to use.
For example to use Arm FVP Base emulator, add `meta-arm/meta-arm` and
`meta-arm/meta-arm-bsp`.
3. edit conf/local.conf to add `arm-autonomy-host` to the DISTRO_FEATURES and
set MACHINE to the board you want to use.
For example, add the following lines:
```
MACHINE = "fvp-base"
DISTRO_FEATURES += "arm-autonomy-host"
```
4. build the image using `bitbake arm-autonomy-host-image-minimal`
The project will generate a Linux kernel, a root filesystem, a Xen binary and
a DTB modified to include the required entries to boot Xen and Linux as Dom0
(this DTB has the extension `-xen.dtb`).
To boot the system using an u-boot base board you will need to:
- Load the kernel (by default at 0x80080000 unless you modify
XEN_DEVICETREE_DOM0_ADDR value)
- Load the xen device tree (for example at 0x83000000)
- Load the xen-efi binary (for example at 0x84000000)
- run using `booti 0x84000000 - 0x83000000`
In this example the addresses might need to be adapted depending on your board.
Guest project
-------------
The guest projects are not target specific and will use a Yocto MACHINE defined
in meta-arm-autonomy to include only the Linux configuration required to run
a xen guest.
To create a guest project:
1. Follow the steps of "Create a project"
2. Optionaly add layers required to build the image and features you need.
3. edit conf/local.conf to add `arm-autonomy-guest` to the DISTRO_FEATURES and
set MACHINE to `arm64-autonomy-guest`:
```
MACHINE = "arm64-autonomy-guest"
DISTRO_FEATURES += "arm-autonomy-guest"
```
4. build the image you want.
For example `bitbake core-image-minimal`
The build will create a ".xenguest" image that can be use on an host project
with the xenguest-manager.
Include guests directly in the host image
-----------------------------------------
The layer provides a way to directly include in the host project one or several
images generated by guest projects.
To use this feature, you must edit your host project `local.conf` file and
add set ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS to the list of xenguest images
you want to include in your host. Each xenguest image must be given using a
full path to it.
For example:
```
ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS = "/home/user/guest-project/tmp/deploy/images/arm64-autonomy-guest/core-image-minimal-arm64-autonomy-guest.xenguest;guestname=myguest"
```
This will add the guest and name it `myguest` on the host project image and
the xenguest-manager will automatically boot it during startup.
Add support for your board
--------------------------
Most of arm-autonomy layer is board independent but some functionalities
might need to be customized for your board:
### Add the kernel configuration for the host
The layer is using KERNEL_FEATURES to add drivers required to be a Xen Dom0
system.
Depending on the kernel used by your BSP and how it is configured you might
need to add the required drivers to your kernel configuration:
- if KERNEL_FEATURES system is supported by your kernel, make sure that the
file `recipes-kernel/linux/linux-arm-autonomy.inc` from the layer is included
by your kernel recipe.
- if it is not supported, you must add the proper drivers inside your kernel
(modules are possible but they must be loaded before xenguest-manager is
started). You can find the complete list of the kernel configuration elements
required in `recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-host.cfg`.
### Define the drive and partition to use for the LVM volume
The xenguest-manager is creating disk hard drive using LVM on an empty
partition. The default value is set to use /dev/sda2.
You can change this for your board by setting XENGUEST_MANAGER_VOLUME_DEVICE.
Check `recipes-extended/xenguest/xenguest-manager.bbappend` for examples.
Please also read xenguest-manager.md.
### Define the interface to add to xenguest network bridge
xenguest-network bridge is creating a bridge on the host and adds network
interfaces to it so that guest connected to it have access to external network.
By default `eth0` is set as the list of interfaces to be added to the bridge.
Depending on your board or use case you might want to use an other interface
or use multiple interfaces.
You can change this for your board by setting XENGUEST_NETWORK_BRIDGE_MEMBERS.
Check `recipes-extended/xenguest/xenguest-network-bridge.bbappend` for
exmaples.
Please also read xenguest-network-bridge.md.
### Define the network configuration of the xenguest network bridge
xenguest network bridge is putting the host network interfaces in a bridge
and is configuring it by default to use dhcp.
If you need a different type of configuration you can set
XENGUEST_NETWORK_BRIDGE_CONFIG in a xenguest-network-bridge.bbappend to use
a different file.
The recipe will look for the file in ${WORKDIR} so you will need to add it to
SRC_URI in your bbappend.
The recipe will also substitute `###BRIDGE_NAME###` with the bridge name
configured in ${XENGUEST_NETWORK_BRIDGE_NAME}.
You can find an example configuration file in
`recipes-extended/xenguest/files/xenguest-network-bridge-dhcp.cfg.in`.
Please also read xenguest-network-bridge.md.
### Customize Dom0 and Xen boot arguments for you board
xen-devicetree is writting inside the generated DTB Xen and Linux boot
arguments as long as the address where Dom0 Linux kernel can be found.
You might need to have different values for your board or depending on your
use case.
You can find examples to customize this in
`recipes-extended/xen-devicetree/xen-devicetree.bbappend`.
Please also read xen-devicetree.md.
@@ -0,0 +1,29 @@
Customizing Arm Autonomy Host image layout for N1SDP
====================================================
When buiding with `DISTRO_FEATURES += "arm-autonomy-host"` the user can
perform a couple of customizations in the generated wic image:
1. Set the guest partition size (default: 4iG) via `GUEST_PART_SIZE` and
`GUEST_PART_SIZE_UNIT` (M or G) variables to be set in any conf file. The
value of these variables should be aligned with the sum of all
XENGUEST_IMAGE_DISK_SIZE set for the guests. By default, LVM2 metadata is
1 MiB per physical volume, hence it needs to be taken into account when
setting GUEST_PART_SIZE.
2. The wic image partition layout and contents with a custom wks file via
`ARM_AUTONOMY_WKS_FILE` variable (default:
arm-autonomy-n1sdp-efidisk.wks.in which is affected by GUEST_PART_SIZE,
GUEST_PART_SIZE_UNIT and GRUB_CFG_FILE variables).
3. Custom grub.cfg file via `GRUB_CFG_FILE` (default:
arm-autonomy-n1sdp-grub.cfg) variable to be set in any conf file. The full
path or relative to `ARM_AUTONOMY_WKS_FILE` should be set.
The `arm-autonomy-n1sdp-efidisk.wks.in` and `arm-autonomy-n1sdp-grub.cfg` files
are located at `meta-arm-autonomy/dynamic-layers/meta-arm-bsp/wic`.
Other variables can also be custmized to set what files need to be included
in the wic image boot partition. Please refer to
`meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc`
for more details.
@@ -0,0 +1,104 @@
Xen device tree
===============
Introduction
------------
xen-devicetree recipe can be used to modify an existing Device Tree Blob,
produced by Linux kernel or another recipe, to include in it entries required
to start Xen and a Dom0 Linux on top of it.
The recipe will do the following processing:
- generate a xen.dtsi file with entries required for xen based on parameters
- turn DTBs in ${XEN_DEVICETREE_DTBS} back to dts
- include in xen.dtsi and all other dtsi from
${XEN_DEVICETREE_DTSI_MERGE} (check Bitbake parameters for more information
on this).
- use dtc to create a new DTB file
The recipe will generate new files in deploy/images and name them with the
extension "-xen.dtb".
For example **machine.dtb** will generate **machine-xen.dtb**.
Entries added to the DTBs
-------------------------
When a DTB is processed by the recipe, the following block is added:
```
chosen {
xen,dom0-bootargs = "VAL";
xen,xen-bootargs = "VAL";
modules {
#size-cells = <0x00000001>;
#address-cells = <0x00000001>;
module@0 {
reg = <VAL VAL>;
compatible = "multiboot,module";
};
};
};
```
Each occurence of **VAL** is replaced by the content of the variables listed in
this documentation.
Bitbake parameters
------------------
Several parameters are available to configure the xen-devicetree during Yocto
project compilation (those can be set in your project local.conf, for exmple).
The following parameters are available:
- XEN_DEVICETREE_DEPEND: This variable can be used to indicate which recipe
task is generating the DTBs that xen-devicetree will modify. This makes sure
the xen devicetrees are properly regenerated if the source DTBs are changed.
This variable is set by default to "virtual/kernel:do_deploy" to use DTBs
generated during the compilation of the Linux kernel. This must be changed
if the machine your are using is not using a DTB listed in KERNEL_DEVICETREE.
- XEN_DEVICETREE_DTBS: This should be set to the list of DTBs you want to be
modified by xen-devicetree. Those must be files that xen-devicetree can find
in the ${DEPLOY_DIR_IMAGE} directory using only the basename of the entries.
For example "mydir/board.dtb" will make the recipe look for
${DEPLOY_DIR_IMAGE}/board.dtb.
This variable is set by default to "${KERNEL_DEVICETREE}" to process the DTBs
generated by the Linux kernel.
- XEN_DEVICETREE_DOM0_MEM: Memory size to allocate to Dom0.
This variable is only used if XEN_DEVICETREE_XEN_BOOTARGS has a value
containing "dom0_mem=${XEN_DEVICETREE_DOM0_MEM}" as the memory assigned to
dom0 is defined using Xen boot arguments.
This variable is set by default to "1024M".
- XEN_DEVICETREE_DOM0_BOOTARGS: Boot arguments to pass to Dom0 Linux when
booting it.
This variable is set by default to "console=hvc0 earlycon=xen".
- XEN_DEVICETREE_XEN_BOOTARGS: this variable should be set with the boot
arguments to be passed to Xen on boot.
This variable is set by default to
"noreboot dom0_mem=${XEN_DEVICETREE_DOM0_MEM}".
- XEN_DEVICETREE_DOM0_ADDR: This is the address from which the Linux kernel to
be used for Dom0 will be copied. When using u-boot, this is the address at
which you will load the kernel Image before starting Xen.
This variable is set by default to "0x80080000".
- XEN_DEVICETREE_DOM0_SIZE: This is the size of the kernel loaded at
${XEN_DEVICETREE_DOM0_ADDR}. Xen will copy this amount of data inside the
guest before starting it so the size must be at least equal to the kernel
size but can be bigger. You must be careful not to have a value too big as it
could slow down boot or copy other parts with it (like the DTB).
You might need to increase this if you use a kernel with a bundled initramfs.
This variable is set by default to "0x01000000".
- XEN_DEVICETREE_DTSI_MERGE: This variable contains the list of dtsi files that
must be included inside the generated DTB file. By default the only one
include is the "xen.dtsi" generated by the recipe.
If your board or project needs to include more fixes or entries in the DTB,
this variable can be appended from a bbappend file to include other dtsi. The
files must be inside the recipe workspace during Yocto compilation.
You can check xen-devicetree.bbappend for an example.
@@ -0,0 +1,101 @@
Xenguest Manager
================
Introduction
------------
xenguest-manager is a tool to manage Xenguest images generated by
[xenguest-mkimage](xenguest-mkimage.md).
On a Xen Dom0 system it will:
- create a xen guest from a xenguest image: extract its components, create a
disk for the guest using LVM volumes.
- start/stop a xen guest (during init or using xenguest-manager directly).
- check guest status
xenguest-manager is composed of 2 shell scripts:
- xenguest-manager which can be used from command line to start/stop/check
guests and create or remove guest using xenguest images.
- xenguest-init which is called during init to automatically create and start
some guests as part of the host init process.
Usage
-----
xenguest-manager must be called like this:
`xenguest-manager OPERATION [OPTIONS]`
The following operations are available:
- create XENGUEST_IMAGE [GUESTNAME]: create a guest from a xenguest image file
as guest GUESTNAME. If GUESTNAME is not given the image file name is used
without the xenguest extension.
- remove GUESTNAME: remove the guest GUESTNAME.
- start GUESTNAME: start the guest GUESTNAME.
- stop GUESTNAME: stop the guest GUESTNAME (this is using `xl stop` which is
sending a stop signal to the running guest).
- kill GUESTNAME: force stopping the guest GUESTNAME.
- list: list the available guests.
- status [GUESTNAME]: print the current status of GUESTNAME. If GUESTNAME is
not given, print the status of all guests.
For a detailed help on available options please use:
`xenguest-manager --help`
Bitbake parameters
------------------
Several parameters are available to configure the xenguest manager during Yocto
project compilation (those can be set in your project local.conf, for example).
The following parameters are available:
- XENGUEST_MANAGER_VOLUME_DEVICE: This is the device path used by the
xenguest-manager on the device to create LVM disks when guests have a disk
configuration.
This is set by default to "/dev/sda2".
- XENGUEST_MANAGER_VOLUME_NAME: This is the LVM volume name that the
xenguest-manager will create and use to create guest LVM disks.
This is set by default to "vg-xen".
- XENGUEST_MANAGER_GUEST_DIR: This is the directory on Dom0 where the
xenguest-manager will look for xenguest images to create during init. That's
the place where xenguest images can be added to have them automatically
created during next Dom0 boot. The xenguests found there will only be created
if they were not already before (the basename of the files is used as guest
name).
This is set by default to "/usr/share/guests".
Init scripts
------------
Shell scripts can be executed on the host when a guest is started. Depending on
when the script should be executed it should be installed in a different
directory on the target:
- /etc/xenguest/init.pre : Executed first, prior to guest creation
- /etc/xenguest/init.d : Executed after guest creation, but before it is started
- /etc/xenguest/init.post : Executed after starting the guest
Inside the directory, scripts will be executed in alphabetical order.
Since these scripts are sourced by xenguest-manager they can acccess functions
and variables from the parent file's scope, including:
- ${guestname} : The name of the guest being created
- ${guestdir} : The path to the guest directory
- ${guestcfgfile} : The name of the config file for the starting guest
- ${LOGFILE} : The file to append any logging to, e.g.
echo "Hello, World" >> ${LOGFILE}
Sourcing also allows the script to access params.cfg.
An example of how to create the directory and install an init shell script can
be found in:
recipes-extended/xenguest/xenguest-network.bb
Where network-bridge.sh is installed from network-bridge.sh.in
@@ -0,0 +1,121 @@
Xenguest mkimage
================
Introduction
------------
xenguest-mkimage is a tool to create and modify images to be used as Guest with
Xen. It defines a format to store completely defined guests as a file or as
a directory and provides options to create and modify those images.
A xenguest image contains all elements required to create a xen guest.
This is the base elements like a Xen configuration and a Linux kernel binary
but also some more advanced elements like init scripts or a disk definition.
The format is made to be deployable easily by storing everything in a single
file and provide tools to easily manipulate the images. It can also easily be
extended to have features like encryption or signature of images, updates or
complex configurations by providing features to have init script that will be
executed on the host embedded inside the image.
Xenguest images content
-----------------------
### params.cfg
This file contains parameters that can be used by tools to configure some
functionalities on the host. This can be used by init scripts to have
configurable parameters as it is sourced before calling init scripts.
### guest.cfg and guest.d
guest.cfg is the main xen configuration and guest.d contains optional
configuration parts. All those will be merged into one final xen configuration
before starting the guest.
### files
This directory contains files that can be used by the xen configuration, for
example the binary of the kernel referenced in xen configuration).
This is where the kernel binary, the dtb or a ramdisk will be stored.
### init.pre, init.d and init.post
These directories contain init scripts that will be executed on the host
during the guest startup. Those must be shell scripts and each directory
contains scripts called at a different time:
- init.pre: scripts executed before the guest is created. This can be used
to prepare some features required to create the guest in xen or to
generate part of the xen configuration dynamically.
- init.d: scripts executed when the guest has been created but before it is
started. This can be used to do some xenstore operations or configure the
guest behaviour using xl, for example.
- init.post: scripts executed just after starting the guest. This can be
used to configure things created by xen for the guest like network
network interfaces.
When a directory contains several scripts, those will be called in alphabetical
order.
### disk.cfg and disk-files
disk.cfg contains the guest disk description (disk size and disk partitions).
The file contains the following entries:
- `DISK_SIZE=X`: size of the disk to create in GB
- `DISK_PARTX=SIZE:FS:CONTENT`: create a partition number X (1 to 4) with a
size of SIZE GB, format it with filesystem FS (can be ext2, ext3, ext4, vfat
or swap) and extract CONTENT as initial partition content
(.tar[.gz|.xz|.bz2] file or img[.gz|.bz2] file to be dumped in the partition). FS and
CONTENT can be empty.
The disk-files contain files to be used for initializing the disk partitions
content. Those should be used to create a LVM or a physical disk and initialize
it (create partitions, format them and put the initial content).
Usage
-----
xenguest-mkimage is a shell script which must be called like this:
`xenguest-mkimage OPERATION XENGUEST [OPTIONS]`
### Operations
- create: create a xenguest image. If XENGUEST is an existing empty directory,
the image is created as a directory otherwise it will be created as a file.
- check: verify that XENGUEST is a valid xenguest image.
- update: modify a xenguest image (see --help for a list of operations).
- pack: pack a xenguest image directory into a xenguest image file. The file to
be created must be given as 3rd argument.
- extract: extract a xenguest image file into a directory. The destination
directory must be given as 3rd argument.
- dump-xenconfig: dump xenguest image xen configuration.
- dump-diskconfig: dump xenguest image disk configuration.
- dump-paramsconfig: dump xenguest image parameters configuration.
For a detailed help on available operations, please use:
`xenguest-mkimage --help`
### Options
- --kernel=FILE: add kernel FILE as guest kernel. This is both adding the file
to the image and modifying the xen configuration to use it.
- --xen-memory=SIZE: set the guest memory size in MB.
- --xen-extra: add a kernel command line argument. This can be called several
times to add several command line options.
- --xen-device-tree=FILE: add dtb FILE as device tree. This both adding the
file to the image and modifying the xen configuration to use it.
- --xen-ramdisk=FILE: add ramdisk FILE as guest ramdisk. This both adding the
file to the image and modifying the xen configuration to use it.
- --init-script=FILE: add guest init script. The script is embedded inside the
image file. Several script can be added and the basename of FILE is used to
distinguish them (calling the option twice with the same file will update the
script in the image with the second one).
--disk-size=SIZE: set the guest disk size to SIZE in GB. Calling this with 0
disable the guest disk.
- --disk-add-part=NUM:SIZE:FS:CONTENT: This is adding a partition to the
xenguest image disk. The partition is described with the arguments:
- NUM: partition number.
- SIZE: partition size in GB.
- FS: filesystem to format the partition with. This can be ext2, ext3, ext4,
vfat of swap. If empty the partition is not formated.
- CONTENT: tar of img file to use to initialize the partition. The file must
be added to the image using --disk-add-file=FILE:CONTENT.
For a detailed help on available options, please use:
`xenguest-mkimage OPERATION --help`
@@ -0,0 +1,80 @@
Xenguest Network
================
Introduction
------------
The xenguest-network package is primarly creating a network bridge to share
the host eth physical interfaces with the guests virtual interfaces (vif).
This way the guests can have access to the external network.
At the moment 3 types of network arrangements are provided:
- Bridge: where the guest vif is added to the created bridge interface;
- NAT: where a private subnet is created for the guest,
a kea dhcp4 server is started on the host to serve the guest
and the proper iptables rules are created
to allow the guest to access the external network;
- None: the guest vif is not connected to the bridge.
Usage
-----
On the host project the package xenguest-network must be included in your
image, and on the guest project the XENGUEST_NETWORK_TYPE needs to be set to
"bridge", "nat" or "none".
Bitbake parameters
------------------
Several parameters are available to configure the xenguest network bridge
during Yocto project compilation (those can be set in your project local.conf
or xenguest-network.bbappend, for example).
The following parameters are available:
- XENGUEST_NETWORK_BRIDGE_NAME: This variable defines the name of the network
bridge that is created on the host during init.
This is set by default to "xenbr0".
- XENGUEST_NETWORK_BRIDGE_MEMBERS: This variable defines the list of the
physical network interfaces that are added to the bridge when it is created
on the host during init.
By default no physical interfaces are added.
- XENGUEST_NETWORK_BRIDGE_CONFIG: This variable defines the configuration file
to use to configure the bridge network. By default it points to have file
configuring the network using dhcp.
You can provide a different file using a bbappend and make this variable
point to it if you want to customize your network configuration.
- XENGUEST_IMAGE_NETWORK_TYPE: This variable can be set to "bridge" (default),
"nat" or "none".
The **bridge** type will add the domU vif interface to a bridge which also
contains the dom0 physical interface giving the guest direct access to the
external network.
The **nat** type will setup a private network between dom0 and domU, setup
the appropriate routing table, configure and run the kea dhcp4 server
on dom0 to serve the domU and apply the iptables rules to allow the guest
to acess the external network. The kea dhcp4 server configuration for
the guest can be customised by replacing the
"meta-arm-autonomy/recipes-extended/xenguest/files/kea-subnet4.json" file
in a xenguest-network.bbappend. The kea-subnet4.json file is installed in
the xenguest image and copied to
"/etc/xenguest/guests/${guestname}/files/kea-subnet4.json" when the guest
image is created. It will be consumed by the
"/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" script which is called by
"/etc/xen/scripts/vif-nat" script when starting/stopping the xenguest.
After guest start, "/etc/xenguest/init.post/xenguest-network-init-post.sh"
script is called to reload kea dhcp4 server with updated configuration,
after virtual network interface is ready.
In the guest project, the NAT port forward can be customised by changing
the XENGUEST_IMAGE_HOST_PORT (default: "1000 + ${domid}") and
XENGUEST_IMAGE_GUEST_PORT (default: "22") variables in local.conf or
xenguest-base-image.bbappend. This configuration is implemented and installed
in "/etc/xenguest/guests/${guestname}/files/00-xenguest-nat-port-forward.hook"
script which is called by "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook".
The **none** type will not affect any networking setting between on dom0 and
domU.
@@ -0,0 +1,7 @@
# Require extra machine specific settings
ARM_BSP_DYN_MACHINE_EXTRA_REQUIRE ?= ""
ARM_BSP_DYN_MACHINE_EXTRA_REQUIRE_n1sdp = "n1sdp-extra-settings.inc"
ARM_BSP_DYN_MACHINE_EXTRA_REQUIRE_fvp-base = "fvp-base-extra-settings.inc"
ARM_BSP_DYN_MACHINE_EXTRA_REQUIRE_juno = "juno-extra-settings.inc"
require ${ARM_BSP_DYN_MACHINE_EXTRA_REQUIRE}
@@ -0,0 +1,7 @@
# Extra machine settings for fvp-base
# FVP uses vda as hard drive and partition 2 is the
# default rootfs, so use vda3 for guest lvm
XENGUEST_MANAGER_VOLUME_DEVICE ?= "/dev/vda3"
XENGUEST_NETWORK_BRIDGE_MEMBERS ?= "eth0"
@@ -0,0 +1,4 @@
# Extra machine settings for juno
# Juno board has 2 network interfaces, add both of them to the bridge
XENGUEST_NETWORK_BRIDGE_MEMBERS ?= "eth0 eth1"
@@ -0,0 +1,40 @@
# Extra machine settings for n1sdp
# We need to extent the wks search path to be able to find the wks file set in
# ARM_AUTONOMY_WKS_FILE.
WKS_SEARCH_PATH_prepend := "${ARM_AUTONOMY_ARM_BSP_DYNAMIC_DIR}/wic:"
ARM_AUTONOMY_WKS_FILE ?= "arm-autonomy-n1sdp-efidisk.wks.in"
WKS_FILE = "${ARM_AUTONOMY_WKS_FILE}"
# Set the wks guest partition size and unit. It must be aligned with the sum of
# all XENGUEST_IMAGE_DISK_SIZE set for the guests. By default, LVM2 metadata is
# 1 MiB per physical volume, hence it needs to be taken into account when
# setting GUEST_PART_SIZE. The XENGUEST_IMAGE_DISK_SIZE default value is 4GiB.
GUEST_PART_SIZE ?= "4097"
GUEST_PART_SIZE_UNIT ?= "M"
# The GRUB_CFG_FILE affects arm-autonomy-n1sdp-efidisk.wks.in file
GRUB_CFG_FILE ?= "${ARM_AUTONOMY_ARM_BSP_DYNAMIC_DIR}/wic/arm-autonomy-n1sdp-grub.cfg"
# From arm-autonomy-n1sdp-efidisk.wks.in, the /boot partition is /dev/sda1, and
# the "/" partition is /dev/sda2.
XENGUEST_MANAGER_VOLUME_DEVICE ?= "/dev/sda3"
XENGUEST_NETWORK_BRIDGE_MEMBERS ?= "eth0"
# The XEN_DEVICETREE_DEPEND and XEN_DEVICETREE_DTBS variables aftect the
# xen-devicetree.bb recipe
XEN_DEVICETREE_DEPEND = "virtual/trusted-firmware-a:do_deploy"
XEN_DEVICETREE_DTBS ?= "n1sdp-single-chip.dtb"
# XEN_MOD_DEVICETREE_DTBS are the generated devicetrees for Xen. By default the
# xen-devicetree.bb recipe adds '-xen' suffix to it
XEN_MOD_DEVICETREE_DTBS ?= "n1sdp-single-chip-xen.dtb"
# When generating the wic image we need to have the xen deployed
do_image_wic[depends] += "xen:do_deploy"
# Select the extra files to be included in the boot partition
IMAGE_EFI_BOOT_FILES += "xen-n1sdp.efi;xen.efi"
IMAGE_EFI_BOOT_FILES += "${XEN_MOD_DEVICETREE_DTBS}"
@@ -0,0 +1,21 @@
# Use OVERRIDES to minimize the usage of
# ${@bb.utils.contains('DISTRO_FEATURES', 'xen', ...
OVERRIDES_append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d)}"
FILESEXTRAPATHS_prepend_xen := "${THISDIR}/${PN}:"
DEPLOY_EXTRA_DEPS ??= ""
DEPLOY_EXTRA_DEPS_xen = "xen:do_deploy xen-devicetree:do_deploy"
do_deploy[depends] += "${DEPLOY_EXTRA_DEPS}"
do_deploy_prepend_xen() {
# To avoid dependency loop between firmware-image-juno:do_install,
# xen:do_deploy and xen-devicetree:do_deploy when
# INITRAMFS_IMAGE_BUNDLE = "1", we need to handle the xen and
# xen-devicetree binaries copying in the do_deploy task.
cp ${DEPLOY_DIR_IMAGE}/xen-${COMPATIBLE_MACHINE}.efi \
${D}/${UNPACK_DIR}/SOFTWARE/xen
cp ${DEPLOY_DIR_IMAGE}/*xen.dtb \
${D}/${UNPACK_DIR}/SOFTWARE/
}
@@ -0,0 +1,78 @@
TITLE: Versatile Express Images Configuration File
[IMAGES]
TOTALIMAGES: 11 ;Number of Images (Max: 32)
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR0ADDRESS: 0x00000000 ;Image Flash Address
NOR0FILE: \SOFTWARE\fip.bin ;Image File Name
NOR0LOAD: 00000000 ;Image Load Address
NOR0ENTRY: 00000000 ;Image Entry Point
NOR1UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR1ADDRESS: 0x03EC0000 ;Image Flash Address
NOR1FILE: \SOFTWARE\bl1.bin ;Image File Name
NOR1LOAD: 00000000 ;Image Load Address
NOR1ENTRY: 00000000 ;Image Entry Point
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR2ADDRESS: 0x00500000 ;Image Flash Address
NOR2FILE: \SOFTWARE\Image ;Image File Name
NOR2NAME: norkern ;Rename kernel to norkern
NOR2LOAD: 00000000 ;Image Load Address
NOR2ENTRY: 00000000 ;Image Entry Point
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR3ADDRESS: 0x02700000 ;Image Flash Address
NOR3FILE: \SOFTWARE\juno-xen.dtb ;Image File Name
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
NOR3LOAD: 00000000 ;Image Load Address
NOR3ENTRY: 00000000 ;Image Entry Point
NOR4UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR4ADDRESS: 0x01D00000 ;Image Flash Address
NOR4FILE: \SOFTWARE\xen ;Image File Name
NOR4NAME: xen
NOR4LOAD: 00000000 ;Image Load Address
NOR4ENTRY: 00000000 ;Image Entry Point
NOR5UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR5ADDRESS: 0x025C0000 ;Image Flash Address
NOR5FILE: \SOFTWARE\hdlcdclk.dat ;Image File Name
NOR5LOAD: 00000000 ;Image Load Address
NOR5ENTRY: 00000000 ;Image Entry Point
NOR6UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR6ADDRESS: 0x03E40000 ;Image Flash Address
NOR6FILE: \SOFTWARE\scp_bl1.bin ;Image File Name
NOR6LOAD: 00000000 ;Image Load Address
NOR6ENTRY: 00000000 ;Image Entry Point
NOR7UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR7ADDRESS: 0x0BF00000 ;Image Flash Address
NOR7FILE: \SOFTWARE\startup.nsh ;Image File Name
NOR7NAME: startup.nsh
NOR7LOAD: 00000000 ;Image Load Address
NOR7ENTRY: 00000000 ;Image Entry Point
NOR8UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR8ADDRESS: 0x0BFC0000 ;Image Flash Address
NOR8FILE: \SOFTWARE\blank.img ;Image File Name
NOR8NAME: BOOTENV
NOR8LOAD: 00000000 ;Image Load Address
NOR8ENTRY: 00000000 ;Image Entry Point
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR9ADDRESS: 0x02600000 ;Image Flash Address
NOR9FILE: \SOFTWARE\selftest ;Image File Name
NOR9LOAD: 00000000 ;Image Load Address
NOR9ENTRY: 00000000 ;Image Entry Point
NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR10ADDRESS: 0x02780000 ;Image Flash Address
NOR10NAME: uEnv.txt
NOR10FILE: \SOFTWARE\uEnv.txt ;Image File Name
NOR10LOAD: 00000000 ;Image Load Address
NOR10ENTRY: 00000000 ;Image Entry Point
@@ -0,0 +1,78 @@
TITLE: Versatile Express Images Configuration File
[IMAGES]
TOTALIMAGES: 11 ;Number of Images (Max: 32)
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR0ADDRESS: 0x00000000 ;Image Flash Address
NOR0FILE: \SOFTWARE\fip.bin ;Image File Name
NOR0LOAD: 00000000 ;Image Load Address
NOR0ENTRY: 00000000 ;Image Entry Point
NOR1UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR1ADDRESS: 0x03EC0000 ;Image Flash Address
NOR1FILE: \SOFTWARE\bl1.bin ;Image File Name
NOR1LOAD: 00000000 ;Image Load Address
NOR1ENTRY: 00000000 ;Image Entry Point
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR2ADDRESS: 0x00500000 ;Image Flash Address
NOR2FILE: \SOFTWARE\Image ;Image File Name
NOR2NAME: norkern ;Rename kernel to norkern
NOR2LOAD: 00000000 ;Image Load Address
NOR2ENTRY: 00000000 ;Image Entry Point
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR3ADDRESS: 0x02700000 ;Image Flash Address
NOR3FILE: \SOFTWARE\juno-r1-xen.dtb ;Image File Name
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
NOR3LOAD: 00000000 ;Image Load Address
NOR3ENTRY: 00000000 ;Image Entry Point
NOR4UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR4ADDRESS: 0x01D00000 ;Image Flash Address
NOR4FILE: \SOFTWARE\xen ;Image File Name
NOR4NAME: xen
NOR4LOAD: 00000000 ;Image Load Address
NOR4ENTRY: 00000000 ;Image Entry Point
NOR5UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR5ADDRESS: 0x025C0000 ;Image Flash Address
NOR5FILE: \SOFTWARE\hdlcdclk.dat ;Image File Name
NOR5LOAD: 00000000 ;Image Load Address
NOR5ENTRY: 00000000 ;Image Entry Point
NOR6UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR6ADDRESS: 0x03E40000 ;Image Flash Address
NOR6FILE: \SOFTWARE\scp_bl1.bin ;Image File Name
NOR6LOAD: 00000000 ;Image Load Address
NOR6ENTRY: 00000000 ;Image Entry Point
NOR7UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR7ADDRESS: 0x0BF00000 ;Image Flash Address
NOR7FILE: \SOFTWARE\startup.nsh ;Image File Name
NOR7NAME: startup.nsh
NOR7LOAD: 00000000 ;Image Load Address
NOR7ENTRY: 00000000 ;Image Entry Point
NOR8UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR8ADDRESS: 0x0BFC0000 ;Image Flash Address
NOR8FILE: \SOFTWARE\blank.img ;Image File Name
NOR8NAME: BOOTENV
NOR8LOAD: 00000000 ;Image Load Address
NOR8ENTRY: 00000000 ;Image Entry Point
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR9ADDRESS: 0x02600000 ;Image Flash Address
NOR9FILE: \SOFTWARE\selftest ;Image File Name
NOR9LOAD: 00000000 ;Image Load Address
NOR9ENTRY: 00000000 ;Image Entry Point
NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR10ADDRESS: 0x02780000 ;Image Flash Address
NOR10NAME: uEnv.txt
NOR10FILE: \SOFTWARE\uEnv.txt ;Image File Name
NOR10LOAD: 00000000 ;Image Load Address
NOR10ENTRY: 00000000 ;Image Entry Point
@@ -0,0 +1,78 @@
TITLE: Versatile Express Images Configuration File
[IMAGES]
TOTALIMAGES: 11 ;Number of Images (Max: 32)
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR0ADDRESS: 0x00000000 ;Image Flash Address
NOR0FILE: \SOFTWARE\fip.bin ;Image File Name
NOR0LOAD: 00000000 ;Image Load Address
NOR0ENTRY: 00000000 ;Image Entry Point
NOR1UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR1ADDRESS: 0x03EC0000 ;Image Flash Address
NOR1FILE: \SOFTWARE\bl1.bin ;Image File Name
NOR1LOAD: 00000000 ;Image Load Address
NOR1ENTRY: 00000000 ;Image Entry Point
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR2ADDRESS: 0x00500000 ;Image Flash Address
NOR2FILE: \SOFTWARE\Image ;Image File Name
NOR2NAME: norkern ;Rename kernel to norkern
NOR2LOAD: 00000000 ;Image Load Address
NOR2ENTRY: 00000000 ;Image Entry Point
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR3ADDRESS: 0x02700000 ;Image Flash Address
NOR3FILE: \SOFTWARE\juno-r2-xen.dtb ;Image File Name
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
NOR3LOAD: 00000000 ;Image Load Address
NOR3ENTRY: 00000000 ;Image Entry Point
NOR4UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR4ADDRESS: 0x01D00000 ;Image Flash Address
NOR4FILE: \SOFTWARE\xen ;Image File Name
NOR4NAME: xen
NOR4LOAD: 00000000 ;Image Load Address
NOR4ENTRY: 00000000 ;Image Entry Point
NOR5UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR5ADDRESS: 0x025C0000 ;Image Flash Address
NOR5FILE: \SOFTWARE\hdlcdclk.dat ;Image File Name
NOR5LOAD: 00000000 ;Image Load Address
NOR5ENTRY: 00000000 ;Image Entry Point
NOR6UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR6ADDRESS: 0x03E40000 ;Image Flash Address
NOR6FILE: \SOFTWARE\scp_bl1.bin ;Image File Name
NOR6LOAD: 00000000 ;Image Load Address
NOR6ENTRY: 00000000 ;Image Entry Point
NOR7UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR7ADDRESS: 0x0BF00000 ;Image Flash Address
NOR7FILE: \SOFTWARE\startup.nsh ;Image File Name
NOR7NAME: startup.nsh
NOR7LOAD: 00000000 ;Image Load Address
NOR7ENTRY: 00000000 ;Image Entry Point
NOR8UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR8ADDRESS: 0x0BFC0000 ;Image Flash Address
NOR8FILE: \SOFTWARE\blank.img ;Image File Name
NOR8NAME: BOOTENV
NOR8LOAD: 00000000 ;Image Load Address
NOR8ENTRY: 00000000 ;Image Entry Point
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR9ADDRESS: 0x02600000 ;Image Flash Address
NOR9FILE: \SOFTWARE\selftest ;Image File Name
NOR9LOAD: 00000000 ;Image Load Address
NOR9ENTRY: 00000000 ;Image Entry Point
NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
NOR10ADDRESS: 0x02780000 ;Image Flash Address
NOR10NAME: uEnv.txt
NOR10FILE: \SOFTWARE\uEnv.txt ;Image File Name
NOR10LOAD: 00000000 ;Image Load Address
NOR10ENTRY: 00000000 ;Image Entry Point
@@ -0,0 +1,15 @@
xen_name=xen
xen_addr=0x84000000
uenvcmd=run mybootcmd
mybootcmd=echo Loading custom boot command; \
echo Loading kernel; \
afs load ${kernel_name} ${kernel_addr} ; \
if test $? -eq 1; then echo Loading ${kernel_alt_name} instead of ${kernel_name}; afs load ${kernel_alt_name} ${kernel_addr}; fi; \
echo Loading device tree; \
afs load ${fdtfile} ${fdt_addr}; \
if test $? -eq 1; then echo Loading ${fdt_alt_name} instead of ${fdtfile}; \
afs load ${fdt_alt_name} ${fdt_addr}; fi; fdt addr ${fdt_addr}; fdt resize; \
echo Loading Xen; \
afs load ${xen_name} ${xen_addr}; \
if test $? -eq 0; then echo Booting Xen; bootefi ${xen_addr} ${fdt_addr}; fi;
@@ -0,0 +1,11 @@
/*
* Disable IOMMU on juno board when Xen is used
*/
/ {
/* turn off iommu */
iommu@2b600000 {
status = "disabled";
};
};
@@ -0,0 +1,41 @@
/*
* Modify N1SDP DTB to work properly when Xen is used
*/
/ {
/*
* pmu is using PPI interrupts which are reserved by xen
* remove pm nodes
*/
/delete-node/ pmu;
/delete-node/ spe-pmu;
soc {
/*
* disable IOMMU until we have a proper support in xen
*/
/delete-node/ iommu@4f000000;
/delete-node/ iommu@4f400000;
/*
* Set extra registers required for PCI quirks to communicate with SCP
* and remove invalid properties due to removal
*/
pcie@68000000 {
reg = <0 0x68000000 0 0x1200000>,
<0 0x06000000 0 0x80000>,
<0 0x62000000 0 0x80000>;
/delete-property/ msi-map;
/delete-property/ iommu-map;
};
pcie@70000000 {
reg = <0 0x70000000 0 0x1200000>,
<0 0x06000000 0 0x80000>,
<0 0x60000000 0 0x80000>;
/delete-property/ msi-map;
/delete-property/ iommu-map;
};
};
};
@@ -0,0 +1,23 @@
# Platform dependent parameters
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
# Add a dtb snippet to turn off iommu in dom0 on Juno board
SRC_URI_append_juno = " file://xen-juno.dtsi"
XEN_DEVICETREE_DTSI_MERGE_append_juno = " xen-juno.dtsi"
# Add a dtb snippet to remove pmu and iommu in dom0 on N1SDP
SRC_URI_append_n1sdp = " file://xen-n1sdp.dtsi"
XEN_DEVICETREE_DTSI_MERGE_append_n1sdp = " xen-n1sdp.dtsi"
# For N1SDP, the XEN_DEVICETREE_DEPEND and XEN_DEVICETREE_DTBS variables are
# being set in meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
# Board specific configs
XEN_DEVICETREE_DOM0_BOOTARGS_append_juno = " root=/dev/sda1 rootwait"
XEN_DEVICETREE_XEN_BOOTARGS_append_juno = " console=dtuart dtuart=serial0 bootscrub=0 iommu=no"
XEN_DEVICETREE_DOM0_BOOTARGS_append_n1sdp = " root=/dev/sda2 rootwait"
XEN_DEVICETREE_XEN_BOOTARGS_append_n1sdp = " console=dtuart dtuart=serial0 bootscrub=0 iommu=no"
XEN_DEVICETREE_DOM0_BOOTARGS_append_fvp-base = " root=/dev/vda2"
XEN_DEVICETREE_XEN_BOOTARGS_append_fvp-base = " console=dtuart dtuart=serial0 bootscrub=0"
@@ -0,0 +1,2 @@
CONFIG_DEBUG=y
CONFIG_EARLY_PRINTK_FASTMODEL=y
@@ -0,0 +1,2 @@
CONFIG_DEBUG=y
CONFIG_EARLY_PRINTK_JUNO=y
@@ -0,0 +1,3 @@
CONFIG_DEBUG=y
CONFIG_EARLY_UART_CHOICE_PL011=y
CONFIG_EARLY_UART_BASE_ADDRESS=0x2a400000
@@ -0,0 +1,5 @@
CONFIG_EXPERT=y
# Enable ACPI support
CONFIG_ACPI=y
# Enable ARM Interrupt Translation Service (ITS) emulation
CONFIG_HAS_ITS=y
@@ -0,0 +1,15 @@
# FVP Base support
COMPATIBLE_MACHINE_fvp-base = "fvp-base"
FILESEXTRAPATHS_prepend_fvp-base := "${THISDIR}/files:"
SRC_URI_append_fvp-base = " file://early-printk.cfg"
# Juno support
COMPATIBLE_MACHINE_juno = "juno"
FILESEXTRAPATHS_prepend_juno := "${THISDIR}/files:"
SRC_URI_append_juno = " file://early-printk.cfg"
# N1SDP support
COMPATIBLE_MACHINE_n1sdp = "n1sdp"
FILESEXTRAPATHS_prepend_n1sdp := "${THISDIR}/files:"
SRC_URI_append_n1sdp = " file://n1sdp.cfg \
file://early-printk.cfg"
@@ -0,0 +1,4 @@
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access ZEN bit of CPACR1 core
# register.
# CONFIG_ARM64_SVE is not set
@@ -0,0 +1,3 @@
define KFEATURE_DESCRIPTION "Disable SVE support"
kconf non-hardware disable-arm64-sve.cfg
@@ -0,0 +1,15 @@
FILESEXTRAPATHS_prepend := "${THISDIR}:"
#
# arm-autonomy kmeta extra
#
SRC_URI_append = " file://arm-autonomy-kmeta-extra;type=kmeta;name=arm-autonomy-kmeta-extra;destsuffix=arm-autonomy-kmeta-extra"
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access XEN bit of CPACR1 core
# register.
LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE = "${@bb.utils.contains_any('DISTRO_FEATURES', \
'arm-autonomy-host arm-autonomy-guest', \
' features/arm-autonomy/disable-arm64-sve.scc','',d)}"
KERNEL_FEATURES_append_fvp-base = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}"
@@ -0,0 +1,14 @@
# short-description: Create an EFI disk image
# long-description: Creates a partitioned EFI disk image that the user
# can directly dd to boot media. Uses a custom grub.cfg file to configure the boot.
# First boot partition normally populated as /dev/sda1
part /boot --source bootimg-efi --sourceparams="loader=grub-efi" --ondisk sda --label msdos --active --align 1024
# Second rootfs partition normally populated as /dev/sda2
part / --source rootfs --ondisk sda --fstype=ext4 --label root --align 1024
# Third partition to accomodate guests images normally populated as /dev/sda3 (used by XENGUEST_MANAGER_VOLUME_DEVICE)
part --label guests --source empty --ondisk sda --size="${GUEST_PART_SIZE}${GUEST_PART_SIZE_UNIT}" --system-id 8e --align 1024
bootloader --ptable msdos --configfile="${GRUB_CFG_FILE}"
@@ -0,0 +1,28 @@
set term="vt100"
set default="3"
set timeout="5"
set kernel_cmdline="earlycon=pl011,0x2A400000 console=ttyAMA0,115200 root=/dev/sda2 rootwait"
menuentry 'N1SDP ACPI Boot' {
linux /Image $kernel_cmdline acpi=force
}
menuentry 'N1SDP Single-Chip Boot (Device Tree)' {
devicetree /n1sdp-single-chip.dtb
linux /Image $kernel_cmdline
}
menuentry 'N1SDP Multi-Chip Boot (Device Tree)' {
devicetree /n1sdp-multi-chip.dtb
linux /Image $kernel_cmdline
}
menuentry 'N1SDP Arm Autonomy (Xen) Single-Chip Boot (Device Tree)' {
# no_argumants under here is a workaround for a bug
# also any kernel or dom0 cmdline arguments has to be passed via dtb
# because any arguments put here will be ignored by xen
xen_hypervisor /xen.efi no_arguments=use_dtb_for_xen_or_kernel_cmdline
xen_module /Image
devicetree /n1sdp-single-chip-xen.dtb
}
@@ -0,0 +1,32 @@
# Use OVERRIDES to minimize the usage of
# ${@bb.utils.contains('DISTRO_FEATURES', 'xen', ...
OVERRIDES_append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d)}"
# Xen image to put in the image
# This should point to a file in the deploy image directory
BOOT_WRAPPER_AARCH64_XEN ??= "xen-${MACHINE}"
# Xen command line for the image
BOOT_WRAPPER_AARCH64_XEN_CMDLINE ??= "noreboot dom0_mem=256M"
BOOT_WRAPPER_AARCH64_XEN_CMDLINE_gem5-arm64 = "noreboot dom0_mem=256M console=dtuart \
dtuart=/uart@1c090000 bootscrub=0"
# Fix command line in the axf file for gem5-arm64 when Xen is present
BOOT_WRAPPER_AARCH64_CMDLINE_xen_gem5-arm64 = "console=hvc0 root=/dev/vda rw"
# Image generated by boot wrapper when Xen is present
BOOT_WRAPPER_AARCH64_IMAGE_xen ?= "xen-system.axf"
EXTRA_OECONF_append_xen = " \
--with-xen=${WORKDIR}/kernel/arch/arm64/boot/Image \
--with-xen-cmdline="" \
"
EXTRA_OEMAKE_append_xen = " \
XEN_IMAGE=${DEPLOY_DIR_IMAGE}/${BOOT_WRAPPER_AARCH64_XEN} \
XEN_CMDLINE="${BOOT_WRAPPER_AARCH64_XEN_CMDLINE}" \
"
# We need xen if it is activated
do_deploy[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen:do_deploy', '', d)}"
@@ -0,0 +1,7 @@
# When booting gem5-arm64 with Xen we need to set the cpu as Cortex A53 and
# remove support for pointer authentification
GEM5_RUN_EXTRA_append = " \
${@bb.utils.contains('DISTRO_FEATURES_NATIVE', 'arm-autonomy-host', \
'--param=system.cpu_cluster[0].cpus[0].isa[0].midr=0x410fd030 \
--param=system.cpu_cluster[0].cpus[0].isa[0].id_aa64isar1_el1=0x0', \
'', d)}"
@@ -0,0 +1,2 @@
CONFIG_DEBUG=y
CONFIG_EARLY_PRINTK_VEXPRESS=y
@@ -0,0 +1,4 @@
# gem5-arm64 support
COMPATIBLE_MACHINE_gem5-arm64 = "gem5-arm64"
FILESEXTRAPATHS_prepend_gem5-arm64 := "${THISDIR}/files:"
SRC_URI_append_gem5-arm64 = " file://early-printk.cfg"
@@ -0,0 +1 @@
XENGUEST_NETWORK_BRIDGE_MEMBERS_gem5-arm64 ?= "eth0"
@@ -0,0 +1,4 @@
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access ZEN bit of CPACR1 core
# register.
# CONFIG_ARM64_SVE is not set
@@ -0,0 +1,3 @@
define KFEATURE_DESCRIPTION "Disable SVE support"
kconf non-hardware disable-arm64-sve.cfg
@@ -0,0 +1,15 @@
FILESEXTRAPATHS_prepend_gem5-arm64 := "${THISDIR}:"
#
# arm-autonomy kmeta extra
#
SRC_URI_append_gem5-arm64 = " file://arm-autonomy-kmeta-extra-gem5;type=kmeta;name=arm-autonomy-kmeta-extra-gem5;destsuffix=arm-autonomy-kmeta-extra-gem5"
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access XEN bit of CPACR1 core
# register.
LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE_gem5-arm64 = "${@bb.utils.contains_any('DISTRO_FEATURES', \
'arm-autonomy-host arm-autonomy-guest', \
' features/arm-autonomy/disable-arm64-sve.scc','',d)}"
KERNEL_FEATURES_append_gem5-arm64 = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}"
@@ -0,0 +1 @@
GRUB_BUILDIN += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen_boot', '', d)}"
@@ -0,0 +1,19 @@
# SPDX-License-Identifier: MIT
#
# Copyright (c) 2020 Arm Limited
#
SUMMARY = "Docker runtime minimal requirements"
DESCRIPTION = "The minimal set of packages required for running Docker"
inherit packagegroup
RDEPENDS_${PN} = "\
docker-ce \
docker-ce-contrib \
kernel-module-xt-nat \
kernel-module-xt-masquerade \
kernel-module-xt-addrtype \
kernel-module-xt-conntrack \
kernel-module-xt-ipvs \
"
@@ -0,0 +1,127 @@
# Recipe to create a minimal Arm Autonomy stack host image
DESCRIPTION = "Arm Autonomy stack host minimal image"
inherit core-image
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
# The ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS variable can be used to include in the
# image one or several xenguest images.
# The list must be space separated and each entry must have the following
# format: URL[;guestname=NAME]
# - URL can be the full path to a file or a Yocto compatible SRC_URI url
# - guestname=NAME can be used to specify the name of the guest. If not
# specified the basename of the file (without .xenguest extension) is used.
# Here are examples of values:
# /home/mydir/myguest.xenguest;guestname=guest1
# http://www.url.com/testguest.xenguest
#
# If you are using the output of an other Yocto project, you should use the
# full path syntax instead of the Yocto SRC_URI to be able to use the
# symlink version of your image (as the real file has a new name on each
# build as it includes the date). You must not use SRC_URI type file:// as
# it will try to include the symlink and not the destination file which will
# be detected by the recipe and output an error 'Guest file is a symlink'.
#
# Guests can also be added using a bbapend to this recipe by adding entries
# to SRC_URI with parameter ;guestname=NAME to specify the destination
# guestname. The parameter guestname must be present as it is used to detect
# guests to be added
ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS ??= ""
# Includes minimal set required to start and manage guest. The xen specific
# modules are not explicitly included as they are built as part of the kernel
# image for performance reasons. It doesn't include all kernel modules to
# reduce the image size. If the kernel-modules packages are needed they can
# be appended to IMAGE_INSTALL in a bbappend.
IMAGE_INSTALL += " \
packagegroup-core-boot \
packagegroup-core-ssh-openssh \
qemu-system-i386 \
xenguest-manager \
xenguest-network \
"
# Build xen binary
EXTRA_IMAGEDEPENDS += "xen"
# Build xen-devicetree to produce a xen ready devicetree
EXTRA_IMAGEDEPENDS += "xen-devicetree"
python __anonymous() {
if bb.utils.contains('DISTRO_FEATURES', 'arm-autonomy-host', False, True, d):
raise bb.parse.SkipRecipe("DISTRO_FEATURES does not contain 'arm-autonomy-host'")
if bb.utils.contains('DISTRO_FEATURES', 'xen', False, True, d):
raise bb.parse.SkipRecipe("DISTRO_FEATURES does not contain 'xen'")
# Check in ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS for extra guests and add them
# to SRC_URI with xenguest parameter if not set
guestlist = d.getVar('ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS')
if guestlist:
for guest in guestlist.split():
# If the user just specified a file instead of file://FILE, add
# the file:// prefix
if guest.startswith('/'):
guestfile = ''
guestname = ''
if ';guestname=' in guest:
# user specified a guestname
guestname = guest.split(';guestname=')[1]
guestfile = guest.split(';guestname=')[0]
else:
# no guestname so use the basename
guestname = os.path.basename(guest)
guestfile = guest
# in case we have a link we need the destination
guestfile = os.path.realpath(guestfile)
# make sure the file exist to give a meaningfull error
if not os.path.exists(guestfile):
raise bb.parse.SkipRecipe("ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS entry does not exist: " + guest)
# In case the file is a symlink make sure we use the destination
d.appendVar('SRC_URI', ' file://' + guestfile + ';guestname=' + guestname)
else:
# we have a Yocto URL
try:
_, _, path, _, _, parm = bb.fetch.decodeurl(guest)
# force guestname param in if not already there
if not 'guestname' in parm:
guest += ';guestname=' + os.path.basename(path)
d.appendVar('SRC_URI', ' ' + guest)
except:
raise bb.parse.SkipRecipe("ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS contains an invalid entry: " + guest)
}
python add_extern_guests () {
# Destination directory on the rootfs
guestdir = d.getVar('IMAGE_ROOTFS') + d.getVar('datadir') + '/guests'
# Parse SRC_URI for files with ;guestname= parameter
src_uri = d.getVar('SRC_URI')
for entry in src_uri.split():
_, _, path, _, _, parm = bb.fetch.decodeurl(entry)
if 'guestname' in parm:
if os.path.islink(path):
realpath = os.path.realpath(path)
if not os.path.exists(realpath):
bb.fatal("ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS link does not resolve: " + path)
bb.note("Guest file is a symlink:\n " + path + "\nResolved to:\n " + realpath)
path = realpath
bb.utils.mkdirhier(guestdir)
dstname = parm['guestname']
# Add file extension if not there
if not dstname.endswith('.xenguest'):
dstname += '.xenguest'
if not bb.utils.copyfile(path, guestdir + '/' + dstname):
bb.fatal("Fail to copy Guest file " + path)
}
IMAGE_PREPROCESS_COMMAND += "add_extern_guests; "
@@ -0,0 +1,18 @@
# Add support for interface configuration via interfaces.d directory. This
# feature can be used by other packages to add network interface
# configuration by adding network network interface configuration file under
# interfaces.d directory.
do_install_append() {
# Add scan of interfaces.d to interfaces file
cp -f ${WORKDIR}/interfaces ${WORKDIR}/interfaces.subdir
echo "source-directory ${sysconfdir}/network/interfaces.d/" \
>> ${WORKDIR}/interfaces.subdir
# Create interfaces.d script in case nobody is adding a script
# so that there is no error about non existing directory
install -d -m 755 ${D}${sysconfdir}/network/interfaces.d
# Install our file instead of the original one
install -m 644 interfaces.subdir ${D}${sysconfdir}/network/interfaces
}
@@ -0,0 +1,16 @@
# if arm-autonomy-guest is activated, we are running as a xen guest so we must
# have a console on hvc0
# This is normally done in meta-virtualization if xen is activated but here
# we don't have xen activated.
#
SYSVINIT_ADDHVC0 = "${@bb.utils.contains('DISTRO_FEATURES', \
'arm-autonomy-guest', 'true', 'false', d)}"
do_install_append() {
if ${SYSVINIT_ADDHVC0}; then
echo "" >> ${D}${sysconfdir}/inittab
echo "X0:12345:respawn:/sbin/getty 115200 hvc0" >> \
${D}${sysconfdir}/inittab
fi
}
@@ -0,0 +1,12 @@
# Use OVERRIDES to minimize the usage of
# ${@bb.utils.contains('DISTRO_FEATURES', 'xen', ...
OVERRIDES_append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d)}"
# For Xen we only need the i386 binaries
QEMU_TARGETS_xen = "i386"
PACKAGECONFIG[noaudio] = "--audio-drv-list='',,"
PACKAGECONFIG_append_xen = " noaudio"
PACKAGECONFIG_remove_xen = "fdt sdl kvm"
require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'recipes-devtools/qemu/${BPN}-package-split.inc', '', d)}
@@ -0,0 +1,17 @@
/ {
chosen {
xen,dom0-bootargs = "###XEN_DOM0_BOOTARGS###";
xen,xen-bootargs = "###XEN_XEN_BOOTARGS###";
modules {
#size-cells = <0x00000001>;
#address-cells = <0x00000001>;
module@0 {
reg = <###XEN_DOM0_ADDR### ###XEN_DOM0_SIZE###>;
compatible = "multiboot,module";
};
};
};
};
@@ -0,0 +1,72 @@
# This recipe can be used to modify one or several DTBS to add
# entries required to declare and boot Linux as Dom0 from Xen
SRC_URI = "file://xen.dtsi.in"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "\
file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \
"
S = "${WORKDIR}"
DESCRIPTION = "Add entries in DTB for Xen and Dom0"
# Please refer to documentation/xen-devicetree.md for documentation on those
# parameters
XEN_DEVICETREE_DEPEND ?= "virtual/kernel:do_deploy"
XEN_DEVICETREE_DTBS ?= "${KERNEL_DEVICETREE}"
XEN_DEVICETREE_XEN_BOOTARGS ?= "noreboot dom0_mem=${XEN_DEVICETREE_DOM0_MEM}"
XEN_DEVICETREE_DOM0_MEM ?= "1024M"
XEN_DEVICETREE_DOM0_BOOTARGS ?= "console=hvc0 earlycon=xen"
XEN_DEVICETREE_DOM0_ADDR ?= "0x80080000"
XEN_DEVICETREE_DOM0_SIZE ?= "0x01000000"
XEN_DEVICETREE_DTSI_MERGE ?= "xen.dtsi"
# Our package does not generate any package for the rootfs but contributes to
# deploy
inherit nopackages deploy
DEPENDS += "dtc-native"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install[noexec] = "1"
do_deploy() {
if [ ! -f ${WORKDIR}/xen.dtsi.in ]; then
die "xen.dtsi.in does not exist"
fi
cat ${WORKDIR}/xen.dtsi.in \
| sed -e "s?###XEN_DOM0_BOOTARGS###?${XEN_DEVICETREE_DOM0_BOOTARGS}?" \
| sed -e "s?###XEN_XEN_BOOTARGS###?${XEN_DEVICETREE_XEN_BOOTARGS}?" \
| sed -e "s?###XEN_DOM0_ADDR###?${XEN_DEVICETREE_DOM0_ADDR}?" \
| sed -e "s?###XEN_DOM0_SIZE###?${XEN_DEVICETREE_DOM0_SIZE}?" \
> ${WORKDIR}/xen.dtsi
# Generate final dtbs
for dtbf in ${XEN_DEVICETREE_DTBS}; do
rdtb=`basename $dtbf`
if [ ! -f ${DEPLOY_DIR_IMAGE}/$rdtb ]; then
die "Wrong file in XEN_DEVICETREE_DTBS: ${DEPLOY_DIR_IMAGE}/$rdtb does not exist"
fi
dtc -I dtb -O dts -o ${WORKDIR}/dom0-linux.dts ${DEPLOY_DIR_IMAGE}/$rdtb
# Add external includes
for inc in ${XEN_DEVICETREE_DTSI_MERGE}; do
if [ ! -f ${WORKDIR}/${inc} ]; then
die "Wrong file in XEN_DEVICETREE_DTSI_MERGE: ${WORKDIR}/${inc} does not exist"
fi
echo "/include/ \"$inc\"" >> ${WORKDIR}/dom0-linux.dts
done
rdtbnoextn=`basename $dtbf ".dtb"`
dtc -I dts -O dtb \
-o ${WORKDIR}/${rdtbnoextn}-xen.dtb ${WORKDIR}/dom0-linux.dts
install -m 644 ${rdtbnoextn}-xen.dtb ${DEPLOYDIR}/.
done
}
do_deploy[depends] += "${XEN_DEVICETREE_DEPEND}"
addtask deploy after do_install
@@ -0,0 +1,40 @@
From 3b418b33265402aab0cb1bf2b745a25724bae2d8 Mon Sep 17 00:00:00 2001
Message-Id: <3b418b33265402aab0cb1bf2b745a25724bae2d8.1602684880.git.diego.sueiro@arm.com>
From: Bertrand Marquis <bertrand.marquis@arm.com>
Date: Tue, 18 Aug 2020 14:47:38 +0100
Subject: [PATCH] arm: Add Neoverse N1 processor identification
Add MIDR and CPU part numbers for Neoverse N1
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
xen/include/asm-arm/processor.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
index aa642e3..3ca67f8 100644
--- a/xen/include/asm-arm/processor.h
+++ b/xen/include/asm-arm/processor.h
@@ -58,6 +58,7 @@
#define ARM_CPU_PART_CORTEX_A73 0xD09
#define ARM_CPU_PART_CORTEX_A75 0xD0A
#define ARM_CPU_PART_CORTEX_A76 0xD0B
+#define ARM_CPU_PART_NEOVERSE_N1 0xD0C
#define MIDR_CORTEX_A12 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A12)
#define MIDR_CORTEX_A17 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A17)
@@ -68,6 +69,7 @@
#define MIDR_CORTEX_A73 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A73)
#define MIDR_CORTEX_A75 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A75)
#define MIDR_CORTEX_A76 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76)
+#define MIDR_NEOVERSE_N1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N1)
/* MPIDR Multiprocessor Affinity Register */
#define _MPIDR_UP (30)
--
2.7.4
@@ -0,0 +1,42 @@
From 858c0be8c2fa4125a0fa0acaa03ae730e5c7cb3c Mon Sep 17 00:00:00 2001
Message-Id: <858c0be8c2fa4125a0fa0acaa03ae730e5c7cb3c.1602684183.git.diego.sueiro@arm.com>
From: Bertrand Marquis <bertrand.marquis@arm.com>
Date: Tue, 18 Aug 2020 14:47:39 +0100
Subject: [PATCH] xen/arm: Enable CPU Erratum 1165522 for Neoverse
Enable CPU erratum of Speculative AT on the Neoverse N1 processor
versions r0p0 to r2p0.
Also Fix Cortex A76 Erratum string which had a wrong errata number.
Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
xen/arch/arm/cpuerrata.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index 0248893..6c09017 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -477,8 +477,14 @@ static const struct arm_cpu_capabilities arm_errata[] = {
},
#endif
{
+ /* Neoverse r0p0 - r2p0 */
+ .desc = "ARM erratum 1165522",
+ .capability = ARM64_WORKAROUND_AT_SPECULATE,
+ MIDR_RANGE(MIDR_NEOVERSE_N1, 0, 2 << MIDR_VARIANT_SHIFT),
+ },
+ {
/* Cortex-A76 r0p0 - r2p0 */
- .desc = "ARM erratum 116522",
+ .desc = "ARM erratum 1165522",
.capability = ARM64_WORKAROUND_AT_SPECULATE,
MIDR_RANGE(MIDR_CORTEX_A76, 0, 2 << MIDR_VARIANT_SHIFT),
},
--
2.7.4
@@ -0,0 +1,35 @@
From 1814a626fb5811184eda64fe22f0055df4600211 Mon Sep 17 00:00:00 2001
Message-Id: <1814a626fb5811184eda64fe22f0055df4600211.1602684203.git.diego.sueiro@arm.com>
From: Julien Grall <jgrall@amazon.com>
Date: Tue, 25 Aug 2020 18:38:10 +0100
Subject: [PATCH] xen/arm: Update silicon-errata.txt with the Neovers AT
erratum
Commit 858c0be8c2fa "xen/arm: Enable CPU Erratum 1165522 for Neoverse"
added a new erratum but forgot to update silicon-errata.txt.
Update the file accordingly to keep track of errata workaround in Xen.
Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
docs/misc/arm/silicon-errata.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/misc/arm/silicon-errata.txt b/docs/misc/arm/silicon-errata.txt
index 11e5a9d..e15d092 100644
--- a/docs/misc/arm/silicon-errata.txt
+++ b/docs/misc/arm/silicon-errata.txt
@@ -51,4 +51,5 @@ stable hypervisors.
| ARM | Cortex-A57 | #1319537 | N/A |
| ARM | Cortex-A72 | #1319367 | N/A |
| ARM | Cortex-A76 | #1165522 | N/A |
+| ARM | Neoverse-N1 | #1165522 | N/A
| ARM | MMU-500 | #842869 | N/A |
--
2.7.4
@@ -0,0 +1,51 @@
From 968bb86d04913f52d7678a842474f2a674a8b23e Mon Sep 17 00:00:00 2001
Message-Id: <968bb86d04913f52d7678a842474f2a674a8b23e.1602683678.git.diego.sueiro@arm.com>
From: Wei Chen <wei.chen@arm.com>
Date: Fri, 28 Aug 2020 02:34:03 +0000
Subject: [PATCH] xen/arm: Missing N1/A76/A75 FP registers in vCPU context
switch
Xen has cpu_has_fp/cpu_has_simd to detect whether the CPU supports
FP/SIMD or not. But currently, these two MACROs only consider value 0
of ID_AA64PFR0_EL1.FP/SIMD as FP/SIMD features enabled. But for CPUs
that support FP/SIMD and half-precision floating-point arithmetic, the
ID_AA64PFR0_EL1.FP/SIMD are 1 (see Arm ARM DDI0487F.b, D13.2.64).
For these CPUs, xen will treat them as no FP/SIMD support, the
vfp_save/restore_state will not take effect.
From the TRM documents of Cortex-A75/A76/N1, we know these CPUs support
basic Advanced SIMD/FP and half-precision floating-point arithmetic. In
this case, on N1/A76/A75 platforms, Xen will always miss the floating
pointer registers save/restore. If different vCPUs are running on the
same pCPU, the floating pointer registers will be corrupted randomly.
This patch fixes Xen on these new cores.
Signed-off-by: Wei Chen <wei.chen@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
xen/include/asm-arm/cpufeature.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index 674beb0..10878ea 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -13,8 +13,8 @@
#define cpu_has_el2_64 (boot_cpu_feature64(el2) >= 1)
#define cpu_has_el3_32 (boot_cpu_feature64(el3) == 2)
#define cpu_has_el3_64 (boot_cpu_feature64(el3) >= 1)
-#define cpu_has_fp (boot_cpu_feature64(fp) == 0)
-#define cpu_has_simd (boot_cpu_feature64(simd) == 0)
+#define cpu_has_fp (boot_cpu_feature64(fp) < 8)
+#define cpu_has_simd (boot_cpu_feature64(simd) < 8)
#define cpu_has_gicv3 (boot_cpu_feature64(gic) == 1)
#endif
--
2.7.4
@@ -0,0 +1,51 @@
From f4c1a541fa351e4f613471bbf397931f9e1ddd27 Mon Sep 17 00:00:00 2001
Message-Id: <f4c1a541fa351e4f613471bbf397931f9e1ddd27.1602683707.git.diego.sueiro@arm.com>
From: Wei Chen <wei.chen@arm.com>
Date: Fri, 28 Aug 2020 02:34:04 +0000
Subject: [PATCH] xen/arm: Throw messages for unknown FP/SIMD implement ID
Arm ID_AA64PFR0_EL1 register provides two fields to describe CPU
FP/SIMD implementations. Currently, we exactly know the meaning of
0x0, 0x1 and 0xf of these fields. Xen treats value < 8 as FP/SIMD
features presented. If there is a value 0x2 bumped in the future,
Xen behaviors for value <= 0x1 can also take effect. But what Xen
done for value <= 0x1 may not always cover new value 0x2 required.
We throw these messages to break the silence when Xen detected
unknown FP/SIMD IDs to notice user to check.
Signed-off-by: Wei Chen <wei.chen@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
xen/arch/arm/setup.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 7968cee..f16b33f 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -133,6 +133,18 @@ static void __init processor_id(void)
cpu_has_simd ? " AdvancedSIMD" : "",
cpu_has_gicv3 ? " GICv3-SysReg" : "");
+ /* Warn user if we find unknown floating-point features */
+ if ( cpu_has_fp && (boot_cpu_feature64(fp) >= 2) )
+ printk(XENLOG_WARNING "WARNING: Unknown Floating-point ID:%d, "
+ "this may result in corruption on the platform\n",
+ boot_cpu_feature64(fp));
+
+ /* Warn user if we find unknown AdvancedSIMD features */
+ if ( cpu_has_simd && (boot_cpu_feature64(simd) >= 2) )
+ printk(XENLOG_WARNING "WARNING: Unknown AdvancedSIMD ID:%d, "
+ "this may result in corruption on the platform\n",
+ boot_cpu_feature64(simd));
+
printk(" Debug Features: %016"PRIx64" %016"PRIx64"\n",
boot_cpu_data.dbg64.bits[0], boot_cpu_data.dbg64.bits[1]);
printk(" Auxiliary Features: %016"PRIx64" %016"PRIx64"\n",
--
2.7.4
@@ -0,0 +1,18 @@
Upstream-Status: Pending
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
Setting the hostname is failing because the "$XENBUS_PATH/domain"
doesn't exist anymore. To fix this we set it to dom$domid
Index: git/tools/hotplug/Linux/vif-nat
===================================================================
--- git.orig/tools/hotplug/Linux/vif-nat
+++ git/tools/hotplug/Linux/vif-nat
@@ -86,6 +86,7 @@ router_ip=$(routing_ip "$ip")
vif_ip=`echo ${ip} | awk -F/ '{print $1}'`
hostname=$(xenstore_read "$XENBUS_PATH/domain" | tr -- '_.:/+' '-----')
+[ -z "${hostname}" ] && hostname=dom$domid
if [ "$vifid" != "1" ]
then
hostname="$hostname-$vifid"
@@ -0,0 +1,9 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-vif-nat-fix-hostname.patch \
"
PACKAGECONFIG_remove = "\
${@bb.utils.contains('DISTRO_FEATURES', \
'arm-autonomy-host', \
'sdl', '', d)}"
@@ -0,0 +1,9 @@
# Make Xen machine specific
# This ensures that sstate is properly handled and that each machine can have
# its own configuration
PACKAGE_ARCH = "${MACHINE_ARCH}"
PACKAGECONFIG_remove = "\
${@bb.utils.contains('DISTRO_FEATURES', \
'arm-autonomy-host', \
'sdl', '', d)}"
@@ -0,0 +1,9 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-4.14:"
SRC_URI += " \
file://0001-arm-Add-Neoverse-N1-processor-identification.patch \
file://0002-xen-arm-Enable-CPU-Erratum-1165522-for-Neoverse.patch \
file://0003-xen-arm-Update-silicon-errata.txt-with-the-Neovers-A.patch \
file://0004-xen-arm-Missing-N1-A76-A75-FP-registers-in-vCPU-cont.patch \
file://0005-xen-arm-Throw-messages-for-unknown-FP-SIMD-implement.patch \
"
@@ -0,0 +1,138 @@
#============================================================================
# ${XEN_SCRIPT_DIR}/vif-post.d/00-vif-xenguest.hook
#
# Script for performing local configuration of a vif.
# This script will be sourced by, e.g., vif-bridge after the hotplugging
# system calls vif-bridge. The script is here and not simply executed as
# a udev rule because this allows simple access to several environment
# variables set by the calling vif-* script.
#
# Environment vars:
# command (add|remove|online|offline)
# dev vif interface name (required).
# main_ip IP address of Dom0
# ip list of IP networks for the vif, space-separated
# XENBUS_PATH path to this device's details in the XenStore (required).
#============================================================================
domid=$(xenstore_read "${XENBUS_PATH}/frontend-id")
guestname=$(xenstore_read "/local/domain/${domid}/name")
bridge=$(xenstore_read "${XENBUS_PATH}/bridge")
mac=$(xenstore_read "$XENBUS_PATH/mac")
kea_conf_file="/etc/kea/kea-dhcp4.conf"
if [ ! -f /etc/xenguest/guests/${guestname}/params.cfg ]; then
log debug "No /etc/xenguest/guests/${guestname}/params.cfg. Exiting."
return
fi
# Source the params file to get the choosen XENGUEST_NETWORK_TYPE
. /etc/xenguest/guests/${guestname}/params.cfg
# We need to get the xenguest subnet prefix to set the subnet and
# the fixed ip to assing to the guest.
get_subnet_prefix() {
# ${vif_ip} is set in the vif-nat script
echo ${vif_ip} | awk -F. '{print $1"."$2"."$3}'
}
subnetprefix=$(get_subnet_prefix)
kea_remove_conf_entry()
{
log debug "kea_remove_conf_entry"
claim_lock "vif-nat-kea"
# Remove the the xenguest kea config file inclusion in the kea main config
sed -i "/${kea_guest_config//'/'/'\/'}/d" "${kea_conf_file}"
# Remove interface entry 1st case: [ "dev1", "dev_to_remove" ]
sed -i "s/,\ \"$dev\"//" "${kea_conf_file}"
# Remove interface entry 2nd case: [ "dev_to_remove", "dev1" ]
sed -i "s/\"$dev\",\ //" "${kea_conf_file}"
# Remove interface entry 3rd case: [ "dev_to_remove" ]
sed -i "s/\[\ \"$dev\"\ \]/\[\ \]/" "${kea_conf_file}"
# Remove the generated the xenguest kea subnet conf file
rm ${XENGUEST_KEA_SUBNET_CONFIG}
keactrl reload
release_lock "vif-nat-kea"
}
kea_add_conf_entries()
{
log debug "kea_add_conf_entries"
claim_lock "vif-nat-kea"
# Include vif in the interfaces 1st case - no other entries:
search_for='\"interfaces\": \[ '
sed -i "/${search_for}\"*\"\ */ s/\ \]/,\ \"${dev}\"\ \]/g" "${kea_conf_file}"
sed -i "s/${search_for}]/${search_for}\"${dev}\"\ \]/g" "${kea_conf_file}"
# Include the xenguest kea subnet conf file in the kea main config
search_for='\"subnet4\": \['
sed -i "/$search_for/a $kea_guest_config" "${kea_conf_file}"
# Generate the xenguest kea subnet conf file
echo -e "$(eval "echo -e \"$(cat ${XENGUEST_KEA_SUBNET_TEMPLATE})\"")" \
> "${XENGUEST_KEA_SUBNET_CONFIG}"
release_lock "vif-nat-kea"
}
call_extra_hooks() {
for f in /etc/xenguest/guests/${guestname}/files/*.hook; do
if [ -x "$f" ]; then
log info "Executing $f"
. "$f"
if [ $? -ne 0 ]; then
log err "$f failed."
fi
else
log info "$f is not executable. Skipping."
fi
done
}
case "${XENGUEST_NETWORK_TYPE}" in
nat)
XENGUEST_KEA_SUBNET_TEMPLATE=${XENGUEST_KEA_SUBNET_TEMPLATE:-"/etc/xenguest/guests/${guestname}/files/kea-subnet4.json"}
if [ ! -f ${XENGUEST_KEA_SUBNET_TEMPLATE} ]; then
log debug "No ${XENGUEST_KEA_SUBNET_TEMPLATE} file. Aborting"
return
fi
XENGUEST_KEA_SUBNET_CONFIG="/etc/kea/kea-subnet4.dom$domid.json"
if [ ! -d "$(dirname ${XENGUEST_KEA_SUBNET_CONFIG})" ]; then
log debug "No kea configuration directory. Aborting"
return
fi
kea_guest_config="\ \ \ \ <?include \"${XENGUEST_KEA_SUBNET_CONFIG}\"?>"
case "$command" in
online)
kea_add_conf_entries
# Enable ip forwarding and NAT for the ${bridge} interface
sysctl -w net.ipv4.ip_forward=1
iptables_w -t nat -A POSTROUTING -o ${bridge} -j MASQUERADE -m comment --comment "dom${domid}"
;;
offline)
kea_remove_conf_entry
# Remove the NAT iptables rules created for the dom${domid}
guest_ipt_rule=$(iptables_w -t nat -vL POSTROUTING -n --line-number | grep -w dom${domid} | awk '{print $1}' | tac)
for rule in ${guest_ipt_rule}; do iptables_w -t nat --delete POSTROUTING ${rule}; done
# If there is no more NAT iptables rules we disable ip forwarding
ipt_nat_rules=$(iptables_w -t nat -vL POSTROUTING -n --line-number | grep MASQUERADE | awk '{print $1}')
[ -z "${ipt_nat_rules##*[!0-9]*}" ] && sysctl -w net.ipv4.ip_forward=0
;;
esac
# We might have extra configs to be applied (e.g.: NAT port forward).
call_extra_hooks
;;
esac
@@ -0,0 +1,48 @@
#============================================================================
# /etc/xenguest/guests/${guestname}/files/00-xenguest-nat-port-forward.hook
#
# Script for performing local configuration related to NAT port forwarding of
# a vif.
# This script will be sourced by
# /etc/xen/scripts/vif-post.d/00-vif-xenguest.hook when
# XENGUEST_IMAGE_NETWORK_TYPE="nat".
# The ${bridge} and ${domid} are set in the 00-vif-xenguest.hook context,
# and ${vip_if} in the vif-nat script context.
#
# Environment vars:
# command (add|remove|online|offline)
# dev vif interface name (required).
# main_ip IP address of Dom0
# ip list of IP networks for the vif, space-separated
# XENBUS_PATH path to this device's details in the XenStore (required).
#============================================================================
host_port="###HOST_PORT###"
guest_port="###GUEST_PORT###"
port_num_check() {
if [ ${host_port} -gt 65535 -o ${guest_port} -gt 65535 ]; then
log error "host_port=${host_port} or guest_port=${guest_port} greater than 65535."
return 1
fi
return 0
}
case "${command}" in
online)
port_num_check
if [ $? -eq 0 ]; then
iptables_w -t nat -A PREROUTING -i ${bridge} -p tcp \
--dport ${host_port} -j DNAT \
--to-destination ${vif_ip}:${guest_port} \
-m comment --comment "dom${domid}"
fi
;;
offline)
# Remove the NAT iptables rules created for the dom${domid}
guest_ipt_rule=$(iptables_w -t nat -vL PREROUTING -n --line-number \
| grep -w dom${domid} | awk '{print $1}' | tac)
for rule in ${guest_ipt_rule}; \
do iptables_w -t nat --delete PREROUTING ${rule}; done
;;
esac
@@ -0,0 +1,30 @@
# This file holds the minimal kea dhcp4 server configuration.
# It replaces existing kea dhcp configuration file via
# "/etc/init.d/kea-restore-default-config" on every system boot.
# The "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" called in the end of
# the vif-nat script will append each xenguest configuration to this file,
# to generate the final dhcp configuration.
# This file can be replaced with xenguest-network.bbappend.
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ ]
},
"lease-database": {
"type": "memfile",
"persist": false
},
"subnet4": [
{
"subnet": "192.0.2.0/24"
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [ { "output": "/var/log/kea-dhcp4.log" } ],
"severity": "INFO"
}
]
}
}
@@ -0,0 +1,29 @@
#!/bin/sh
#
# Xenguest Restore default kea dhcp4 configuration
# This script restores a dhcp4 server configuration, to prevent
# kea startup failures after random board hangs or powercuts.
#
case "$1" in
start)
ret=$(keactrl status | grep -i "dhcpv4 server" | cut -d ' ' -f 3)
if [ "$ret" = "active" ]; then
echo "WARNING: cowardly refusing to replace dhcp4 configuration"
echo "kea dhcp4 server is up and running!"
else
echo "Resetting kea dhcp4 configuration."
cp -f /etc/kea/kea-dhcp4.conf.original /etc/kea/kea-dhcp4.conf
fi
;;
status|stop|reload|force-reload|restart)
true
;;
*)
# do not advertise unreasonable commands that there is no reason
# to use with this device
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
exit 1
esac
exit $?
@@ -0,0 +1,35 @@
# This file holds the guest kea dhcp4 server options running on Dom0.
# The "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" called in the end of
# the vif-nat script will use this file to generate the final dhcp
# configuration.
# This file is added in the xenguest image and installed in dom0 under
# /etc/xenguest/guests/${guestname}/files/kea-subnet4.json when the guest
# image is created.
# Any customizations to it should be performed by replacing it via a bbappend.
# The \${vif_ip} and \${router_ip} variables are set in
# the vif-nat script context. The \${subnetprefix} and \${mac} variable are set in the
# 00-vif-xenguest.hook script context.
# The "subnet" configuration node is mandatory in order to have the dhcp
# properly running.
{
\"subnet\": \"${subnetprefix}.0/24\",
\"option-data\": [
{
\"name\": \"routers\",
\"data\": \"${router_ip}\"
},
{
\"name\": \"domain-name-servers\",
\"data\": \"8.8.8.8, 8.8.4.4\"
}
],
\"reservations\": [
{
\"hw-address\": \"${mac}\",
\"ip-address\": \"${vif_ip}\"
}
]
},
@@ -0,0 +1,21 @@
#!/bin/sh
# This script is setting up a virtual network interface connected to the
# xenguest-network-bridge if NETWORK_BRIDGE is set to 1 in the guest params
#
# Since this script is sourced by xenguest-manager, it can access variables
# such as ${guestname} from the parent file's scope, as well as those in
# params.cfg, for example XENGUEST_NETWORK_TYPE
BRIDGE_NAME="###BRIDGE_NAME###"
case "${XENGUEST_NETWORK_TYPE:=}" in
nat)
echo "vif = ['script=vif-nat']" >> ${guestcfgfile}
;;
bridge)
echo "vif = ['script=vif-bridge,bridge=${BRIDGE_NAME}']" >> ${guestcfgfile}
;;
*)
echo "${@}: XENGUEST_NETWORK_TYPE=$XENGUEST_NETWORK_TYPE invalid"
;;
esac
@@ -0,0 +1,88 @@
#!/bin/bash
#
# xenguest Init Script to start and stop xenguests during boot
#
XENGUEST_CONF_BASE="/etc/xenguest"
if [ ! -f ${XENGUEST_CONF_BASE}/xenguest-manager.conf ]; then
echo "No xenguest manager configuration !!"
exit 1
fi
source ${XENGUEST_CONF_BASE}/xenguest-manager.conf
# Make sure we properly initialized the Dom0
/usr/bin/xenguest-manager check-xen || exit $?
# Create guest list
guestlist=$(/usr/bin/xenguest-manager list)
# Unconfigured guests
case "$1" in
start)
echo "Starting xenguest"
# Create unconfigured guests
if [ -d ${XENGUEST_GUEST_DIR} ]; then
for f in $(find ${XENGUEST_GUEST_DIR} -name "*.xenguest" \
-exec basename {} .xenguest \;); do
if [ ! -f ${XENGUEST_CONF_BASE}/guests/${f}/guest.cfg ]; then
# Check if this guest should be auto booted
autoboot=$(/usr/bin/xenguest-mkimage dump-paramsconfig \
${XENGUEST_GUEST_DIR}/${f}.xenguest | \
grep GUEST_AUTOBOOT | sed -e "s,.*=,," | tr -d '"')
if [ "$autoboot" = "0" ]; then
echo "Do not create $f, autoboot disabled"
else
/usr/bin/xenguest-manager create \
${XENGUEST_GUEST_DIR}/${f}.xenguest
# Update guestlist
if [ $? -eq 0 ]; then
guestlist="${guestlist} ${f}"
fi
fi
fi
done
fi
if [ -n "${guestlist}" ]; then
for f in ${guestlist}; do
GUEST_AUTOBOOT="1"
if [ -f ${XENGUEST_CONF_BASE}/guests/${f}/params.cfg ]; then
source ${XENGUEST_CONF_BASE}/guests/${f}/params.cfg
fi
if [ "${GUEST_AUTOBOOT}" = "1" ]; then
/usr/bin/xenguest-manager start ${f}
fi
done
else
echo "No guest configured"
fi
;;
status)
true
;;
stop)
echo "Stopping xenguest"
for f in ${guestlist}; do
/usr/bin/xenguest-manager stop ${f}
done
;;
reload)
echo >&2 'Reload not available; use force-reload'; exit 1
;;
force-reload|restart)
echo "Restarting xenguest"
$0 stop
$0 start
;;
*)
# do not advertise unreasonable commands that there is no reason
# to use with this device
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
exit 1
esac
exit $?
@@ -0,0 +1,758 @@
#!/bin/bash
# This script manages xenguest
#
set -u
this="$0"
XENGUEST_CONF_BASE="/etc/xenguest"
LOGFILE="/var/log/xenguest"
if [ ! -f ${XENGUEST_CONF_BASE}/xenguest-manager.conf ]; then
echo "Cannot find xenguest manager configuration"
exit 1
fi
# Following variables must be set in configuration:
# XENGUEST_VOLUME_DEVICE: device to use for lvm
# XENGUEST_VOLUME_NAME: lvm volume name to create on device
source ${XENGUEST_CONF_BASE}/xenguest-manager.conf
PREF="xenguest:"
function usage() {
cat <<EOF
Usage $this ACTION [OPTIONS]
with ACTION being one of:
help
Display this help
create GUESTFILE [GUESTNAME]
Create a guest using xenguest image GUESTFILE and name it GUESTNAME.
This will extract and configure the guest and will also create the guest
disk if guest has one configured.
GUESTNAME is set to the basename of GUESTFILE if unspecified.
GUESTNAME guest must not exist
remove GUESTNAME
Remove GUESTNAME and destroy its disk (if it has one)
start GUESTNAME
Start guest GUESTNAME
stop|shutdown GUESTNAME
Stop guest GUESTNAME (send stop signal and let it shutdown normally)
kill|destroy GUESTNAME
Kill guest GUESTNAME (stop directly the guest without signaling it)
list
List configured guests
status
List guests and their current status (running or stopped)
EOF
}
function xenguest_volume_init()
{
# Return:
# 0 - success
# 1 - failure
if [ -z "${XENGUEST_VOLUME_DEVICE:-}" -o \
! -b ${XENGUEST_VOLUME_DEVICE:-} ]; then
echo "${PREF} Invalid volume device in configuration: ${XENGUEST_VOLUME_DEVICE:-}"
return 1
fi
if [ -z "${XENGUEST_VOLUME_NAME:-}" ]; then
echo "${PREF} No volume name in configuration, using vg-xen..."
XENGUEST_VOLUME_NAME="vg-xen"
fi
pvs ${XENGUEST_VOLUME_DEVICE} > /dev/null 2>&1
if [ $? -ne 0 ]; then
# Check if there is no filesystem in the block device
echo "lsblk -n -o FSTYPE ${XENGUEST_VOLUME_DEVICE}" >> ${LOGFILE} 2>&1
filesystem=$(lsblk -n -o FSTYPE ${XENGUEST_VOLUME_DEVICE} 2>> ${LOGFILE})
if [[ $? -eq 0 && -z "$filesystem" ]]; then
echo "${PREF} Initialize lvm on ${XENGUEST_VOLUME_DEVICE}"
echo "pvcreate -f ${XENGUEST_VOLUME_DEVICE}" >> ${LOGFILE} 2>&1
pvcreate -f ${XENGUEST_VOLUME_DEVICE} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error: initialing lvm on " \
"${XENGUEST_VOLUME_DEVICE} failed." | tee -a ${LOGFILE}
return 1
fi
else
[ -z "$filesystem" ] || \
echo "${PREF} Error: The ${XENGUEST_VOLUME_DEVICE} is already " \
"formatted as $filesystem." | tee -a ${LOGFILE}
return 1
fi
fi
vgs ${XENGUEST_VOLUME_NAME} > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Create ${XENGUEST_VOLUME_NAME} volume"
echo "vgcreate ${XENGUEST_VOLUME_NAME} ${XENGUEST_VOLUME_DEVICE}" \
>> ${LOGFILE} 2>&1
vgcreate ${XENGUEST_VOLUME_NAME} ${XENGUEST_VOLUME_DEVICE} \
>> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error: creating ${XENGUEST_VOLUME_NAME} volume " \
"failed." | tee -a ${LOGFILE}
return 1
fi
fi
return 0
}
# Detach a disk we attached to xen
function xenguest_detach_disk()
{
echo "xl block-detach 0 \$\(xl block-list 0 | " \
"grep \"domain/0\" | awk '{print \$1}'\)" \
>> ${LOGFILE} 2>&1
xl block-detach 0 $(xl block-list 0 | \
grep "domain/0" | awk '{print $1}') \
>> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error detaching partition ${part}"
return 1
fi
}
function xenguest_disk_init()
{
# Inputs:
# $1 - guestname
# $2 - guestfile
#
# Outputs:
# 0 - success
# 1 - failed at guest disk preparation
# 2 - failed at guest disk creation
guestname="$1"
guestfile="$2"
devname="/dev/${XENGUEST_VOLUME_NAME}/${guestname}"
source ${XENGUEST_CONF_BASE}/guests/${guestname}/disk.cfg
if [ ${DISK_SIZE:-0} -eq 0 ]; then
echo "${PREF} No disk for ${guestname}"
return
fi
echo "${PREF} Create ${guestname} disk."
# Init our volume
xenguest_volume_init ${guestname}
if [ $? -ne 0 ]; then
return 1
fi
echo "${PREF} Create hard drive for ${guestname}." \
"This might take a while..."
# Remove volume if it already exist
echo "lvs ${XENGUEST_VOLUME_NAME}/${guestname}" >> ${LOGFILE} 2>&1
lvs ${XENGUEST_VOLUME_NAME}/${guestname} >> ${LOGFILE} 2>&1
if [ $? -eq 0 ]; then
echo "lvremove -y ${devname}" >> ${LOGFILE} 2>&1
lvremove -y ${devname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error removing volume ${guestname}"
return 1
fi
fi
# Create volume
echo "lvcreate -y -L ${DISK_SIZE}G -n ${guestname} ${XENGUEST_VOLUME_NAME}" \
>> ${LOGFILE} 2>&1
lvcreate -y -L ${DISK_SIZE}G -n ${guestname} ${XENGUEST_VOLUME_NAME} \
>> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error creating volume ${guestname}"
return 1
fi
# Add partition table
echo "parted -s ${devname} mklabel msdos" >> ${LOGFILE} 2>&1
parted -s ${devname} mklabel msdos >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error creating partition table on ${guestname}"
return 1
fi
# Setup disk name in xen configuration
echo "xenguest-mkimage update ${XENGUEST_CONF_BASE}/guests/${guestname}" \
"--xen-disk=${devname}" >> ${LOGFILE} 2>&1
xenguest-mkimage update ${XENGUEST_CONF_BASE}/guests/${guestname} \
--xen-disk=${devname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error setting disk in xen configuration"
return 1
fi
# Create partitions
partstart="0"
# For each partition X the disk.cfg file should set a variable DISK_PARTX
# with a : separated list defining the partition:
# DISK_PART3="4:ext4:disk.tgz" means that partition 3 should be 4G formated
# with ext4 and initialized with the content of disk.tgz
for part in $(seq 1 4); do
eval partdesc="\${DISK_PART${part}:-0}"
size=$(echo ${partdesc} | sed -e "s/\(.*\):.*:.*/\1/")
fstype=$(echo ${partdesc} | sed -e "s/.*:\(.*\):.*/\1/")
content=$(echo ${partdesc} | sed -e "s/.*:.*:\(.*\)/\1/")
if [ "${size}" -ne 0 ]; then
# Size is expressed in GB, pass it in MB
size=$(expr ${size} \* 1024)
partend=$(expr ${partstart} + ${size})
# Let first MB of disk free for partition table
if [ ${partstart} -eq 0 ]; then
partstart="1"
fi
# Create partition
echo "parted -s ${devname} unit MB mkpart primary ${partstart}" \
"${partend}" >> ${LOGFILE} 2>&1
parted -s ${devname} unit MB mkpart primary ${partstart} \
${partend} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error adding partition ${part}"
return 1
fi
# Set next partition start to current partition end
partstart="${partend}"
# Sync to see the created partition
echo "sync" >> ${LOGFILE} 2>&1
sync >> ${LOGFILE} 2>&1
# Prepare format command
if [ -n "${fstype}" ]; then
case ${fstype} in
vfat|ext2|ext3|ext4)
formatcmd="mkfs.${fstype} -F"
;;
swap)
formatcmd="mkswap"
;;
*)
echo "${PREF} partition ${part} of ${guestname}" \
"fstype is invalid: ${fstype}"
return 1
;;
esac
else
formatcmd=""
fi
# Attach disk to xen
echo "xl block-attach 0 phy:${devname} xvda w" >> ${LOGFILE} 2>&1
xl block-attach 0 phy:${devname} xvda w >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error attaching partition ${part}"
return 1
fi
# Loop for 20s to wait until /dev/xvdaX appears
i=0
while [ ! -b /dev/xvda${part} ]; do
((i++))
if [[ "$i" == '40' ]]; then
break;
fi
sleep 0.5
done
if [ ! -b /dev/xvda${part} ]; then
echo "${PREF} Partition ${part} creation error"
return 2
fi
if [ -n "${formatcmd}" ]; then
echo "${formatcmd} /dev/xvda${part}" >> ${LOGFILE} 2>&1
${formatcmd} /dev/xvda${part}
if [ $? -ne 0 ]; then
echo "${PREF} Cannot create partition ${part} FS"
return 2
fi
fi
case ${content} in
*.img*)
decompress=""
case ${content} in
*.img.gz)
decompress='zcat'
;;
*.img.bz2)
decompress='bzcat'
;;
*.img)
decompress='cat'
;;
*)
# invalid/unknown compression type
echo "${PREF} Invalid file format in disk ${content}"
return 2
;;
esac
# dd into partition
echo "xenguest-mkimage extract-disk-file ${guestfile} " \
"${content} | ${decompress} | dd of=/dev/xvda${part} " >> ${LOGFILE} 2>&1
xenguest-mkimage extract-disk-file ${guestfile} ${content} \
| ${decompress} | dd of=/dev/xvda${part} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Cannot populate partition ${part}"
return 2
fi
;;
*.tar*)
tararg=""
case ${content} in
*.tar.gz)
tararg="z"
;;
*.tar.bz2)
tararg="j"
;;
*.tar.xz)
tararg="J"
;;
*.tar)
tararg=""
;;
*)
# invalid/unknown tar type
echo "${PREF} Invalid file format in disk ${content}"
return 2
;;
esac
# must mount the partition and extract
mntdir=$(mktemp -d)
echo "mount /dev/xvda${part} ${mntdir}" >> ${LOGFILE} 2>&1
mount /dev/xvda${part} ${mntdir} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Cannot mount partition ${part}"
rm -rf ${mntdir}
return 2
fi
# tar and unmount
echo "xenguest-mkimage extract-disk-file ${guestfile}" \
"${content} | tar -C ${mntdir} -x${tararg}f - " \
>> ${LOGFILE} 2>&1
xenguest-mkimage extract-disk-file ${guestfile} ${content} \
| tar -C ${mntdir} -x${tararg}f - >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Cannot populate partition ${part}"
umount ${mntdir}
rm -rf ${mntdir}
return 2
fi
echo "umount ${mntdir}" >> ${LOGFILE} 2>&1
umount ${mntdir} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error unmounting ${part}"
rm -rf ${mntdir}
return 2
fi
rm -rf ${mntdir}
;;
*)
#invalid content type
;;
esac
# Detach disk
xenguest_detach_disk
if [ $? -ne 0 ]; then
return 1
fi
fi
done
}
function xenguest_guest_create()
{
guestfile="$1"
guestname="$2"
# extract xenguest tar
# put xen config in etc ?
# if disk config file:
# disk init
# add partititions
echo "${PREF} Create ${guestname} using ${guestfile}"
rm -rf ${XENGUEST_CONF_BASE}/guests/${guestname}
mkdir -p ${XENGUEST_CONF_BASE}/guests/${guestname}
echo "xenguest-mkimage extract-config ${guestfile}" \
"${XENGUEST_CONF_BASE}/guests/${guestname}" >> ${LOGFILE} 2>&1
xenguest-mkimage extract-config ${guestfile} \
${XENGUEST_CONF_BASE}/guests/${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error extracting guest image"
exit 1
fi
# Set guest name inside config
echo "xenguest-mkimage update ${XENGUEST_CONF_BASE}/guests/${guestname}" \
"--xen-name=${guestname}" >> ${LOGFILE} 2>&1
xenguest-mkimage update ${XENGUEST_CONF_BASE}/guests/${guestname} \
--xen-name=${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error setting guest name"
xenguest_guest_remove ${guestname}
exit 1
fi
xenguest_disk_init ${guestname} ${guestfile}
disk_init_status=$?
if [ $disk_init_status -ne 0 ]; then
echo "${PREF} Error: ${guestname} disk creation failed."
if [ $disk_init_status -eq 2 ]; then
xenguest_detach_disk
fi
xenguest_guest_remove ${guestname}
exit 1
fi
}
function xenguest_guest_remove()
{
guestname="$1"
devname="/dev/${XENGUEST_VOLUME_NAME}/${guestname}"
# check if guest had a volume
echo "lvs ${XENGUEST_VOLUME_NAME}/${guestname}" >> ${LOGFILE} 2>&1
lvs ${XENGUEST_VOLUME_NAME}/${guestname} >> ${LOGFILE} 2>&1
if [ $? -eq 0 ]; then
# Remove guest volume
echo "${PREF} Removing ${guestname} volume. This might take a while..."
echo "lvremove -y ${devname}" >> ${LOGFILE} 2>&1
lvremove -y ${devname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error removing volume ${guestname}"
exit 1
fi
fi
# remove guest files
echo "${PREF} Removing ${guestname} configuration files."
rm -rf ${XENGUEST_CONF_BASE}/guests/${guestname}
}
function xenguest_guest_start()
{
guestname="${1}"
guestdir=${XENGUEST_CONF_BASE}/guests/${guestname}
guestcfgfile=$(mktemp -u "${guestname}.XXXXXX" --tmpdir="${guestdir}" --suffix=".cfg")
# Get guest configuration
source ${guestdir}/params.cfg
pushd ${guestdir} > /dev/null 2>&1
# create config by merging all configurations together
cat guest.cfg $(find guest.d -type f 2> /dev/null) > ${guestcfgfile}
# Build init script lists (ignore non existing dirs errors,
# sort alphabetically and run global scripts first)
#
# These scripts are sourced throughout the start operation if they
# are executable
init_pre="$(find ${XENGUEST_CONF_BASE}/init.pre -type f 2> /dev/null | \
sort) $(find ${guestdir}/init.pre -type f 2> /dev/null | sort)"
init_d="$(find ${XENGUEST_CONF_BASE}/init.d -type f 2> /dev/null | \
sort) $(find ${guestdir}/init.d -type f 2> /dev/null | sort)"
init_post="$(find ${XENGUEST_CONF_BASE}/init.post -type f 2> /dev/null | \
sort) $(find ${guestdir}/init.post -type f 2> /dev/null | sort)"
# call pre init scripts
for f in ${init_pre}; do
if [ -x "$f" ]; then
echo "( . $f )" >> ${LOGFILE} 2>&1
( . $f ) >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
rm -f ${guestcfgfile}
popd > /dev/null 2>&1
echo "Error in init script $f" >> ${LOGFILE} 2>&1
echo "${PREF} Error during pre init script of ${guestname}"
exit 1
fi
else
echo "$f is not executable. Skipping." >> ${LOGFILE}
fi
done
# Create non started guest
echo "xl create -p ${guestcfgfile}" >> ${LOGFILE} 2>&1
xl create -p ${guestcfgfile} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
rm -f ${guestcfgfile}
popd > /dev/null 2>&1
echo "${PREF} Error starting ${guestname}"
exit 1
fi
# call init scripts
for f in ${init_d}; do
if [ -x "$f" ]; then
echo "( . $f )" >> ${LOGFILE} 2>&1
( . $f ) >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
rm -f ${guestcfgfile}
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
xl destroy ${guestname} >> ${LOGFILE} 2>&1
popd > /dev/null 2>&1
echo "Error in init script $f" >> ${LOGFILE} 2>&1
echo "${PREF} Error during init script of ${guestname}"
exit 1
fi
else
echo "$f is not executable. Skipping." >> ${LOGFILE}
fi
done
# Start guest
echo "xl unpause ${guestname}" >> ${LOGFILE} 2>&1
xl unpause ${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
rm -f ${guestcfgfile}
popd > /dev/null 2>&1
echo "${PREF} Error starting ${guestname}"
exit 1
fi
# call post init scripts
for f in ${init_post}; do
if [ -x "$f" ]; then
echo "( . $f )" >> ${LOGFILE} 2>&1
( . $f ) >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
rm -f ${guestcfgfile}
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
xl destroy ${guestname} >> ${LOGFILE} 2>&1
popd > /dev/null 2>&1
echo "Error in init script $f" >> ${LOGFILE} 2>&1
echo "${PREF} Error during post init script of ${guestname}"
exit 1
fi
else
echo "$f is not executable. Skipping." >> ${LOGFILE}
fi
done
rm -f ${guestcfgfile}
popd > /dev/null 2>&1
}
function xenguest_guest_stop()
{
guestname="${1}"
echo "xl shutdown ${guestname}" >> ${LOGFILE} 2>&1
xl shutdown ${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error stopping ${guestname}"
exit 1
fi
}
function check_guest_arg()
{
cmd="${1}"
guestname="${2:-}"
if [ -z "${guestname:-}" ]; then
echo "${PREF} Usage ${this} ${cmd} GUESTNAME"
exit 1
fi
}
function check_guest_exist()
{
guestname="${1}"
if [ ! -f ${XENGUEST_CONF_BASE}/guests/${guestname}/guest.cfg -o \
! -f ${XENGUEST_CONF_BASE}/guests/${guestname}/params.cfg ]; then
echo "${PREF} Invalid guest name: ${guestname}"
exit 1
fi
}
function xl_list_contains()
{
guestname="${1}"
# Select first column of xl list, and find guestname exactly using regex
running=$(xl list | awk 'NR > 1 {print $1}' | grep "^${guestname}$" || echo)
if [ "${running}" = "${guestname}" ]; then
return 0
fi
return 1
}
function check_guest_running()
{
guestname="${1}"
if ! xl_list_contains $guestname; then
echo "${PREF} Guest ${guestname} is not running"
exit 1
fi
}
function check_guest_not_running()
{
guestname="${1}"
if xl_list_contains $guestname; then
echo "${PREF} Guest ${guestname} is running"
exit 1
fi
}
cmd="${1:-help}"
arg1="${2:-}"
arg2="${3:-}"
case ${cmd} in
help|--help|-h|-?)
usage
exit 0
;;
esac
# Check if we have a valid Dom0 booted with Xen
ERROR_MSG=$(xl info 2>&1)
if [ $? -ne 0 ]; then
echo "ERROR: Xen environment is not valid!!!" | tee -a ${LOGFILE}
echo "ERROR: Check if Xen has booted and the kernel configuration." \
| tee -a ${LOGFILE}
echo "ERROR: Output from 'xl info' command:" | tee -a ${LOGFILE}
echo "$ERROR_MSG" | tee -a ${LOGFILE}
exit 1
fi
case ${cmd} in
check-xen)
exit 0
;;
create)
guestfile="${arg1}"
guestname="${arg2}"
if [ -z "${guestfile}" -o ! -f "${guestfile}" ]; then
echo "${PREF} Usage ${this} create XENGUEST_FILE [NAME]"
exit 1
fi
if [ -z "${guestname}" ]; then
guestname=$(basename ${guestfile} .xenguest)
fi
if [ -f ${XENGUEST_CONF_BASE}/guests/${guestname}/guest.cfg ]; then
# Guest already exist
echo "${PREF} A guest ${guestname} already exist"
exit 1
fi
xenguest_guest_create ${guestfile} ${guestname}
echo "${PREF} ${guestname} created."
;;
remove)
guestname="${arg1:-}"
check_guest_arg ${cmd} ${guestname}
check_guest_exist ${guestname}
# We need to stop the guest first if it is running
if xl_list_contains $guestname; then
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
xl destroy ${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error killing ${guestname}"
exit 1
fi
fi
xenguest_guest_remove ${guestname}
echo "${PREF} ${guestname} removed."
;;
start)
guestname="${arg1:-}"
check_guest_arg ${cmd} ${guestname}
check_guest_exist ${guestname}
check_guest_not_running ${guestname}
xenguest_guest_start ${guestname}
;;
stop|shutdown)
guestname="${arg1:-}"
check_guest_arg ${cmd} ${guestname}
check_guest_exist ${guestname}
check_guest_running ${guestname}
xenguest_guest_stop ${guestname}
;;
kill|destroy)
guestname="${arg1:-}"
check_guest_arg ${cmd} ${guestname}
check_guest_exist ${guestname}
check_guest_running ${guestname}
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
xl destroy ${guestname} >> ${LOGFILE} 2>&1
if [ $? -ne 0 ]; then
echo "${PREF} Error killing ${guestname}"
exit 1
fi
;;
list)
if [ -d ${XENGUEST_CONF_BASE}/guests ]; then
for f in $(find ${XENGUEST_CONF_BASE}/guests -mindepth 1 \
-maxdepth 1 -type d -exec basename {} \;); do
if [ -f ${XENGUEST_CONF_BASE}/guests/$f/guest.cfg ]; then
echo "$f"
fi
done
fi
;;
status)
single_status() (
guestname="${1}"
check_guest_exist ${guestname}
if xl_list_contains $guestname; then
echo "${guestname}: Running"
else
echo "${guestname}: Stopped"
fi
)
guestname="${arg1}"
if [ -n "${guestname}" ]; then
single_status ${guestname}
else
guestlist=$($this list)
if [ -n "${guestlist}" ]; then
for f in ${guestlist}; do
single_status $f
done
fi
fi
;;
*)
echo "${PREF} Invalid argument ${cmd}"
exit 1
;;
esac
@@ -0,0 +1,789 @@
#!/bin/bash
# This script must be used to manipulate xenguest images
#
# xenguest image topology:
# params.cfg: guest global configuration file. Only edited using this script.
# guest.cfg: xen main configuration file. Only edited using this script.
# guest.d: directory contains files with custom xen configuration entries
# which are appended to guest.cfg before starting the guest
# files: directory where files used by xen configuration are stored
# disk.cfg: guest disk configuration file. Only edited using this script.
# (dtb, kernel image, etc)
# disk: directory where files for disk creation are stored
# init.[pre,d,post]: directories containing init pre, base and post scripts
set -u
set -e
this="$0"
IMAGE_TMPDIR=""
usage() {
cat <<EOF
Usage $this ACTION XENGUEST [ARGS]
Where XENGUEST is a xenguest image file or a xenguest directory.
The following actions are supported:
help Display this help
create Create a xenguest image
update Update/modify a xenguest image
partial Create partial xenguest image in a directory
pack Pack a xenguest directory into an image
check Check a xenguest image
dump-paramsconfig Display the guest configuration of a xenguest image
dump-xenconfig Display the xen configuration of a xenguest image
dump-diskconfig Display the disk configuration of a xenguest image
dump-init Display init scripts of a xenguest image
extract Extract a xenguest image content
extract-config Extract the guest configuration from a xenguest image
extract-disk-file Extract a disk file from a xenguest image
Use $this ACTION --help to have help on a specific action and its arguments.
EOF
}
usage-check() {
cat <<EOF
Usage $this check XENGUEST
Check a xenguest image or a xenguest directory.
EOF
}
usage-update-create() {
cat <<EOF
All arguments are handled in order.
Global configuration for the guest
--guest-config-reset reset guest global configuration
--set-param=PARAM disable parameter PARAM in guest global configuration
--set-param=PARAM=VAL set parameter PARAM to value VAL in guest global
configuration.
Example of parameters supported are:
GUEST_AUTOBOOT: if set to 1 (default), guest will be
automatically created and started during host init.
Xen configuration for the guest
--xen-reset-config reset xen guest configuration to default
--xen-name= disable name parameter in xen configuration
--xen-name=NAME set guest name in xen configuration
--xen-kernel= disable guest kernel parameter in xen configuration
--xen-kernel=FILE set guest kernel to FILE (file is added and xen
configuration is set to use it)
--xen-memory set guest memory size (in MB)
--xen-vcpus set guest number of virtual cpus
--xen-clean-extra set guest command line (extra) to an empty string
--xen-extra=ARG append ARG to the guest command line (with space)
use this several time to set command line.
To set the command line to "console=ttyS0 rw" do
--xen-extra=console=ttyS0 --xen-extra=rw
--xen-root= disable root parameter in xen configuration
--xen-root=ROOT set guest root in xen configuration
--xen-device-tree= disable device tree parameter in xen configuration
--xen-device-tree=FILE set guest device tree in xen configuration and add
file to xen files
--xen-ramdisk= disable ramdisk parameter in xen configuration
--xen-ramdisk=FILE set guest ramdisk in xen configuration and add
file to xen files
--xen-disk= disable disk parameter in xen configuration
--xen-disk=DEV set guest disk to device DEV (phy:DEV,xvda,w is set)
--xen-append=FILE append FILE content to xen configuration
Xen files
--xen-add-file=SRC:DST add file SRC as file DST in the xenguest image.
If DST already exist in the image, it is overwritten.
DST must be the same as arguments passed to other
options (like --xen-kernel)
--xen-rm-file=DST remove file DST from the xenguest image.
Init configuration
This can be used to add init scripts for the guest. There are 3 possible init
scripts which are called at different time. The pre scripts are called first,
then the xen guest is created in pause and standard init scripts are called.
Finally the xen guest is started then the post init scripts are called.
Each script is called with the name of the guest as first argument and
multiple scripts can be added (they must have different names).
--init-script=FILE add FILE as init script
--init-pre=FILE add FILE as pre init script
--init-post=FILE add FILE as post init script
Disk configuration
--disk-reset-config reset disk guest configuration to default (no disk)
--disk-size=SZ set guest disk size (in GB)
--disk-device=DEV set device to be used to create the guest disk
if unset or set to an empty string, the volume will be
create in the default manager volume group.
--disk-add-part=DEF add a partition to the guest disk with definition DEF
a partition definition must have the following format:
ID:SIZE:FORMAT:CONTENT where:
- ID is the partition numeric ID (1 to 4)
- FORMAT is the filesystem format (supported formats
are none, vfat, swap, ext2, ext3 and ext4) or can be
left empty to not format
- CONTENT can be used to point to a file added using
--disk-add-file to be used as partition initial
content (tar file or img file)
--disk-rm-part=ID remove partition ID from the guest disk
--disk-add-file=SRC:DST add file SRC as disk file DST in the xenguest image.
DST can then be used as a partition CONTENT.
--disk--rm-file=DST remove disk file DST from the xenguest image.
EOF
}
usage-create() {
cat <<EOF
Usage $this create XENGUEST [ARGS]
Create a xenguest image as XENGUEST file.
EOF
usage-update-create
}
usage-update() {
cat <<EOF
Usage $this update XENGUEST [ARGS]
Update or modify a xenguest image or a xenguest directory.
EOF
usage-update-create
}
usage-pack() {
cat <<EOF
Usage $this pack XENGUEST DESTFILE
Pack a xenguest directory in XENGUEST to create a xenguest image DESTFILE.
EOF
}
usage-partial() {
cat <<EOF
Usage $this partial XENGUEST [ARGS]
Update or modify a partial xenguest image.
EOF
usage-update-create
}
usage-dump-paramsconfig() {
cat <<EOF
Usage $this dump-paramsconfig XENGUEST
Dump the guest parameters of a xenguest image or directory
EOF
}
usage-dump-xenconfig() {
cat <<EOF
Usage $this dump-xenconfig XENGUEST
Dump the xen configuration of a xenguest image or directory
EOF
}
usage-dump-diskconfig() {
cat <<EOF
Usage $this dump-diskconfig XENGUEST
Dump the disk configuration of a xenguest image or directory
EOF
}
usage-extract() {
cat <<EOF
Usage $this extract XENGUEST DESTDIR
Extract guest to DESTDIR
EOF
}
usage-extract-config() {
cat <<EOF
Usage $this extract-config XENGUEST DESTDIR
Extract guest configuration to DESTDIR
EOF
}
usage-extract-disk-file() {
cat <<EOF
Usage $this extract-disk-file XENGUEST DISKFILE
Extract disk file DISKFILE to stdout.
EOF
}
check_image() {
local tstfile=${1}
if [ ! -e ${tstfile} -o ! -w ${tstfile} ]; then
echo "Error: File ${tstfile} does not exist or is not writeable"
exit 1
fi
if [ -f ${tstfile} ]; then
# This is a xenguest file
local res=$(tar -tvf ${tstfile} ./guest.cfg ./disk.cfg \
./params.cfg > /dev/null 2>&1 || echo "error")
if [ -n "${res}" ]; then
echo "Error: File ${tstfile} is not a valid xenguest"
exit 1
fi
elif [ -d ${tstfile} ]; then
if [ ! -f ${tstfile}/guest.cfg -o ! -f ${tstfile}/disk.cfg -o \
! ${tstfile}/params.cfg ]; then
echo "Error: Directory ${tstfile} is not a valid xenguest"
exit 1
fi
fi
}
params_config_reset() {
cat <<EOF > ${IMAGE_TMPDIR}/params.cfg
# Xenguest-image guest global configuration
#
# !! This file must not be modified manually !!
#
# You can use xenguest-image to modify parameters.
#
# Guest auto boot during Dom0 init
GUEST_AUTOBOOT="1"
EOF
}
params_config_setparam() {
param="${1}"
shift
value="$@"
if [ -z "$value" ]; then
sed -i "/.*${param}=.*/d" ${IMAGE_TMPDIR}/params.cfg
elif grep -e "^${param}=" ${IMAGE_TMPDIR}/params.cfg > /dev/null; then
sed -i "s/${param}=\".*\"/${param}=\"${value}\"/" \
${IMAGE_TMPDIR}/params.cfg
else
echo "${param}=\"${value}\"" >> ${IMAGE_TMPDIR}/params.cfg
fi
}
xen_config_reset() {
cat <<EOF > ${IMAGE_TMPDIR}/guest.cfg
# Xenguest-image main configuraiton
#
# !! This file must not be modified manually !!
#
# You can use xenguest-image to modify parameters.
#
# You can add custom entries to configuration in the guest.d directory.
# Guest name (set by manager when guest is created)
# name = ""
# Guest memory size in MB
memory = 1024
# Number of VCPUS
vcpus = 1
# Guest command line
extra = "earlyprintk=xenboot console=hvc0 rw"
# Guest root filesystem device (from guest point of view)
# root = "/dev/xvda2"
# Disk that will be used by the guest (set by manager when guest is created)
# disk = ['phy:/dev/vg-xen/guestname,xvda,w']
EOF
}
get_param_file() {
param="${1}"
if grep ${param} ${IMAGE_TMPDIR}/guest.cfg > /dev/null 2>&1; then
echo "${IMAGE_TMPDIR}/guest.cfg"
else
if [ ! -f ${IMAGE_TMPDIR}/guest.d/${param}.cfg ]; then
mkdir -p ${IMAGE_TMPDIR}/guest.d
echo "# ${param} = \"\"" > ${IMAGE_TMPDIR}/guest.d/${param}.cfg
fi
echo "${IMAGE_TMPDIR}/guest.d/${param}.cfg"
fi
}
xen_config_disable_param() {
param="${1}"
dst=$(get_param_file ${param})
sed -i "s@.*\(${param} = .*\)\$@# \1@" ${dst}
}
xen_config_set_number() {
param="${1}"
shift
value="$@"
dst=$(get_param_file ${param})
sed -i "s@.*${param} = .*@${param} = ${value}@" ${dst}
}
xen_config_set_string() {
param="${1}"
shift
value="$@"
dst=$(get_param_file ${param})
sed -i "s@.*${param} = .*@${param} = \"${value}\"@" ${dst}
}
xen_config_append_string() {
param="${1}"
shift
value="$@"
dst=$(get_param_file ${param})
sed -i "s@.*${param} = \"\([^\"]*\)\"@${param} = \"\1 ${value}\"@" ${dst}
}
xen_config_set_list() {
param="${1}"
shift
value=$(echo $@ | tr " " ",")
dst=$(get_param_file ${param})
sed -i "s@.*${param} = .*@${param} = ['${value}']@" ${dst}
}
disk_config_reset() {
echo "DISK_SIZE=\"0\"" > ${IMAGE_TMPDIR}/disk.cfg
echo "DISK_DEVICE=\"\"" >> ${IMAGE_TMPDIR}/disk.cfg
}
disk_config_rm_part() {
partid=$1
sed -i "/DISK_PART${partid}=.*/d" ${IMAGE_TMPDIR}/disk.cfg
}
disk_config_add_part() {
partconf="${1}"
partid=$(echo ${partconf} | sed -e "s/:.*//")
partinfo=$(echo ${partconf} | sed -e "s/[^:]*://")
# Make sure we don't add the same partition twice
disk_config_rm_part ${partid}
echo "DISK_PART${partid}=\"${partinfo}\"" >> \
${IMAGE_TMPDIR}/disk.cfg
}
# We need an action as first argument
action="${1:-}"
if [ -z "${action}" ]; then
echo "Error: No ACTION provided"
usage
exit 1
fi
# Only help does not require a xenguest argument so treat this first
# while there we also check that user is asking for a supported action
case $action in
help|--help|-h|-?)
usage
exit 0
;;
check|create|update|pack|partial)
;;
dump-xenconfig|dump-diskconfig|dump-init|dump-paramsconfig)
;;
extract|extract-config|extract-disk-file)
;;
*)
echo "Error: Invalid action $action"
exit 1
;;
esac
# Second argument should be the file name or directory
guestfile="${2:-}"
# Handle user asking for help on a specific action
case $guestfile in
help|--help|-h|-?)
usage-${action}
exit 0
;;
esac
if [ -z "${guestfile}" ]; then
echo "Error: no GUESTFILE provided"
usage
exit 1
fi
shift 2
case ${action} in
check)
check_image ${guestfile}
echo "Image is OK"
exit 0
;;
dump-paramsconfig)
check_image ${guestfile}
echo "Guest configuration:"
if [ -f ${guestfile} ]; then
tar -xOf ${guestfile} ./params.cfg
else
cat ${guestfile}/params.cfg
fi
exit 0
;;
dump-xenconfig)
check_image ${guestfile}
echo "Xen configuration:"
if [ -f ${guestfile} ]; then
tar -xOf ${guestfile} ./guest.cfg
tar -xOf ${guestfile} ./guest.d 2> /dev/null || true
else
cat ${guestfile}/guest.cfg
cat ${guestfile}/guest.d/* 2> /dev/null || true
fi
echo
exit 0
;;
dump-diskconfig)
check_image ${guestfile}
echo "Disk configuration:"
if [ -f ${guestfile} ]; then
tar -xOf ${guestfile} ./disk.cfg
else
cat ${guestfile}/disk.cfg
fi
echo
exit 0
;;
dump-init)
check_image ${guestfile}
for init in init.d init-pre init-post; do
echo "=== ${init} ==="
if [ -f ${guestfile} ]; then
tar -xOf ${guestfile} ./${init} 2> /dev/null || \
echo "No ${init} scripts."
else
cat ${guestfile}/${init}/* 2> /dev/null || \
echo "No ${init} scripts."
fi
echo "==============="
echo
done
exit 0
;;
pack)
check_image ${guestfile}
if [ ! -d ${guestfile} ]; then
echo "Error: Pack can only be done on a xenguest directory"
exit 1
fi
if [ -z "${1:-}" ] || [ -f ${1} ]; then
echo "Error: No destination file or already existing file"
exit 1
fi
tar -C ${guestfile} -cf ${1} .
exit 0
;;
extract)
check_image ${guestfile}
if [ -d ${guestfile} ]; then
echo "Error: Cannot extract config from xenguest directory"
exit 1
fi
if [ -z "${1:-}" ] || [ ! -d ${1} ]; then
echo "Error: No destination directory for image extract"
exit 1
fi
tar -C ${1} -xf ${guestfile}
exit 0
;;
extract-config)
check_image ${guestfile}
if [ -d ${guestfile} ]; then
echo "Error: Cannot extract config from xenguest directory"
exit 1
fi
if [ -z "${1:-}" ] || [ ! -d ${1} ]; then
echo "Error: No destination directory for config extract"
exit 1
fi
#extract all but disk files
tar -C ${1} --exclude='./disk' -xf ${guestfile}
exit 0
;;
extract-disk-file)
check_image ${guestfile}
if [ -d ${guestfile} ]; then
echo "Error: Cannot extract disk file from xenguest directory" >&2
exit 1
fi
if [ -z "${1:-}" ]; then
echo "Error: No file to extract" >&2
exit 1
fi
tar -xOf ${guestfile} ./disk/${1}
exit 0
;;
create)
if [ -f ${guestfile} ]; then
echo "Error: File ${guestfile} already exist"
exit 1
elif [ -d ${guestfile} ]; then
if [ -n "$(ls -A ${guestfile})" ]; then
echo "Error: Directory ${guestfile} is not empty"
exit 1
fi
IMAGE_TMPDIR=$(realpath -m ${guestfile})
else
IMAGE_TMPDIR=$(mktemp -d)
fi
# Create initial content
params_config_reset
xen_config_reset
disk_config_reset
;;
update)
check_image ${guestfile}
if [ -f ${guestfile} ]; then
# Extract the image to update it
IMAGE_TMPDIR=$(mktemp -d)
tar -C ${IMAGE_TMPDIR} -xf ${guestfile}
else
IMAGE_TMPDIR=$(realpath -m ${guestfile})
fi
;;
partial)
if [ -e ${guestfile} -a ! -d ${guestfile} ]; then
echo "Error: Invalid partial output directory"
exit 1
fi
mkdir -p ${guestfile}
IMAGE_TMPDIR=$(realpath -m ${guestfile})
;;
*)
echo "Invalid action ${action}"
usage
exit 1
;;
esac
# Process command line arguments
for arg in "${@}"; do
case ${arg} in
--*=*)
optarg=$(echo ${arg} | sed -e "s/[^=]*=//")
;;
*)
optarg=""
;;
esac
case ${arg} in
--guest-reset-config)
params_config_reset
;;
--set-param=*=*)
param_name=$(echo $optarg | sed -e "s/=.*//")
param_value=$(echo $optarg | sed -e "s/[^=]*=//")
params_config_setparam "$param_name" "$param_value"
;;
--set-param=*)
params_config_setparam "$optarg"
;;
--xen-reset-config)
xen_config_create
;;
--xen-name=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "name"
else
xen_config_set_string "name" "${optarg}"
fi
;;
--xen-kernel=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "kernel"
rm -f ${IMAGE_TMPDIR}/files/kernel
else
if [ ! -f ${optarg} ]; then
echo "Error: invalid kernel file ${optarg}"
exit 1
fi
xen_config_set_string "kernel" "files/kernel"
mkdir -p ${IMAGE_TMPDIR}/files
install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/kernel
fi
;;
--xen-memory=*)
xen_config_set_number "memory" ${optarg}
;;
--xen-vcpus=*)
xen_config_set_number "vcpus" ${optarg}
;;
--xen-clean-extra)
xen_config_set_string "extra" ""
;;
--xen-extra=*)
xen_config_append_string "extra" ${optarg}
;;
--xen-root=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "root"
else
xen_config_set_string "root" "${optarg}"
fi
;;
--xen-device-tree=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "device_tree"
rm -f ${IMAGE_TMPDIR}/files/guest.dtb
else
if [ ! -f ${optarg} ]; then
echo "Error: invalid dtb file ${optarg}"
exit 1
fi
xen_config_set_string "device_tree" "files/guest.dtb"
mkdir -p ${IMAGE_TMPDIR}/files
install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/guest.dtb
fi
;;
--xen-ramdisk=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "ramdisk"
rm -f ${IMAGE_TMPDIR}/files/ramdisk.img
else
if [ ! -f ${optarg} ]; then
echo "Error: invalid ramdisk file ${optarg}"
exit 1
fi
xen_config_set_string "ramdisk" "files/ramdisk.img"
mkdir -p ${IMAGE_TMPDIR}/files
install -m 644 ${optarg} ${IMAGE_TMPDIR}/files/ramdisk.img
fi
;;
--xen-disk=*)
if [ -z "${optarg}" ]; then
xen_config_disable_param "disk"
else
xen_config_set_list "disk" "phy:${optarg}" "xvda" "w"
fi
;;
--xen-append=*)
if [ ! -f ${optarg} ]; then
echo "Error: invalid xen append file ${optarg}"
exit 1
fi
mkdir -p ${IMAGE_TMPDIR}/guest.d
install -m 755 ${optarg} ${IMAGE_TMPDIR}/guest.d/.
;;
--xen-add-file=*)
src=$(echo "${optarg}" | sed -e "s/:.*//")
dst=$(echo "${optarg}" | sed -e "s/.*://")
if [ ! -f ${src} ]; then
echo "Error: Invalid file: ${src}"
rm -rf ${IMAGE_TMPDIR}
exit 1
fi
if [ -z "${dst}" ]; then
dst=$(basename ${src})
fi
mkdir -p ${IMAGE_TMPDIR}/files/$(dirname ${dst})
cp -f ${src} ${IMAGE_TMPDIR}/files/${dst}
;;
--xen-rm-file=*)
rm -f ${IMAGE_TMPDIR}/files/${optarg}
;;
--init-script=*|--init-pre=*|--init-post=*)
dst=""
case $arg in
--init-script=*)
dst="init.d"
;;
--init-pre=*)
dst="init.pre"
;;
--init-post=*)
dst="init.post"
;;
esac
if [ ! -f ${optarg} ]; then
echo "${optarg} does not point to a valid file"
exit 1
else
mkdir -p ${IMAGE_TMPDIR}/${dst}
install -m 755 ${optarg} ${IMAGE_TMPDIR}/${dst}/.
fi
;;
--disk-reset-config)
disk_config_reset
;;
--disk-size=*)
sed -i "s/DISK_SIZE=.*/DISK_SIZE=\"${optarg}\"/" \
${IMAGE_TMPDIR}/disk.cfg
;;
--disk-device=*)
sed -i "s/DISK_DEVICE=.*/DISK_SIZE=\"${optarg}\"/" \
${IMAGE_TMPDIR}/disk.cfg
;;
--disk-add-part=*)
disk_config_add_part ${optarg}
;;
--disk-rm-part=*)
disk_config_rm_part ${optarg}
;;
--disk-add-file=*)
src=$(echo "${optarg}" | sed -e "s/:.*//")
dst=$(echo "${optarg}" | sed -e "s/.*://")
if [ ! -f ${src} ]; then
echo "Error: Invalid disk file: ${src}"
rm -rf ${IMAGE_TMPDIR}
exit 1
fi
if [ -z "${dst}" ]; then
dst=$(basename ${src})
fi
mkdir -p ${IMAGE_TMPDIR}/disk/$(dirname ${dst})
cp -f ${src} ${IMAGE_TMPDIR}/disk/${dst}
;;
--disk-rm-file=*)
rm -f ${IMAGE_TMPDIR}/disk/${optarg}
;;
*)
echo "Unsupported command: ${arg}"
exit 1
;;
esac
done
if [ ! -d ${guestfile} ]; then
# If the original guest was in a file we need to repack the file
# with the changes we did on it in the IMAGE_TMPDIR
rm -f ${guestfile}
tar -C ${IMAGE_TMPDIR} -cf ${guestfile} .
rm -rf ${IMAGE_TMPDIR}
fi
@@ -0,0 +1,3 @@
# Xenguest Network Bridge interface configuration
auto ###BRIDGE_NAME###
iface ###BRIDGE_NAME### inet dhcp
@@ -0,0 +1,44 @@
#!/bin/sh
#
# Xenguest Network Bridge init
# This script creates a network bridge and add host interfaces to it
# It will then be used by xen guests to connect to the external nework
#
INTFS="###BRIDGE_MEMBERS###"
BR_INTF="###BRIDGE_NAME###"
case "$1" in
start)
echo "Starting $BR_INTF"
brctl addbr $BR_INTF
for intf in $INTFS; do
echo "Adding $intf to $BR_INTF"
brctl addif $BR_INTF $intf
done
;;
status)
true
;;
stop)
echo "Stopping $BR_INTF"
ifdown $BR_INTF
brctl delbr $BR_INTF
;;
reload)
echo >&2 'Reload not available; use force-reload'; exit 1
;;
force-reload|restart)
echo "Restarting host-bridge"
$0 stop
$0 start
;;
*)
# do not advertise unreasonable commands that there is no reason
# to use with this device
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
exit 1
esac
exit $?
@@ -0,0 +1,45 @@
#!/bin/sh
# This script is to reload kea dhcp4 server when guest interface will be ready
# include locking functions
. /etc/xen/scripts/locking.sh
set +u
# $1 is vif name, e.g. "vif/15/0"
# returns 0 on success,
# 1 otherwize
#
check_if_vif_is_ready() {
ret=($(xl network-list "${guestname}" | grep "${1}"))
# ${ret[4]} is network interface status value
# 1 means vif is not ready
# 4 means vif is ready
[ "${ret[4]}" = "4" ] && return 0
return 1
}
case "${XENGUEST_NETWORK_TYPE:-}" in
nat)
vif_name="$(xl network-list ${guestname} | grep -o vif.*)"
for try in {1..20}
do
if check_if_vif_is_ready "${vif_name}"; then
claim_lock "vif-nat-kea"
keactrl reload
release_lock "vif-nat-kea"
exit 0
fi
echo "Waiting for ${vif_name} - network interface is not ready..."\
" try #${try}" >> "${LOGFILE}" 2>&1
sleep 1
done
echo "ERROR: Failed to get ${vif_name} "\
"network interface ready!" >> "${LOGFILE}" 2>&1
exit 1
;;
*)
echo "No action needed" >> "${LOGFILE}" 2>&1
;;
esac
@@ -0,0 +1,149 @@
# Create a xenguest base image
#
# This recipe creates a base image that is then extended by other recipes
# through xenguest-image class.
# xenguest image type is using this as base to add a kernel and a disk image
# to create a guest
#
# The recipe is also adding files in those directories to the xenguest image:
# - ${WORKDIR}/extend/disk-files: all files in this directory will be added to
# the guest disk files (using --disk-add-file)
# - ${WORKDIR}/extend/files: all files in this directory will be added to the
# guest xen files (using --xen-add-file)
# - ${WORKDIR}/extend/guest.d: all files in this directory will be added to
# the xen append configuration files (using --xen-append)
# - ${WORKDIR}/extend/init.[pre|post|d]: all files in those directories will
# be added to the corresponding init scripts (using --init-[pre|post|script])
# You can bbappend this recipe and put files in ${WORKDIR}/extend to add
# elements to the image.
#
DESCRIPTION = "Xenguest Base Image"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
# When XENGUEST_IMAGE_NETWORK_TYPE="nat", the "00-xenguest-nat-port-forward.hook"
# is called by "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" to apply NAT
# port forwarding. Both dom0 and domU ports can be be set by changing the
# XENGUEST_IMAGE_HOST_PORT and XENGUEST_IMAGE_GUEST_PORT variables in local.conf
# or xenguest-base-image.bbappend. The XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT
# can also be replaced in a xenguest-base-image.bbappend
XENGUEST_IMAGE_HOST_PORT ?= "\$( expr 1000 + \${domid} )"
XENGUEST_IMAGE_GUEST_PORT ?= "22"
XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT ?= "00-xenguest-nat-port-forward.hook"
#
# The following variables can contain SRC_URI compatible entries to add
# files to the xenguest image.
# You can set those variable in local.conf to add one or several files
# For example to add a boot.tar.gz file that has to be downloaded to the file
# useable for disk partition initialisation:
# XENGUEST_IMAGE_SRC_URI_DISK_FILES += "https://www.test.com/files/boot.tar.gz"
# Add disk files
XENGUEST_IMAGE_SRC_URI_DISK_FILES ??= ""
# Add xen files
# Any extrafiles files to be added to XENGUEST_IMAGE_SRC_URI_XEN_FILES should
# be performed via XENGUEST_IMAGE_SRC_URI_XEN_FILES_append.
# The kea-subnet4.json holds the kea dhcp4 subnet configuration for Dom0.
# And it is used when XENGUEST_IMAGE_NETWORK_TYPE="nat".
# Any customizations to it should be performed by replacing it
# via a xenguest-network.bbappend.
# The XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT file is only added if the
# variable is set.
XENGUEST_IMAGE_SRC_URI_XEN_FILES = "file://kea-subnet4.json \
${@ "file://" + d.getVar('XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT') \
if d.getVar('XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT') else "" } \
"
# Add xen configuration elements
XENGUEST_IMAGE_SRC_URI_XEN_CONFIG ??= ""
# Add pre init script
XENGUEST_IMAGE_SRC_URI_INIT_PRE ??= ""
# Add init script
XENGUEST_IMAGE_SRC_URI_INIT ??= ""
# Add post init script
XENGUEST_IMAGE_SRC_URI_INIT_POST ??= ""
S = "${WORKDIR}"
inherit deploy xenguest-image
# parse XENGUEST_IMAGE_SRC_URI_ variables and add them to SRC_URI
python __anonymous() {
def parse_extend_variable(d, varname, destdir):
list = d.getVar(varname)
if list:
for entry in list.split():
#Check the URL
try:
decode = bb.fetch.decodeurl(entry)
d.appendVar('SRC_URI', ' ' + entry + ';unpack=0;subdir=extend/' + destdir)
except:
bb.fatal("%s: %s contains an invalid URL: %s" \
% (d.getVar('PF'), varname, entry))
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_DISK_FILES', 'disk-files')
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_XEN_FILES', 'files')
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_XEN_CONFIG', 'guest.d')
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT_PRE', 'init.pre')
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT', 'init.d')
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT_POST', 'init.post')
}
# Make sure we are removing old files before redoing a fetch
do_fetch[cleandirs] += "${WORKDIR}/extend"
do_fetch[vardeps] += "XENGUEST_IMAGE_HOST_PORT XENGUEST_IMAGE_GUEST_PORT"
do_compile[noexec] = "1"
do_install[noexec] = "1"
add_extend_files() {
local subdir="$1"
local cmd="$2"
local stripdest="${3:-n}"
if [ -d ${WORKDIR}/extend/$subdir ]; then
filelist=$(find ${WORKDIR}/extend/$subdir -type f)
if [ -n "$filelist" ]; then
for f in $filelist; do
if [ "$stripdest" = "y" ]; then
call_xenguest_mkimage update --$cmd=$f:$(basename $f)
else
call_xenguest_mkimage update --$cmd=$f
fi
done
fi
fi
}
do_configure() {
if [ -f ${WORKDIR}/extend/files/${XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT} ]; then
sed -i "s,###HOST_PORT###,${XENGUEST_IMAGE_HOST_PORT}," \
${WORKDIR}/extend/files/${XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT}
sed -i "s,###GUEST_PORT###,${XENGUEST_IMAGE_GUEST_PORT}," \
${WORKDIR}/extend/files/${XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT}
fi
}
do_deploy() {
# Create a new image
xenguest_image_create
# Add our extra files if any
add_extend_files "disk-files" "disk-add-file" "y"
add_extend_files "files" "xen-add-file" "y"
add_extend_files "guest.d" "xen-append"
add_extend_files "init.pre" "init-pre"
add_extend_files "init.d" "init-script"
add_extend_files "init.post" "init-post"
}
addtask deploy after do_install before do_build
@@ -0,0 +1,52 @@
# Xenguest manager recipe
#
# xenguest-manager is a tool to control xen guest (e.g. create, start, stop)
#
DESCRIPTION = "Xen Guest Manager"
LICENSE = "MIT"
SRC_URI = " \
file://xenguest-manager \
file://xenguest-init \
"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
S = "${WORKDIR}"
# Please refer to documentation/xenguest-manager.md for documentation on those
# parameters
XENGUEST_MANAGER_VOLUME_DEVICE ?= "/dev/sda2"
XENGUEST_MANAGER_VOLUME_NAME ?= "vg-xen"
XENGUEST_MANAGER_GUEST_DIR ?= "${datadir}/guests/"
# We add an init script to create and start guests automatically
INITSCRIPT_NAME = "xenguest"
INITSCRIPT_PARAMS = "defaults 90"
inherit update-rc.d
do_compile() {
echo "XENGUEST_VOLUME_DEVICE=\"${XENGUEST_MANAGER_VOLUME_DEVICE}\"" > \
xenguest-manager.conf
echo "XENGUEST_VOLUME_NAME=\"${XENGUEST_MANAGER_VOLUME_NAME}\"" >> \
xenguest-manager.conf
echo "XENGUEST_GUEST_DIR=\"${XENGUEST_MANAGER_GUEST_DIR}\"" >> \
xenguest-manager.conf
}
do_install() {
install -d -m 755 ${D}${bindir}
install -m 755 xenguest-manager ${D}${bindir}/.
install -d -m 755 ${D}${sysconfdir}/xenguest
install -m 644 xenguest-manager.conf ${D}${sysconfdir}/xenguest/.
install -d -m 755 ${D}${sysconfdir}/init.d
install -m 755 xenguest-init ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
install -d -m 755 ${D}${XENGUEST_GUEST_DIR}
}
# Things that we need on the target
RDEPENDS_${PN} += "bash tar xenguest-mkimage lvm2 xen-tools parted e2fsprogs dosfstools"
FILES_${PN} += "${bindir}/xenguest-manager \
${sysconfdir}/xenguest"
@@ -0,0 +1,31 @@
# Xenguest mkimage recipe
#
# xenguest-mkimage is a tool to create/modify images to be used as xen guests
# Produced images contains a xen configuration and several optional components
# (kernel, device-tree, disk definition and files, init scripts) which all
# together fully define a full xen guest
DESCRIPTION = "Xenguest mkimage tool"
LICENSE = "MIT"
SRC_URI = "file://xenguest-mkimage"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
S = "${WORKDIR}"
# Can be built native also to produce xenguest images during Yocto build
BBCLASSEXTEND = "native"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install() {
install -d -m 755 ${D}${bindir}
install -m 755 xenguest-mkimage ${D}${bindir}/.
}
# We need bash and tar
RDEPENDS_${PN} = "bash tar"
FILES_${PN} = "${bindir}/xenguest-mkimage"
@@ -0,0 +1,95 @@
# Recipe to handle xenguest network configuration
DESCRIPTION = "Xenguest Network"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
S = "${WORKDIR}"
# Please refer to documentation/xenguest-network-bridge.md for documentation on
# those parameters
XENGUEST_NETWORK_BRIDGE_NAME ?= "xenbr0"
# The XENGUEST_NETWORK_BRIDGE_MEMBERS should be set in a machine.conf
# or bbappend file.
#XENGUEST_NETWORK_BRIDGE_MEMBERS ?= "eth0"
XENGUEST_NETWORK_BRIDGE_CONFIG ?= "xenguest-network-bridge-dhcp.cfg.in"
SRC_URI = " \
file://xenguest-network-bridge.in \
file://xenguest-network-bridge-dhcp.cfg.in \
file://network-bridge.sh.in \
file://00-vif-xenguest.hook \
file://xenguest-network-init-post.sh \
file://kea-dhcp4.conf \
file://kea-restore-default-config \
"
PACKAGES =+ "${PN}-kea-dhcp4"
# Bridge configurator needs to run before S01networking init script
# Prefix with a_ to make sure it is executed in runlevel 01 before others
INITSCRIPT_PACKAGES = "${PN} ${PN}-kea-dhcp4"
INITSCRIPT_NAME_${PN} = "a_xenguest-network-bridge"
INITSCRIPT_PARAMS_${PN} = "defaults 01"
# Kea configuration needs to be restored before kea init scripts:
# Kea dhcp4 server is 30, so lets use 20, to have higher priority
INITSCRIPT_NAME_${PN}-kea-dhcp4 = "kea-restore-default-config"
INITSCRIPT_PARAMS_${PN}-kea-dhcp4 = "defaults 20"
inherit update-rc.d
do_install() {
cat ${WORKDIR}/xenguest-network-bridge.in \
| sed -e "s,###BRIDGE_MEMBERS###,${XENGUEST_NETWORK_BRIDGE_MEMBERS}," \
| sed -e "s,###BRIDGE_NAME###,${XENGUEST_NETWORK_BRIDGE_NAME}," \
> ${WORKDIR}/xenguest-network-bridge
cat ${WORKDIR}/${XENGUEST_NETWORK_BRIDGE_CONFIG} \
| sed -e "s,###BRIDGE_NAME###,${XENGUEST_NETWORK_BRIDGE_NAME}," \
> ${WORKDIR}/xenguest-network-bridge.cfg
cat ${WORKDIR}/network-bridge.sh.in \
| sed -e "s,###BRIDGE_NAME###,${XENGUEST_NETWORK_BRIDGE_NAME}," \
> ${WORKDIR}/network-bridge.sh
install -d -m 755 ${D}${sysconfdir}/init.d
install -m 755 ${WORKDIR}/xenguest-network-bridge \
${D}${sysconfdir}/init.d/${INITSCRIPT_NAME_${PN}}
install -d -m 755 ${D}${sysconfdir}/network/interfaces.d
install -m 755 ${WORKDIR}/xenguest-network-bridge.cfg \
${D}${sysconfdir}/network/interfaces.d/.
install -d -m 755 ${D}${sysconfdir}/xenguest/init.pre
install -m 755 ${WORKDIR}/network-bridge.sh \
${D}${sysconfdir}/xenguest/init.pre/.
install -d ${D}${sysconfdir}/xen/scripts/vif-post.d
install -m 755 ${WORKDIR}/00-vif-xenguest.hook \
${D}${sysconfdir}/xen/scripts/vif-post.d/.
install -d -m 755 ${D}${sysconfdir}/xenguest/init.post
install -m 755 ${WORKDIR}/xenguest-network-init-post.sh \
${D}${sysconfdir}/xenguest/init.post/.
install -m 755 ${WORKDIR}/kea-restore-default-config \
${D}${sysconfdir}/init.d/.
install -d -m 755 ${D}${sysconfdir}/kea/
install -m 755 ${WORKDIR}/kea-dhcp4.conf \
${D}${sysconfdir}/kea/kea-dhcp4.conf.original
}
RDEPENDS_${PN} += "bridge-utils \
iptables \
kea \
${PN}-kea-dhcp4 \
kernel-module-xt-tcpudp \
kernel-module-xt-physdev \
kernel-module-xt-comment \
kernel-module-xt-nat \
kernel-module-xt-masquerade \
"
FILES_${PN} += "${sysconfdir}/network/interfaces.d/xenguest-network-bridge.cfg"
FILES_${PN} += "${sysconfdir}/xenguest/init.pre/network-bridge.sh"
FILES_${PN} += "${sysconfdir}/xen/scripts/vif-post.d/00-vif-xenguest.hook"
FILES_${PN}-kea-dhcp4 = "${sysconfdir}/kea/kea-dhcp4.conf.original"
FILES_${PN}-kea-dhcp4 += "${sysconfdir}/init.d/${INITSCRIPT_NAME_${PN}-kea-dhcp4}"
FILES_${PN}-kea-dhcp4 += "${sysconfdir}/xenguest/init.post/xenguest-network-init-post.sh"
@@ -0,0 +1,38 @@
# Create a xenguest image with kernel but no rootfs or an external rootfs
DESCRIPTION = "Xenguest No Disk Image"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
S = "${WORKDIR}"
inherit deploy xenguest-image
# Name of the file we create in deploy
XENGUEST_IMAGE_NODISK_DEPLOY = "xenguest-nodisk-image.xenguest"
# use a local copy to pack all together
XENGUEST_IMAGE_DEPLOY_DIR = "${WORKDIR}/tmp-xenguest"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install[noexec] = "1"
do_deploy() {
xenguest_image_clone
# Add kernel to the image
if [ -n "${XENGUEST_IMAGE_KERNEL}" ]; then
call_xenguest_mkimage partial \
--xen-kernel=${DEPLOY_DIR_IMAGE}/${XENGUEST_IMAGE_KERNEL}
fi
# Pack and deploy the final image
rm -f ${DEPLOYDIR}/${XENGUEST_IMAGE_NODISK_DEPLOY}
call_xenguest_mkimage pack ${DEPLOYDIR}/${XENGUEST_IMAGE_NODISK_DEPLOY}
}
do_deploy[depends] += "virtual/kernel:do_deploy"
do_deploy[depends] += "xenguest-base-image:do_deploy"
addtask deploy before do_build after do_install
@@ -0,0 +1,5 @@
define KMACHINE arm64-autonomy-guest
define KTYPE standard
define KARCH arm64
include arm64-autonomy-guest.scc
@@ -0,0 +1,2 @@
CONFIG_ARM64=y
CONFIG_SMP=y
@@ -0,0 +1,6 @@
include ktypes/standard/standard.scc
include features/input/input.scc
include features/net/net.scc
include cfg/timer/no_hz.scc
kconf hardware arm64-autonomy-guest.cfg
@@ -0,0 +1,83 @@
From f88af7229f6f22ce7313c11a0bbb9c88317b7c5e Mon Sep 17 00:00:00 2001
Message-Id: <f88af7229f6f22ce7313c11a0bbb9c88317b7c5e.1602759709.git.diego.sueiro@arm.com>
From: Stefano Stabellini <stefano.stabellini@xilinx.com>
Date: Thu, 24 Sep 2020 16:49:55 -0700
Subject: [PATCH] xen/arm: do not setup the runstate info page if kpti is
enabled
The VCPUOP_register_runstate_memory_area hypercall takes a virtual
address of a buffer as a parameter. The semantics of the hypercall are
such that the virtual address should always be valid.
When KPTI is enabled and we are running userspace code, the virtual
address is not valid, thus, Linux is violating the semantics of
VCPUOP_register_runstate_memory_area.
Do not call VCPUOP_register_runstate_memory_area when KPTI is enabled.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
CC: Bertrand Marquis <Bertrand.Marquis@arm.com>
CC: boris.ostrovsky@oracle.com
CC: jgross@suse.com
Link: https://lore.kernel.org/r/20200924234955.15455-1-sstabellini@kernel.org
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Upstream-Status: Backport
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
---
arch/arm/include/asm/xen/page.h | 5 +++++
arch/arm/xen/enlighten.c | 6 ++++--
arch/arm64/include/asm/xen/page.h | 6 ++++++
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
index 31bbc80..dc7f6e9 100644
--- a/arch/arm/include/asm/xen/page.h
+++ b/arch/arm/include/asm/xen/page.h
@@ -1 +1,6 @@
#include <xen/arm/page.h>
+
+static inline bool xen_kernel_unmapped_at_usr(void)
+{
+ return false;
+}
diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index e93145d..ea76562 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -158,7 +158,8 @@ static int xen_starting_cpu(unsigned int cpu)
BUG_ON(err);
per_cpu(xen_vcpu, cpu) = vcpup;
- xen_setup_runstate_info(cpu);
+ if (!xen_kernel_unmapped_at_usr())
+ xen_setup_runstate_info(cpu);
after_register_vcpu_info:
enable_percpu_irq(xen_events_irq, 0);
@@ -387,7 +388,8 @@ static int __init xen_guest_init(void)
return -EINVAL;
}
- xen_time_setup_guest();
+ if (!xen_kernel_unmapped_at_usr())
+ xen_time_setup_guest();
if (xen_initial_domain())
pvclock_gtod_register_notifier(&xen_pvclock_gtod_notifier);
diff --git a/arch/arm64/include/asm/xen/page.h b/arch/arm64/include/asm/xen/page.h
index 31bbc80..dffdc77 100644
--- a/arch/arm64/include/asm/xen/page.h
+++ b/arch/arm64/include/asm/xen/page.h
@@ -1 +1,7 @@
#include <xen/arm/page.h>
+#include <asm/mmu.h>
+
+static inline bool xen_kernel_unmapped_at_usr(void)
+{
+ return arm64_kernel_unmapped_at_el0();
+}
--
2.7.4
@@ -0,0 +1,27 @@
CONFIG_OVERLAY_FS=y
CONFIG_NAMESPACES=y
CONFIG_NET_NS=y
CONFIG_PID_NS=y
CONFIG_IPC_NS=y
CONFIG_UTS_NS=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_SCHED=y
CONFIG_CPUSETS=y
CONFIG_MEMCG=y
CONFIG_KEYS=y
CONFIG_POSIX_MQUEUE=y
CONFIG_VETH=y
CONFIG_IPV6=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_NAT=m
CONFIG_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_IP_VS=y
CONFIG_NETFILTER_XT_MATCH_IPVS=m
@@ -0,0 +1,5 @@
define KFEATURE_DESCRIPTION "Minimal Kernel configs for Docker runtime"
include features/netfilter/netfilter.scc
kconf non-hardware docker-minimal.cfg
@@ -0,0 +1,2 @@
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
@@ -0,0 +1,31 @@
CONFIG_PARAVIRT=y
CONFIG_XEN=y
CONFIG_BLOCK=y
CONFIG_SCSI=y
CONFIG_NET=y
CONFIG_HVC_IRQ=y
CONFIG_HVC_XEN=y
CONFIG_WATCHDOG=y
CONFIG_XEN_WDT=y
CONFIG_XEN_BALLOON=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_GRANT_DEV_ALLOC=y
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_EFI=y
CONFIG_XEN_AUTO_XLATE=y
@@ -0,0 +1,5 @@
define KFEATURE_DESCRIPTION "Common XEN (Host and Guest) configs and patches on autonomy systems"
kconf non-hardware xen-common.cfg
patch 0001-xen-arm-do-not-setup-the-runstate-info-page-if-kpti-.patch
@@ -0,0 +1,28 @@
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_SCSI_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_INPUT=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_HVC_XEN_FRONTEND=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_DRM=y
CONFIG_DRM_XEN=y
CONFIG_DRM_XEN_FRONTEND=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_XEN_FRONTEND=y
@@ -0,0 +1,3 @@
define KFEATURE_DESCRIPTION "Enable XEN Guest Frontend Drivers"
kconf non-hardware xen-guest.cfg
@@ -0,0 +1,9 @@
#
# Not directly sourced via a kernel type but via an external bb
#
define KFEATURE_DESCRIPTION "Enable netfilter + conn tracking + extras"
define KFEATURE_COMPATIBILITY all
include features/netfilter/netfilter.scc
kconf non-hardware netfilter-extra.cfg
@@ -0,0 +1,10 @@
CONFIG_XEN_BLKDEV_BACKEND=y
CONFIG_TARGET_CORE=y
CONFIG_XEN_SCSI_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=y
# For LVM2 we need Multiple Devices and Device Mapper support
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
@@ -0,0 +1,3 @@
define KFEATURE_DESCRIPTION "Enable XEN Host Drivers on autonomy systems"
kconf non-hardware xen-host.cfg
@@ -0,0 +1,3 @@
# Add arm-autonomy kernel support
require linux-arm-autonomy.inc
@@ -0,0 +1,35 @@
# Add arm-autonomy specific features to the kernel
FILESEXTRAPATHS_prepend := "${THISDIR}:"
#
# arm-autonomy kmeta
#
SRC_URI_append = " file://arm-autonomy-kmeta;type=kmeta;name=arm-autonomy-kmeta;destsuffix=arm-autonomy-kmeta"
# Add common Xen (host and guest) configs and patches
KERNEL_FEATURES += "${@bb.utils.contains_any('DISTRO_FEATURES', \
'arm-autonomy-host arm-autonomy-guest', \
'features/arm-autonomy/xen-common.scc', '', d)}"
# Add xen host drivers to kernel if arm-autonomy-host is activated
KERNEL_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', \
'arm-autonomy-host', \
'features/arm-autonomy/xen-host.scc \
features/arm-autonomy/xen-host-iptables.scc', \
'', d)}"
# Add xen guest drivers to kernel if arm-autonomy-guest is activated
KERNEL_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', \
'arm-autonomy-guest', 'features/arm-autonomy/xen-guest.scc', '', d)}"
# Add support for arm64-autonomy-guest machine
COMPATIBLE_MACHINE_arm64-autonomy-guest = "arm64-autonomy-guest"
KMACHINE_arm64-autonomy-guest = "arm64-autonomy-guest"
# Add Minimal Kernel Configs for Docker runtime
KERNEL_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', \
'docker', 'features/arm-autonomy/docker-minimal.scc', '', d)}"
@@ -0,0 +1,32 @@
#
# SPDX-License-Identifier: MIT
#
# The empty wic plugin is used to create unformatted empty partitions for wic
# images.
# To use it you must pass "empty" as argument for the "--source" parameter in
# the wks file. For example:
# part foo --source empty --ondisk sda --size="1024" --align 1024
import logging
from wic.pluginbase import SourcePlugin
logger = logging.getLogger('wic')
class EmptyPartitionPlugin(SourcePlugin):
"""
Populate unformatted empty partition.
"""
name = 'empty'
@classmethod
def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
oe_builddir, bootimg_dir, kernel_dir,
rootfs_dir, native_sysroot):
"""
Called to do the actual content population for a partition i.e. it
'prepares' the partition to be incorporated into the image.
"""
return
+1
View File
@@ -0,0 +1 @@
See ../README.md

Some files were not shown because too many files have changed in this diff Show More