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:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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}$ ]] \
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
header:
|
||||
version: 19
|
||||
includes:
|
||||
- xCAT-genesis-builder/oe/kas/common.yml
|
||||
|
||||
machine: xcat-genesis-s390x
|
||||
+1
-1
@@ -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 = ""
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
# SPDX-License-Identifier: EPL-1.0
|
||||
|
||||
my %targets = (
|
||||
"linux-s390x" => {
|
||||
inherit_from => [ "linux64-s390x" ],
|
||||
},
|
||||
);
|
||||
+7
@@ -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/
|
||||
}
|
||||
+2
-2
@@ -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"
|
||||
+26
@@ -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);
|
||||
+28
@@ -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"
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user