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, Apr 10, 2:43 PM
Unknown Object (File)
Jan 31 2024, 8:10 AM
Unknown Object (File)
Dec 10 2023, 10:04 PM
Unknown Object (File)
Dec 5 2023, 11:04 PM
Unknown Object (File)
Dec 1 2023, 1:33 PM
Unknown Object (File)
Oct 19 2023, 5:14 PM
Unknown Object (File)
Sep 6 2023, 7:19 AM
Unknown Object (File)
Aug 15 2023, 9:24 PM
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.