NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PR/60736 CVS commit: [netbsd-11] src/sys/dev/pci



The following reply was made to PR kern/60736; it has been noted by GNATS.

From: "Martin Husemann" <martin%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/60736 CVS commit: [netbsd-11] src/sys/dev/pci
Date: Sat, 19 Sep 2026 16:22:48 +0000

 Module Name:	src
 Committed By:	martin
 Date:		Sat Sep 19 16:22:48 UTC 2026
 
 Modified Files:
 	src/sys/dev/pci [netbsd-11]: if_ixl.c
 
 Log Message:
 Pull up following revision(s) (requested by tls in ticket #481):
 
 	sys/dev/pci/if_ixl.c: revision 1.102
 	sys/dev/pci/if_ixl.c: revision 1.103
 
 Fix link state handling in ixl driver (PR 60736):
 
 1. The admin queue ("ATQ") polling could skip completions if there was
    more than one pending command.  Force ixl_atq_poll()  to go in order
    and simplify by looping around the post_locked and done_locked functions.
    This makes ixl_atq_poll_done() superfluous, so remove that.
 
 2. Add missing "goto out" in ixl_get_link_status() so we return EBUSY
    instead of falling through to cv_timedwait().  This is much
    less likely with fix 1 above but worth fixing anyway.
 
 3. Mostly undo 1.92 - don't block waiting on link in ixl_init(), instead,
    fire off a link status check and ignore the result.  Meanwhile, in
    ixl_init_locked(), enable the hardware link status interrupt.
    Addresses the source of the multiple pending completions that triggered
    problem 1 while still ensuring we get link status at initialization.
 
 Get rid of the wait in ixl_get_link_status, get rid of IXL_LINK_FLAG_WAITDONE;
 fix another instance of the cv_timedwait() pattern noticed by riastradh@ in
 PR kern/60736 .  The only remaining change from revision 1.92 is the addition
 of sc_link_state_done_task which avoids a lock inversion.
 
 
 To generate a diff of this commit:
 cvs rdiff -u -r1.100 -r1.100.2.1 src/sys/dev/pci/if_ixl.c
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.
 



Home | Main Index | Thread Index | Old Index