mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 08:02:07 +00:00
IB/hfi1: Correct unnecessary acquisition of HW mutex
Avoid acquiring already acquired hardware mutex and releasing the unacquired one as these are redundant operations. Add printouts for such situations to help detect potential errors within the driver. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Grzegorz Morys <grzegorz.morys@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
621515da67
commit
b65c2045cc
@ -1387,7 +1387,14 @@ int acquire_hw_mutex(struct hfi1_devdata *dd)
|
||||
unsigned long timeout;
|
||||
int try = 0;
|
||||
u8 mask = 1 << dd->hfi1_id;
|
||||
u8 user;
|
||||
u8 user = (u8)read_csr(dd, ASIC_CFG_MUTEX);
|
||||
|
||||
if (user == mask) {
|
||||
dd_dev_info(dd,
|
||||
"Hardware mutex already acquired, mutex mask %u\n",
|
||||
(u32)mask);
|
||||
return 0;
|
||||
}
|
||||
|
||||
retry:
|
||||
timeout = msecs_to_jiffies(HM_TIMEOUT) + jiffies;
|
||||
@ -1418,7 +1425,15 @@ retry:
|
||||
|
||||
void release_hw_mutex(struct hfi1_devdata *dd)
|
||||
{
|
||||
write_csr(dd, ASIC_CFG_MUTEX, 0);
|
||||
u8 mask = 1 << dd->hfi1_id;
|
||||
u8 user = (u8)read_csr(dd, ASIC_CFG_MUTEX);
|
||||
|
||||
if (user != mask)
|
||||
dd_dev_warn(dd,
|
||||
"Unable to release hardware mutex, mutex mask %u, my mask %u\n",
|
||||
(u32)user, (u32)mask);
|
||||
else
|
||||
write_csr(dd, ASIC_CFG_MUTEX, 0);
|
||||
}
|
||||
|
||||
/* return the given resource bit(s) as a mask for the given HFI */
|
||||
|
Loading…
Reference in New Issue
Block a user