From patchwork Mon Aug 14 09:09:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhichao Zeng X-Patchwork-Id: 130258 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 161A443060; Mon, 14 Aug 2023 11:03:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A319040A7F; Mon, 14 Aug 2023 11:03:03 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 990764021F for ; Mon, 14 Aug 2023 11:03:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1692003781; x=1723539781; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hB2spUULZvKznP6AXIREVlRdeVrfvVp1bWlJnm1vI98=; b=AbMPSePu5r1Wja7F8lPLmXG4uE2sw1VCm47nP2hLHhOi7HXonsy5bm01 wcbOr2hh/2bCs06jdja6kA/zVxuFbYFt8T6CwyXvWhzQOFcBqcsPDCD7X 7axoz+/sj0WGaOv8i3YUPzttGqfNfCcCnnNSb8TvfcsjMuQx0IZLpgitf USTeHdeByN/KLcm/yX9qzxR4XoI/bfGkBQnWyM9xyc6Dt4/ZkqnXhdapY ERMpLI1Q9f13QiWZMvbo/K1OLWkM+7iE1Z6O1tMdFgqqu0n8WeXxWT5Cd 8BHMdaSgIdYUQS8Pv43uWEjG4TG/nGQY5ZVDTOeMqZsc3cMQUe4dfxQhS w==; X-IronPort-AV: E=McAfee;i="6600,9927,10801"; a="374766355" X-IronPort-AV: E=Sophos;i="6.01,172,1684825200"; d="scan'208";a="374766355" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Aug 2023 02:03:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10801"; a="979920430" X-IronPort-AV: E=Sophos;i="6.01,172,1684825200"; d="scan'208";a="979920430" Received: from unknown (HELO zhichao-dpdk..) ([10.239.252.103]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Aug 2023 02:02:58 -0700 From: Zhichao Zeng To: dev@dpdk.org Cc: qi.z.zhang@intel.com, songx.jiale@intel.com, Zhichao Zeng , Jingjing Wu , Beilei Xing Subject: [PATCH v2] net/iavf: refactor part of watchdog Date: Mon, 14 Aug 2023 17:09:31 +0800 Message-Id: <20230814090931.1657971-1-zhichaox.zeng@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230802071521.1842377-1-zhichaox.zeng@intel.com> References: <20230802071521.1842377-1-zhichaox.zeng@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This commit refactors two parts of the watchdog: 1. Cancel the rte_eal_alarm when closing the watchdog to avoid ASAN heap-use-after-free error in some conditions. 2. Modify the logs when enabling and disabling the watchdog to be more detailed. Fixes: af801b0374e3 ("net/iavf: add devargs to control watchdog") Signed-off-by: Zhichao Zeng Acked-by: Qi Zhang --- v2: improve git log --- drivers/net/iavf/iavf_ethdev.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index f2fc5a5621..c0ca733c67 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -324,24 +324,31 @@ iavf_dev_watchdog(void *cb_arg) void iavf_dev_watchdog_enable(struct iavf_adapter *adapter) { - if (adapter->devargs.watchdog_period && !adapter->vf.watchdog_enabled) { - PMD_DRV_LOG(INFO, "Enabling device watchdog, period is %dμs", - adapter->devargs.watchdog_period); - adapter->vf.watchdog_enabled = true; - if (rte_eal_alarm_set(adapter->devargs.watchdog_period, - &iavf_dev_watchdog, (void *)adapter)) - PMD_DRV_LOG(ERR, "Failed to enabled device watchdog"); - } else { + if (!adapter->devargs.watchdog_period) { PMD_DRV_LOG(INFO, "Device watchdog is disabled"); + } else { + if (!adapter->vf.watchdog_enabled) { + PMD_DRV_LOG(INFO, "Enabling device watchdog, period is %dμs", + adapter->devargs.watchdog_period); + adapter->vf.watchdog_enabled = true; + if (rte_eal_alarm_set(adapter->devargs.watchdog_period, + &iavf_dev_watchdog, (void *)adapter)) + PMD_DRV_LOG(ERR, "Failed to enable device watchdog"); + } } } void iavf_dev_watchdog_disable(struct iavf_adapter *adapter) { - if (adapter->devargs.watchdog_period && adapter->vf.watchdog_enabled) { - PMD_DRV_LOG(INFO, "Disabling device watchdog"); - adapter->vf.watchdog_enabled = false; + if (!adapter->devargs.watchdog_period) { + PMD_DRV_LOG(INFO, "Device watchdog is not enabled"); + } else { + if (adapter->vf.watchdog_enabled) { + PMD_DRV_LOG(INFO, "Disabling device watchdog"); + adapter->vf.watchdog_enabled = false; + rte_eal_alarm_cancel(&iavf_dev_watchdog, (void *)adapter); + } } }