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 07D12CD6E59 for ; Fri, 29 May 2026 15:57:07 +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=HvS5ygHypbJ75jCe14OYm4t9n4F8Jw6nQDIGnTnTBbo=; b=buLkmAzeSG3rCgmntI1N9BcDpv PHsvfLSENuqAPBfdY+k1yiAlZpZrR38yS6eTRI4agUxK9KRhvTRmjZmQmwaUglsQvoKWJa+0MLegW xer2aboKp31aDWI9UUCbi6IbUMM+WfGQeMjWVg6jcFajqXRUPeIKWrcZ17XF7sUuLybEkkq+3vrZB 9Lixd4Guv7oRIsAdaMWl8j4SPVIncyau+zqaURsUUXesF2zfkewbrbWEtmgB34iB128kPmUZG2meA XKIk3n4PzmagfNbkggPfh1r3VTTo5hhO3tZ4Ee1g6vZUb+rQbCg5UeD/8pRGkOL7nn2vlisZ3H1Y/ Ckwc5VqQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wSzZy-00000007mr0-2qJe; Fri, 29 May 2026 15:56:58 +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 1wSzZb-00000007mRg-3dra for linux-arm-kernel@bombadil.infradead.org; Fri, 29 May 2026 15:56:36 +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=HvS5ygHypbJ75jCe14OYm4t9n4F8Jw6nQDIGnTnTBbo=; b=P7AmLIlvGC8V841RzSF10+1zsG WvdSg3urnNLRqCR/q6paR0W2tH15SYENDpPgne91MRBYxOlMf0b4mNHuqH8fJo9jgNQOmsFobf6zk 6stpaKv10Dxcnlveoric6io9sG7gXTQS1TpRewdYMYvnD/5s9UAborvGgIqP/Ee1OCrizsW0GruwO nDkhoTE9LMFuqiZjRnH6OopvxBLUmh7KJ9+FCN9fwJgJGaDqK6VzT+aKCcCVrMadJSzfKeCwqBD3t +T8gtt4C7q3GoZ9UhbjFDZ9u/HI1w9oyVYgFWDzS4CUYaPS1HuNAD4bxSGjr3ANeLC4zNlSxBAwoR Vos5h2TQ==; Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by desiato.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wSzZX-00000001nGg-0ldI for linux-arm-kernel@lists.infradead.org; Fri, 29 May 2026 15:56:34 +0000 Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64TFAYU72776975; Fri, 29 May 2026 15:56:18 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=HvS5ygHypbJ75jCe1 4OYm4t9n4F8Jw6nQDIGnTnTBbo=; b=Br07LJqVccDj11BHABnbfpAinPDJhDQyz //ajbUVn59mmqveBwbisoas67DHY4xyZ0+9DKfKcrRqP8ViC/0s9d/OByh6PkPHM JQgIahsuwnBMgwNoU1ndbbmROOlgu+5sWBwa2DPUddABnkXPKSK1rGL3S9U5w7da FgZ6g3yWFT095uoeTUauo7zszH7AW2noaEwFlaDRSoTgdwUrmJfb9YfzkTPcKVG2 7LTbuDFfByuN/4lJ3yCFT6/rWxsWuz9PGA6o4It/XIoaA/9kK7+UV0MvYQwAcGha AmBKsnb28U/x20o9IuZ36dj/OxPQxj2vT8kZi+9fOjvUQum5ryrsg== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4ee889m2d6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 29 May 2026 15:56:17 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64TFs7d9009674; Fri, 29 May 2026 15:56:16 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4edjrbgkw0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 29 May 2026 15:56:16 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64TFu9tX47120694 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 May 2026 15:56:09 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 72F0020040; Fri, 29 May 2026 15:56:09 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 217952004B; Fri, 29 May 2026 15:56:09 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 29 May 2026 15:56:09 +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 , 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 , Suzuki K Poulose , Sven Schnelle , Ulrich Weigand , Vasily Gorbik , Will Deacon , Zenghui Yu Subject: [PATCH v1 19/26] KVM: arm64: Share KVM feature detection macros Date: Fri, 29 May 2026 17:55:52 +0200 Message-ID: <20260529155601.2927240-20-seiden@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260529155601.2927240-1-seiden@linux.ibm.com> References: <20260529155601.2927240-1-seiden@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: g14Y61h8uAxZVsdbu3T7k6nMLecUnH8y X-Proofpoint-GUID: g14Y61h8uAxZVsdbu3T7k6nMLecUnH8y X-Authority-Analysis: v=2.4 cv=XqfK/1F9 c=1 sm=1 tr=0 ts=6a19b721 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=jOJeQztrt6vKKCgc4XMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI5MDE1NiBTYWx0ZWRfX/jwSK6rRsyho 2nIBltCjJMUMeEh8dKZ2tjLZobHXN+jrO55sYqE797bQ4oESaB0Hgb5ZVPXr/a1bBgpyDmSYFom PDhcdBMBn+dMREelMLs8A/8oG+1Mymfx2l5JhZ6re8aISrUtFYQTiacebKWG8DUY/2UbmP+97yW LSsj6YH9rDl9eggcv55CXKj0fyGwUTV9iTaLUH7GQB4PbRWH8TPDQc9dUuYIrD52r3K//LV7Cty DMQJU3MxDCShags7TJTCwzhjfs6DF5Uj4gMJROus5Q9gyvN5GLId2fnG13SS4t/Y4FtyF1wKGFk rqM69GF/9KwW23ZqDvd0FdNAASLREImVIryp0AamhgyMg0ffZKEB7hx6pezvjI9IWPGc0nAlQw+ iSC7lgubovmbAEVBcWZVmT7BL3akZPwwjgDQcNebahUVJHYBkf+/yxI93r21MVz/VGZa0YrKEzY tKHg5MAz8vUjKO1ZEvg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-29_04,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 impostorscore=0 adultscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605290156 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260529_165631_757382_E0A0BC9B X-CRM114-Status: GOOD ( 12.18 ) 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 Move kvm feature definitions from arch/arm64/include to a shared location (include/kvm/arm64) to enable reuse by e.g. s390 for KVM/arm64 on s390 support. Signed-off-by: Steffen Eiden --- arch/arm64/include/asm/kvm_feature.h | 60 +------------------ .../asm => include/kvm/arm64}/kvm_feature.h | 28 ++------- 2 files changed, 5 insertions(+), 83 deletions(-) copy {arch/arm64/include/asm => include/kvm/arm64}/kvm_feature.h (76%) diff --git a/arch/arm64/include/asm/kvm_feature.h b/arch/arm64/include/asm/kvm_feature.h index 27a472d2343e..e1fb8b9f5ce2 100644 --- a/arch/arm64/include/asm/kvm_feature.h +++ b/arch/arm64/include/asm/kvm_feature.h @@ -2,65 +2,7 @@ #ifndef __ARM64_KVM_FEATURE_H__ #define __ARM64_KVM_FEATURE_H__ -#include -#include -#include - -#define extract_id_field_unsigned(val, id, fld) \ - (FIELD_GET(id##_##fld##_MASK, (val))) - -#define extract_id_field_signed(val, id, fld) \ - ({ \ - u64 __val = extract_id_field_unsigned((val), id, fld); \ - sign_extend64(__val, id##_##fld##_WIDTH - 1); \ - }) - -#define cmp_id_feat_signed(val, id, fld, op, limit) \ - (extract_id_field_signed((val), id, fld) op S64_SYS_FIELD_VALUE(id, fld, limit)) - -#define cmp_id_feat_unsigned(val, id, fld, op, limit) \ - (extract_id_field_unsigned((val), id, fld) op (u64)SYS_FIELD_VALUE(id, fld, limit)) - -#define cmp_id_feat(val, id, fld, op, limit) \ - (id##_##fld##_SIGNED ? \ - cmp_id_feat_signed(val, id, fld, op, limit) : \ - cmp_id_feat_unsigned(val, id, fld, op, limit)) - -#define id_has_feat(val, id, fld, limit) \ - cmp_id_feat(val, id, fld, >=, limit) - -#define id_has_feat_enum(val, id, fld, variant) \ - cmp_id_feat_unsigned(val, id, fld, ==, variant) - -#define id_has_feat_range(val, id, fld, min, max) \ - (cmp_id_feat(val, id, fld, >=, min) && \ - cmp_id_feat(val, id, fld, <=, max)) - -#define __kvm_has_feat(kvm, id, fld, limit) \ - id_has_feat(kvm_read_vm_id_reg((kvm), SYS_##id), id, fld, limit) - -#define kvm_has_feat(kvm, ...) __kvm_has_feat(kvm, __VA_ARGS__) - -#define __kvm_has_feat_enum(kvm, id, fld, val) \ - id_has_feat_enum(kvm_read_vm_id_reg((kvm), SYS_##id), id, fld, val) - -#define kvm_has_feat_enum(kvm, ...) __kvm_has_feat_enum(kvm, __VA_ARGS__) - - -/* Check for a given level of PAuth support */ -#define kvm_has_pauth(k, l) \ - ({ \ - bool pa, pi, pa3; \ - \ - pa = kvm_has_feat((k), ID_AA64ISAR1_EL1, APA, l); \ - pa &= kvm_has_feat((k), ID_AA64ISAR1_EL1, GPA, IMP); \ - pi = kvm_has_feat((k), ID_AA64ISAR1_EL1, API, l); \ - pi &= kvm_has_feat((k), ID_AA64ISAR1_EL1, GPI, IMP); \ - pa3 = kvm_has_feat((k), ID_AA64ISAR2_EL1, APA3, l); \ - pa3 &= kvm_has_feat((k), ID_AA64ISAR2_EL1, GPA3, IMP); \ - \ - (pa + pi + pa3) == 1; \ - }) +#include #define kvm_has_fpmr(k) \ (system_supports_fpmr() && \ diff --git a/arch/arm64/include/asm/kvm_feature.h b/include/kvm/arm64/kvm_feature.h similarity index 76% copy from arch/arm64/include/asm/kvm_feature.h copy to include/kvm/arm64/kvm_feature.h index 27a472d2343e..945abbbf1aa8 100644 --- a/arch/arm64/include/asm/kvm_feature.h +++ b/include/kvm/arm64/kvm_feature.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -#ifndef __ARM64_KVM_FEATURE_H__ -#define __ARM64_KVM_FEATURE_H__ + +#ifndef __KVM_ARM64_FEATURE_H__ +#define __KVM_ARM64_FEATURE_H__ #include #include @@ -46,7 +47,6 @@ #define kvm_has_feat_enum(kvm, ...) __kvm_has_feat_enum(kvm, __VA_ARGS__) - /* Check for a given level of PAuth support */ #define kvm_has_pauth(k, l) \ ({ \ @@ -62,24 +62,4 @@ (pa + pi + pa3) == 1; \ }) -#define kvm_has_fpmr(k) \ - (system_supports_fpmr() && \ - kvm_has_feat((k), ID_AA64PFR2_EL1, FPMR, IMP)) - -#define kvm_has_tcr2(k) \ - (kvm_has_feat((k), ID_AA64MMFR3_EL1, TCRX, IMP)) - -#define kvm_has_s1pie(k) \ - (kvm_has_feat((k), ID_AA64MMFR3_EL1, S1PIE, IMP)) - -#define kvm_has_s1poe(k) \ - (system_supports_poe() && \ - kvm_has_feat((k), ID_AA64MMFR3_EL1, S1POE, IMP)) - -#define kvm_has_ras(k) \ - (kvm_has_feat((k), ID_AA64PFR0_EL1, RAS, IMP)) - -#define kvm_has_sctlr2(k) \ - (kvm_has_feat((k), ID_AA64MMFR3_EL1, SCTLRX, IMP)) - -#endif /* __ARM64_KVM_FEATURE_H__*/ +#endif /* __KVM_ARM64_FEATURE_H__*/ -- 2.53.0