The branch main has been updated by royger:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=09bd542d17c938b236822d1dd09ef0bab8c1de04

commit 09bd542d17c938b236822d1dd09ef0bab8c1de04
Author:     Elliott Mitchell <[email protected]>
AuthorDate: 2021-05-11 19:05:03 +0000
Commit:     Roger Pau Monné <[email protected]>
CommitDate: 2023-04-14 13:58:49 +0000

    xen/intr: rework xen_intr_alloc_isrc() call structure
    
    The call structure around xen_intr_alloc_isrc() was rather awful.
    Notably finding a structure for reuse is part of allocation, but this
    was done outside xen_intr_alloc_isrc().  Move this into
    xen_intr_alloc_isrc() so the function handles all allocation steps.
    
    Reviewed by: royger
    Differential Revision: https://reviews.freebsd.org/D30726
---
 sys/x86/xen/xen_intr.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/sys/x86/xen/xen_intr.c b/sys/x86/xen/xen_intr.c
index c1ca984bf6ef..6e4b1d9df1f8 100644
--- a/sys/x86/xen/xen_intr.c
+++ b/sys/x86/xen/xen_intr.c
@@ -318,6 +318,10 @@ xen_intr_alloc_isrc(enum evtchn_type type)
        int error;
 
        KASSERT(mtx_owned(&xen_intr_isrc_lock), ("Evtchn alloc lock not held"));
+       isrc = xen_intr_find_unused_isrc(type);
+       if (isrc != NULL) {
+               return (isrc);
+       }
 
        if (xen_intr_auto_vector_count >= NR_EVENT_CHANNELS) {
                if (!warned) {
@@ -424,13 +428,10 @@ xen_intr_bind_isrc(struct xenisrc **isrcp, evtchn_port_t 
local_port,
        *port_handlep = NULL;
 
        mtx_lock(&xen_intr_isrc_lock);
-       isrc = xen_intr_find_unused_isrc(type);
+       isrc = xen_intr_alloc_isrc(type);
        if (isrc == NULL) {
-               isrc = xen_intr_alloc_isrc(type);
-               if (isrc == NULL) {
-                       mtx_unlock(&xen_intr_isrc_lock);
-                       return (ENOSPC);
-               }
+               mtx_unlock(&xen_intr_isrc_lock);
+               return (ENOSPC);
        }
        isrc->xi_port = local_port;
        isrc->xi_close = false;

Reply via email to