From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 086681B323 for ; Fri, 19 Jan 2018 19:13:44 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jan 2018 10:13:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,382,1511856000"; d="scan'208";a="11567950" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.48]) ([10.237.220.48]) by fmsmga007.fm.intel.com with ESMTP; 19 Jan 2018 10:13:41 -0800 To: Thomas Monjalon Cc: dev@dpdk.org, Matan Azrad , Adrien Mazarguil , Gaetan Rivet , Andrew Rybchenko , "Ananyev, Konstantin" , Alejandro Lucero , Jerin Jacob , Hemant Agrawal , Shahaf Shuler , Olivier MATZ , "Zhang, Helin" References: <1516220357-13013-1-git-send-email-matan@mellanox.com> <3568963.dcr6cRumit@xps> From: Ferruh Yigit Message-ID: <7d77f38b-1259-d4b8-9d19-a21d80de9c04@intel.com> Date: Fri, 19 Jan 2018 18:13:40 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <3568963.dcr6cRumit@xps> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v6 4/6] ethdev: adjust APIs removal error report X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2018 18:13:45 -0000 On 1/19/2018 5:54 PM, Thomas Monjalon wrote: > 19/01/2018 17:19, Ferruh Yigit: >> On 1/18/2018 6:10 PM, Matan Azrad wrote: >>> From: Ferruh Yigit, Thursday, January 18, 2018 7:31 PM >>>> This patch updates *all* ethdev public APIs to add if device is removed >>>> check? >>> >>> Yes. >>> >>>> And each check goes to ethdev is_removed() dev_ops to ask if dev is >>>> removed. >>> Probably, if the REMOVED state setted in will not call device is_remove. >>> >>>> These must be better way of doing this, am I missing something. >>> >>> Suggest. >> >> With a silly analogy, this is like a blind person asking each time if he is dead >> before talking to other person. >> >> At first glance I can think of a kind of watchdog timer can be implemented in >> ethdev layer. It provides periodic checks and if device is dead it calls the >> registered user callback function. >> >> This method presented as synchronous method but not triggered from side where >> event happens, I mean not triggered from PMD but from application. >> So does application doing polling continuously if device is dead? >> Or if application is relying this patch to add a check in each API, what happens >> if device removed during data processing, will app rely on asynchronous method? > > We cannot put a mutex on hardware removal :) > So we have to live with errors du to removal. > If we are trying to configure a removed device, > the error will be not related to the root cause. > This patch is just trying to improve the situation by returning > an appropriate error code if removal can be detected. > Note: the check is run only if there is an error > and if the removal is not already detected. > > If I understand well, you prefer relying only on asynchronous > hotplug events? Even if they come really late? I think asynchronous hotplug events are better approach, but if they are late I understand you need a solution. I assume issue is when device is removed, application can make API calls until it detects the removal. For that case what do you think instead of ethdev abstraction layer doing a translation, define a specific error type and return it from PMDs to indicate that error is related to the missing device and application will know device is no more there? And consistently use that error type in all PMDs. Or what do you think above suggested flexible watchdog timer implementation in ethdev, so applications may be informed about missing device faster.