Received: by 10.223.185.116 with SMTP id b49csp5018336wrg; Tue, 27 Feb 2018 06:34:47 -0800 (PST) X-Google-Smtp-Source: AH8x226TIEMLmLSEFVFJygRl9kdgCHmOht8cEqjmvmEb7nuJ5bp4CPcAL69nXr6/uV0V52sfp9DF X-Received: by 2002:a17:902:bf0a:: with SMTP id bi10-v6mr14490402plb.181.1519742087289; Tue, 27 Feb 2018 06:34:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519742087; cv=none; d=google.com; s=arc-20160816; b=cqndkxShHVUgZKFBNKZujyhnmFfpR1IpdhRSDzDHuEIawX0SYRCk2H/Sqdz50+CV8g G3OYaJiyhH3s4knJJvjuM15XykHj1SnDUhCGwpbb++FklbLmBVnAhQZzZ4SJOiPVunID PEBnfw+b2gHHGdGi2dVJcWCeeGk6dSqCqy6/4gzOg1jqogqvwqRdYn7EZ9Pxf+cJBk+p T9g+cqr1POkJ3HMtqtBNrM8hpWqsfsgvKMzEG89zqQegOs4xJ5Mso/QlMWVJj+msqQ0F lvaDNXTqn8TySXBlP1drdPnsQQV8Bqe2GdzrlmRJYX8RANLPa67vzuZwK7Q1G5FMKozU o9iQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from:arc-authentication-results; bh=i9BZiqboDw7+ptImL1ZjsArQdmoz0QhkL360LyFwfCA=; b=LRU982ysejZPJ4i0NRQKJF5qWU5XF2ZeHHJ48RUvR3i30Ce2pW404iSylt/a2yHuBD hUOJHEggxGalqrSgRYtSJPMZ4niRPKDKqnp2u0CW83E4IS8Ls0eWAaypiloY54B82Au5 HgDn2mfBM/zxtNF+wnf1PLP5TY0zlkcUUKFdja4Qo6aLepqE/4uS1icOLkEGjCX2Hn92 4mxujjDnx//1tYstDhMTFnmK80icxCoaVP0sNQ/Qq0jp4IJKAIKtVaKS+OggrcBMb/BA j2pv8sRNSAnnX8aNlFshO6ZpP87T1c+4M3NLM6PKFnsEU4+/Z0PiXNuGm1dwn8yrG4V0 KrZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v11si7060121pgo.107.2018.02.27.06.34.32; Tue, 27 Feb 2018 06:34:47 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753709AbeB0OdZ (ORCPT + 99 others); Tue, 27 Feb 2018 09:33:25 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:38878 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753497AbeB0ObY (ORCPT ); Tue, 27 Feb 2018 09:31:24 -0500 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w1REV8G4005499 for ; Tue, 27 Feb 2018 09:31:24 -0500 Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by mx0a-001b2d01.pphosted.com with ESMTP id 2gd7gxd9vu-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 27 Feb 2018 09:31:08 -0500 Received: from localhost by e33.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 27 Feb 2018 07:28:52 -0700 Received: from b03cxnp08025.gho.boulder.ibm.com (9.17.130.17) by e33.co.us.ibm.com (192.168.1.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 27 Feb 2018 07:28:48 -0700 Received: from b03ledav004.gho.boulder.ibm.com (b03ledav004.gho.boulder.ibm.com [9.17.130.235]) by b03cxnp08025.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w1RESkmR13828472; Tue, 27 Feb 2018 07:28:46 -0700 Received: from b03ledav004.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 86BB778043; Tue, 27 Feb 2018 07:28:46 -0700 (MST) Received: from localhost.localdomain (unknown [9.60.75.238]) by b03ledav004.gho.boulder.ibm.com (Postfix) with ESMTPS id B159D78037; Tue, 27 Feb 2018 07:28:44 -0700 (MST) From: Tony Krowiak To: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: freude@de.ibm.com, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, borntraeger@de.ibm.com, cohuck@redhat.com, kwankhede@nvidia.com, bjsdjshi@linux.vnet.ibm.com, pbonzini@redhat.com, alex.williamson@redhat.com, pmorel@linux.vnet.ibm.com, alifm@linux.vnet.ibm.com, mjrosato@linux.vnet.ibm.com, jjherne@linux.vnet.ibm.com, thuth@redhat.com, pasic@linux.vnet.ibm.com, fiuczy@linux.vnet.ibm.com, buendgen@de.ibm.com, Tony Krowiak Subject: [PATCH v2 08/15] KVM: s390: interface to enable AP execution mode Date: Tue, 27 Feb 2018 09:28:06 -0500 X-Mailer: git-send-email 1.7.1 In-Reply-To: <1519741693-17440-1-git-send-email-akrowiak@linux.vnet.ibm.com> References: <1519741693-17440-1-git-send-email-akrowiak@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18022714-0008-0000-0000-000009621B82 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008601; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000254; SDB=6.00995862; UDB=6.00506230; IPR=6.00775186; MB=3.00019761; MTD=3.00000008; XFM=3.00000015; UTC=2018-02-27 14:28:50 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18022714-0009-0000-0000-000046310791 Message-Id: <1519741693-17440-9-git-send-email-akrowiak@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-27_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1802270183 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduces a new interface to enable AP interpretive execution (IE) mode for the KVM guest. When running with IE mode enabled, AP instructions executed on the KVM guest will be interpreted by the firmware and passed directly through to an AP device installed on the system. The CPU model feature for AP must be enabled for the KVM guest in order to enable interpretive execution mode. This interface will be used in a subsequent patch by the VFIO AP device driver. Signed-off-by: Tony Krowiak --- arch/s390/include/asm/kvm-ap.h | 2 ++ arch/s390/include/asm/kvm_host.h | 1 + arch/s390/kvm/kvm-ap.c | 27 +++++++++++++++++++++++++++ arch/s390/kvm/kvm-s390.h | 1 + 4 files changed, 31 insertions(+), 0 deletions(-) diff --git a/arch/s390/include/asm/kvm-ap.h b/arch/s390/include/asm/kvm-ap.h index 46e7c5b..6bd6bfb 100644 --- a/arch/s390/include/asm/kvm-ap.h +++ b/arch/s390/include/asm/kvm-ap.h @@ -51,4 +51,6 @@ struct kvm_ap_matrix { void kvm_ap_deconfigure_matrix(struct kvm *kvm); +int kvm_ap_enable_ie_mode(struct kvm *kvm); + #endif /* _ASM_KVM_AP */ diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index a4c77d3..1eebdd6 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h @@ -186,6 +186,7 @@ struct kvm_s390_sie_block { #define ECA_AIV 0x00200000 #define ECA_VX 0x00020000 #define ECA_PROTEXCI 0x00002000 +#define ECA_APIE 0x00000008 #define ECA_SII 0x00000001 __u32 eca; /* 0x004c */ #define ICPT_INST 0x04 diff --git a/arch/s390/kvm/kvm-ap.c b/arch/s390/kvm/kvm-ap.c index bb29045..862e54b 100644 --- a/arch/s390/kvm/kvm-ap.c +++ b/arch/s390/kvm/kvm-ap.c @@ -307,3 +307,30 @@ void kvm_ap_deconfigure_matrix(struct kvm *kvm) kvm_ap_clear_crycb_masks(kvm); } EXPORT_SYMBOL(kvm_ap_deconfigure_matrix); + +/** + * kvm_ap_enable_ie_mode + * + * Enable interpretrive execution of AP instructions for the guest. When + * enabled, AP instructions executed on the guest will be interpreted and + * passed through to an AP installed on the host system. + * + * Returns 0 if interpretrive execution is enabled. Returns -EOPNOTSUPP + * if AP facilities are not installed for the guest. + * + * @kvm: the guest's kvm structure + */ +int kvm_ap_enable_ie_mode(struct kvm *kvm) +{ + int i; + struct kvm_vcpu *vcpu; + + if (!test_kvm_cpu_feat(kvm, KVM_S390_VM_CPU_FEAT_AP)) + return -EOPNOTSUPP; + + kvm_for_each_vcpu(i, vcpu, kvm) + vcpu->arch.sie_block->eca |= ECA_APIE; + + return 0; +} +EXPORT_SYMBOL(kvm_ap_enable_ie_mode); diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h index 1b5621f..3142541 100644 --- a/arch/s390/kvm/kvm-s390.h +++ b/arch/s390/kvm/kvm-s390.h @@ -18,6 +18,7 @@ #include #include #include +#include /* Transactional Memory Execution related macros */ #define IS_TE_ENABLED(vcpu) ((vcpu->arch.sie_block->ecb & ECB_TE)) -- 1.7.1