From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0078AECAAA1 for ; Tue, 30 Aug 2022 15:48:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 67D3B8D0002; Tue, 30 Aug 2022 11:48:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 62C148D0001; Tue, 30 Aug 2022 11:48:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CDB28D0002; Tue, 30 Aug 2022 11:48:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3AF168D0001 for ; Tue, 30 Aug 2022 11:48:21 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 11D3AAB98C for ; Tue, 30 Aug 2022 15:48:21 +0000 (UTC) X-FDA: 79856690802.25.A380B43 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf09.hostedemail.com (Postfix) with ESMTP id B4F64140045 for ; Tue, 30 Aug 2022 15:48:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1661874499; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mbOHhoGxSCdY0/v0Y5mT98E8ZAdTtYHYoFgDmUTVqfA=; b=FCysqeFC/wh3OsOaqVH5/R6R70/dGllZQwvKHITv1YWW4TH7yAU0pwfTyOGUtkQQedIwnd pUCe9dwbeN8X8NKdDyXklTNUuVUddgoMdtXALI2Z6aTLp/Y7fl/M0FSAd01o1AVwOeOauW 4/45Ef/It9NYMXlb7tmP5FKE0Es4ygU= Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com [209.85.222.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-482-e5OIN6dVMTW5uDgwCqdIVA-1; Tue, 30 Aug 2022 11:48:17 -0400 X-MC-Unique: e5OIN6dVMTW5uDgwCqdIVA-1 Received: by mail-ua1-f69.google.com with SMTP id n33-20020ab013e4000000b0039f1bede4c9so3617648uae.4 for ; Tue, 30 Aug 2022 08:48:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc; bh=mbOHhoGxSCdY0/v0Y5mT98E8ZAdTtYHYoFgDmUTVqfA=; b=id6AEIgmKQJt+yneM1BRpdValN66ouRUo6oa4gwUz8+EbTHKAgk5eRKB0dA5tJstBv s/O5spRqtYs0+22M2VAmXMF0iv0tcnAGHQPxwpd3hRX1yL/iWzw2rUYg1sY9Z1cTx67V Iy84q3cU+TCr5/Th63F4Xqfed8K5uNVy5QnkEd4j2E+VOhlHIZzll9hlcEufzEMDonI4 TKfBSKE6pOPWqg4kTZ4LhY34g1874Um7t+R2oOtJdMEHx5CwYpPrSHiAJAG1VYokAfqF C4S2kNtldZsNlnNk2QE58D2i5gglRQxAXIAlPsNdc5W1Bqu97eos9nZMEk9PXrRT1IdQ cIDQ== X-Gm-Message-State: ACgBeo0wilu7xBQS2XezwefI3NkCDiH+sG5WhETvHmDBGxOyH/0qnG2A wA0b9mYcqiSRjWGnbAwGO+6oo9YG/eOTpDxSC3SnqcFPlx+NpQFtOMDJ2F2xPJeu10IYZAf7E8A 9qiDgpzKSAdzKIqsxe22FE+FDnjs= X-Received: by 2002:a1f:91c4:0:b0:394:8136:c142 with SMTP id t187-20020a1f91c4000000b003948136c142mr2700551vkd.21.1661874497501; Tue, 30 Aug 2022 08:48:17 -0700 (PDT) X-Google-Smtp-Source: AA6agR54VZeIrBA6rFYE7McHjwk5q/BP0aEB1ftzlEXS3iHyd3qCAZ/+vUQr5wimdPxPp3/PKNr8KQKESFGNgYEqpIg= X-Received: by 2002:a1f:91c4:0:b0:394:8136:c142 with SMTP id t187-20020a1f91c4000000b003948136c142mr2700543vkd.21.1661874497282; Tue, 30 Aug 2022 08:48:17 -0700 (PDT) MIME-Version: 1.0 References: <20220829154805.1205507-1-mlombard@redhat.com> In-Reply-To: From: Maurizio Lombardi Date: Tue, 30 Aug 2022 17:48:06 +0200 Message-ID: Subject: Re: [PATCH RFC] mm: slub: fix flush_cpu_slab()/__free_slab() invocations in task context. To: Sebastian Andrzej Siewior Cc: Vlastimil Babka , linux-mm , David Rientjes , Pekka Enberg , Joonsoo Kim , Andrew Morton , LKML , tglx@linutronix.de X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661874499; a=rsa-sha256; cv=none; b=uwMPKVKtH1hWygAXlU+XMnK8wjBfL097g7uBnBwA+VHQ5Hj5ucrt+Ml8Xok8hKMUFdX367 pNzlWPBs1z4aSd6ixpz4Gfb8qBJSZK4+nToYFO36/2nqfJAYmjugMp9GLtPGPkEhR/d7bj Evz51Y5yLTHsnsMZYGO6iKpBa6GL1zE= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=FCysqeFC; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf09.hostedemail.com: domain of mlombard@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=mlombard@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661874499; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mbOHhoGxSCdY0/v0Y5mT98E8ZAdTtYHYoFgDmUTVqfA=; b=X+fI/9pvK9HQvq1ZrCQ2/1maY6gBNjMhi3rSx5TA/3t/QOxTBmQ0qTb0YMnGZmm/cUqcII ARIOOTHxm3aRCZc/OgVz45QGRl7hJ9FgZDoqmKJTMRTnqhrPJW2dDo6az8ll2MOP2oDDRF uQCFK4V3L2VNcRiLEtpHeaUGdWogI2Y= X-Rspam-User: Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=FCysqeFC; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf09.hostedemail.com: domain of mlombard@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=mlombard@redhat.com X-Stat-Signature: 7c1nzqq7k7ka871gymkn8auk8416ys3w X-Rspamd-Queue-Id: B4F64140045 X-Rspamd-Server: rspam07 X-HE-Tag: 1661874499-513328 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: =C3=BAt 30. 8. 2022 v 12:24 odes=C3=ADlatel Sebastian Andrzej Siewior napsal: > > On 2022-08-29 17:48:05 [+0200], Maurizio Lombardi wrote: > > diff --git a/mm/slub.c b/mm/slub.c > > index 862dbd9af4f5..d46ee90651d2 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -2681,30 +2681,34 @@ struct slub_flush_work { > > bool skip; > > }; > > > > +static void flush_cpu_slab(void *d) > > +{ > > + struct kmem_cache *s =3D d; > > + struct kmem_cache_cpu *c =3D this_cpu_ptr(s->cpu_slab); > > + > > + if (c->slab) > > + flush_slab(s, c); > > + > > + unfreeze_partials(s); > > +} > =E2=80=A6 > > @@ -2721,13 +2725,18 @@ static void flush_all_cpus_locked(struct kmem_c= ache *s) > > lockdep_assert_cpus_held(); > > mutex_lock(&flush_lock); > > > > + if (in_task()) { > > + on_each_cpu_cond(has_cpu_slab, flush_cpu_slab, s, 1); > > This blocks with disabled preemption until it completes flush_cpu_slab() > on all CPUs. > That function acquires a local_lock_t which can not be > acquired from in-IRQ which is where this function will be invoked due to > on_each_cpu_cond(). Hmm, this is not good indeed. I guess I should have used for_each_online_cp= u() instead of on_each_cpu_cond(). > > Couldn't we instead use a workqueue with that WQ_MEM_RECLAIM bit? It may > reclaim memory after all ;) That should also fix it, do you think it would be ok to allocate a workqueu= e in in kmem_cache_init() ? Thanks, Maurizio