Searched hist:"6959869 eaea77fbdc99e46523daeb896662d9cca" (Results 1 – 3 of 3) sorted by relevance
/freebsd/sys/dev/ena/ |
H A D | ena_netmap.c | diff 6959869eaea77fbdc99e46523daeb896662d9cca Tue May 26 17:39:41 CEST 2020 Marcin Wojtas <mw@FreeBSD.org> Use single global lock in the ENA driver
Currently, the driver had 2 global locks - one was sx lock used for up/down synchronization and the second one was mutex, which was used for link configuration and timer service callout.
It is better to have single lock for that. We cannot use mutex, as it can sleep and cause witness errors in up/down configuration, so sx lock seems to be the only choice.
Callout cannot use sx lock, but the timer service is MP safe, so we just need to avoid race between ena_down() and ena_detach(). It can be avoided by acquiring sx lock.
Simple macros were added that are encapsulating implementation of the lock and makes the code cleaner.
Submitted by: Michal Krawczyk <mk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon, Inc.
|
H A D | ena.h | diff 6959869eaea77fbdc99e46523daeb896662d9cca Tue May 26 17:39:41 CEST 2020 Marcin Wojtas <mw@FreeBSD.org> Use single global lock in the ENA driver
Currently, the driver had 2 global locks - one was sx lock used for up/down synchronization and the second one was mutex, which was used for link configuration and timer service callout.
It is better to have single lock for that. We cannot use mutex, as it can sleep and cause witness errors in up/down configuration, so sx lock seems to be the only choice.
Callout cannot use sx lock, but the timer service is MP safe, so we just need to avoid race between ena_down() and ena_detach(). It can be avoided by acquiring sx lock.
Simple macros were added that are encapsulating implementation of the lock and makes the code cleaner.
Submitted by: Michal Krawczyk <mk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon, Inc.
|
H A D | ena.c | diff 6959869eaea77fbdc99e46523daeb896662d9cca Tue May 26 17:39:41 CEST 2020 Marcin Wojtas <mw@FreeBSD.org> Use single global lock in the ENA driver
Currently, the driver had 2 global locks - one was sx lock used for up/down synchronization and the second one was mutex, which was used for link configuration and timer service callout.
It is better to have single lock for that. We cannot use mutex, as it can sleep and cause witness errors in up/down configuration, so sx lock seems to be the only choice.
Callout cannot use sx lock, but the timer service is MP safe, so we just need to avoid race between ena_down() and ena_detach(). It can be avoided by acquiring sx lock.
Simple macros were added that are encapsulating implementation of the lock and makes the code cleaner.
Submitted by: Michal Krawczyk <mk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon, Inc.
|