aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcin Wojtas <mw@FreeBSD.org>2018-05-10 09:18:26 +0000
committerMarcin Wojtas <mw@FreeBSD.org>2018-05-10 09:18:26 +0000
commit5fa38c5c6ede652e7cc2497140ef2538648bdd48 (patch)
tree5b2b913f581f983a2b73e182fcdb288af50e1b2c
parentca61e2d994c3b6aa60cf067da743afec94e12597 (diff)
downloadsrc-5fa38c5c6ede652e7cc2497140ef2538648bdd48.tar.gz
src-5fa38c5c6ede652e7cc2497140ef2538648bdd48.zip
Apply fixes in ena-comvendor/ena-com/1.1.4.5
* Change ena-com BIT macro to work on unsigned value. To make the shifting operations safer, they should be working on unsigned values. * Fix a mutex not owned ASSERT panic in ENA control path. A thread calling cv_broadcast()/cv_signal() must hold the mutex used for cv_wait(). Fix the ENA control path code that has this problem. Submitted by: Krishna Yenduri <kyenduri@brkt.com> Reviewed by: Michal Krawczyk <mk@semihalf.com> Tested by: Michal Krawczyk <mk@semihalf.com>
Notes
Notes: svn path=/vendor-sys/ena-com/dist/; revision=333451 svn path=/vendor-sys/ena-com/1.1.4.5/; revision=333452; tag=vendor/ena-com/1.1.4.5
-rw-r--r--ena_plat.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/ena_plat.h b/ena_plat.h
index 3ac94f57cdeb..6312ac252aed 100644
--- a/ena_plat.h
+++ b/ena_plat.h
@@ -165,7 +165,7 @@ static inline long PTR_ERR(const void *ptr)
#define GENMASK(h, l) (((1U << ((h) - (l) + 1)) - 1) << (l))
#define GENMASK_ULL(h, l) (((~0ULL) << (l)) & (~0ULL >> (64 - 1 - (h))))
-#define BIT(x) (1 << (x))
+#define BIT(x) (1UL << (x))
#define ENA_ABORT() BUG()
#define BUG() panic("ENA BUG")
@@ -244,7 +244,12 @@ static inline long PTR_ERR(const void *ptr)
timeout_us * hz / 1000 / 1000 ); \
mtx_unlock(&((waitqueue).mtx)); \
} while (0)
-#define ENA_WAIT_EVENT_SIGNAL(waitqueue) cv_broadcast(&((waitqueue).wq))
+#define ENA_WAIT_EVENT_SIGNAL(waitqueue) \
+ do { \
+ mtx_lock(&((waitqueue).mtx)); \
+ cv_broadcast(&((waitqueue).wq)); \
+ mtx_unlock(&((waitqueue).mtx)); \
+ } while (0)
#define dma_addr_t bus_addr_t
#define u8 uint8_t