diff options
| author | Hayzam Sherif <hayzam@gmail.com> | 2026-11-02 16:21:36 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-11-02 16:26:57 +0000 |
| commit | 0340fb03288166091a8cdf694f5fed20e4c4f9ac (patch) | |
| tree | e9019ec0ad07b379f32cfe42304e9e42254ce75f /sys/kern/uipc_sem.c | |
| parent | ee9205f068c7675cf4d23e51cc98238d95ba1950 (diff) | |
IOAPIC redirection-table writes rendezvous all active vCPUs to
rebuild their vlapic trigger-mode registers when fields other than
mask or polarity change. Retargeting an edge-triggered pin incurs
this cost even though it does not contribute to the TMR.
vioapic_update_tmr() rebuilds the TMR from level-triggered entries
only. Skip the rendezvous when the modified entry is edge-triggered
both before and after the write. Check the old and new trigger modes
so that edge-to-level and level-to-edge transitions still rebuild
the TMR. Retain the existing all-vCPU rebuild path, mask/polarity
exclusions and remote-IRR handling.
Reported by: Wanpeng Qian <wanpengqian@gmail.com>
Reviewed by: Wanpeng Qian <wanpengqian@gmail.com>, markj
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D60721
Diffstat (limited to 'sys/kern/uipc_sem.c')
0 files changed, 0 insertions, 0 deletions
