• Michael Mueller's avatar
    KVM: s390: protvirt: Implement interrupt injection · 201ae986
    Michael Mueller authored
    This defines the necessary data structures in the SIE control block to
    inject machine checks,external and I/O interrupts. We first define the
    the interrupt injection control, which defines the next interrupt to
    inject. Then we define the fields that contain the payload for machine
    checks,external and I/O interrupts.
    This is then used to implement interruption injection for the following
    list of interruption types:
    
       - I/O (uses inject io interruption)
         __deliver_io
    
       - External (uses inject external interruption)
         __deliver_cpu_timer
         __deliver_ckc
         __deliver_emergency_signal
         __deliver_external_call
    
       - cpu restart (uses inject restart interruption)
         __deliver_restart
    
       - machine checks (uses mcic, failing address and external damage)
         __write_machine_check
    
    Please note that posted interrupts (GISA) are not used for protected
    guests as of today.
    
    The service interrupt is handled in a followup patch.
    Signed-off-by: default avatarMichael Mueller <mimu@linux.ibm.com>
    Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
    Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
    [borntraeger@de.ibm.com: patch merging, splitting, fixing]
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    201ae986
interrupt.c 86.6 KB