From: wenglianfa <wenglianfa@xxxxxxxxxx> This reverts commit b0969f83890bf8b47f5c8bd42539599b2b52fdeb. The reverted patch was aimed at delaying resource destruction when HW resets to avoid HW UAF, but it didn't accomplish the task perfectly as the problem still occurs when read_poll_timeout_atomic() times out. Besides, read_poll_timeout_atomic() spends too much CPU time and may lead to a CPU stuck under heavy load. Now that we have a delay-destruction mechanism to fix the HW UAF problem, revert this patch. Signed-off-by: wenglianfa <wenglianfa@xxxxxxxxxx> Signed-off-by: Junxian Huang <huangjunxian6@xxxxxxxxxxxxx> --- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c index 86d6a8f2a26d..75bfd2117699 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c @@ -33,7 +33,6 @@ #include <linux/acpi.h> #include <linux/etherdevice.h> #include <linux/interrupt.h> -#include <linux/iopoll.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/workqueue.h> @@ -1026,14 +1025,9 @@ static u32 hns_roce_v2_cmd_hw_resetting(struct hns_roce_dev *hr_dev, unsigned long instance_stage, unsigned long reset_stage) { -#define HW_RESET_TIMEOUT_US 1000000 -#define HW_RESET_SLEEP_US 1000 - struct hns_roce_v2_priv *priv = hr_dev->priv; struct hnae3_handle *handle = priv->handle; const struct hnae3_ae_ops *ops = handle->ae_algo->ops; - unsigned long val; - int ret; /* When hardware reset is detected, we should stop sending mailbox&cmq& * doorbell to hardware. If now in .init_instance() function, we should @@ -1045,11 +1039,7 @@ static u32 hns_roce_v2_cmd_hw_resetting(struct hns_roce_dev *hr_dev, * again. */ hr_dev->dis_db = true; - - ret = read_poll_timeout(ops->ae_dev_reset_cnt, val, - val > hr_dev->reset_cnt, HW_RESET_SLEEP_US, - HW_RESET_TIMEOUT_US, false, handle); - if (!ret) + if (!ops->get_hw_reset_stat(handle)) hr_dev->is_reset = true; if (!hr_dev->is_reset || reset_stage == HNS_ROCE_STATE_RST_INIT || -- 2.33.0