Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752341AbdGDPBU (ORCPT ); Tue, 4 Jul 2017 11:01:20 -0400 Received: from mx2.suse.de ([195.135.220.15]:47999 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752295AbdGDPBS (ORCPT ); Tue, 4 Jul 2017 11:01:18 -0400 Date: Tue, 4 Jul 2017 08:01:06 -0700 From: Davidlohr Bueso To: Thomas Gleixner Cc: LKML , linux-mm@kvack.org, Andrey Ryabinin , Michal Hocko , Andrew Morton , Vlastimil Babka , Vladimir Davydov , Peter Zijlstra Subject: Re: [patch V2 2/2] mm/memory-hotplug: Switch locking to a percpu rwsem Message-ID: <20170704150106.GA11168@linux-80c1.suse> Mail-Followup-To: Thomas Gleixner , LKML , linux-mm@kvack.org, Andrey Ryabinin , Michal Hocko , Andrew Morton , Vlastimil Babka , Vladimir Davydov , Peter Zijlstra References: <20170704093232.995040438@linutronix.de> <20170704093421.506836322@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20170704093421.506836322@linutronix.de> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1100 Lines: 27 On Tue, 04 Jul 2017, Thomas Gleixner wrote: >Andrey reported a potential deadlock with the memory hotplug lock and the >cpu hotplug lock. > >The reason is that memory hotplug takes the memory hotplug lock and then >calls stop_machine() which calls get_online_cpus(). That's the reverse lock >order to get_online_cpus(); get_online_mems(); in mm/slub_common.c > >The problem has been there forever. The reason why this was never reported >is that the cpu hotplug locking had this homebrewn recursive reader writer >semaphore construct which due to the recursion evaded the full lock dep >coverage. The memory hotplug code copied that construct verbatim and >therefor has similar issues. > >Three steps to fix this: > >1) Convert the memory hotplug locking to a per cpu rwsem so the potential > issues get reported proper by lockdep. I particularly like how the mem hotplug is well suited for pcpu-rwsem. As a side effect you end up optimizing get/put_online_mems() at the cost of more overhead for the actual hotplug operation, which is rare and of less performance importance. Thanks, Davidlohr