Page MenuHomeFreeBSD

xen/intr: move handler removal to isrc release
AbandonedPublic

Authored by ehem_freebsd_m5p.com on Dec 23 2021, 5:38 AM.
Tags
None
Referenced Files
F172491757: D33622.diff
Fri, Sep 18, 8:18 PM
F172459557: D33622.diff
Fri, Sep 18, 3:15 PM
Unknown Object (File)
Sat, Sep 5, 2:56 AM
Unknown Object (File)
Wed, Sep 2, 5:04 PM
Unknown Object (File)
Wed, Sep 2, 11:16 AM
Unknown Object (File)
Sat, Aug 22, 11:12 AM
Unknown Object (File)
Aug 9 2026, 7:35 AM
Unknown Object (File)
Jul 21 2026, 6:07 AM
Subscribers

Details

Reviewers
royger
Summary

xen_intr_release_isrc() should be an internal function cleaning
*everything* up. As such having a handler should not be a problem and
what could actually be concerning is a non-zero reference count.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 43551
Build 40439: arc lint + arc unit

Event Timeline

This seems rather more appropriate. xen_intr_release_isrc() now releases everything and internal functions no longer need to call xen_intr_unbind() to get the handler removed. One could add a KASSERT() for isrc->xi_refcount == 0, this would require xen_intr_release_isrc() to zero the count in case of failure though.

Odd thing is, as I look at this more I wonder whether this is needed at all. Real problem was how xen_intr_bind_virq() and xen_intr_alloc_and_bind_ipi() were handling processor assignment. Merge everything into xen_intr_bind_isrc() and this may no longer be needed.

This is looking odd enough to perhaps not actually get in...

Things got rearranged in a hopefully better way, so marking this as dead. Pretty sure underlying issues got fixed.