Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp708737imu; Thu, 3 Jan 2019 05:49:18 -0800 (PST) X-Google-Smtp-Source: AFSGD/UQgCY3ofAbMQh/rCS7hg0RYpSJZmyDgZLUwTIP7IJfSPQ2TdJgCBNZuGXUZYM9sc6qt3xP X-Received: by 2002:a62:4e16:: with SMTP id c22mr47661187pfb.167.1546523358390; Thu, 03 Jan 2019 05:49:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546523358; cv=none; d=google.com; s=arc-20160816; b=jH7S8EzYlNFHMulONyxqSsbCQjeaLB5DHDDjTXJ9EaTNMg/82LchZR4d0PHcdlqdNh yw6qHmeKB8Vf/C4z+mEGeZWaaOBfulZpwm7n2h7coZX/ZZJ9NzxNeZN37QGEdNgxJEMi GY516SES5E91ZII4Y2C6LCYl7N00mKN2xCFKRve7Nl+y8xnHBbuvLRcLmncrEaQS7Qhh D9ReEq4AmGCNN7hhQiIvO8UBn7HWbfgEYC62tlxlYWnCkJv2QoHnxT/FG51JZjAWqTQp hzssbnj7Vv6vY68PCZgj/4giZ0HTmdhCyt+yCEpnZh+8dPOX42cYMunT1Y6zWLg3x0PK R2EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date:from :references:cc:to:subject:reply-to; bh=vnwZsyCFPXXNLszNVzUshk07mAwiy6auCxyJnMuED8A=; b=aO49Fstdc5lpMM2FemYBRA85gAScu6SvYv2dcnEVMSs/BkezWBpQAwaJHnxE8FzMlq ErOPoYp2dK+u8yz4J2ATB4YnRRxz27EffJ6WAEMYHubr6q4l8qN6FvP9XFPpU7q+Vu0E GfQ6gqbdvmCzwniLE+kj7Rxbuv+vIN2MqnonxP+/dnm3Y2Rq1O9NYFZslMti8I2tUaTP LelfbD5FiAFqbgNtsxXcO8eVrH7VHKpmTdDfDP94+5YGIFfoN7ij0DLXcElhvOE7Autp sWtycLBqjFrg3M8B+JsIgfm+OAAInTLYrRrSAsoX7WZbUBn3gnjzdfohnYViBBz9+1Eu c0KA== 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 b61si52213600plb.70.2019.01.03.05.48.35; Thu, 03 Jan 2019 05:49:18 -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 S1730557AbfACJuH (ORCPT + 99 others); Thu, 3 Jan 2019 04:50:07 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:51852 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727041AbfACJuG (ORCPT ); Thu, 3 Jan 2019 04:50:06 -0500 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id x039nQtt146141 for ; Thu, 3 Jan 2019 04:50:05 -0500 Received: from e06smtp04.uk.ibm.com (e06smtp04.uk.ibm.com [195.75.94.100]) by mx0b-001b2d01.pphosted.com with ESMTP id 2psd1w6tev-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 03 Jan 2019 04:50:04 -0500 Received: from localhost by e06smtp04.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 Jan 2019 09:50:03 -0000 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp04.uk.ibm.com (192.168.101.134) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 3 Jan 2019 09:50:00 -0000 Received: from d06av24.portsmouth.uk.ibm.com (d06av24.portsmouth.uk.ibm.com [9.149.105.60]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x039nwOe8913268 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 3 Jan 2019 09:49:59 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D12E842041; Thu, 3 Jan 2019 09:49:58 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6C3E442047; Thu, 3 Jan 2019 09:49:58 +0000 (GMT) Received: from [9.152.224.140] (unknown [9.152.224.140]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 3 Jan 2019 09:49:58 +0000 (GMT) Reply-To: pmorel@linux.ibm.com Subject: Re: [PATCH v5 08/15] KVM: s390: add the GIB and its related life-cyle functions To: Michael Mueller , KVM Mailing List Cc: Linux-S390 Mailing List , linux-kernel@vger.kernel.org, kvm390-list@tuxmaker.boeblingen.de.ibm.com, Martin Schwidefsky , Heiko Carstens , Christian Borntraeger , Janosch Frank , David Hildenbrand , Cornelia Huck , Halil Pasic References: <20181219191756.57973-1-mimu@linux.ibm.com> <20181219191756.57973-9-mimu@linux.ibm.com> From: Pierre Morel Date: Thu, 3 Jan 2019 10:49:58 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20181219191756.57973-9-mimu@linux.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 x-cbid: 19010309-0016-0000-0000-0000023EE7A4 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19010309-0017-0000-0000-00003297EFBB Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-03_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1901030087 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19/12/2018 20:17, Michael Mueller wrote: > The Guest Information Block (GIB) links the GISA of all guests > that have adapter interrupts pending. These interrupts cannot be > delivered because no vcpu of these guests is currently running in > SIE context. Instead, a GIB alert is issued on the host to schedule > these guests to run. IMHO "Instead" is not exact. The GIB alert is always issued on adapter interrupt if IAM is set even if the guest is running in SIE context. I would prefer to rephrase to something like: "If enabled, a GIB alert is issued on the host..." ? Reviewed-by: Pierre Morel > > This mechanism allows to process adapter interrupts for currently > not running guests. > > The GIB is created during host initialization and associated with > the Adapter Interruption Facility in case an Adapter Interruption > Virtualization Facility is available. > > The GIB initialization and thus the activation of the related code > will be done in an upcoming patch of this series. > > Signed-off-by: Michael Mueller > Reviewed-by: Janosch Frank > Reviewed-by: Christian Borntraeger > --- > arch/s390/include/asm/kvm_host.h | 10 +++++++++ > arch/s390/kvm/interrupt.c | 44 ++++++++++++++++++++++++++++++++++++++++ > arch/s390/kvm/kvm-s390.c | 1 + > arch/s390/kvm/kvm-s390.h | 2 ++ > 4 files changed, 57 insertions(+) > > diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h > index d5d24889c3bc..537e5e59f27e 100644 > --- a/arch/s390/include/asm/kvm_host.h > +++ b/arch/s390/include/asm/kvm_host.h > @@ -785,6 +785,15 @@ struct kvm_s390_gisa { > }; > }; > > +struct kvm_s390_gib { > + u32 alert_list_origin; > + u32 reserved01; > + u8:5; > + u8 nisc:3; > + u8 reserved03[3]; > + u32 reserved04[5]; > +}; > + > /* > * sie_page2 has to be allocated as DMA because fac_list, crycb and > * gisa need 31bit addresses in the sie control block. > @@ -838,6 +847,7 @@ struct kvm_arch{ > /* subset of available cpu features enabled by user space */ > DECLARE_BITMAP(cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS); > struct kvm_s390_gisa *gisa; > + int gib_in_use; > }; > > #define KVM_HVA_ERR_BAD (-1UL) > diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c > index 9b1fa39b6f90..5a54360cecfe 100644 > --- a/arch/s390/kvm/interrupt.c > +++ b/arch/s390/kvm/interrupt.c > @@ -7,6 +7,9 @@ > * Author(s): Carsten Otte > */ > > +#define KMSG_COMPONENT "kvm-s390" > +#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt > + > #include > #include > #include > @@ -38,6 +41,8 @@ > #define IRQ_MASK_ALL (IRQ_FLAG_LOCAL | IRQ_FLAG_FLOATING | IRQ_FLAG_GISA) > #define IRQ_MASK_NO_GISA (IRQ_MASK_ALL & ~IRQ_FLAG_GISA) > > +static struct kvm_s390_gib *gib; > + > /* handle external calls via sigp interpretation facility */ > static int sca_ext_call_pending(struct kvm_vcpu *vcpu, int *src_id) > { > @@ -2913,6 +2918,7 @@ void kvm_s390_gisa_init(struct kvm *kvm) > return; > kvm->arch.gisa = &kvm->arch.sie_page2->gisa; > nullify_gisa(kvm->arch.gisa); > + kvm->arch.gib_in_use = !!gib; > VM_EVENT(kvm, 3, "gisa 0x%pK initialized", kvm->arch.gisa); > } > > @@ -2922,3 +2928,41 @@ void kvm_s390_gisa_destroy(struct kvm *kvm) > return; > kvm->arch.gisa = NULL; > } > + > +void kvm_s390_gib_destroy(void) > +{ > + if (!gib) > + return; > + chsc_sgib(0); > + free_page((unsigned long)gib); > + gib = NULL; > +} > + > +int kvm_s390_gib_init(u8 nisc) > +{ > + int rc = 0; > + > + if (!css_general_characteristics.aiv) { > + KVM_EVENT(3, "%s", "gib not initialized, no AIV facility"); > + goto out; > + } > + > + gib = (struct kvm_s390_gib *)get_zeroed_page(GFP_KERNEL | GFP_DMA); > + if (!gib) { > + rc = -ENOMEM; > + goto out; > + } > + > + gib->nisc = nisc; > + if (chsc_sgib((u32)(u64)gib)) { > + pr_err("Associating the GIB with the AIV facility failed\n"); > + free_page((unsigned long)gib); > + gib = NULL; > + rc = -EIO; > + goto out; > + } > + > + KVM_EVENT(3, "gib 0x%pK (nisc=%d) initialized", gib, gib->nisc); > +out: > + return rc; > +} > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index d8d8e0788157..7bc24e16a31d 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -445,6 +445,7 @@ int kvm_arch_init(void *opaque) > > void kvm_arch_exit(void) > { > + kvm_s390_gib_destroy(); > debug_unregister(kvm_s390_dbf); > } > > diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h > index 1f6e36cdce0d..1a79105b0e9f 100644 > --- a/arch/s390/kvm/kvm-s390.h > +++ b/arch/s390/kvm/kvm-s390.h > @@ -381,6 +381,8 @@ int kvm_s390_get_irq_state(struct kvm_vcpu *vcpu, > void kvm_s390_gisa_init(struct kvm *kvm); > void kvm_s390_gisa_clear(struct kvm *kvm); > void kvm_s390_gisa_destroy(struct kvm *kvm); > +int kvm_s390_gib_init(u8 nisc); > +void kvm_s390_gib_destroy(void); > > /* implemented in guestdbg.c */ > void kvm_s390_backup_guest_per_regs(struct kvm_vcpu *vcpu); > -- Pierre Morel Linux/KVM/QEMU in Böblingen - Germany