2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-08 12:40:45 +00:00

feat(genesis): add s390x OpenEmbedded target

This commit is contained in:
Vinícius Ferrão
2026-09-04 00:53:58 -03:00
parent fd580b901f
commit b63e695601
18 changed files with 166 additions and 6 deletions
+1
View File
@@ -0,0 +1 @@
xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/0001-s390-use-stable-generator-name.patch whitespace=-space-before-tab
+1 -1
View File
@@ -17,7 +17,7 @@ fi
for architecture do
case "$architecture" in
aarch64|armv7hf|riscv64|x86|x86_64|ppc64|ppc64le) ;;
aarch64|armv7hf|riscv64|s390x|x86|x86_64|ppc64|ppc64le) ;;
*)
printf 'Unsupported Genesis architecture: %s\n' "$architecture" >&2
exit 2
+1
View File
@@ -23,6 +23,7 @@ case "$architecture" in
armv7hf) kernel_name=zImage ;;
aarch64) kernel_name=Image ;;
riscv64) kernel_name=Image ;;
s390x) kernel_name=bzImage ;;
*) fail "unsupported architecture: $architecture" ;;
esac
+1 -1
View File
@@ -21,7 +21,7 @@ output_dir=${6%/}
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
case "$architecture" in
x86|x86_64|ppc64|ppc64le|armv7hf|aarch64|riscv64) ;;
x86|x86_64|ppc64|ppc64le|armv7hf|aarch64|riscv64|s390x) ;;
*) fail "unsupported architecture: $architecture" ;;
esac
[[ $extension =~ ^[a-z0-9][a-z0-9._-]{0,63}$ ]] \
+6
View File
@@ -0,0 +1,6 @@
header:
version: 19
includes:
- xCAT-genesis-builder/oe/kas/common.yml
machine: xcat-genesis-s390x
@@ -34,7 +34,7 @@ python __anonymous() {
architecture = d.getVar("XCAT_GENESIS_EXTENSION_ARCHITECTURE")
architectures = {
"x86", "x86_64", "ppc64", "ppc64le", "armv7hf", "aarch64", "riscv64"
"x86", "x86_64", "ppc64", "ppc64le", "armv7hf", "aarch64", "riscv64", "s390x"
}
if architecture not in architectures:
bb.fatal("Invalid Genesis extension architecture: %s" % architecture)
@@ -0,0 +1,29 @@
DEFAULTTUNE ?= "s390x"
TUNEVALID[m64] = "64-bit z/Architecture ABI"
TUNEVALID[bigendian] = "Big-endian byte order"
TUNEVALID[z10] = "IBM System z10 instruction set"
TUNE_ARCH = "s390x"
TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', ' -m64', '', d)}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'z10', ' -march=z10 -mtune=z10', '', d)}"
AVAILTUNES += "s390x"
TUNE_FEATURES:tune-s390x = "m64 bigendian z10"
BASE_LIB:tune-s390x = "lib64"
BASELIB:libc-glibc:s390x = "lib64"
TUNE_PKGARCH:tune-s390x = "s390x"
PACKAGE_EXTRA_ARCHS:tune-s390x = "s390x"
def xcat_genesis_s390x_siteinfo(archinfo, osinfo, targetinfo, d):
archinfo["s390x"] = "endian-big bit-64"
return archinfo, osinfo, targetinfo
SITEINFO_EXTRA_DATAFUNCS += "xcat_genesis_s390x_siteinfo"
def xcat_genesis_s390x_packageqa_machdata(machdata, d):
machdata["linux"]["s390x"] = (22, 0, 0, False, 64)
return machdata
PACKAGEQA_EXTRA_MACHDEFFUNCS += "xcat_genesis_s390x_packageqa_machdata"
@@ -0,0 +1,37 @@
#@TYPE: Machine
#@NAME: xCAT Genesis s390x
#@DESCRIPTION: QEMU s390x Genesis target
DEFAULTTUNE = "s390x"
XCAT_GENESIS_ARCHITECTURE = "s390x"
require conf/machine/include/s390x/tune-s390x.inc
require conf/machine/include/qemu.inc
ARCH:s390x = "s390"
QEMU_TARGETS:append = " s390x"
MACHINEOVERRIDES =. "qemus390x:"
KERNEL_IMAGETYPE = "bzImage"
SERIAL_CONSOLES = "115200;ttysclp0"
XCAT_GENESIS_CONSOLE_TTY = "ttysclp0"
MACHINE_FEATURES_DEFAULTS = ""
MACHINE_FEATURES = ""
MACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""
MACHINE_EXTRA_RRECOMMENDS = ""
IMAGE_FSTYPES = "cpio.gz ext4"
QB_SYSTEM_NAME = "qemu-system-s390x"
QB_MACHINE = "-machine s390-ccw-virtio"
# TCG lacks optional z10 facilities, so disable them while retaining the z10 instruction floor.
QB_CPU = "-cpu z10EC-base,msa=off,msa1=off,dfp=off,dfphp=off,parseh=off,hfpue=off,hfpm=off,pfpo=off,dateh2=off,csske=off,asnlxr=off,tods=off"
QB_SMP = "-smp 2"
QB_MEM = "-m 4096"
QB_DEFAULT_FSTYPE = "ext4"
QB_KERNEL_CMDLINE_APPEND = "console=ttysclp0"
QB_NETWORK_DEVICE = "-device virtio-net-ccw,netdev=net0,mac=@MAC@"
QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-ccw,drive=disk0"
QB_RNG = "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-ccw,rng=rng0"
QB_OPT_APPEND = ""
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: EPL-1.0
my %targets = (
"linux-s390x" => {
inherit_from => [ "linux64-s390x" ],
},
);
@@ -0,0 +1,7 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append:s390x = " file://50-xcat-s390x.conf"
do_configure:prepend:s390x() {
install -m 0644 ${UNPACKDIR}/50-xcat-s390x.conf ${S}/Configurations/
}
@@ -46,7 +46,7 @@ canonical_architecture() {
case "$machine" in
i?86) printf '%s\n' x86 ;;
armv7*) printf '%s\n' armv7hf ;;
x86_64|ppc64|ppc64le|aarch64|riscv64) printf '%s\n' "$machine" ;;
x86_64|ppc64|ppc64le|aarch64|riscv64|s390x) printf '%s\n' "$machine" ;;
*) fail "unsupported runtime architecture: $machine" ;;
esac
}
@@ -75,7 +75,7 @@ validate_manifest() {
.schema == 1 and
(.name | type == "string" and test("^[a-z0-9][a-z0-9._-]{0,63}$")) and
(.version | type == "string" and test("^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$")) and
(.architecture | IN("x86", "x86_64", "ppc64", "ppc64le", "armv7hf", "aarch64", "riscv64")) and
(.architecture | IN("x86", "x86_64", "ppc64", "ppc64le", "armv7hf", "aarch64", "riscv64", "s390x")) and
(.genesis_release | type == "string" and test("^[A-Za-z0-9._-]+$")) and
(.key_id | type == "string" and test("^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$")) and
(.license_class | IN("open", "redistributable", "restricted")) and
@@ -0,0 +1,3 @@
do_configure:s390x() {
LDCONFIG=true ${S}/configure --prefix=${prefix} --shared --libdir=${libdir} --uname=GNU --disable-crcvx
}
@@ -0,0 +1 @@
COMPATIBLE_HOST:s390x = "s390x.*-linux"
@@ -0,0 +1,26 @@
From: xCAT Genesis Builder <xcat@users.noreply.github.com>
Date: Thu, 3 Sep 2026 22:46:00 -0300
Subject: [PATCH] s390: use stable generator name
__FILE__ contains the build directory when the generator is compiled with an
absolute source path. Do not copy that path into the exported source package.
Upstream-Status: Pending
Signed-off-by: xCAT Genesis Builder <xcat@users.noreply.github.com>
---
arch/s390/tools/gen_opcode_table.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/s390/tools/gen_opcode_table.c b/arch/s390/tools/gen_opcode_table.c
index 0fbb061..8cd17d0 100644
--- a/arch/s390/tools/gen_opcode_table.c
+++ b/arch/s390/tools/gen_opcode_table.c
@@ -341,7 +341,7 @@ int main(int argc, char **argv)
printf("/*\n");
printf(" * DO NOT MODIFY.\n");
printf(" *\n");
- printf(" * This file was generated by %s\n", __FILE__);
+ printf(" * This file was generated by arch/s390/tools/gen_opcode_table.c\n");
printf(" */\n\n");
print_formats(desc);
print_long_insn(desc);
@@ -0,0 +1,28 @@
CONFIG_MARCH_Z10=y
CONFIG_TUNE_Z10=y
CONFIG_NET=y
CONFIG_INET=y
CONFIG_IPV6=y
CONFIG_NETDEVICES=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_CCWGROUP=y
CONFIG_QDIO=y
CONFIG_QETH=y
CONFIG_QETH_L2=y
CONFIG_QETH_L3=y
CONFIG_DASD=y
CONFIG_DASD_ECKD=y
CONFIG_DASD_FBA=y
CONFIG_CHSC_SCH=y
CONFIG_SCSI=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_ZFCP=y
CONFIG_SCLP_TTY=y
CONFIG_SCLP_CONSOLE=y
CONFIG_SCLP_VT220_TTY=y
CONFIG_SCLP_VT220_CONSOLE=y
CONFIG_TN3270=y
CONFIG_TN3270_CONSOLE=y
@@ -84,3 +84,15 @@ do_kernel_metadata:prepend:xcat-genesis-ppc64() {
fi
}
do_kernel_metadata[depends] += "patch-native:do_populate_sysroot"
COMPATIBLE_MACHINE:xcat-genesis-s390x = "^xcat-genesis-s390x$"
KMACHINE:xcat-genesis-s390x = "xcat-genesis-s390x"
KBRANCH:xcat-genesis-s390x = "v6.18/standard/base"
SRCREV_machine:xcat-genesis-s390x = "b1ba5428513b52c2bd6acfd3ad0a910f699bc395"
KBUILD_DEFCONFIG:xcat-genesis-s390x = "defconfig"
KCONFIG_MODE:xcat-genesis-s390x = "--alldefconfig"
KERNEL_FEATURES:remove:xcat-genesis-s390x = "features/drm-bochs/drm-bochs.scc"
SRC_URI:append:xcat-genesis-s390x = " \
file://0001-s390-use-stable-generator-name.patch \
file://xcat-genesis-s390x.cfg \
"
@@ -0,0 +1,2 @@
# libspdm has no s390x architecture mapping.
COMPATIBLE_HOST:s390x = "null"
+1 -1
View File
@@ -59,7 +59,7 @@ done
architecture=$1
image_dir=${2%/}
case "$architecture" in
aarch64|armv7hf|riscv64|x86|x86_64|ppc64|ppc64le) ;;
aarch64|armv7hf|riscv64|s390x|x86|x86_64|ppc64|ppc64le) ;;
*) fail "unsupported architecture: $architecture" ;;
esac