diff options
author | Yi Min Zhao <zyimin@linux.vnet.ibm.com> | 2017-02-17 15:26:48 +0800 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2017-07-14 12:29:47 +0200 |
commit | 25a08b8ded0f4f898b6b12c7ee2cf4c1c55cfcce (patch) | |
tree | a442eabaaef065cd3a5a1106a91ed6bee52087e0 /hw/s390x/css.c | |
parent | 2283f4d67a0e05ae056d2077f65496c3c4df5d6f (diff) | |
download | qemu-25a08b8ded0f4f898b6b12c7ee2cf4c1c55cfcce.zip qemu-25a08b8ded0f4f898b6b12c7ee2cf4c1c55cfcce.tar.gz qemu-25a08b8ded0f4f898b6b12c7ee2cf4c1c55cfcce.tar.bz2 |
s390x/css: update css_adapter_interrupt
Let's use the new inject_airq callback of flic to inject adapter
interrupts. For kvm case, if the kernel flic doesn't support the new
interface, the irq routine remains unchanged. For non-kvm case,
qemu-flic handles the suppression process.
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>
Diffstat (limited to 'hw/s390x/css.c')
-rw-r--r-- | hw/s390x/css.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 7b82176..1aed89f 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -547,12 +547,26 @@ out: return r; } -void css_adapter_interrupt(uint8_t isc) +void css_adapter_interrupt(CssIoAdapterType type, uint8_t isc) { + S390FLICState *fs = s390_get_flic(); + S390FLICStateClass *fsc = S390_FLIC_COMMON_GET_CLASS(fs); uint32_t io_int_word = (isc << 27) | IO_INT_WORD_AI; + IoAdapter *adapter = channel_subsys.io_adapters[type][isc]; + + if (!adapter) { + return; + } trace_css_adapter_interrupt(isc); - s390_io_interrupt(0, 0, 0, io_int_word); + if (fs->ais_supported) { + if (fsc->inject_airq(fs, type, isc, adapter->flags)) { + error_report("Failed to inject airq with AIS supported"); + exit(1); + } + } else { + s390_io_interrupt(0, 0, 0, io_int_word); + } } static void sch_handle_clear_func(SubchDev *sch) |