linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pierre Morel <pmorel@linux.ibm.com>
To: Michael Mueller <mimu@linux.ibm.com>,
	KVM Mailing List <kvm@vger.kernel.org>
Cc: Linux-S390 Mailing List <linux-s390@vger.kernel.org>,
	linux-kernel@vger.kernel.org,
	kvm390-list@tuxmaker.boeblingen.de.ibm.com,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Halil Pasic <pasic@linux.ibm.com>
Subject: Re: [PATCH v5 08/15] KVM: s390: add the GIB and its related life-cyle functions
Date: Thu, 3 Jan 2019 10:49:58 +0100	[thread overview]
Message-ID: <c244a27a-2d54-0b22-7df4-71f584aed6c0@linux.ibm.com> (raw)
In-Reply-To: <20181219191756.57973-9-mimu@linux.ibm.com>

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<pmorel@linux.ibm.com>


> 
> 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 <mimu@linux.ibm.com>
> Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>   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 <cotte@de.ibm.com>
>    */
>   
> +#define KMSG_COMPONENT "kvm-s390"
> +#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
> +
>   #include <linux/interrupt.h>
>   #include <linux/kvm_host.h>
>   #include <linux/hrtimer.h>
> @@ -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


  parent reply	other threads:[~2019-01-03  9:50 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-19 19:17 [PATCH v5 00/15] KVM: s390: make use of the GIB Michael Mueller
2018-12-19 19:17 ` [PATCH v5 01/15] KVM: s390: unregister debug feature on failing arch init Michael Mueller
2018-12-19 20:10   ` Cornelia Huck
2018-12-20  7:49     ` Michael Mueller
2018-12-20  7:55       ` Christian Borntraeger
2018-12-19 19:17 ` [PATCH v5 02/15] KVM: s390: coding style issue kvm_s390_gisa_init/clear() Michael Mueller
2018-12-19 20:13   ` Cornelia Huck
2019-01-02 16:50   ` Pierre Morel
2019-01-07 16:16     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 03/15] KVM: s390: factor out nullify_gisa() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 04/15] KVM: s390: use pending_irqs_no_gisa() where appropriate Michael Mueller
2018-12-19 20:16   ` Cornelia Huck
2019-01-02 16:52   ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 05/15] KVM: s390: unify pending_irqs() and pending_irqs_no_gisa() Michael Mueller
2018-12-20 10:09   ` Michael Mueller
2018-12-20 11:06   ` Cornelia Huck
2018-12-20 11:49     ` Michael Mueller
2018-12-20 12:15       ` Halil Pasic
2018-12-20 12:21       ` Cornelia Huck
2018-12-20 12:33         ` Michael Mueller
2018-12-20 15:43           ` pierre morel
2018-12-20 16:40             ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 06/15] KVM: s390: remove prefix kvm_s390_gisa_ from static inline functions Michael Mueller
2018-12-20 12:24   ` Cornelia Huck
2018-12-20 14:37     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 07/15] s390/cio: add function chsc_sgib() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 08/15] KVM: s390: add the GIB and its related life-cyle functions Michael Mueller
2018-12-20 12:28   ` Cornelia Huck
2019-01-03  9:49   ` Pierre Morel [this message]
2019-01-07 16:25     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 09/15] KVM: s390: add kvm reference to struct sie_page2 Michael Mueller
2018-12-19 19:17 ` [PATCH v5 10/15] KVM: s390: add functions to (un)register GISC with GISA Michael Mueller
2018-12-20 14:32   ` Michael Mueller
2019-01-02 17:29   ` Pierre Morel
2019-01-02 18:26     ` Pierre Morel
2019-01-04 13:19     ` Cornelia Huck
2019-01-07 17:38       ` Michael Mueller
2019-01-08 10:34         ` Cornelia Huck
2019-01-08 13:07           ` Michael Mueller
2019-01-08 13:35             ` Cornelia Huck
2019-01-08 13:36           ` Halil Pasic
2019-01-08 13:41             ` Cornelia Huck
2019-01-08 14:23               ` Halil Pasic
2018-12-19 19:17 ` [PATCH v5 11/15] KVM: s390: restore IAM in get_ipm() when IPM is clean Michael Mueller
2019-01-03 15:06   ` Pierre Morel
2019-01-07 18:17     ` Michael Mueller
2019-01-06 23:32   ` Halil Pasic
2019-01-08  8:06     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 12/15] KVM: s390: do not restore IAM immediately before SIE entry Michael Mueller
2019-01-03 15:00   ` Pierre Morel
2019-01-07 17:53     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 13/15] KVM: s390: add function process_gib_alert_list() Michael Mueller
2019-01-03 14:43   ` Pierre Morel
2019-01-07 19:18     ` Michael Mueller
2019-01-08 14:27       ` Halil Pasic
2019-01-09 11:39       ` Pierre Morel
2019-01-07 19:19     ` Michael Mueller
2019-01-08  6:37       ` Heiko Carstens
2019-01-08 12:59   ` Halil Pasic
2019-01-08 15:21     ` Michael Mueller
2019-01-08 18:34       ` Halil Pasic
2019-01-09 12:14       ` Pierre Morel
2019-01-09 13:10         ` Halil Pasic
2019-01-09 14:49           ` Pierre Morel
2019-01-09 16:18             ` Halil Pasic
2018-12-19 19:17 ` [PATCH v5 14/15] KVM: s390: add and wire function gib_alert_irq_handler() Michael Mueller
2019-01-03 15:16   ` Pierre Morel
2019-01-08 10:06     ` Michael Mueller
2019-01-09 12:35       ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 15/15] KVM: s390: start using the GIB Michael Mueller
2019-01-02 17:45   ` Pierre Morel
2019-01-08  9:03     ` Michael Mueller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c244a27a-2d54-0b22-7df4-71f584aed6c0@linux.ibm.com \
    --to=pmorel@linux.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=kvm390-list@tuxmaker.boeblingen.de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mimu@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=schwidefsky@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).