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
Unknown Object (File)
Wed, Oct 16, 1:26 PM
Unknown Object (File)
Wed, Oct 16, 1:06 PM
Unknown Object (File)
Wed, Oct 16, 12:59 PM
Unknown Object (File)
Oct 1 2024, 7:18 PM
Unknown Object (File)
Oct 1 2024, 5:24 PM
Unknown Object (File)
Sep 28 2024, 7:44 PM
Unknown Object (File)
Sep 20 2024, 6:59 AM
Unknown Object (File)
Sep 20 2024, 4:54 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.