s390x/flic: introduce modify_ais_mode callback
commit6c1dd652a606f4446cdb8883ac68d6fb54b02e5c
authorFei Li <sherrylf@linux.vnet.ibm.com>
Fri, 17 Feb 2017 06:23:44 +0000 (17 14:23 +0800)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Fri, 14 Jul 2017 10:29:47 +0000 (14 12:29 +0200)
tree61060303f62a2f00b14a10c4d97a0c05c509f22e
parent1497c1606615b0b08d1b1f78afd1dcf2585879c0
s390x/flic: introduce modify_ais_mode callback

In order to emulate the adapter interruption suppression (AIS)
facility properly, the guest needs to be able to modify the AIS mask.
Interrupt suppression will be handled via the flic (for kvm, via a
recently introduced kernel backend; for !kvm, in the flic code), so
let's introduce a method to change the mode via the flic interface.

We introduce the 'simm' and 'nimm' fields to QEMUS390FLICState
to store interruption modes for each ISC. Each bit in 'simm' and
'nimm' targets one ISC, and collaboratively indicate three modes:
ALL-Interruptions, SINGLE-Interruption and NO-Interruptions. This
interface can initiate most transitions between the states; transition
from SINGLE-Interruption to NO-Interruptions via adapter interrupt
injection will be introduced in a following patch. The meaningful
combinations are as follows:

    interruption mode | simm bit | nimm bit
    ------------------|----------|----------
             ALL      |    0     |     0
           SINGLE     |    1     |     0
             NO       |    1     |     1

Co-authored-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Signed-off-by: Fei Li <sherrylf@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
hw/intc/s390_flic.c
hw/intc/s390_flic_kvm.c
include/hw/s390x/s390_flic.h