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 373C8C83F22 for ; Tue, 15 Jul 2025 17:29:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAF2B6B0092; Tue, 15 Jul 2025 13:29:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C86C36B0093; Tue, 15 Jul 2025 13:29:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B9C5F6B0095; Tue, 15 Jul 2025 13:29:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A8FC96B0092 for ; Tue, 15 Jul 2025 13:29:37 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 35CFCB52CB for ; Tue, 15 Jul 2025 17:29:37 +0000 (UTC) X-FDA: 83667185994.05.9C89F18 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf18.hostedemail.com (Postfix) with ESMTP id 513FB1C0018 for ; Tue, 15 Jul 2025 17:29:35 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Qys38+MV; spf=pass (imf18.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752600575; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RzvA+upP7N+xmyl3rKQjK7wKukGDrRXLQFpGIH1dIN4=; b=UW/w1gnQ4jrqpafoNYEkpdk1iovFwqfuR3Vlqwyi+dC6W7ck4LNC1pgDa7dtuKSljDZKfk 5hzqM5McMoQDsPAg1r7nJ6wb2xrKUP38Ih/YRfIAQBcQsIDCv05/0O94b9wyXf1eT7Ujeb VX5nvmhaY4pK7C/YKCe90qMxzU3OV/U= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752600575; a=rsa-sha256; cv=none; b=vZOGoijrrW8k8zuxrWtMva3lIgFOnrLlt2dRNszp1lktY+XwxqS4GXr5bgm+PkhzUnoBeq m8TCor2aY6N3aGx0z4P8r5JKaGKTpIqzgTekxMGS8C/Vw/fcIax2Pi7p7esahybd27Xl2K WutGMZUVdggm1z3Dw6dkUL+9qMrvyj4= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Qys38+MV; spf=pass (imf18.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-236377f00a1so54537865ad.3 for ; Tue, 15 Jul 2025 10:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752600574; x=1753205374; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=RzvA+upP7N+xmyl3rKQjK7wKukGDrRXLQFpGIH1dIN4=; b=Qys38+MVeeBf9WQPL+UQkubmCb/OWiE7wtG7IKNihp/Aviv0RBpJ6xhhO5SO7Rto7g DIaWkb0HgXTfj560z4mmDZiXNtjBivY1V4HA4nENr/nrpI1N7e9/AbRh82d2twULZIq7 x9PXFRJTj20Yzb34XI3nolVb2LWKYksLdji8VAB3bpPA/Y+Ve+ZuybnvY43W+5AoRfzS ClaTuMekiDCP2jeODMEs41ZULqi4Yhy28mE2iiEq0S5po+haV6WDKmZ5WEUHGgqVlsxp ZgGZRKoIwCnli+1/0sxS61H06z23vfXj0Nu81CsfEUnk4XFZ17JtmYRUO+2iyJw9D0Hl qMUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752600574; x=1753205374; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RzvA+upP7N+xmyl3rKQjK7wKukGDrRXLQFpGIH1dIN4=; b=gLNcSzoI4wbCcosiKrUoSy1Tt9dL16Ob9Y8zZsN3hV52lTYAMsDVUolabkuTe0zw8B NoPb+NYi+lPC11nyZ97w3LUEI4FBIjgx05lIpiuq/azNkErrAZbPjhQ3htkM4z4BoBOs zu5G00zLFXseIphvPV5ba61nyN06QHa8CYsWebfqAUKSCxZ9Zf8c52Wc6tHDIFEBPzEo ZkbFYyQkjKvOSdPzFMFcCcNMlOloHtINaDRXLC+C7WKF39a2y43k9Hd0Iy9rNlsUDADc GvKMKTrXre+WJFquXdtAyVIv5jdjpjMoZRrO6TxBUavB/OGz4kWDmEtUDsqvRNXA+nfO znvg== X-Forwarded-Encrypted: i=1; AJvYcCUzDTZgJ8E2oZrbi7Guera+j4GYygpr9irgJYn/nLBgpIUVyPYHsO2lYdzsOHfLAmLwsCeY12ttMw==@kvack.org X-Gm-Message-State: AOJu0Yxo5GPeWDA01mKhAf1jXFgPpcMpPnBDkLrQaWKYiWbdc1jw7sgK fYUMAzXVdAf3IKXuSpQ3sldow1SOtbz/Wj7Z6PniKPmykcCuX9V2hruK X-Gm-Gg: ASbGncthSqWGkegz2n2/+wKrDGKRT9kDX5Ck1ebDVNbJXYMhOV2XIFwWXev3iFMc43E Q7x6e9OeqbGWxjgtphBQOzJLvp3YSHeBLxpKGbRX+/VooG3+JejkVb2lT13ITb1uHQwg3vOeo7T aoewEtkL9OUQEnkd6Raq0ZvF+SGc7BR4baq/Zs/MyPAtucIdL8iHA4vvkm9u6G33WlxHOHOnSXP o9B0NodCVYorBe90SP26NLLYsHG8IoEt9lY6hzHDM3BBpuawxsTWUMSQlGFdQbzWQ2wI2ixGGGC MUzGthJZhO/5n0j/qbz76gKRTNZ3Uvy/KMLcSZ5D0q+a36RNBvt2SoisTHfkrQU3i7CbI51dLA+ wj9zZFVmnFIpDsR359coyaP3xDm4h6Xc= X-Google-Smtp-Source: AGHT+IG+94srJz5lZkl9mh3K1Oa0+wlS3LVpvh/lQZV3IAVp64fuuVdfR64LE/Xar9ig3W/fHDiLrA== X-Received: by 2002:a17:902:ea0e:b0:235:779:edea with SMTP id d9443c01a7336-23e1b195f18mr55245305ad.38.1752600573864; Tue, 15 Jul 2025 10:29:33 -0700 (PDT) Received: from ast-mac ([2620:10d:c090:500::6:249f]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23de4332cdcsm111929315ad.145.2025.07.15.10.29.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Jul 2025 10:29:33 -0700 (PDT) Date: Tue, 15 Jul 2025 10:29:27 -0700 From: Alexei Starovoitov To: Vlastimil Babka Cc: Sebastian Andrzej Siewior , bpf , linux-mm , Harry Yoo , Shakeel Butt , Michal Hocko , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Peter Zijlstra , Steven Rostedt , Johannes Weiner Subject: Re: [PATCH v2 3/6] locking/local_lock: Introduce local_lock_lockdep_start/end() Message-ID: References: <20250709015303.8107-4-alexei.starovoitov@gmail.com> <20250711075001.fnlMZfk6@linutronix.de> <1adbee35-6131-49de-835b-2c93aacfdd1e@suse.cz> <20250711151730.rz_TY1Qq@linutronix.de> <20250714110639.uOaKJEfL@linutronix.de> <6835614d-c316-4ecf-ae2b-52687a66ae7c@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6835614d-c316-4ecf-ae2b-52687a66ae7c@suse.cz> X-Rspamd-Queue-Id: 513FB1C0018 X-Rspam-User: X-Rspamd-Server: rspam09 X-Stat-Signature: q79nws4t5srf36d68m984t9sjt61m8j3 X-HE-Tag: 1752600575-464129 X-HE-Meta: U2FsdGVkX1/Qc6kEgqMXAZEqKKusXf777HXTc36C5xQY8PRYPkYSSG8QB2p5ANcjcJazJ5XfxjGrQlVIFG6eqm2KvLF/RpXDF1o81eIapqit44wWv+nfn3caclzRit8w5f9nWzJLgF3RfWkS0UwECjQuOwrNyOR1qJfgGHAPBanK11IYMx9C79d65p5tlnFHRQ3EbqttNUsbJdw6rhO9sC6BvCJmKIbw3RANyguuIq/cnGcDZ/oDb6/yp9v3oXIDi4P1kVmtNAoRcn7qF9ELuJ/U7VUov7l47c1DIGfqZ8LcEoBFoCFeZtIkpT/A9qx2mQRU4LgC65zp2vMFMieFYZBJ8yCT/7BWI0tYXaaS2Y/SKUZnPd0xXaiQ7P+q1w0SaUZ0ES/8wfItbBLpCS/xEFj8v1jswC2RLWMlYo+UvMmgg5a5oSE1u9wMJnBjLzCnnWwlisuYvh/e6pLIhpEoDmtT5bKpHd5z5+fHXRIROH5XSZ6mwh+Avv7Tqgmge+xow61K9fFLm+WMBn0MGuTNFM+OZuaItQAUqqkrnxyviNOYEzaleTRzVEeaK/vHIVrtreZmXI9UsphEAZlFCNqH0oLqM4bxqDt8xta5RRgDzoYvHeOFtYuZZ0a4LLMeRXPL9wbeodzywOeoVCicoQMBsrVO2MRCFVjnqpZZRUN39CWVCT1PC/dAw2GAUkYor9a6NkTB7eqLjVPLa15k0i7Zr+BIdjIaLLAe0gPjBugWvsFmFK0tCbY/0EwZ2MT2sOmtzmyisqo7A8P9uYhSxEdcvuNFwigmn/NFq4/stu5J3uI4TQIZBNzWoKFlZ8UXrWzq1Jh0mHmqw3N8yM62GesoGTQ2b/ax+paXbkGIJYa4WWBZ3uKgHR28jBCyX7cENF0WyAoc+Q2TGEIcBpbLGaCjXjtDyfpFRA7+ngjUKblDIHa2J02KpmKVDy6QkN9OdeB/+ox6rQcbiG0dKOkEQCy UW/lXD3W Tcw+LOmenD2WujXc3McvsEyh81Adj7/zH0kdyZjyw9M5w+T5uLUE+bJPuqS+tPtXZqJf+dJR6cnCbPEflaCYHfDUd0m8ex0gAq2tj0yD+0/dq92q73RIHnpTyeSV/JPTGkn3GMWEJgKjqM6zgMFrMSXdssP2n1u9fVjL+LhuYI642Mue0hoUcFcILrGDDibKHbM7d130FJDqMvdph0sioArUp39WToNwOUJ2YpRs0OLLjSWsIBgYngTajMcDZ/UUy3pQXiHnKwrup9ixBM+Hr13YrPRYlUL3gLCpPr239PqKiCYXW9OUlDyJzHQ8mRnYq05VWkkdwVx6ynB97DpLso/lGGMsSVj5ZGGVbnAa0Vy5xrRDI3vtR4MbMgEndLc7CvAdFlHF0anO9t8sr58tur1YM13SWiz8/RC+BcHSnl2S1Q3lCRu/DR6QkXcwxzHiuCAJBgWLNTD4IzG7p25iyLklusY5lSD59F6a1YZEOnfhcdFKjR8t/qTx8HEERjvr3ukF69OnyERxCkiJiBjYmJU0AH0Zo/tbk097AHAHRxW9bTqwuMQRseP88ipxFp0J7jHD1 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jul 15, 2025 at 08:56:21AM +0200, Vlastimil Babka wrote: > > the addresses of the locks are different and they're different > > kmalloc buckets, but lockdep cannot understand this without > > explicit local_lock_lockdep_start(). > > The same thing I'm trying to explain in the commit log. > > Thanks for the explanation and sorry for being so dense. > Maybe lockdep's lock classes can be used here somehow instead of having to > teach lockdep completely new tricks, but I don't know enough about those to > know for sure. I tried that with a separate lock_key for each local_trylock_t and it's sort-of kinda works for 16 cpus, but doesn't scale when number of cpus is large. There is no good way to pick LOCKDEP_BITS. It can be made optional on PREEMP_RT only and used for kmalloc buckets only that kmalloc_nolock() is using, but still feels less clean than local_lock_lockdep_start/end() since it makes lockdep work harder. Better ideas? >From da2b3bac08950929da105836fbff7e2ea4ecbc0e Mon Sep 17 00:00:00 2001 From: Alexei Starovoitov Date: Tue, 15 Jul 2025 10:16:42 -0700 Subject: [PATCH] lockdep Signed-off-by: Alexei Starovoitov --- lib/Kconfig.debug | 2 +- mm/slub.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index ebe33181b6e6..94c07b84ecd0 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1526,7 +1526,7 @@ config LOCKDEP_BITS int "Size for MAX_LOCKDEP_ENTRIES (as Nth power of 2)" depends on LOCKDEP && !LOCKDEP_SMALL range 10 24 - default 15 + default 16 help Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message. diff --git a/mm/slub.c b/mm/slub.c index 2f30b85fbf68..2ae6bf3ebcd0 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -395,6 +395,7 @@ struct kmem_cache_cpu { struct slab *partial; /* Partially allocated slabs */ #endif local_trylock_t lock; /* Protects the fields above */ + struct lock_class_key lock_key; #ifdef CONFIG_SLUB_STATS unsigned int stat[NR_SLUB_STAT_ITEMS]; #endif @@ -3083,6 +3084,8 @@ static void init_kmem_cache_cpus(struct kmem_cache *s) for_each_possible_cpu(cpu) { c = per_cpu_ptr(s->cpu_slab, cpu); local_trylock_init(&c->lock); + lockdep_register_key(&c->lock_key); + lockdep_set_class(&c->lock, &c->lock_key); c->tid = init_tid(cpu); } } @@ -5953,6 +5956,16 @@ void __kmem_cache_release(struct kmem_cache *s) { cache_random_seq_destroy(s); #ifndef CONFIG_SLUB_TINY + { + int cpu; + + for_each_possible_cpu(cpu) { + struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab, + cpu); + + lockdep_unregister_key(&c->lock_key); + } + } free_percpu(s->cpu_slab); #endif free_kmem_cache_nodes(s); -- 2.47.1