From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 671BDC5B572 for ; Wed, 12 Aug 2026 15:37:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=paNchfOTWdMKv9FJrN/nKZAvpQCN48XSKdz47wR3WCE=; b=sLwc+LSRRNyMUDw0xdiyLMTrMK RM2cTozY0htuv0luQ+XETYZcotSSkriFbRrFMX8gMs6XShGkdcq9nQiGnywsBCuo/VoD4g/Il3LXE W7Y1moQNW2Tk3frxosfG81E3OO64dbjusfxnIFEmckNC4UwUwUS/nUeJshcfdWmvou/URyafK4Wde tv38ONCcl/6ZXlpXWkk16fqI+yhde4g78Y3jjI4Sj2BcnUavRX2ZXhTQ84gAA75qoRtSVkOQiPKRS huQLOBLehCmPVq4tIvwL3T+BxaSkpsq2zJVey884P9EjUpOb8VAdYz+zp7TffsasnwzCL0LuyhCdx VH7j+6LA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wuB1E-0000000GUe9-0iJ4; Wed, 12 Aug 2026 15:37:28 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wuB0s-0000000GU9Y-2ppz for linux-arm-kernel@bombadil.infradead.org; Wed, 12 Aug 2026 15:37:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=paNchfOTWdMKv9FJrN/nKZAvpQCN48XSKdz47wR3WCE=; b=pCI+vnoBZ2tYibdLOWe5wdr/b7 n953fdt1ssnzHj0lxHPOa4uqM62/2apK5qWHUv5hCH7r97KJEZV/6kJh16HkW0ygzkwfCc+uk+oHU rWFSZDK2p82FHYabck78TTrYDvLe97L24JvQWyO2DNTP5gdaYr3pkTUY4yZuQWPv1pH5e7jNQshM4 2LEbnJsJf0K2UVM+hdp3qzYAKzPe1q/y8tjidBABndX0DMqk3s2WvCZyfy0Iw8b8uzJL2Koo/7Cau g/xxDsdOybrCFB4pt3V1YDoeKjgdoNNMNx7ZC2gqZwrELVicrfTj8UdMVMrLX3i0BDcelLda3KREz ZBaOuhdg==; Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by desiato.infradead.org with esmtps (Exim 4.99.2 #2 (Red Hat Linux)) id 1wuB0n-0000000FZAy-38eD for linux-arm-kernel@lists.infradead.org; Wed, 12 Aug 2026 15:37:05 +0000 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CE1U1T1816401; Wed, 12 Aug 2026 15:36:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=paNchfOTWdMKv9FJr N/nKZAvpQCN48XSKdz47wR3WCE=; b=ptpb5dTCPffv9T303JSGqMdLDpOtDLKbP hGKYfdbJHhDG9SN6FaTG5VdBDLrRgQs0BOLK+fB2+P2/5vV3mK2EvUJFSaIKowhw 78kTHcxcvmVNT+XLmFKhwY9TohSisFSWeBK0Xbe0i0UPlqljGBhAU2Ysou0YbZ5B fTP6ScKnF6kZJG3yGCLIuC49qi/9F0DAdYVouAOfR3FUUcu7Ca6u0O4+VVuf8g4R uj4rajpDjN99ccpKdtnN50a55xVoEQCfzB7f/NmtEvtU9NtOtKqkNLzXNKO/PkaR yN5NL/qsI17eNXybNT8zjNpJBy3TaLsI0+MTIq2GZ6V1u3I6JeUbg== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvk0381f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 15:36:46 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CFBKx2018652; Wed, 12 Aug 2026 15:36:45 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxf5w6tdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 15:36:45 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CFafIs49545500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 15:36:41 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 502FA2004B; Wed, 12 Aug 2026 15:36:41 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 01B092004F; Wed, 12 Aug 2026 15:36:41 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 15:36:40 +0000 (GMT) From: Steffen Eiden To: kvm@vger.kernel.org, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org Cc: Alexander Gordeev , Andreas Grapentin , Arnd Bergmann , Catalin Marinas , Christian Borntraeger , Claudio Imbrenda , David Hildenbrand , Friedrich Welter , Fuad Tabba , Gautam Gala , Hariharan Mari , Heiko Carstens , Hendrik Brueckner , Ilya Leoshkevich , Janosch Frank , Joey Gouly , Marc Zyngier , Nico Boehr , Nina Schoetterl-Glausch , Oliver Upton , Paolo Bonzini , Sean Christopherson , Suzuki K Poulose , Sven Schnelle , Ulrich Weigand , Vasily Gorbik , Will Deacon , Zenghui Yu Subject: [PATCH v6 24/33] KVM: s390: Use arm64 code Date: Wed, 12 Aug 2026 17:36:20 +0200 Message-ID: <20260812153631.3376090-25-seiden@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260812153631.3376090-1-seiden@linux.ibm.com> References: <20260812153631.3376090-1-seiden@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDEyNiBTYWx0ZWRfX0ph/DOSarjSF +YiRgT7n4se5StELOZgOig+FH1QpKID4M+XSqExSP2n0dZ9jxJUp6zG9Kv7J4Z2GgJ9MFUpn1by hZNtVIcNABkAWpJE05aZj+9DqVUyuk7pyBlP8uWaJDBGv+qm6zL8IsfuAJ7x2WOCCULX5mfXiOc 2ZVjGgOnAmnY6RRtsI6Fp4DdnBF2dYintlc+2J8wsYsVMWnFuZ4nBAuEGEJt4+zI4ZovJoDEah8 cJ5OgsnzO88BEzbHIu9fDrUo39SkuwUiA9yR1TJjrJnRE/wWIsF260N2uZv5HvFwrVBHzvpi4z2 ZYN7hEjuNd0ec/mobm6lDSaetQIuJ1FbwIeaulQJe8tCK9HYARh0mO43K8Qal7f0sGw2nEPZfvC f3AZuhjWbBIWtUoxWJ5V6jw20l0Or+34q8uTY2PXTgwbudzUxq9VqDmk+xby1iiPILzQCDWaqjC +NPd5VioinmjVuqWyXA== X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDEyNiBTYWx0ZWRfX9bJhdGGOurDP MZDfYggZkGcmXiq6XkqeOxK7e15GiwjbcJptNIHL5Oouqf+y4Rkmum3mB/IR0voa8lczzPFcrrr NujtGumglCd/WkomMVzc6jRv9zR766A= X-Authority-Analysis: v=2.4 cv=RqD16imK c=1 sm=1 tr=0 ts=6a7c930f cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=x1b9RNJZmR4nZInT6RoA:9 X-Proofpoint-GUID: Wk3lkGnltghMJCG-hewYrwIZFT9DP1a2 X-Proofpoint-ORIG-GUID: cTH3nKZmSq9UlDzDntXatl3wgED-Qsy8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_04,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120126 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260812_163702_181552_9C13D2F8 X-CRM114-Status: GOOD ( 20.52 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add the infrastructure to extract KVM/arm64 code into s390 at built time similar to the arm64 header sharing. Add copy-arm64c.awk hat detects ARM64_S390_COMMON markers and extracts marked section into an .inc file that can be consumed by arm on s390 host code. If no marker is found make will fail. To ensure that no code is consumed twice by accident a guard is added during file generation. A s390 C file wanting to consume such an inc file must first define __INCL_GEN_ARM_FILE otherwise the inc file will emit a compile error. Example: #define __INCL_GEN_ARM_FILE #include #undef __INCL_GEN_ARM_FILE Signed-off-by: Steffen Eiden --- arch/s390/kvm/arm64/.gitignore | 2 + arch/s390/kvm/arm64/Makefile.gen | 29 ++++++++++++ arch/s390/kvm/arm64/copy-arm64c.awk | 72 +++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 arch/s390/kvm/arm64/.gitignore create mode 100644 arch/s390/kvm/arm64/Makefile.gen create mode 100644 arch/s390/kvm/arm64/copy-arm64c.awk diff --git a/arch/s390/kvm/arm64/.gitignore b/arch/s390/kvm/arm64/.gitignore new file mode 100644 index 000000000000..bd9d90694676 --- /dev/null +++ b/arch/s390/kvm/arm64/.gitignore @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +generated/* diff --git a/arch/s390/kvm/arm64/Makefile.gen b/arch/s390/kvm/arm64/Makefile.gen new file mode 100644 index 000000000000..cb9482eb947b --- /dev/null +++ b/arch/s390/kvm/arm64/Makefile.gen @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Extracts ARM64 marked sections to .inc files that are included by main source +# files + +# List of ARM64 C files to extract +ARM64_CFILES := \ + arm.c \ + guest.c \ + handle_exit.c \ + mmio.c \ + +quiet_cmd_extract_inc = GEN $@ + cmd_extract_inc = mkdir -p $(dir $@); \ + $(AWK) -f $(src)/copy-arm64c.awk $< > $@ || \ + { echo "Error: No or unbalanced ARM64_S390_COMMON markers in $<" >&2; rm -f $@; exit 1; } + +$(obj)/generated/%.inc: $(srctree)/arch/arm64/kvm/%.c $(src)/copy-arm64c.awk FORCE + $(call if_changed,extract_inc) + +ARM64_INC_FILES := $(foreach cfile,$(ARM64_CFILES),generated/$(basename $(cfile)).inc) + +targets += $(ARM64_INC_FILES) +clean-files += generated/*.inc + +$(addprefix $(obj)/,$(kvm-arm64-obj)): $(addprefix $(obj)/,$(ARM64_INC_FILES)) + +$(foreach cfile,$(basename $(ARM64_CFILES)),\ + $(eval $(obj)/$(cfile).o: $(obj)/generated/$(cfile).inc)) diff --git a/arch/s390/kvm/arm64/copy-arm64c.awk b/arch/s390/kvm/arm64/copy-arm64c.awk new file mode 100644 index 000000000000..20bd73c52ec4 --- /dev/null +++ b/arch/s390/kvm/arm64/copy-arm64c.awk @@ -0,0 +1,72 @@ +#!/usr/bin/awk -f +# SPDX-License-Identifier: GPL-2.0 +# +# Extract marked sections from ARM64 C files for sharing with s390 KVM +# +# Usage: share-arm64-cfile.awk +# +# Extracts all sections between start/end markers. If no markers found, signals failure. + +BEGIN { + # Constants + start_pattern = "^#ifdef ARM64_S390_COMMON$" + end_pattern = "^#endif /\\* ARM64_S390_COMMON \\*/$" + + # State variables + copying = found_marker = 0 + file_header_done = 0 +} + +!file_header_done { + if (/^\/\*/ || /^\/\/ SPDX-License-Identifier:/) { + print + next + } + if (/[[:space:]]\*([[:space:]]|$)/) { + print + next + } + if (/\*\//) { + print " *" + } else { + print "/*" + } + + filename = FILENAME + sub(/^.*arch\/arm64\//, "arch/arm64/", filename) + print " * This file was automatically generated from " filename + print " * Do not modify this file directly." + print " */" + print "" + print "#ifndef __INCL_GEN_ARM_FILE" + print "#error included .inc file w/o proper guard definition" + print "#else" + print "#undef __INCL_GEN_ARM_FILE" + print "#endif /* __INCL_GEN_ARM_FILE */" + print "" + + file_header_done = 1 +} + +$0 ~ start_pattern { + if (copying) { exit 1 } + copying = found_marker = 1 + next +} + +$0 ~ end_pattern { + if (!copying) { exit 1 } + copying = 0 + next +} + +copying { + gsub(/#include