mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 03:05:21 +07:00
37 lines
1.5 KiB
Plaintext
37 lines
1.5 KiB
Plaintext
|
FLIC (floating interrupt controller)
|
||
|
====================================
|
||
|
|
||
|
FLIC handles floating (non per-cpu) interrupts, i.e. I/O, service and some
|
||
|
machine check interruptions. All interrupts are stored in a per-vm list of
|
||
|
pending interrupts. FLIC performs operations on this list.
|
||
|
|
||
|
Only one FLIC instance may be instantiated.
|
||
|
|
||
|
FLIC provides support to
|
||
|
- add interrupts (KVM_DEV_FLIC_ENQUEUE)
|
||
|
- inspect currently pending interrupts (KVM_FLIC_GET_ALL_IRQS)
|
||
|
- purge all pending floating interrupts (KVM_DEV_FLIC_CLEAR_IRQS)
|
||
|
|
||
|
Groups:
|
||
|
KVM_DEV_FLIC_ENQUEUE
|
||
|
Passes a buffer and length into the kernel which are then injected into
|
||
|
the list of pending interrupts.
|
||
|
attr->addr contains the pointer to the buffer and attr->attr contains
|
||
|
the length of the buffer.
|
||
|
The format of the data structure kvm_s390_irq as it is copied from userspace
|
||
|
is defined in usr/include/linux/kvm.h.
|
||
|
|
||
|
KVM_DEV_FLIC_GET_ALL_IRQS
|
||
|
Copies all floating interrupts into a buffer provided by userspace.
|
||
|
When the buffer is too small it returns -ENOMEM, which is the indication
|
||
|
for userspace to try again with a bigger buffer.
|
||
|
All interrupts remain pending, i.e. are not deleted from the list of
|
||
|
currently pending interrupts.
|
||
|
attr->addr contains the userspace address of the buffer into which all
|
||
|
interrupt data will be copied.
|
||
|
attr->attr contains the size of the buffer in bytes.
|
||
|
|
||
|
KVM_DEV_FLIC_CLEAR_IRQS
|
||
|
Simply deletes all elements from the list of currently pending floating
|
||
|
interrupts. No interrupts are injected into the guest.
|