DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeff Guo <jia.guo@intel.com>
To: Matan Azrad <matan@mellanox.com>,
	"konstantin.ananyev@intel.com" <konstantin.ananyev@intel.com>,
	"anatoly.burakov@intel.com" <anatoly.burakov@intel.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	"bernard.iremonger@intel.com" <bernard.iremonger@intel.com>,
	"jingjing.wu@intel.com" <jingjing.wu@intel.com>,
	"wenzhuo.lu@intel.com" <wenzhuo.lu@intel.com>
Cc: "ferruh.yigit@intel.com" <ferruh.yigit@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"helin.zhang@intel.com" <helin.zhang@intel.com>,
	"shaopeng.he@intel.com" <shaopeng.he@intel.com>
Subject: Re: [dpdk-dev] [PATCH 1/3] eal: fix lock issue for hot-unplug
Date: Wed, 7 Nov 2018 13:49:06 +0800
Message-ID: <d67bff50-93b8-7865-e7f9-ae727d741c4a@intel.com> (raw)
In-Reply-To: <AM0PR0502MB401957A51BA517C038AC4D74D2CB0@AM0PR0502MB4019.eurprd05.prod.outlook.com>

hi matan

On 11/6/2018 2:22 PM, Matan Azrad wrote:
> Hi Jeff
>
> Can you detail more in the commit log that we can understand the deadlock scenario. And how does this commit fix it?


Before i add more detail in the commit log of next version, i would 
explain to you here at first here.

When the device be hot-unplugged,  the hot-unplug handler will be 
invoked and the device will be detached, at this time if the interrupt 
still not disable soon and the second

remove event come again(kernel will sent pci remove event after sent uio 
remove event) , the bus->find_device will return null and return, at 
this place lack of an unlock.

Without this unlock, it will block the next remove or add event 
detection. So it definitely need an unlock here to avoid dead lock.


>> -----Original Message-----
>> From: Jeff Guo <jia.guo@intel.com>
>> Sent: Tuesday, November 6, 2018 8:07 AM
>> To: konstantin.ananyev@intel.com; anatoly.burakov@intel.com; Thomas
>> Monjalon <thomas@monjalon.net>; bernard.iremonger@intel.com;
>> jingjing.wu@intel.com; wenzhuo.lu@intel.com
>> Cc: ferruh.yigit@intel.com; dev@dpdk.org; jia.guo@intel.com;
>> helin.zhang@intel.com; Matan Azrad <matan@mellanox.com>;
>> shaopeng.he@intel.com
>> Subject: [PATCH 1/3] eal: fix lock issue for hot-unplug
>>
>> This patch will add missing unlock for hot-unplug handler, without this patch
>> potential dead lock will occur when device be hotplug-in after device be hot-
>> unplugged.
>>
>> Fixes: 0fc54536b14a ("eal: add failure handling for hot-unplug")
>> Signed-off-by: Jeff Guo <jia.guo@intel.com>
>> ---
>>   lib/librte_eal/linuxapp/eal/eal_dev.c | 12 ++++++++----
>>   1 file changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/lib/librte_eal/linuxapp/eal/eal_dev.c
>> b/lib/librte_eal/linuxapp/eal/eal_dev.c
>> index d589c69..2830c86 100644
>> --- a/lib/librte_eal/linuxapp/eal/eal_dev.c
>> +++ b/lib/librte_eal/linuxapp/eal/eal_dev.c
>> @@ -258,7 +258,7 @@ dev_uev_handler(__rte_unused void *param)
>>   			if (bus == NULL) {
>>   				RTE_LOG(ERR, EAL, "Cannot find bus (%s)\n",
>>   					busname);
>> -				return;
>> +				goto failure_handle_err;
>>   			}
>>
>>   			dev = bus->find_device(NULL, cmp_dev_name, @@
>> -266,19 +266,23 @@ dev_uev_handler(__rte_unused void *param)
>>   			if (dev == NULL) {
>>   				RTE_LOG(ERR, EAL, "Cannot find device (%s)
>> on "
>>   					"bus (%s)\n", uevent.devname,
>> busname);
>> -				return;
>> +				goto failure_handle_err;
>>   			}
>>
>>   			ret = bus->hot_unplug_handler(dev);
>> -			rte_spinlock_unlock(&failure_handle_lock);
>>   			if (ret) {
>>   				RTE_LOG(ERR, EAL, "Can not handle hot-
>> unplug "
>>   					"for device (%s)\n", dev->name);
>> -				return;
>>   			}
>> +			rte_spinlock_unlock(&failure_handle_lock);
>>   		}
>>   		rte_dev_event_callback_process(uevent.devname,
>> uevent.type);
>>   	}
>> +
>> +	return;
>> +
>> +failure_handle_err:
>> +	rte_spinlock_unlock(&failure_handle_lock);
>>   }
>>
>>   int __rte_experimental
>> --
>> 2.7.4

  reply	other threads:[~2018-11-07  5:49 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-06  6:07 [dpdk-dev] [PATCH 0/3] fix vfio hot-unplug issue Jeff Guo
2018-11-06  6:07 ` [dpdk-dev] [PATCH 1/3] eal: fix lock issue for hot-unplug Jeff Guo
2018-11-06  6:22   ` Matan Azrad
2018-11-07  5:49     ` Jeff Guo [this message]
2018-11-08  7:08       ` Matan Azrad
2018-11-06  6:07 ` [dpdk-dev] [PATCH 2/3] vfio: fix to add handler lock " Jeff Guo
2018-11-06  6:23   ` Matan Azrad
2018-11-07  6:15     ` Jeff Guo
2018-11-08  7:20       ` Matan Azrad
2018-11-08  8:30         ` Jeff Guo
2018-11-06  6:07 ` [dpdk-dev] [PATCH 3/3] app/testpmd: fix callback issue " Jeff Guo
2018-11-06  6:36   ` Matan Azrad
2018-11-07  7:30     ` Jeff Guo
2018-11-07 11:05       ` Ananyev, Konstantin
2018-11-08  7:28         ` Matan Azrad
2018-11-08  8:49           ` Jeff Guo
2018-11-08  9:35             ` Matan Azrad
2018-11-09  3:55               ` Jeff Guo
2018-11-09  5:24                 ` Matan Azrad
2018-11-09  6:17                   ` Jeff Guo
     [not found]                     ` <AM0PR0502MB401938411A7E2BA9E76576A2D2C00@AM0PR0502MB4019.eurprd05.prod.outlook.com>
2018-11-12  1:35                       ` Thomas Monjalon
2018-11-14  9:32                         ` Jeff Guo
2018-11-15  9:18 ` [dpdk-dev] [PATCH V2 0/3] fix vfio hot-unplug issue Jeff Guo
2018-11-15  9:18   ` Jeff Guo
2018-11-18 16:19     ` Thomas Monjalon
2018-11-15  9:18   ` [dpdk-dev] [PATCH V2 1/3] eal: fix lock issue for hot-unplug Jeff Guo
2018-11-15  9:18   ` [dpdk-dev] [PATCH V2 2/3] vfio: fix to add handler lock " Jeff Guo
2018-11-15  9:18   ` [dpdk-dev] [PATCH V2 3/3] app/testpmd: fix callback issue " Jeff Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d67bff50-93b8-7865-e7f9-ae727d741c4a@intel.com \
    --to=jia.guo@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=helin.zhang@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=matan@mellanox.com \
    --cc=shaopeng.he@intel.com \
    --cc=thomas@monjalon.net \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git