On 05.02.20 12:31, Cornelia Huck wrote:
On Mon, 3 Feb 2020 08:19:35 -0500
Christian Borntraeger <borntraeger@xxxxxxxxxx> wrote:
From: Michael Mueller <mimu@xxxxxxxxxxxxx>
The patch implements interruption injection for the following
list of interruption types:
- I/O
__deliver_io (III)
- External
__deliver_cpu_timer (IEI)
__deliver_ckc (IEI)
__deliver_emergency_signal (IEI)
__deliver_external_call (IEI)
- cpu restart
__deliver_restart (IRI)
Hm... what do 'III', 'IEI', and 'IRI' stand for?
that's the kind of interruption injection being used:
inject io interruption
inject external interruption
inject restart interruption
The service interrupt is handled in a followup patch.
Signed-off-by: Michael Mueller <mimu@xxxxxxxxxxxxx>
Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
[fixes]
---
arch/s390/include/asm/kvm_host.h | 8 +++
arch/s390/kvm/interrupt.c | 93 ++++++++++++++++++++++----------
2 files changed, 74 insertions(+), 27 deletions(-)
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index a45d10d87a8a..989cea7a5591 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -563,6 +563,14 @@ enum irq_types {
#define IRQ_PEND_MCHK_MASK ((1UL << IRQ_PEND_MCHK_REP) | \
(1UL << IRQ_PEND_MCHK_EX))
+#define IRQ_PEND_MCHK_REP_MASK (1UL << IRQ_PEND_MCHK_REP)
+
+#define IRQ_PEND_EXT_II_MASK ((1UL << IRQ_PEND_EXT_CPU_TIMER) | \
What does 'II' stand for? Interrupt Injection?
interruption injection
+ (1UL << IRQ_PEND_EXT_CLOCK_COMP) | \
+ (1UL << IRQ_PEND_EXT_EMERGENCY) | \
+ (1UL << IRQ_PEND_EXT_EXTERNAL) | \
+ (1UL << IRQ_PEND_EXT_SERVICE))
+
struct kvm_s390_interrupt_info {
struct list_head list;
u64 type;
(...)
@@ -1834,7 +1872,8 @@ static void __floating_irq_kick(struct kvm *kvm, u64 type)
break;
case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX:
if (!(type & KVM_S390_INT_IO_AI_MASK &&
- kvm->arch.gisa_int.origin))
+ kvm->arch.gisa_int.origin) ||
+ kvm_s390_pv_handle_cpu(dst_vcpu))
kvm_s390_set_cpuflags(dst_vcpu, CPUSTAT_IO_INT);
break;
default:
Looking at this... can you also talk about protected virt vs. exitless
interrupts?
Michael