Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5325995pxv; Wed, 21 Jul 2021 02:42:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMqXzAATSfmPj3AV7twwL14QT9+6QtRG8bQEnEa+jrEUjluj25rmwPCh2yEsllMelViGZB X-Received: by 2002:a05:6e02:120e:: with SMTP id a14mr24722742ilq.88.1626860552099; Wed, 21 Jul 2021 02:42:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626860552; cv=none; d=google.com; s=arc-20160816; b=vVIvonnMPCHjFuAuWD5uuNDcSAJEpJgOze0+BQlKIJ3qUemDSyCDdGJPaeaV5O+DUC LLzgTTD1U95e+/zvuiNQKvrZSRPlSvGKE3i2XlGx3qktS0eni8A1EYvXOAHRjCENA3jt SuYiQ0o/HjB9Z49dRIcEm85sWIf3+Z1FSfivpnRB5wIcmBCIIult/H9PQg+zQOMEtmKG ExMQIHAISDetLhdTMHjE0NpeNRWWZdVwvC75aOl1n3av0jTOgmVHYyvxYgIILqM0xmwI wSkkQ6ftp1xbwoRYFj0WyJ22AJtd9GB8JXVlwkaLyb8yfvRHglk4gr0XcbtmTtcc6MAg zEtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=67hJA7KQknmkJoBUgnlgz7jDHxvv2Sf7c8w5V3dOmtY=; b=y5684UirrvhtEi2dImA1g0c5l00c/oxyyVnBN50KZFZaOcq9s2wSBCk+iPlI54Gb9W FSNvcnAePjT/M3wtwyWA8fWlRMSCZ3HxF1mGr0cdDHbXDNxh4GQRB932x7FcC7RNxNTr exh1LjWld1Rn46xQUPVwpgWYkvgbOUn2fTqIlXYQ7eweodHm8dFbDfiOO6U1X5fO5B5w JICJYx3RmX1ChYsD9Gv3BX+91CRFK9Xnm+Nr4XT1KBO+DirfyljkyiL2N3JtrYtG/4+4 mVgITpQTepUlljB5MH9g7R1ctpeSb1V7kXc7SY7d2LIb0VG4rZRGsdPXYBbHfvETzlwa MSDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmx.net header.s=badeba3b8450 header.b="aR+cve4/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmx.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t15si24916082ilg.47.2021.07.21.02.42.20; Wed, 21 Jul 2021 02:42:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmx.net header.s=badeba3b8450 header.b="aR+cve4/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmx.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237977AbhGUI7i (ORCPT + 99 others); Wed, 21 Jul 2021 04:59:38 -0400 Received: from mout.gmx.net ([212.227.17.21]:36425 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237702AbhGUIxz (ORCPT ); Wed, 21 Jul 2021 04:53:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1626860022; bh=QmdL01pmor+IWHIS1CdJrkCqY7QNMbMK7ucbZiQKmUA=; h=X-UI-Sender-Class:Subject:From:To:Cc:Date:In-Reply-To:References; b=aR+cve4/BcjXKNZ/eG+ywb+m+Uogna4+tDky9euC2L+u3gLHb3Dh+KupyXSyMsyQI bK1TYa80bcpfus9oRRvziUsyfds3+xHiZ/pNH2X0Duuuvki00CugqxDwUA5bs4gmzC Wxa+WH0zVHbpZ34zSqjZlpZG38WYPosK981pSnio= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from homer.fritz.box ([185.221.150.108]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MJE27-1lppyn2519-00KhIV; Wed, 21 Jul 2021 11:33:42 +0200 Message-ID: <84a7bd02cf109c6a5a8c7cc2bfc2898cb98270aa.camel@gmx.de> Subject: Re: [rfc/patch] mm/slub: restore/expand unfreeze_partials() local exclusion scope From: Mike Galbraith To: Vlastimil Babka , Thomas Gleixner , LKML Cc: linux-rt-users@vger.kernel.org, Mel Gorman , Sebastian Andrzej Siewior Date: Wed, 21 Jul 2021 11:33:41 +0200 In-Reply-To: <69da2ecd-a797-e264-fbfa-13108dc7a573@suse.cz> References: <87tul5p2fa.ffs@nanos.tec.linutronix.de> <8c0e0c486056b5185b58998f2cce62619ed3f05c.camel@gmx.de> <878s2fnv79.ffs@nanos.tec.linutronix.de> <6c0e20dd84084036d5068e445746c3ed7e82ec4b.camel@gmx.de> <7431ceb9761c566cf2d1f6f263247acd8d38c4b5.camel@gmx.de> <240f104fc6757d8c38fa01342511eda931632d5a.camel@gmx.de> <69da2ecd-a797-e264-fbfa-13108dc7a573@suse.cz> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.4 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:fQhsIRfZyMUR0bUanRrqW8hhCOpgRPD8dle9Q68q3lM7dS0FWI1 5IcWwp8mJ9CK/Vv4wC91fSJzoM0O87sbpQ2kaSrakjIqAIyMbHN/kzKGQUrpfMlljvG2CjA x1L3XtlzZpKEHs2bljTCwQGRB3Ekwv4xBQu21Er2V0VPlMg+WRSFU9IQg6IqRoBI+s2rFGg /kEnmPUhmN84FHZc7hexg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:jqP8deKCgRM=:aq7YJew0PGP5rDFc9bHRz8 Go44LjP1SOq2qBay08tvODGaogRNgnV3aBaJm+RiiFwRITahmvZPf/x1/HIUcMP74ZND+56jG K6RXIR/UnB+jlDs4R7eJR3vgKY/3oTnaO53lTIJza6GrWpo56UBlogmZHmnjAEqbm+auKTi+x A5zdMneL9+1fpyzhEndadTedrwv/xG9ZpJRLA3PjAZGDqvjO0Z9kjqcuDHGS1XN+8/35rwgWY DnqQxSWtWaGmYLCKvKnsA4poV4GETkbtV2zMjhSguTU6v/WJOxIDwwiecsZ4+dHMByPygaDc9 jBlY2QoBIxpAIPlx5DV5UxHcIbnrcUOjkt33MqwUrG0VIMkddzwTtpUJ/VD7IUNNhTRIAU3Ik AgYDP4vxSylCxLnpJGlWG9osLjnrjfiThtCRKSz+XAOwPswsJ1JDHVExaQatx+H15klKkSQrf +TfeWp86sXyRb96dFa6xIjaVj+zAfzk6OklOLv13/+4wtT7F0VHf6n06Q6IbIp1ex5ngNDHuO mM+Gntx2XL+ckUpOrv5DjYYhDTkZB55V69L/zrfNEMvpG4EWhMZE9wKYMecrHPHO6bsgDkSNw DCZM0heFPM5D8anTSwshmzJJbRzKQGKCjJLpxvqoZboqujI/d1mSLwzY613RQxGio+btUsj1I hXMkxyO6ovDjJpMgkN//OeY5gPXMOqWwOlFxlF4mZ6h5w4LTYOBBXksnwgg1A+TyZItAdboRo D9Cubu1Ah8idXP+nuvYEp9ro5Gp+rBNCm6f4NSYXajsWXHgHNy1otBndmX/PGVY/HgDG2ZwAH azGqm+nDA9fc1oJtW+/9KZ2a6UeqkiKmuY2fFpYim0x5PTV1Rmvn6vQtBXALi/I4kMAneGzq0 0ZzR3ekpVKqcclDjfE+QURf5QsgU3le6/yaiwAbPGBE73dcNymHvTG5sp3asxuJAi/wQk5wMv wmCOm08IEfKyvBY+YuhZzh2KJrqBmOvkf3yFkCX5leEyswDUEgqCpTHyVmTC2HcMd+FH22DTp xK5VGpdx0cwQhJnIZcCZcynAdF+m0KiBMrCTsrVIAy5ieNKZKG77S9wfPbNbaH6Uf58Fittg5 xaTwKKa6Wx7fph86hM3f1tOBKwqzorxORcI Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2021-07-21 at 10:44 +0200, Vlastimil Babka wrote: > > So this doesn't look like our put_cpu_partial() preempted a > __slab_alloc() on the same cpu, right? No, likely it was the one preempted by someone long gone, but we'll never know without setting a trap. > BTW did my ugly patch work? Nope. I guess you missed my reporting it to have been a -ENOBOOT, and that cutting it in half, ie snagging only __slab_free() does boot, and seems to cure all of the RT fireworks. (chainsaw noises...) =2D-- mm/slub.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) =2D-- a/mm/slub.c +++ b/mm/slub.c @@ -2551,6 +2551,8 @@ static void put_cpu_partial(struct kmem_ int pobjects; slub_get_cpu_ptr(s->cpu_slab); + if (IS_ENABLED(CONFIG_PREEMPT_RT) && drain) + local_lock(&s->cpu_slab->lock); do { pages =3D 0; pobjects =3D 0; @@ -2564,7 +2566,13 @@ static void put_cpu_partial(struct kmem_ * partial array is full. Move the existing * set to the per node partial list. */ - unfreeze_partials(s); + this_cpu_write(s->cpu_slab->partial, NULL); + if (IS_ENABLED(CONFIG_PREEMPT_RT) && drain) + local_unlock(&s->cpu_slab->lock); + __unfreeze_partials(s, oldpage); + if (IS_ENABLED(CONFIG_PREEMPT_RT) && drain) + local_lock(&s->cpu_slab->lock); + oldpage =3D NULL; pobjects =3D 0; pages =3D 0; @@ -2581,6 +2589,8 @@ static void put_cpu_partial(struct kmem_ } while (this_cpu_cmpxchg(s->cpu_slab->partial, oldpage, page) !=3D oldpage); + if (IS_ENABLED(CONFIG_PREEMPT_RT) && drain) + local_unlock(&s->cpu_slab->lock); slub_put_cpu_ptr(s->cpu_slab); #endif /* CONFIG_SLUB_CPU_PARTIAL */ }