mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-07-18 16:37:08 +00:00
Compare commits
118 Commits
yocto-3.2.1
..
3.1.7
| Author | SHA1 | Date | |
|---|---|---|---|
| b75b8ce1ac | |||
| b1fe8443a7 | |||
| d13be36099 | |||
| a07dec8ad8 | |||
| 58dbad789d | |||
| 79b9225e24 | |||
| 655124426a | |||
| 08c44df351 | |||
| 2d86376931 | |||
| 6954705272 | |||
| 5c09684863 | |||
| d21ded082c | |||
| 4158478279 | |||
| ce07298783 | |||
| 75e7f371f5 | |||
| 3a2b7d55c7 | |||
| ce535dfb96 | |||
| 9b64590a73 | |||
| 7b36f95b77 | |||
| b79b9122e0 | |||
| ceb42f2d6c | |||
| c4b287c15d | |||
| c3bf8697b8 | |||
| 59974ccd5f | |||
| 9dadb61b36 | |||
| d11487b64e | |||
| 9545c366da | |||
| 278cc2d30f | |||
| cfd4f06db6 | |||
| 76ea95b680 | |||
| 1a212b2fd9 | |||
| 32dd6a45e0 | |||
| a830823270 | |||
| ccd4623b86 | |||
| 1cfe374b97 | |||
| 1cf8b975e1 | |||
| b8b0d88d58 | |||
| 02c6605216 | |||
| f7c5e7d509 | |||
| 78131b1bed | |||
| 68c43a96f8 | |||
| b634999990 | |||
| 3786692d6a | |||
| b760504b77 | |||
| d3263fceb5 | |||
| 49046a8af4 | |||
| 316d9318ee | |||
| ad51ecbe91 | |||
| 5b37926c76 | |||
| c316a25b54 | |||
| 38646ed13e | |||
| 2e759bee20 | |||
| 4758aec30a | |||
| d9471e4ced | |||
| 9502510a61 | |||
| 06c331c922 | |||
| a35a629c92 | |||
| c63ac9cf0e | |||
| 246ff54a93 | |||
| 1644922ac6 | |||
| f80387554c | |||
| e2b31d1894 | |||
| 0078d68b46 | |||
| c4f04f3fb6 | |||
| 35d3511266 | |||
| 104364df48 | |||
| 9b6a88dada | |||
| efcd8b225a | |||
| a0d4477bc2 | |||
| 6a0b2b0ebf | |||
| 84dc212d9d | |||
| e4c3de8a0a | |||
| 3d97786ae4 | |||
| 00e3238f87 | |||
| 69ac575db4 | |||
| 00fa6ce4e8 | |||
| 7904e364c3 | |||
| 8bb6d1b595 | |||
| 5b2d456093 | |||
| 8b7ec0affa | |||
| 96248a0eac | |||
| dcbabb25dd | |||
| 9fed81cd52 | |||
| 3055c179c4 | |||
| 3e8602af6f | |||
| 9ec7bd7866 | |||
| c576382359 | |||
| 8f82b6fce1 | |||
| b35308f607 | |||
| ada90a6cd3 | |||
| 2b8cd1b1c9 | |||
| 51d310c4ef | |||
| e9645fe03e | |||
| 8bd3600046 | |||
| ac0e929880 | |||
| 9af4348fa0 | |||
| d5bc2633f2 | |||
| dfafcf9ec2 | |||
| 24181d4708 | |||
| e6ff4eb1d6 | |||
| d13eb333bf | |||
| 9386db13df | |||
| 59ad28effc | |||
| 3e11c65ede | |||
| ce613023d2 | |||
| d7487f96d9 | |||
| 7df67747d5 | |||
| 0465b4c1e3 | |||
| 4ef8eae21c | |||
| 042b6c7aea | |||
| 43daf992a5 | |||
| d79ae6f8dd | |||
| 3eb27429fe | |||
| 530bd40794 | |||
| 426de565c3 | |||
| 0bd9c74026 | |||
| f8ea9ac3a0 | |||
| fa9abd9a6e |
+71
-42
@@ -1,37 +1,61 @@
|
||||
# Use our custom Crops-derived image
|
||||
image: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/yocto-builder:master
|
||||
image: ghcr.io/siemens/kas/kas:3.2
|
||||
|
||||
variables:
|
||||
CPU_REQUEST: ""
|
||||
DEFAULT_TAG: ""
|
||||
# These are needed as the k8s executor doesn't respect the container entrypoint
|
||||
# by default
|
||||
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
|
||||
FF_KUBERNETES_HONOR_ENTRYPOINT: 1
|
||||
|
||||
# First do a common bootstrap, and then build all the targets
|
||||
stages:
|
||||
- prep
|
||||
- bootstrap
|
||||
- build
|
||||
|
||||
# Common job fragment to get a worker ready
|
||||
.setup:
|
||||
tags:
|
||||
- $DEFAULT_TAG
|
||||
stage: build
|
||||
variables:
|
||||
KAS_WORK_DIR: $CI_PROJECT_DIR/work
|
||||
KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
|
||||
SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
|
||||
DL_DIR: $CI_BUILDS_DIR/persist/downloads
|
||||
BB_LOGCONFIG: $CI_PROJECT_DIR/kas/logging.yml
|
||||
BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
|
||||
IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
|
||||
before_script:
|
||||
- echo KAS_WORK_DIR = $KAS_WORK_DIR
|
||||
- echo SSTATE_DIR = $SSTATE_DIR
|
||||
- echo DL_DIR = $DL_DIR
|
||||
- mkdir --verbose --parents $KAS_WORK_DIR $SSTATE_DIR $DL_DIR
|
||||
- rm -rf $KAS_WORK_DIR
|
||||
- mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR
|
||||
|
||||
# Generalised fragment to do a Kas build
|
||||
.build:
|
||||
extends: .setup
|
||||
variables:
|
||||
KUBERNETES_CPU_REQUEST: $CPU_REQUEST
|
||||
interruptible: true
|
||||
script:
|
||||
- KASFILES=$(kas/jobs-to-kas $CI_JOB_NAME)
|
||||
- kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
|
||||
- kas build $KASFILES
|
||||
- ./kas/check-warnings $KAS_WORK_DIR/build/warnings.log
|
||||
- KASFILES=$(./ci/jobs-to-kas $CI_JOB_NAME)
|
||||
- kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
|
||||
- kas build $KASFILES
|
||||
- ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
|
||||
|
||||
#
|
||||
# Prep stage, update repositories once
|
||||
#
|
||||
update-repos:
|
||||
extends: .setup
|
||||
stage: prep
|
||||
script:
|
||||
- flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
|
||||
|
||||
|
||||
#
|
||||
# First phase, bootstrap and machine coverage
|
||||
# Bootstrap stage, bootstrap and machine coverage
|
||||
#
|
||||
|
||||
# Build a number of native tools first to ensure the other builders don't race
|
||||
@@ -43,64 +67,45 @@ n1sdp/bootstrap:
|
||||
# What percentage of machines in the layer do we build
|
||||
machine-coverage:
|
||||
stage: bootstrap
|
||||
tags:
|
||||
- $DEFAULT_TAG
|
||||
script:
|
||||
- ./kas/check-machine-coverage
|
||||
- ./ci/check-machine-coverage
|
||||
coverage: '/Coverage: \d+/'
|
||||
|
||||
|
||||
#
|
||||
# Second phase, the actual build jobs
|
||||
# Build stage, the actual build jobs
|
||||
#
|
||||
|
||||
a5ds:
|
||||
extends: .build
|
||||
|
||||
corstone700-fvp:
|
||||
extends: .build
|
||||
|
||||
corstone700-mps3:
|
||||
extends: .build
|
||||
|
||||
foundation-armv8:
|
||||
extends: .build
|
||||
|
||||
fvp-base:
|
||||
extends: .build
|
||||
|
||||
fvp-base-arm32:
|
||||
extends: .build
|
||||
|
||||
gem5-arm64:
|
||||
extends: .build
|
||||
|
||||
juno:
|
||||
extends: .build
|
||||
|
||||
juno/clang:
|
||||
extends: .build
|
||||
|
||||
musca-b1:
|
||||
extends: .build
|
||||
|
||||
musca-s1:
|
||||
juno/musl:
|
||||
extends: .build
|
||||
|
||||
n1sdp:
|
||||
extends: .build
|
||||
|
||||
qemuarm64-secureboot:
|
||||
n1sdp/armgcc:
|
||||
extends: .build
|
||||
|
||||
qemuarm64-secureboot/clang:
|
||||
qemuarm/testimage:
|
||||
extends: .build
|
||||
|
||||
qemuarm64-secureboot/clang/musl:
|
||||
extends: .build
|
||||
|
||||
qemuarm64-secureboot/musl:
|
||||
extends: .build
|
||||
|
||||
sgi575:
|
||||
qemuarmv5/testimage:
|
||||
extends: .build
|
||||
|
||||
tc0:
|
||||
@@ -111,18 +116,42 @@ tc0:
|
||||
# Utility tasks, not executed automatically
|
||||
#
|
||||
|
||||
# Report on disk usage
|
||||
usage:
|
||||
delete-dl-dir:
|
||||
extends: .setup
|
||||
stage: bootstrap
|
||||
stage: prep
|
||||
when: manual
|
||||
script:
|
||||
- du -h -s $DL_DIR $SSTATE_DIR
|
||||
- rm -rf $DL_DIR/*
|
||||
|
||||
delete-repo-dir:
|
||||
extends: .setup
|
||||
stage: prep
|
||||
when: manual
|
||||
script:
|
||||
- rm -rf $KAS_REPO_REF_DIR/*
|
||||
|
||||
# Delete all sstate
|
||||
delete-sstate:
|
||||
extends: .setup
|
||||
stage: prep
|
||||
when: manual
|
||||
script:
|
||||
- rm -rf $SSTATE_DIR/*
|
||||
|
||||
# Wipe out old sstate
|
||||
prune-sstate:
|
||||
extends: .setup
|
||||
stage: bootstrap
|
||||
stage: prep
|
||||
when: manual
|
||||
script:
|
||||
- du -h -s $SSTATE_DIR
|
||||
- find $SSTATE_DIR -type f -atime +30 -delete
|
||||
- du -h -s $SSTATE_DIR
|
||||
|
||||
# Report on disk usage
|
||||
usage:
|
||||
extends: .setup
|
||||
stage: prep
|
||||
when: manual
|
||||
script:
|
||||
- du -h -s $DL_DIR $SSTATE_DIR $KAS_REPO_REF_DIR
|
||||
|
||||
@@ -25,26 +25,14 @@ 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
|
||||
E-mail meta-arm@lists.yoctoproject.org with patches created using this process
|
||||
|
||||
Reporting bugs
|
||||
--------------
|
||||
E-mail meta-arm@lists.yoctoproject.org with the error encountered and the steps
|
||||
to reproduce the issue.
|
||||
to reproduce the issue
|
||||
|
||||
|
||||
Maintainer(s)
|
||||
-------------
|
||||
* Jon Mason <jon.mason@arm.com>
|
||||
* Ross Burton <ross.burton@arm.com>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
header:
|
||||
version: 9
|
||||
|
||||
local_conf_header:
|
||||
libc: |
|
||||
GCCVERSION = "arm-9.2"
|
||||
@@ -5,7 +5,7 @@ distro: poky
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
refspec: gatesgarth
|
||||
refspec: dunfell
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
@@ -20,6 +20,11 @@ repos:
|
||||
meta:
|
||||
meta-poky:
|
||||
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
layers:
|
||||
meta-oe:
|
||||
|
||||
env:
|
||||
BB_LOGCONFIG: ""
|
||||
|
||||
@@ -29,11 +34,10 @@ local_conf_header:
|
||||
PACKAGE_CLASSES = "package_ipk"
|
||||
LICENSE_FLAGS_WHITELIST += "armcompiler"
|
||||
PACKAGECONFIG_remove_pn-qemu-system-native = "gtk+ sdl"
|
||||
EXTRA_IMAGE_FEATURES_append = " debug-tweaks"
|
||||
BB_NUMBER_THREADS = "16"
|
||||
PARALLEL_MAKE = "-j16"
|
||||
INHERIT += "rm_work"
|
||||
PACKAGECONFIG_append_pn-perf = " coresight"
|
||||
ERROR_QA = "${WARN_QA}"
|
||||
ptest: |
|
||||
DISTRO_FEATURES_remove = "ptest"
|
||||
|
||||
@@ -41,4 +45,4 @@ machine: unset
|
||||
|
||||
target:
|
||||
- core-image-base
|
||||
- perf
|
||||
# - perf
|
||||
@@ -13,11 +13,11 @@ if metaarm.name != "meta-arm":
|
||||
machines = metaarm.glob("meta-*/conf/machine/*.conf")
|
||||
machines = set(p.stem for p in machines)
|
||||
|
||||
# All kas files
|
||||
kas = metaarm.glob("kas/*.yml")
|
||||
kas = set(p.stem for p in kas)
|
||||
# All ci files
|
||||
ci = metaarm.glob("ci/*.yml")
|
||||
ci = set(p.stem for p in ci)
|
||||
|
||||
missing = machines - kas
|
||||
missing = machines - ci
|
||||
print(f"The following machines are missing: {', '.join(sorted(missing))}.")
|
||||
|
||||
covered = len(machines) - len(missing)
|
||||
@@ -4,7 +4,6 @@ header:
|
||||
repos:
|
||||
meta-clang:
|
||||
url: https://github.com/kraj/meta-clang
|
||||
refspec: gatesgarth
|
||||
|
||||
local_conf_header:
|
||||
clang: |
|
||||
@@ -0,0 +1,10 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: gem5-arm64
|
||||
|
||||
target:
|
||||
- core-image-minimal
|
||||
- gem5-aarch64-native
|
||||
@@ -8,8 +8,8 @@ set -e -u
|
||||
# Read Job namne from $1 and split on /
|
||||
IFS=/ read -r -a PARTS<<<$1
|
||||
|
||||
# Prefix each part with kas/
|
||||
PARTS=("${PARTS[@]/#/kas/}")
|
||||
# Prefix each part with ci/
|
||||
PARTS=("${PARTS[@]/#/ci/}")
|
||||
|
||||
# Suffix each part with .yml
|
||||
PARTS=("${PARTS[@]/%/.yml}")
|
||||
@@ -3,4 +3,4 @@ header:
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: sgi575
|
||||
machine: qemuarm
|
||||
@@ -0,0 +1,11 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: qemuarmv5
|
||||
|
||||
local_conf_header:
|
||||
bugs: |
|
||||
# Remove parselogs until errors can be resolved
|
||||
TEST_SUITES_remove = "parselogs"
|
||||
@@ -0,0 +1,17 @@
|
||||
header:
|
||||
version: 9
|
||||
|
||||
local_conf_header:
|
||||
testimage: |
|
||||
IMAGE_CLASSES += "testimage"
|
||||
TESTIMAGE_AUTO = "1"
|
||||
slirp: |
|
||||
TEST_RUNQEMUPARAMS = "slirp"
|
||||
TEST_SERVER_IP = "127.0.0.1"
|
||||
QEMU_USE_SLIRP = "1"
|
||||
packages: |
|
||||
IMAGE_FEATURES_append = " ssh-server-dropbear"
|
||||
|
||||
# Multiple targets are available, put it down to just one
|
||||
target:
|
||||
- core-image-base
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
# Update clones of the repositories we need in KAS_REPO_REF_DIR to speed up fetches
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
import pathlib
|
||||
|
||||
def repo_shortname(url):
|
||||
# Taken from Kas (Repo.__getattr__) to ensure the logic is right
|
||||
from urllib.parse import urlparse
|
||||
url = urlparse(url)
|
||||
return ('{url.netloc}{url.path}'
|
||||
.format(url=url)
|
||||
.replace('@', '.')
|
||||
.replace(':', '.')
|
||||
.replace('/', '.')
|
||||
.replace('*', '.'))
|
||||
|
||||
repositories = (
|
||||
"https://git.yoctoproject.org/git/poky",
|
||||
"https://git.openembedded.org/meta-openembedded",
|
||||
"https://git.yoctoproject.org/git/meta-virtualization",
|
||||
"https://git.yoctoproject.org/git/meta-zephyr",
|
||||
"https://github.com/kraj/meta-clang",
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "KAS_REPO_REF_DIR" not in os.environ:
|
||||
print("KAS_REPO_REF_DIR needs to be set")
|
||||
sys.exit(1)
|
||||
|
||||
base_repodir = pathlib.Path(os.environ["KAS_REPO_REF_DIR"])
|
||||
|
||||
for repo in repositories:
|
||||
repodir = base_repodir / repo_shortname(repo)
|
||||
if repodir.exists():
|
||||
subprocess.run(["git", "-C", repodir, "fetch"], check=True)
|
||||
else:
|
||||
subprocess.run(["git", "clone", "--bare", repo, repodir], check=True)
|
||||
@@ -1,10 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: corstone700-fvp
|
||||
|
||||
local_conf_header:
|
||||
image: |
|
||||
CORE_IMAGE_EXTRA_INSTALL = "corstone700-test-app"
|
||||
@@ -1,6 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- corstone700-fvp.yml
|
||||
|
||||
machine: corstone700-mps3
|
||||
@@ -1,6 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: fvp-base-arm32
|
||||
@@ -1,21 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
layers:
|
||||
meta-gem5:
|
||||
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
layers:
|
||||
meta-oe:
|
||||
|
||||
machine: gem5-arm64
|
||||
|
||||
target:
|
||||
- core-image-minimal
|
||||
- perf
|
||||
- gem5-aarch64-native
|
||||
@@ -1,9 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
|
||||
repos:
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
layers:
|
||||
meta-oe:
|
||||
meta-python:
|
||||
@@ -1,8 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- meta-python.yml
|
||||
|
||||
repos:
|
||||
meta-zephyr:
|
||||
url: https://git.yoctoproject.org/git/meta-zephyr
|
||||
@@ -1,11 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
- meta-zephyr.yml
|
||||
|
||||
machine: musca-b1
|
||||
|
||||
target:
|
||||
- trusted-firmware-m
|
||||
- zephyr-philosophers
|
||||
@@ -1,10 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
- meta-python.yml
|
||||
|
||||
machine: musca-s1
|
||||
|
||||
target:
|
||||
- trusted-firmware-m
|
||||
@@ -1,11 +0,0 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- base.yml
|
||||
|
||||
machine: qemuarm64-secureboot
|
||||
|
||||
target:
|
||||
- core-image-base
|
||||
- perf
|
||||
- optee-examples
|
||||
@@ -88,5 +88,5 @@ would like to contribute, please contact the maintainers
|
||||
|
||||
Maintainer(s)
|
||||
-------------
|
||||
* Diego Sueiro <diego.sueiro@arm.com>
|
||||
* Bertrand Marquis <bertrand.marquis@arm.com>
|
||||
* Filipe Rinaldi <filipe.rinaldi@arm.com>
|
||||
|
||||
@@ -12,11 +12,6 @@ inherit xenguest-image
|
||||
# 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
|
||||
@@ -54,13 +49,6 @@ do_deploy_append() {
|
||||
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
|
||||
|
||||
@@ -58,14 +58,10 @@ XENGUEST_IMAGE_DISK_SIZE ??= "${@ '4' if not d.getVar('INITRAMFS_IMAGE') else '0
|
||||
# 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"
|
||||
# XENGUEST_IMAGE_NETWORK_BRIDGE can be set to 1 to have a network interface
|
||||
# on the guest connected to host bridged network. This will provide the guest
|
||||
# with a network interface connected directly to the external network
|
||||
XENGUEST_IMAGE_NETWORK_BRIDGE ??= "1"
|
||||
|
||||
# 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
|
||||
@@ -151,10 +147,10 @@ xenguest_image_create() {
|
||||
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}"
|
||||
if [ "${XENGUEST_IMAGE_NETWORK_BRIDGE}" = "1" ]; then
|
||||
call_xenguest_mkimage update --set-param=NETWORK_BRIDGE=1
|
||||
else
|
||||
call_xenguest_mkimage update --set-param=XENGUEST_NETWORK_TYPE="none"
|
||||
call_xenguest_mkimage update --set-param=NETWORK_BRIDGE=0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,3 @@ 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)}"
|
||||
|
||||
@@ -8,14 +8,3 @@ DISTRO_FEATURES_NATIVE_append = " 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)}
|
||||
|
||||
@@ -17,23 +17,19 @@ LAYERDEPENDS_meta-arm-autonomy = " \
|
||||
networking-layer \
|
||||
virtualization-layer \
|
||||
"
|
||||
LAYERSERIES_COMPAT_meta-arm-autonomy = "gatesgarth"
|
||||
LAYERSERIES_COMPAT_meta-arm-autonomy = "dunfell"
|
||||
|
||||
# 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/"
|
||||
ARM_AUTONOMY_DISTRO_CFGDIR = "${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"
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
arm-autonomy Multiconfig Build Environment Instructions
|
||||
==================
|
||||
|
||||
This documentation explains how to simplify the process of building hosts
|
||||
and guests in a single bitbake command, rather than in seperate build
|
||||
folders. You can read more about multiconfig in the bitbake documentation:
|
||||
|
||||
- [bitbake user manual](https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html)
|
||||
|
||||
To achieve a multiconfig build, a number of different config files need to
|
||||
be created in a single build directory.
|
||||
|
||||
Create a new project
|
||||
----------------
|
||||
|
||||
Before you start, you will need to follow the instructions in
|
||||
"Create a project" from the quickstart guide, to create a new project
|
||||
directory with
|
||||
```
|
||||
oe-init-build-env my-mc-project
|
||||
```
|
||||
Ensure it has all the required layers in bblayers.conf as listed in
|
||||
`arm-autonomy-quickstart.md`. The result should be a directory containing:
|
||||
|
||||
```
|
||||
-- conf
|
||||
| -- bblayers.conf
|
||||
| -- local.conf
|
||||
| -- templateconf.cfg
|
||||
```
|
||||
|
||||
Add multiconfig
|
||||
----------------
|
||||
|
||||
Here are the steps required to make the project build both the host and any
|
||||
number of guests as required.
|
||||
|
||||
1. Create a new directory under `conf/` named `multiconfig/`
|
||||
|
||||
2. Create two new files in this directory:
|
||||
`multiconfig/host.conf`
|
||||
`multiconfig/guest.conf`
|
||||
These files will contain any configurations that a specific to either the
|
||||
host or the guest
|
||||
|
||||
```
|
||||
-- conf
|
||||
| -- bblayers.conf
|
||||
| -- local.conf
|
||||
| -- templateconf.cfg
|
||||
| -- multiconfig
|
||||
| -- host.conf
|
||||
| -- guest.conf
|
||||
```
|
||||
|
||||
3. In `local.conf` the following config variables must be added:
|
||||
|
||||
```
|
||||
MACHINE ?= "fvp-base"
|
||||
|
||||
# ---Guest Config Start--- #
|
||||
MC_GUEST = "guest"
|
||||
|
||||
MC_GUEST_NAME = "guest1"
|
||||
|
||||
MC_GUEST_IMAGERECIPE = "core-image-minimal"
|
||||
MC_GUEST_MACHINE = "arm64-autonomy-guest"
|
||||
|
||||
MC_GUEST_INITRAMFS_IMAGE_BUNDLE ?= ""
|
||||
MC_GUEST_INITRAMFS_IMAGE ?= ""
|
||||
|
||||
# Uncomment for initramfs
|
||||
#MC_GUEST_INITRAMFS_IMAGE_BUNDLE = "1"
|
||||
#MC_GUEST_INITRAMFS_IMAGE = "${MC_GUEST_IMAGERECIPE}"
|
||||
|
||||
# These variables are set automatically, don't edit them!
|
||||
MC_GUEST_FILENAME_PREFIX = "${@ 'Image-initramfs' if d.getVar('MC_GUEST_INITRAMFS_IMAGE_BUNDLE',d) else '${MC_GUEST_IMAGERECIPE}' }"
|
||||
|
||||
MC_GUEST_FILENAME = "${MC_GUEST_FILENAME_PREFIX}-${MC_GUEST_MACHINE}.xenguest"
|
||||
|
||||
MC_GUEST_DEP = "${@ 'virtual/kernel:do_deploy' if d.getVar('MC_GUEST_INITRAMFS_IMAGE_BUNDLE',d) else '${MC_GUEST_IMAGERECIPE}:do_image_complete'}"
|
||||
|
||||
MC_DOIMAGE_MCDEPENDS += "mc:${MC_HOST}:${MC_GUEST}:${MC_GUEST_DEP} "
|
||||
|
||||
BBMULTICONFIG += "${MC_GUEST} "
|
||||
|
||||
ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS += "file://${TOPDIR}/${MC_GUEST}/deploy/images/${MC_GUEST_MACHINE}/${MC_GUEST_FILENAME};guestname=${MC_GUEST_NAME} "
|
||||
# ---Guest Config End--- #
|
||||
|
||||
# ---Host Config Start--- #
|
||||
MC_HOST = "host"
|
||||
|
||||
BBMULTICONFIG += "${MC_HOST} "
|
||||
# ---Host Config End--- #
|
||||
```
|
||||
|
||||
These variables will be used in both of the multiconf files. `MC_HOST` and
|
||||
`MC_GUEST` should not be altered without renaming the conf files, but most
|
||||
`MC_GUEST_*` variables can be customised if you desire.
|
||||
|
||||
4. Next set the contents of `multiconfig/guest.conf`:
|
||||
|
||||
```
|
||||
TMPDIR = "${TOPDIR}/${MC_GUEST}"
|
||||
|
||||
MACHINE = "${MC_GUEST_MACHINE}"
|
||||
DISTRO_FEATURES += " arm-autonomy-guest"
|
||||
|
||||
INITRAMFS_IMAGE_BUNDLE = "${MC_GUEST_INITRAMFS_IMAGE_BUNDLE}"
|
||||
INITRAMFS_IMAGE = "${MC_GUEST_INITRAMFS_IMAGE}"
|
||||
|
||||
IMAGE_FSTYPES += "${@ 'cpio' if d.getVar('MC_GUEST_INITRAMFS_IMAGE_BUNDLE',d) else ''}"
|
||||
|
||||
# ANY OTHER GUEST CONFIG
|
||||
```
|
||||
|
||||
This contents shouldn't be changed directly, rather change the equivalent
|
||||
config in local.conf. You can append any other config desired for the
|
||||
guest at this point, for example `XENGUEST_IMAGE_DISK_SIZE`
|
||||
|
||||
Make sure not to change `${DEPLOY_DIR_IMAGE}` to anything other than
|
||||
`${TMPDIR}/deploy/images`, as this is assumed by local.conf.
|
||||
|
||||
5. Lastly set the contents of `multiconfig/host.conf`:
|
||||
|
||||
```
|
||||
TMPDIR = "${TOPDIR}/${MC_HOST}"
|
||||
|
||||
DISTRO_FEATURES += " arm-autonomy-host"
|
||||
```
|
||||
|
||||
Building the image
|
||||
----------------
|
||||
|
||||
To build the multiconfig image the command is:
|
||||
```
|
||||
bitbake mc:host:arm-autonomy-host-image-minimal
|
||||
```
|
||||
|
||||
You should see that this triggers guest tasks to be built in
|
||||
parallel. Once the build completes the guest will already be in the
|
||||
rootfs of the host thanks to `ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUEST`
|
||||
|
||||
The deployed image including the guest will be in `host/deploy/images/`
|
||||
|
||||
|
||||
Multiple Guests
|
||||
----------------
|
||||
|
||||
To have multiple guests with the same config the line which appends to
|
||||
`ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUEST` just needs to be duplicated with
|
||||
a different guestname.
|
||||
|
||||
To have different config for each guest, each will need its own config
|
||||
file similar to guest.conf, ensuring TMPDIR is set to a different path,
|
||||
and everything between `---Guest Config Start---` and
|
||||
`---Guest Config End---` will need to be duplicated.
|
||||
|
||||
Any copies of variables that start `MC_GUEST` must be altered to avoid
|
||||
collisions (e.g. `MC_GUEST_2_*`), and the name of the conf file must also
|
||||
be added to BBMULTICONFIG.
|
||||
|
||||
|
||||
Guest with provisioned disk
|
||||
----------------
|
||||
|
||||
To add guest rootfs partition to host wic image,
|
||||
set `AUTONOMY_HOST_EXTRA_PARTITION` with proper wks partition entry, e.g:
|
||||
|
||||
```
|
||||
AUTONOMY_HOST_EXTRA_PARTITION = "part --label provisioned-guest --source rawcopy --fstype=ext4 --ondisk sda --align 1024 \
|
||||
--sourceparams=file=${TOPDIR}/${MC_GUEST}/deploy/images/${MC_GUEST_MACHINE}/${MC_GUEST_FILENAME_PREFIX}-${MC_GUEST_MACHINE}.ext4"
|
||||
```
|
||||
|
||||
inside host.conf file.
|
||||
|
||||
The rest of the configuration has to be appended to guest.conf file:
|
||||
|
||||
```
|
||||
XENGUEST_IMAGE_DISK_SIZE = "0"
|
||||
XENGUEST_IMAGE_SRC_URI_XEN_CONFIG = "file://\${TOPDIR}/path/to/rootdisk.cfg"
|
||||
XENGUEST_IMAGE_DISK_DEVICE = "_GUEST_DISK_DEVICE_"
|
||||
XENGUEST_IMAGE_ROOT = "/dev/xvda"
|
||||
IMAGE_ROOTFS_SIZE = "102400"
|
||||
IMAGE_FSTYPES = "ext4"
|
||||
```
|
||||
|
||||
content of rootdisk.cfg"
|
||||
|
||||
```
|
||||
disk = ["phy:_GUEST_DISK_DEVICE_,xvda,w"]
|
||||
```
|
||||
|
||||
`_GUEST_DISK_DEVICE_` should be substituted with `/dev/sdaX`,
|
||||
according to wks file.
|
||||
@@ -56,8 +56,8 @@ Here are the main steps to create an arm-autonomy project:
|
||||
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-arm/meta-arm $LAYERDIR_BASE/meta-arm/meta-arm-toolchain \
|
||||
$LAYERDIR_BASE/meta-arm/meta-arm-bsp $LAYERDIR_BASE/meta-arm/meta-arm-autonomy \
|
||||
$LAYERDIR_BASE/meta-virtualization $LAYERDIR_BASE/meta-arm/meta-arm-autonomy \
|
||||
$LAYERDIR_BASE/meta-arm/meta-arm $LAYERDIR_BASE/meta-arm/meta-arm-bsp
|
||||
```
|
||||
|
||||
Example of a `conf/bblayers.conf`:
|
||||
@@ -71,16 +71,12 @@ Here are the main steps to create an arm-autonomy project:
|
||||
/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-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 \
|
||||
/home/user/arm-autonomy/meta-arm/meta-arm \
|
||||
/home/user/arm-autonomy/meta-arm/meta-arm-bsp \
|
||||
"
|
||||
```
|
||||
|
||||
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
|
||||
@@ -148,9 +144,6 @@ To create a guest project:
|
||||
The build will create a ".xenguest" image that can be use on an host project
|
||||
with the xenguest-manager.
|
||||
|
||||
The guest can also be built as a 'multiconfig' sub project of the host, see
|
||||
`meta-arm-autonomy/documentation/arm-autonomy-multiconfig.md` for more information
|
||||
|
||||
Include guests directly in the host image
|
||||
-----------------------------------------
|
||||
The layer provides a way to directly include in the host project one or several
|
||||
@@ -213,7 +206,7 @@ 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
|
||||
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}.
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
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.
|
||||
@@ -48,16 +48,16 @@ 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_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_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_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
|
||||
@@ -65,37 +65,3 @@ The following parameters are available:
|
||||
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
|
||||
|
||||
@@ -99,8 +99,6 @@ For a detailed help on available operations, please use:
|
||||
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
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
xenguest network bridge
|
||||
=======================
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
xenguest-network-bridge is creating a network bridge to allow some guests to
|
||||
have a direct connection to the external network.
|
||||
To do this, a bridge is created on the host using brctl with the network
|
||||
interfaces added to it so that the bridge is connected to the external network.
|
||||
It is also adding a guest init script which will, for guests configured to use
|
||||
it, create a virtual network interface for the guest and connect it to the
|
||||
network bridge on the host.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
On the host the package xenguest-network-bridge must be included in your image.
|
||||
|
||||
On the xenguest image of your guest, the parameter NETWORK_BRIDGE must be set
|
||||
to 1 (using xenguest-mkimage --set-param=NETWORK_BRIDGE=1).
|
||||
|
||||
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,
|
||||
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 network
|
||||
interfaces that are added to the bridge when it is created on the host during
|
||||
init.
|
||||
This is set by default to "eth0".
|
||||
|
||||
- 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_BRIDGE: This variable can be set to 0 or 1 on guest
|
||||
projects to enable or not the connection of the guest to the host bridge.
|
||||
This is set by default to "1".
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
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.
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
# 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}
|
||||
@@ -1,7 +0,0 @@
|
||||
# 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"
|
||||
@@ -1,26 +0,0 @@
|
||||
# Extra machine settings for juno
|
||||
KERNEL_ALT_IMAGETYPE = "Image.lzma"
|
||||
|
||||
# Juno board has 2 network interfaces, add both of them to the bridge
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS ?= "eth0 eth1"
|
||||
XEN_DEVICETREE_DOM0_SIZE ?= "0x02400000"
|
||||
|
||||
# We need to extend 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-juno-disk.wks.in"
|
||||
# set wks file only if INITRAMFS_IMAGE_BUNDLE is not set
|
||||
WKS_FILE = "${@bb.utils.contains('INITRAMFS_IMAGE_BUNDLE', '1', '',\
|
||||
'${ARM_AUTONOMY_WKS_FILE}', d)}"
|
||||
|
||||
# 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"
|
||||
|
||||
# set wic image type only if INITRAMFS_IMAGE_BUNDLE is not set
|
||||
IMAGE_FSTYPES += "${@bb.utils.contains('INITRAMFS_IMAGE_BUNDLE', '1', '',\
|
||||
'wic wic.gz wic.bmap', d)}"
|
||||
@@ -1,40 +0,0 @@
|
||||
# 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}"
|
||||
|
||||
+4
-33
@@ -4,19 +4,6 @@ OVERRIDES_append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d
|
||||
|
||||
FILESEXTRAPATHS_prepend_xen := "${THISDIR}/${PN}:"
|
||||
|
||||
DEPENDS_append_xen = " dos2unix-native"
|
||||
|
||||
SRC_URI_append_xen = " file://add-xen-support.patch;patchdir=../"
|
||||
|
||||
do_install_append_xen() {
|
||||
mv -v ${D}/${UNPACK_DIR}/SOFTWARE/uEnv.txt \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/uenvfile
|
||||
for dir in $(ls ${D}/${UNPACK_DIR}/SITE1/)
|
||||
do
|
||||
unix2dos ${D}/${UNPACK_DIR}/SITE1/${dir}/images.txt
|
||||
done
|
||||
}
|
||||
|
||||
DEPLOY_EXTRA_DEPS ??= ""
|
||||
DEPLOY_EXTRA_DEPS_xen = "xen:do_deploy xen-devicetree:do_deploy"
|
||||
|
||||
@@ -27,24 +14,8 @@ do_deploy_prepend_xen() {
|
||||
# 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.
|
||||
|
||||
mkdir -p ${D}/${UNPACK_DIR}/SOFTWARE/XEN
|
||||
cp -v ${DEPLOY_DIR_IMAGE}/xen-${COMPATIBLE_MACHINE}.efi \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/XEN/xen
|
||||
|
||||
for dtb in $(basename -s .dtb ${KERNEL_DEVICETREE})
|
||||
do
|
||||
cp -v ${DEPLOY_DIR_IMAGE}/${dtb}-xen.dtb \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/XEN/${dtb}.dtb
|
||||
done
|
||||
|
||||
bbnote "Xen binaries added under SOFTWARE/XEN directory"
|
||||
|
||||
if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" -a "${KERNEL_ALT_IMAGETYPE}" = "Image.lzma" ]; then
|
||||
# KERNEL_ALT_IMAGETYPE is expected to be Image.lzma,
|
||||
# however NOR flash filesystem is DOS compatible with 8.3 naming,
|
||||
# so we need to replace ".lzma" with ".lzm"
|
||||
cp -L -f ${DEPLOY_DIR_IMAGE}/${KERNEL_ALT_IMAGETYPE} \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/Image.lzm
|
||||
fi
|
||||
cp ${DEPLOY_DIR_IMAGE}/xen-${COMPATIBLE_MACHINE}.efi \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/xen
|
||||
cp ${DEPLOY_DIR_IMAGE}/*xen.dtb \
|
||||
${D}/${UNPACK_DIR}/SOFTWARE/
|
||||
}
|
||||
|
||||
-173
@@ -1,173 +0,0 @@
|
||||
arm-bsp/firmware-image-juno: add xen support
|
||||
|
||||
This patch adds xen and dtbs binaries entries to images-r[012].txt files.
|
||||
These images-r[012].txt files contain NOR filesystem entries details,
|
||||
like file offset, name, path etc.
|
||||
|
||||
It also adds customization for uEnv.txt file, that allows to autoboot xen.
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
|
||||
|
||||
diff -u a/images-r0.txt b/images-r0.txt
|
||||
--- a/images-r0.txt 2020-11-25 20:25:38.677687712 +0100
|
||||
+++ b/images-r0.txt 2020-11-25 20:36:55.482194294 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
TITLE: Versatile Express Images Configuration File
|
||||
|
||||
[IMAGES]
|
||||
-TOTALIMAGES: 10 ;Number of Images (Max: 32)
|
||||
+TOTALIMAGES: 11 ;Number of Images (Max: 32)
|
||||
|
||||
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR0ADDRESS: 0x00000000 ;Image Flash Address
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR2ADDRESS: 0x00500000 ;Image Flash Address
|
||||
-NOR2FILE: \SOFTWARE\Image ;Image File Name
|
||||
-NOR2NAME: norkern ;Rename kernel to norkern
|
||||
+NOR2FILE: \SOFTWARE\Image.lzm ;Image File Name
|
||||
+NOR2NAME: norkern.lzm ;Rename kernel to norkern.lzm
|
||||
NOR2LOAD: 00000000 ;Image Load Address
|
||||
NOR2ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR3ADDRESS: 0x02900000 ;Image Flash Address
|
||||
-NOR3FILE: \SOFTWARE\juno.dtb ;Image File Name
|
||||
+NOR3FILE: \SOFTWARE\XEN\juno.dtb ;Image File Name
|
||||
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
|
||||
NOR3LOAD: 00000000 ;Image Load Address
|
||||
NOR3ENTRY: 00000000 ;Image Entry Point
|
||||
@@ -64,8 +64,13 @@
|
||||
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR9ADDRESS: 0x02A80000 ;Image Flash Address
|
||||
NOR9NAME: uEnv.txt
|
||||
-NOR9FILE: \SOFTWARE\uEnv.txt ;Image File Name
|
||||
+NOR9FILE: \SOFTWARE\uenvfile ;Image File Name
|
||||
NOR9LOAD: 00000000 ;Image Load Address
|
||||
NOR9ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
-
|
||||
+NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
+NOR10ADDRESS: 0x03000000 ;Image Flash Address
|
||||
+NOR10FILE: \SOFTWARE\XEN\xen ;Image File Name
|
||||
+NOR10NAME: xen
|
||||
+NOR10LOAD: 00000000 ;Image Load Address
|
||||
+NOR10ENTRY: 00000000 ;Image Entry Point
|
||||
diff -u a/images-r1.txt b/images-r1.txt
|
||||
--- a/images-r1.txt 2020-11-25 20:40:19.005177152 +0100
|
||||
+++ b/images-r1.txt 2020-11-25 20:41:17.500886263 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
TITLE: Versatile Express Images Configuration File
|
||||
|
||||
[IMAGES]
|
||||
-TOTALIMAGES: 10 ;Number of Images (Max: 32)
|
||||
+TOTALIMAGES: 11 ;Number of Images (Max: 32)
|
||||
|
||||
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR0ADDRESS: 0x00000000 ;Image Flash Address
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR2ADDRESS: 0x00500000 ;Image Flash Address
|
||||
-NOR2FILE: \SOFTWARE\Image ;Image File Name
|
||||
-NOR2NAME: norkern ;Rename kernel to norkern
|
||||
+NOR2FILE: \SOFTWARE\Image.lzm ;Image File Name
|
||||
+NOR2NAME: norkern.lzm ;Rename kernel to norkern.lzm
|
||||
NOR2LOAD: 00000000 ;Image Load Address
|
||||
NOR2ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR3ADDRESS: 0x02900000 ;Image Flash Address
|
||||
-NOR3FILE: \SOFTWARE\juno-r1.dtb ;Image File Name
|
||||
+NOR3FILE: \SOFTWARE\XEN\juno-r1.dtb ;Image File Name
|
||||
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
|
||||
NOR3LOAD: 00000000 ;Image Load Address
|
||||
NOR3ENTRY: 00000000 ;Image Entry Point
|
||||
@@ -64,8 +64,13 @@
|
||||
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR9ADDRESS: 0x02A80000 ;Image Flash Address
|
||||
NOR9NAME: uEnv.txt
|
||||
-NOR9FILE: \SOFTWARE\uEnv.txt ;Image File Name
|
||||
+NOR9FILE: \SOFTWARE\uenvfile ;Image File Name
|
||||
NOR9LOAD: 00000000 ;Image Load Address
|
||||
NOR9ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
-
|
||||
+NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
+NOR10ADDRESS: 0x03000000 ;Image Flash Address
|
||||
+NOR10FILE: \SOFTWARE\XEN\xen ;Image File Name
|
||||
+NOR10NAME: xen
|
||||
+NOR10LOAD: 00000000 ;Image Load Address
|
||||
+NOR10ENTRY: 00000000 ;Image Entry Point
|
||||
diff -u a/images-r2.txt b/images-r2.txt
|
||||
--- a/images-r2.txt 2020-11-25 20:40:30.625119321 +0100
|
||||
+++ b/images-r2.txt 2020-11-25 20:41:30.720820597 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
TITLE: Versatile Express Images Configuration File
|
||||
|
||||
[IMAGES]
|
||||
-TOTALIMAGES: 10 ;Number of Images (Max: 32)
|
||||
+TOTALIMAGES: 11 ;Number of Images (Max: 32)
|
||||
|
||||
NOR0UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR0ADDRESS: 0x00000000 ;Image Flash Address
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
NOR2UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR2ADDRESS: 0x00500000 ;Image Flash Address
|
||||
-NOR2FILE: \SOFTWARE\Image ;Image File Name
|
||||
-NOR2NAME: norkern ;Rename kernel to norkern
|
||||
+NOR2FILE: \SOFTWARE\Image.lzm ;Image File Name
|
||||
+NOR2NAME: norkern.lzm ;Rename kernel to norkern.lzm
|
||||
NOR2LOAD: 00000000 ;Image Load Address
|
||||
NOR2ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR3ADDRESS: 0x02900000 ;Image Flash Address
|
||||
-NOR3FILE: \SOFTWARE\juno-r2.dtb ;Image File Name
|
||||
+NOR3FILE: \SOFTWARE\XEN\juno-r2.dtb ;Image File Name
|
||||
NOR3NAME: board.dtb ;Specify target filename to preserve file extension
|
||||
NOR3LOAD: 00000000 ;Image Load Address
|
||||
NOR3ENTRY: 00000000 ;Image Entry Point
|
||||
@@ -64,8 +64,13 @@
|
||||
NOR9UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
NOR9ADDRESS: 0x02A80000 ;Image Flash Address
|
||||
NOR9NAME: uEnv.txt
|
||||
-NOR9FILE: \SOFTWARE\uEnv.txt ;Image File Name
|
||||
+NOR9FILE: \SOFTWARE\uenvfile ;Image File Name
|
||||
NOR9LOAD: 00000000 ;Image Load Address
|
||||
NOR9ENTRY: 00000000 ;Image Entry Point
|
||||
|
||||
-
|
||||
+NOR10UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE
|
||||
+NOR10ADDRESS: 0x03000000 ;Image Flash Address
|
||||
+NOR10FILE: \SOFTWARE\XEN\xen ;Image File Name
|
||||
+NOR10NAME: xen
|
||||
+NOR10LOAD: 00000000 ;Image Load Address
|
||||
+NOR10ENTRY: 00000000 ;Image Entry Point
|
||||
diff -u a/uEnv.txt b/uEnv.txt
|
||||
--- a/uEnv.txt 2020-11-20 13:48:31.845078690 +0100
|
||||
+++ b/uEnv.txt 2020-11-25 20:30:00.572306675 +0100
|
||||
@@ -1,11 +1,16 @@
|
||||
+xen_name=xen
|
||||
+xen_addr=0x84000000
|
||||
uenvcmd=run mybootcmd
|
||||
+kernel_alt_name=norkern.lzm
|
||||
+kernel_comp_addr_r=0x88080000
|
||||
mybootcmd=echo Loading custom boot command; \
|
||||
echo Loading kernel; \
|
||||
afs load ${kernel_name} ${kernel_addr_r} ; \
|
||||
-if test $? -eq 1; then echo Loading ${kernel_alt_name} instead of ${kernel_name}; afs load ${kernel_alt_name} ${kernel_addr_r}; fi; \
|
||||
+if test $? -eq 1; then echo Loading ${kernel_alt_name} instead of ${kernel_name}; afs load ${kernel_alt_name} ${kernel_comp_addr_r}; lzmadec ${kernel_comp_addr_r} ${kernel_addr_r}; fi; \
|
||||
echo Loading device tree; \
|
||||
afs load ${fdtfile} ${fdt_addr_r}; \
|
||||
if test $? -eq 1; then echo Loading ${fdt_alt_name} instead of ${fdtfile}; \
|
||||
afs load ${fdt_alt_name} ${fdt_addr_r}; fi; fdt addr ${fdt_addr_r}; fdt resize; \
|
||||
-booti ${kernel_addr_r} - ${fdt_addr_r};
|
||||
-
|
||||
+echo Loading Xen; \
|
||||
+afs load ${xen_name} ${xen_addr}; \
|
||||
+if test $? -eq 0; then echo Booting Xen; bootefi ${xen_addr} ${fdt_addr_r}; fi;
|
||||
|
||||
+78
@@ -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
|
||||
|
||||
|
||||
+78
@@ -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
|
||||
|
||||
|
||||
+78
@@ -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
|
||||
|
||||
|
||||
+15
@@ -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;
|
||||
|
||||
+22
-24
@@ -11,31 +11,29 @@
|
||||
/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;
|
||||
/*
|
||||
* 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;
|
||||
};
|
||||
/*
|
||||
* 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;
|
||||
};
|
||||
pcie@70000000 {
|
||||
reg = <0 0x70000000 0 0x1200000>,
|
||||
<0 0x06000000 0 0x80000>,
|
||||
<0 0x60000000 0 0x80000>;
|
||||
/delete-property/ msi-map;
|
||||
/delete-property/ iommu-map;
|
||||
};
|
||||
};
|
||||
|
||||
+5
-3
@@ -9,15 +9,17 @@ 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_DOM0_BOOTARGS_append_n1sdp = " root=/dev/sda1 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"
|
||||
|
||||
XEN_DEVICETREE_DOM0_BOOTARGS_append_foundation-armv8 = " root=/dev/vda2"
|
||||
XEN_DEVICETREE_XEN_BOOTARGS_append_foundation-armv8 = " console=dtuart dtuart=serial0 bootscrub=0"
|
||||
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
From a41feccdb6c03f12bddb4fb650a0465f0ed6eeca Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Juenger <juenger@ice.rwth-aachen.de>
|
||||
Date: Fri, 5 Apr 2019 15:54:04 +0200
|
||||
Subject: [PATCH] xen/arm: Cap the number of interrupt lines for dom0
|
||||
|
||||
Dom0 vGIC will use the same number of interrupt lines as the hardware GIC.
|
||||
While the hardware GIC can support up to 1020 interrupt lines,
|
||||
the vGIC is only supporting up to 992 interrupt lines.
|
||||
This means that Xen will not be able to boot on platforms where the hardware
|
||||
GIC supports more than 992 interrupt lines.
|
||||
While it would make sense to increase the limits in the vGICs, this is not
|
||||
trivial because of the design choices.
|
||||
At the moment, only models seem to report the maximum of interrupt lines.
|
||||
They also do not have any interrupt wired above the 992 limit.
|
||||
So it should be fine to cap the number of interrupt lines for dom0 to 992 lines.
|
||||
|
||||
Signed-off-by: Lukas Juenger <juenger@ice.rwth-aachen.de>
|
||||
Acked-by: Julien Grall <julien.grall@arm.com>
|
||||
---
|
||||
xen/arch/arm/setup.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
|
||||
index 444857a967..ccb0f181ea 100644
|
||||
--- a/xen/arch/arm/setup.c
|
||||
+++ b/xen/arch/arm/setup.c
|
||||
@@ -888,7 +888,13 @@ void __init start_xen(unsigned long boot_phys_offset,
|
||||
/* Create initial domain 0. */
|
||||
/* The vGIC for DOM0 is exactly emulating the hardware GIC */
|
||||
dom0_cfg.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
|
||||
- dom0_cfg.arch.nr_spis = gic_number_lines() - 32;
|
||||
+ /*
|
||||
+ * Xen vGIC supports a maximum of 992 interrupt lines.
|
||||
+ * 32 are substracted to cover local IRQs.
|
||||
+ */
|
||||
+ dom0_cfg.arch.nr_spis = min(gic_number_lines(), (unsigned int) 992) - 32;
|
||||
+ if ( gic_number_lines() > 992 )
|
||||
+ printk(XENLOG_WARNING "Maximum number of vGIC IRQs exceeded.\n");
|
||||
dom0_cfg.max_vcpus = dom0_max_vcpus();
|
||||
|
||||
dom0 = domain_create(0, &dom0_cfg, true);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
CONFIG_DEBUG=y
|
||||
CONFIG_EARLY_PRINTK_FASTMODEL=y
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Xen/arm 4.12.0 Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ARM_64=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Architecture Features
|
||||
#
|
||||
CONFIG_NR_CPUS=128
|
||||
CONFIG_GICV3=y
|
||||
CONFIG_HVM=y
|
||||
# CONFIG_NEW_VGIC is not set
|
||||
CONFIG_SBSA_VUART_CONSOLE=y
|
||||
CONFIG_ARM_SSBD=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
|
||||
#
|
||||
# ARM errata workaround via the alternative framework
|
||||
#
|
||||
CONFIG_ARM64_ERRATUM_827319=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_834220=y
|
||||
CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_ALL_PLAT=y
|
||||
# CONFIG_QEMU is not set
|
||||
# CONFIG_RCAR3 is not set
|
||||
# CONFIG_MPSOC is not set
|
||||
# CONFIG_NO_PLAT is not set
|
||||
CONFIG_ALL64_PLAT=y
|
||||
# CONFIG_ALL32_PLAT is not set
|
||||
CONFIG_MPSOC_PLATFORM=y
|
||||
|
||||
#
|
||||
# Common Features
|
||||
#
|
||||
CONFIG_HAS_ALTERNATIVE=y
|
||||
CONFIG_HAS_DEVICE_TREE=y
|
||||
CONFIG_MEM_ACCESS=y
|
||||
CONFIG_HAS_PDX=y
|
||||
# CONFIG_XSM is not set
|
||||
CONFIG_SCHED_CREDIT=y
|
||||
CONFIG_SCHED_CREDIT2=y
|
||||
CONFIG_SCHED_RTDS=y
|
||||
# CONFIG_SCHED_ARINC653 is not set
|
||||
CONFIG_SCHED_NULL=y
|
||||
CONFIG_SCHED_DEFAULT="credit2"
|
||||
# CONFIG_LIVEPATCH is not set
|
||||
CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_DOM0_MEM=""
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
CONFIG_HAS_NS16550=y
|
||||
CONFIG_HAS_CADENCE_UART=y
|
||||
CONFIG_HAS_MVEBU=y
|
||||
CONFIG_HAS_PL011=y
|
||||
CONFIG_HAS_SCIF=y
|
||||
CONFIG_HAS_PASSTHROUGH=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Debugging Options
|
||||
#
|
||||
# CONFIG_DEBUG is not set
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Xen/arm 4.12.0 Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ARM_64=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Architecture Features
|
||||
#
|
||||
CONFIG_NR_CPUS=128
|
||||
CONFIG_GICV3=y
|
||||
CONFIG_HVM=y
|
||||
# CONFIG_NEW_VGIC is not set
|
||||
CONFIG_SBSA_VUART_CONSOLE=y
|
||||
CONFIG_ARM_SSBD=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
|
||||
#
|
||||
# ARM errata workaround via the alternative framework
|
||||
#
|
||||
CONFIG_ARM64_ERRATUM_827319=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_834220=y
|
||||
CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_ALL_PLAT=y
|
||||
# CONFIG_QEMU is not set
|
||||
# CONFIG_RCAR3 is not set
|
||||
# CONFIG_MPSOC is not set
|
||||
# CONFIG_NO_PLAT is not set
|
||||
CONFIG_ALL64_PLAT=y
|
||||
# CONFIG_ALL32_PLAT is not set
|
||||
CONFIG_MPSOC_PLATFORM=y
|
||||
|
||||
#
|
||||
# Common Features
|
||||
#
|
||||
CONFIG_HAS_ALTERNATIVE=y
|
||||
CONFIG_HAS_DEVICE_TREE=y
|
||||
CONFIG_MEM_ACCESS=y
|
||||
CONFIG_HAS_PDX=y
|
||||
# CONFIG_XSM is not set
|
||||
CONFIG_SCHED_CREDIT=y
|
||||
CONFIG_SCHED_CREDIT2=y
|
||||
CONFIG_SCHED_RTDS=y
|
||||
# CONFIG_SCHED_ARINC653 is not set
|
||||
CONFIG_SCHED_NULL=y
|
||||
CONFIG_SCHED_DEFAULT="credit2"
|
||||
# CONFIG_LIVEPATCH is not set
|
||||
CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_DOM0_MEM=""
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
CONFIG_HAS_NS16550=y
|
||||
CONFIG_HAS_CADENCE_UART=y
|
||||
CONFIG_HAS_MVEBU=y
|
||||
CONFIG_HAS_PL011=y
|
||||
CONFIG_HAS_SCIF=y
|
||||
CONFIG_HAS_PASSTHROUGH=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Debugging Options
|
||||
#
|
||||
# CONFIG_DEBUG is not set
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
CONFIG_DEBUG=y
|
||||
CONFIG_EARLY_PRINTK_JUNO=y
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Xen/arm 4.12.2 Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ARM_64=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Architecture Features
|
||||
#
|
||||
CONFIG_NR_CPUS=128
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_GICV3=y
|
||||
CONFIG_HAS_ITS=y
|
||||
CONFIG_HVM=y
|
||||
# CONFIG_NEW_VGIC is not set
|
||||
CONFIG_SBSA_VUART_CONSOLE=y
|
||||
CONFIG_ARM_SSBD=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
|
||||
#
|
||||
# ARM errata workaround via the alternative framework
|
||||
#
|
||||
CONFIG_ARM64_ERRATUM_827319=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_834220=y
|
||||
CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_ALL_PLAT=y
|
||||
# CONFIG_QEMU is not set
|
||||
# CONFIG_RCAR3 is not set
|
||||
# CONFIG_MPSOC is not set
|
||||
# CONFIG_NO_PLAT is not set
|
||||
CONFIG_ALL64_PLAT=y
|
||||
# CONFIG_ALL32_PLAT is not set
|
||||
CONFIG_MPSOC_PLATFORM=y
|
||||
|
||||
#
|
||||
# Common Features
|
||||
#
|
||||
CONFIG_HAS_ALTERNATIVE=y
|
||||
CONFIG_HAS_DEVICE_TREE=y
|
||||
# CONFIG_MEM_ACCESS is not set
|
||||
CONFIG_HAS_PDX=y
|
||||
# CONFIG_TMEM is not set
|
||||
CONFIG_XSM=y
|
||||
CONFIG_XSM_FLASK=y
|
||||
CONFIG_XSM_FLASK_AVC_STATS=y
|
||||
# CONFIG_XSM_FLASK_POLICY is not set
|
||||
CONFIG_XSM_SILO=y
|
||||
# CONFIG_XSM_DUMMY_DEFAULT is not set
|
||||
# CONFIG_XSM_FLASK_DEFAULT is not set
|
||||
CONFIG_XSM_SILO_DEFAULT=y
|
||||
# CONFIG_ARGO is not set
|
||||
|
||||
#
|
||||
# Schedulers
|
||||
#
|
||||
CONFIG_SCHED_CREDIT=y
|
||||
CONFIG_SCHED_CREDIT2=y
|
||||
CONFIG_SCHED_RTDS=y
|
||||
# CONFIG_SCHED_ARINC653 is not set
|
||||
CONFIG_SCHED_NULL=y
|
||||
# CONFIG_SCHED_CREDIT_DEFAULT is not set
|
||||
CONFIG_SCHED_CREDIT2_DEFAULT=y
|
||||
# CONFIG_SCHED_RTDS_DEFAULT is not set
|
||||
# CONFIG_SCHED_NULL_DEFAULT is not set
|
||||
CONFIG_SCHED_DEFAULT="credit2"
|
||||
# CONFIG_LIVEPATCH is not set
|
||||
CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_DOM0_MEM=""
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
CONFIG_HAS_NS16550=y
|
||||
CONFIG_HAS_CADENCE_UART=y
|
||||
CONFIG_HAS_MVEBU=y
|
||||
CONFIG_HAS_PL011=y
|
||||
CONFIG_HAS_SCIF=y
|
||||
CONFIG_HAS_PASSTHROUGH=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
|
||||
|
||||
#
|
||||
# Debugging Options
|
||||
#
|
||||
# CONFIG_DEBUG is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
# CONFIG_COVERAGE is not set
|
||||
# CONFIG_LOCK_PROFILE is not set
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
CONFIG_VERBOSE_DEBUG=y
|
||||
# CONFIG_DEVICE_TREE_DEBUG is not set
|
||||
# CONFIG_SCRUB_DEBUG is not set
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
CONFIG_DEBUG=y
|
||||
CONFIG_EARLY_UART_CHOICE_PL011=y
|
||||
CONFIG_EARLY_UART_BASE_ADDRESS=0x2a400000
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
CONFIG_EXPERT=y
|
||||
# Enable ACPI support
|
||||
CONFIG_ACPI=y
|
||||
# Enable ARM Interrupt Translation Service (ITS) emulation
|
||||
CONFIG_HAS_ITS=y
|
||||
@@ -1,15 +1,32 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
|
||||
|
||||
# Machine specific settings
|
||||
XEN_CONFIG_EARLY_PRINTK_juno = "juno"
|
||||
XEN_CONFIG_EARLY_PRINTK_gem5-arm64 = "vexpress"
|
||||
XEN_CONFIG_EARLY_PRINTK_fvp-base = "fastmodel"
|
||||
XEN_CONFIG_EARLY_PRINTK_foundation-armv8 = "fastmodel"
|
||||
XEN_CONFIG_EARLY_PRINTK_n1sdp = "pl011,0x2a400000"
|
||||
|
||||
# Foundation-armv8 support
|
||||
COMPATIBLE_MACHINE_foundation-armv8 = "foundation-armv8"
|
||||
|
||||
SRC_URI_append_foundation-armv8 = " file://fvp/defconfig"
|
||||
|
||||
# FVP Base support
|
||||
COMPATIBLE_MACHINE_fvp-base = "fvp-base"
|
||||
FILESEXTRAPATHS_prepend_fvp-base := "${THISDIR}/files:"
|
||||
SRC_URI_append_fvp-base = " file://early-printk.cfg"
|
||||
|
||||
SRC_URI_append_fvp-base = " file://fvp/defconfig"
|
||||
|
||||
# Juno support
|
||||
COMPATIBLE_MACHINE_juno = "juno"
|
||||
FILESEXTRAPATHS_prepend_juno := "${THISDIR}/files:"
|
||||
SRC_URI_append_juno = " file://early-printk.cfg"
|
||||
|
||||
SRC_URI_append_juno = " file://juno/defconfig"
|
||||
|
||||
# Gem5 support
|
||||
# Fix problem with number of interrupts on gem5
|
||||
SRC_URI_append_gem5-arm64 = " file://4.12.0/0001-xen-arm-Cap-the-number-of-interrupt-lines-for-dom0.patch"
|
||||
|
||||
# N1SDP support
|
||||
COMPATIBLE_MACHINE_n1sdp = "n1sdp"
|
||||
FILESEXTRAPATHS_prepend_n1sdp := "${THISDIR}/files:"
|
||||
SRC_URI_append_n1sdp = " file://n1sdp.cfg \
|
||||
file://early-printk.cfg"
|
||||
|
||||
SRC_URI_append_n1sdp = " file://n1sdp/defconfig"
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Board specific configuration for the manager
|
||||
|
||||
# FVP and Foundation are using vda as hard drive and partition 2 is the
|
||||
# default rootfs, so use vda3 for guest lvm
|
||||
XENGUEST_MANAGER_VOLUME_DEVICE_foundation-armv8 ?= "/dev/vda3"
|
||||
XENGUEST_MANAGER_VOLUME_DEVICE_fvp-base ?= "/dev/vda3"
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_n1sdp ?= "eth0"
|
||||
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_fvp-base ?= "eth0"
|
||||
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_foundation-armv8 ?= "eth0"
|
||||
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_gem5-arm64 ?= "eth0"
|
||||
|
||||
# Juno board has 2 network interfaces, add both of them to the bridge
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_juno ?= "eth0 eth1"
|
||||
@@ -12,4 +12,6 @@ LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE = "${@bb.utils.contains_any('DISTRO_FEATURE
|
||||
'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}"
|
||||
KERNEL_FEATURES_append_fvp-base = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}"
|
||||
KERNEL_FEATURES_append_foundation-armv8 = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}"
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# short-description: Create a disk image
|
||||
# long-description: Creates a partitioned disk image that the user
|
||||
# can directly dd to boot media.
|
||||
|
||||
# For Juno first partition is rootfs normally populated as /dev/sda1
|
||||
part / --source rootfs --ondisk sda --fstype=ext4 --label root --align 1024
|
||||
|
||||
# Second partition to accomodate guests images normally populated as /dev/sda2 (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
|
||||
|
||||
# Third partition is user defined entry normally populated as /dev/sda3
|
||||
${AUTONOMY_HOST_EXTRA_PARTITION}
|
||||
|
||||
bootloader --ptable msdos
|
||||
@@ -1,17 +0,0 @@
|
||||
# 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
|
||||
|
||||
# Fourth partition is user defined entry normally populated as /dev/sda4
|
||||
${AUTONOMY_HOST_EXTRA_PARTITION}
|
||||
|
||||
bootloader --ptable msdos --configfile="${GRUB_CFG_FILE}"
|
||||
@@ -1,28 +0,0 @@
|
||||
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
|
||||
}
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
CONFIG_DEBUG=y
|
||||
CONFIG_EARLY_PRINTK_VEXPRESS=y
|
||||
@@ -1,4 +0,0 @@
|
||||
# gem5-arm64 support
|
||||
COMPATIBLE_MACHINE_gem5-arm64 = "gem5-arm64"
|
||||
FILESEXTRAPATHS_prepend_gem5-arm64 := "${THISDIR}/files:"
|
||||
SRC_URI_append_gem5-arm64 = " file://early-printk.cfg"
|
||||
-1
@@ -1 +0,0 @@
|
||||
XENGUEST_NETWORK_BRIDGE_MEMBERS_gem5-arm64 ?= "eth0"
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
# 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
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
define KFEATURE_DESCRIPTION "Disable SVE support"
|
||||
|
||||
kconf non-hardware disable-arm64-sve.cfg
|
||||
@@ -1,15 +0,0 @@
|
||||
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}"
|
||||
@@ -1 +0,0 @@
|
||||
GRUB_BUILDIN += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen_boot', '', d)}"
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
# 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 \
|
||||
"
|
||||
@@ -39,9 +39,9 @@ ARM_AUTONOMY_HOST_IMAGE_EXTERN_GUESTS ??= ""
|
||||
IMAGE_INSTALL += " \
|
||||
packagegroup-core-boot \
|
||||
packagegroup-core-ssh-openssh \
|
||||
qemu-system-i386 \
|
||||
qemu-xen \
|
||||
xenguest-manager \
|
||||
xenguest-network \
|
||||
xenguest-network-bridge \
|
||||
"
|
||||
|
||||
# Build xen binary
|
||||
@@ -50,24 +50,6 @@ EXTRA_IMAGEDEPENDS += "xen"
|
||||
# Build xen-devicetree to produce a xen ready devicetree
|
||||
EXTRA_IMAGEDEPENDS += "xen-devicetree"
|
||||
|
||||
# Documentation for setting up a multiconfig build can be found in:
|
||||
# meta-arm-autonomy/documentation/arm-autonomy-multiconfig.md
|
||||
|
||||
# In a multiconfig build this variable will hold a dependency string, which differs based
|
||||
# on whether the guest has initramfs or not.
|
||||
# It may have a space seperated list of dependency strings if mulitple guest types are
|
||||
# configured
|
||||
MC_DOIMAGE_MCDEPENDS ?= ""
|
||||
# Example value: mc:host:guest:core-image-minimal:do_image_complete
|
||||
|
||||
# In a multiconfig build the host task 'do_image' has a dependency on multiconfig guest.
|
||||
# This ensures that the guest image file already exists when it is needed by the host
|
||||
DO_IMAGE_MCDEPENDS := "${@ '${MC_DOIMAGE_MCDEPENDS}' if d.getVar('BBMULTICONFIG') else ''}"
|
||||
|
||||
# Apply mc dependency. Empty string if multiconfig not enabled
|
||||
do_image[mcdepends] += "${DO_IMAGE_MCDEPENDS}"
|
||||
|
||||
|
||||
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'")
|
||||
@@ -124,14 +106,7 @@ python add_extern_guests () {
|
||||
_, _, 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.fatal("Guest file is a symlink: " + path)
|
||||
bb.utils.mkdirhier(guestdir)
|
||||
dstname = parm['guestname']
|
||||
# Add file extension if not there
|
||||
|
||||
@@ -6,7 +6,13 @@ OVERRIDES_append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d
|
||||
QEMU_TARGETS_xen = "i386"
|
||||
|
||||
PACKAGECONFIG[noaudio] = "--audio-drv-list='',,"
|
||||
PACKAGECONFIG_append_xen = " noaudio"
|
||||
PACKAGECONFIG_remove_xen = "fdt sdl kvm"
|
||||
PACKAGECONFIG_append_xen = " virtfs noaudio"
|
||||
PACKAGECONFIG_remove_xen = "sdl"
|
||||
|
||||
require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'recipes-devtools/qemu/${BPN}-package-split.inc', '', d)}
|
||||
# Reduce the qemu package size by splitting it into
|
||||
# qemu and qemu-xen packages
|
||||
PACKAGES_prepend_xen := "${PN}-xen"
|
||||
RDEPENDS_${PN}_xen += "${PN}-xen"
|
||||
FILES_${PN}-xen_xen = "${bindir}/qemu-system-i386"
|
||||
RDEPENDS_${PN}-xen_xen += "xen-tools-libxenstore xen-tools-libxenctrl \
|
||||
xen-tools-libxenguest"
|
||||
|
||||
@@ -14,9 +14,7 @@ DESCRIPTION = "Add entries in DTB for Xen and Dom0"
|
||||
|
||||
# Please refer to documentation/xen-devicetree.md for documentation on those
|
||||
# parameters
|
||||
# kernel size is passed to xen via xen.dtb so wee need to add
|
||||
# 'virtual/kernel:do_deploy' as a dependency
|
||||
XEN_DEVICETREE_DEPEND_append = " virtual/kernel:do_deploy"
|
||||
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"
|
||||
@@ -40,10 +38,10 @@ do_deploy() {
|
||||
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}?" \
|
||||
| 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
|
||||
@@ -69,33 +67,6 @@ do_deploy() {
|
||||
done
|
||||
}
|
||||
do_deploy[depends] += "${XEN_DEVICETREE_DEPEND}"
|
||||
do_deploy[prefuncs] += "calc_xen_dtb_dom0_size"
|
||||
|
||||
addtask deploy after do_install
|
||||
|
||||
python calc_xen_dtb_dom0_size() {
|
||||
from math import ceil
|
||||
size = 0
|
||||
if d.getVar('KERNEL_IMAGE_MAXSIZE'):
|
||||
bb.note('size calculation based on KERNEL_IMAGE_MAXSIZE')
|
||||
size = int(d.getVar('KERNEL_IMAGE_MAXSIZE')) * 1024
|
||||
else:
|
||||
kernel = os.path.realpath(d.getVar('DEPLOY_DIR_IMAGE') + '/' +\
|
||||
d.getVar('KERNEL_IMAGETYPE'))
|
||||
size = os.stat(kernel).st_size
|
||||
bb.note('size calculation based on kernel Image file: %s' % kernel)
|
||||
|
||||
bb.note('size in bytes: %d' % size)
|
||||
# Ceil to MiB
|
||||
size_required = ceil(size / (2 ** 20)) * (2 ** 20)
|
||||
size_defined = int(d.getVar('XEN_DEVICETREE_DOM0_SIZE'), 16)
|
||||
|
||||
if size_required > size_defined:
|
||||
bb.warn ("Wrong kernel size setting inside xen dtb!\n"\
|
||||
"Required:\t%(req)d (%(req)#010X)\n"\
|
||||
"Requested:\t%(def)d (%(def)#010X)"\
|
||||
% {"req": size_required, "def": size_defined})
|
||||
bb.warn ("Overriding XEN_DEVICETREE_DOM0_SIZE with "\
|
||||
"%(req)d (%(req)#010X)" % {"req": size_required})
|
||||
d.setVar('XEN_DEVICETREE_DOM0_SIZE', hex(size_required))
|
||||
}
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
|
||||
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
|
||||
|
||||
From 5499e0fc8082024bf7e2d0facd5c976e82105070 Mon Sep 17 00:00:00 2001
|
||||
From: Diego Sueiro <diego.sueiro@arm.com>
|
||||
Date: Thu, 20 Aug 2020 11:58:20 +0100
|
||||
Subject: [PATCH] tools/hotplug: Fix hostname setting in vif-nat
|
||||
|
||||
Setting the hostname is failing because the "$XENBUS_PATH/domain"
|
||||
doesn't exist anymore. To fix this we set it to dom$domid
|
||||
|
||||
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
|
||||
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
|
||||
Acked-by: Wei Liu <wl@xen.org>
|
||||
---
|
||||
tools/hotplug/Linux/vif-nat | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/hotplug/Linux/vif-nat b/tools/hotplug/Linux/vif-nat
|
||||
index a76d9c784b..26144350b3 100644
|
||||
--- a/tools/hotplug/Linux/vif-nat
|
||||
+++ b/tools/hotplug/Linux/vif-nat
|
||||
@@ -85,7 +85,7 @@ router_ip=$(routing_ip "$ip")
|
||||
# Split the given IP/bits pair.
|
||||
vif_ip=`echo ${ip} | awk -F/ '{print $1}'`
|
||||
|
||||
-hostname=$(xenstore_read "$XENBUS_PATH/domain" | tr -- '_.:/+' '-----')
|
||||
+hostname=dom$domid
|
||||
if [ "$vifid" != "1" ]
|
||||
then
|
||||
hostname="$hostname-$vifid"
|
||||
--
|
||||
2.17.1
|
||||
@@ -1,9 +0,0 @@
|
||||
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)}"
|
||||
@@ -1,9 +1,14 @@
|
||||
#
|
||||
# Define early console based on board parameters
|
||||
#
|
||||
|
||||
XEN_CONFIG_EARLY_PRINTK ??= "disable"
|
||||
|
||||
EXTRA_OEMAKE += "${@bb.utils.contains('XEN_CONFIG_EARLY_PRINTK', 'disable', \
|
||||
'', ' CONFIG_DEBUG=y CONFIG_EARLY_PRINTK=${XEN_CONFIG_EARLY_PRINTK}',d)}"
|
||||
|
||||
# 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)}"
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-4.14:"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-xen-arm-Throw-messages-for-unknown-FP-SIMD-implement.patch \
|
||||
"
|
||||
@@ -1,138 +0,0 @@
|
||||
#============================================================================
|
||||
# ${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
|
||||
@@ -1,48 +0,0 @@
|
||||
#============================================================================
|
||||
# /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
|
||||
@@ -1,30 +0,0 @@
|
||||
# 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/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 $?
|
||||
@@ -1,35 +0,0 @@
|
||||
# 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}\"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1,21 +1,15 @@
|
||||
#!/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
|
||||
|
||||
guestname="${1}"
|
||||
|
||||
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
|
||||
# get guest parameters
|
||||
. ./params.cfg
|
||||
|
||||
if [ "${NETWORK_BRIDGE:-}" = "1" ]; then
|
||||
echo "vif = ['${BRIDGE_NAME}']" >> ${guestname}.cfg
|
||||
fi
|
||||
|
||||
|
||||
@@ -65,10 +65,8 @@ case "$1" in
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping xenguest"
|
||||
# update guest list
|
||||
guestlist=$(xenguest-manager status | grep Running | cut -d ":" -f1)
|
||||
for f in ${guestlist}; do
|
||||
xl shutdown -w ${f} || xl destroy ${f}
|
||||
/usr/bin/xenguest-manager stop ${f}
|
||||
done
|
||||
;;
|
||||
reload)
|
||||
|
||||
@@ -465,21 +465,16 @@ 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}
|
||||
cat guest.cfg $(find guest.d -type f 2> /dev/null) > ${guestname}.cfg
|
||||
|
||||
# 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 | \
|
||||
@@ -489,26 +484,21 @@ function xenguest_guest_start()
|
||||
|
||||
# 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}
|
||||
echo "$f ${guestname}" >> ${LOGFILE} 2>&1
|
||||
$f ${guestname} >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -f ${guestname}.cfg
|
||||
popd > /dev/null 2>&1
|
||||
echo "${PREF} Error during pre init script of ${guestname}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Create non started guest
|
||||
echo "xl create -p ${guestcfgfile}" >> ${LOGFILE} 2>&1
|
||||
xl create -p ${guestcfgfile} >> ${LOGFILE} 2>&1
|
||||
echo "xl create -p ${guestname}.cfg" >> ${LOGFILE} 2>&1
|
||||
xl create -p ${guestname}.cfg >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -f ${guestcfgfile}
|
||||
rm -f ${guestname}.cfg
|
||||
popd > /dev/null 2>&1
|
||||
echo "${PREF} Error starting ${guestname}"
|
||||
exit 1
|
||||
@@ -516,20 +506,15 @@ function xenguest_guest_start()
|
||||
|
||||
# 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}
|
||||
echo "$f ${guestname}" >> ${LOGFILE} 2>&1
|
||||
$f ${guestname} >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -f ${guestname}.cfg
|
||||
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
|
||||
xl destroy ${guestname} >> ${LOGFILE} 2>&1
|
||||
popd > /dev/null 2>&1
|
||||
echo "${PREF} Error during init script of ${guestname}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -537,7 +522,7 @@ function xenguest_guest_start()
|
||||
echo "xl unpause ${guestname}" >> ${LOGFILE} 2>&1
|
||||
xl unpause ${guestname} >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -f ${guestcfgfile}
|
||||
rm -f ${guestname}.cfg
|
||||
popd > /dev/null 2>&1
|
||||
echo "${PREF} Error starting ${guestname}"
|
||||
exit 1
|
||||
@@ -545,24 +530,19 @@ function xenguest_guest_start()
|
||||
|
||||
# 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}
|
||||
echo "$f ${guestname}" >> ${LOGFILE} 2>&1
|
||||
$f ${guestname} >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -f ${guestname}.cfg
|
||||
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
|
||||
xl destroy ${guestname} >> ${LOGFILE} 2>&1
|
||||
popd > /dev/null 2>&1
|
||||
echo "${PREF} Error during post init script of ${guestname}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f ${guestcfgfile}
|
||||
rm -f ${guestname}.cfg
|
||||
popd > /dev/null 2>&1
|
||||
}
|
||||
|
||||
@@ -597,22 +577,11 @@ function check_guest_exist()
|
||||
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
|
||||
running=$(xl list | awk 'NR > 1 {print $1}' | grep "${guestname}" || echo)
|
||||
if [ ! "${running}" = "${guestname}" ]; then
|
||||
echo "${PREF} Guest ${guestname} is not running"
|
||||
exit 1
|
||||
fi
|
||||
@@ -621,7 +590,8 @@ function check_guest_running()
|
||||
function check_guest_not_running()
|
||||
{
|
||||
guestname="${1}"
|
||||
if xl_list_contains $guestname; then
|
||||
running=$(xl list | awk 'NR > 1 {print $1}' | grep "${guestname}" || echo)
|
||||
if [ "${running}" = "${guestname}" ]; then
|
||||
echo "${PREF} Guest ${guestname} is running"
|
||||
exit 1
|
||||
fi
|
||||
@@ -678,8 +648,10 @@ case ${cmd} in
|
||||
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
|
||||
# We need to stop the guest first
|
||||
running=$(xl list | awk 'NR > 1 {print $1}' | grep "${guestname}" \
|
||||
|| echo)
|
||||
if [ "${running}" = "${guestname}" ]; then
|
||||
echo "xl destroy ${guestname}" >> ${LOGFILE} 2>&1
|
||||
xl destroy ${guestname} >> ${LOGFILE} 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -727,25 +699,20 @@ case ${cmd} in
|
||||
fi
|
||||
;;
|
||||
status)
|
||||
|
||||
single_status() (
|
||||
guestname="${1}"
|
||||
guestname="${arg1}"
|
||||
if [ -n "${guestname}" ]; then
|
||||
check_guest_exist ${guestname}
|
||||
if xl_list_contains $guestname; then
|
||||
if xl list | awk 'NR > 1 {print $1}' | grep "${guestname}" > \
|
||||
/dev/null 2>&1; 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
|
||||
$this status $f
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -82,9 +82,6 @@ Xen configuration for the guest
|
||||
--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
|
||||
@@ -671,20 +668,6 @@ for arg in "${@}"; do
|
||||
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"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user