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 DA274C02190 for ; Mon, 3 Feb 2025 04:56:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51EE46B0082; Sun, 2 Feb 2025 23:56:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4CE866B0083; Sun, 2 Feb 2025 23:56:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 396716B0085; Sun, 2 Feb 2025 23:56:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 1BE026B0082 for ; Sun, 2 Feb 2025 23:56:16 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 74E111207D2 for ; Mon, 3 Feb 2025 04:56:15 +0000 (UTC) X-FDA: 83077421910.03.1B56D62 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 71D961C0008 for ; Mon, 3 Feb 2025 04:56:13 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WwzB0y+Q; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738558573; 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=35fagRI7YvF5z/POmptafe9Ah+8/A/NMEesi8PxvIoY=; b=6u2WK9IWk+/aKXpp4FresMlqfzVoDLIrRPaZ6wYpue8qMZn7o5LrWUELWuqKLcZLr0iht0 vUEw3JGfppWZUvZGTTG2lFmB2UXqppAUhPMkFgGUSH4UzV+VQo5c0NxFpmDDTZGzjNKVdm WX+nWqPn6UKhMjIiDgaI0Q4WGibYMsE= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WwzB0y+Q; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738558573; a=rsa-sha256; cv=none; b=8GnNR4hJoEmKpdt5hl4kIfNRyu3WXC7nEWj08AoUJI2r8h68q5LnIzOBLMnkNwG+u3j7PE w3V0Y2+LwK/1pDYs8vUuApOfypipRJngzi26ScLaSWDEnxFECO3on2bTClowGGDCSrMuY6 kFYN3QDk06kO0yrA15L6+82aZuW4LKg= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2164b662090so76418215ad.1 for ; Sun, 02 Feb 2025 20:56:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738558572; x=1739163372; 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=35fagRI7YvF5z/POmptafe9Ah+8/A/NMEesi8PxvIoY=; b=WwzB0y+QB9Tk8yycjOnRiiAYMXM9pZqRX/bmpyri/qLsgKx0+LQvla2vBCjubW3eCr NBjdU7r55I0zGSUbMY4yuslhtnSiotTPx2P3BUcO8r+e00wEw+zFqGLmIKN9esPXWU4f PBkkPK32hb2DdllGYTWKoC6UIzidM8a0eJlSA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738558572; x=1739163372; 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=35fagRI7YvF5z/POmptafe9Ah+8/A/NMEesi8PxvIoY=; b=uKdhHkIW/TBGBD/N0GxtPs0uZhJIJ6uxKxJ210GN4qjfL0iHpaT+DijP8qmEJ9/t0c RFxATiVobOfVU/oF2RqlnFLQoOwGehEbmNH7VGSvMEL56weH5ouSmxPiA2EWfslQJbvC 10lbnRgdJ0BzL1kEtx5soTwjVfD3huQvzf67TVl231wENhOv1viAjZ0awYGRRu3UR86+ 0xfnl62sqpFkAvDQ1KXQE/YBk5Cu81UTWM6P1UBMHHQb2UnsjXfYTVTySS1A7e+2R/I5 +vk+nGTdsmZ+FiOXZ6Nk5z5IQSmBblaiDZ2zlb2tXVvLftpCgh8TXiCETQ+ddMIgOVuF CfRA== X-Forwarded-Encrypted: i=1; AJvYcCVuXifaTDxZ41CwLJwXw9WmNuW7nPjFzf2EHmUsn4fqXW0M3kx1ATklyo0mVvSmw9lkRNJu0r2TRQ==@kvack.org X-Gm-Message-State: AOJu0YwtTSpPhGkF+T45787OJznhLTpcxNLVVXQq7pBqwb3UGDLN2NZW SDDSQMBdy2rLGlfIgTF86GWULiyIpEKsuLNc4aJsjp7wtzB1ZrOOK8NCbMraHw== X-Gm-Gg: ASbGncsORoTHcUhFsUQasypYucuc9Ew/rB9e2nXJKaLd0kAI6mdH3ZPO98Kut2XoOyI uN7pAc6pPqcdSc8A43zB550XGNfLDR9w0eBlEJWmxmarCrxfLrnCt10R5QbSvF5mJCLYOG2stbD xx5MADhYZvzkGHsGaQZzpj5Et/vUaKpcgMdHmvnjInd1j4m0giB4t9nRxQ37ZmTRadv79CcDGAo iLQQOzEqhPMflibaqxKYonZXiSNEmcyVZrdrZ+vvTsWuIFAN6d83y1GXF9KFuiAVLIyLQSPjScJ hTXsj63tp1iLG8zH X-Google-Smtp-Source: AGHT+IElehfyIl0r0zeTt9UhM4egRdW6riZZbqG0ru6iTcAMiIFgnmcTLnpSR4MMUzyWeJzzxOVE7Q== X-Received: by 2002:a05:6a20:c88a:b0:1e1:ce4d:a144 with SMTP id adf61e73a8af0-1ed7a403083mr35610931637.0.1738558572110; Sun, 02 Feb 2025 20:56:12 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:f3c0:b0:250f:9437]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-acebe85656bsm5840918a12.36.2025.02.02.20.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Feb 2025 20:56:11 -0800 (PST) Date: Mon, 3 Feb 2025 13:56:05 +0900 From: Sergey Senozhatsky To: Yosry Ahmed Cc: Sergey Senozhatsky , Andrew Morton , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv4 14/17] zsmalloc: make zspage lock preemptible Message-ID: References: <20250131090658.3386285-1-senozhatsky@chromium.org> <20250131090658.3386285-15-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 71D961C0008 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: ft3rsxw979s1kisuyy67gw69c46fz8nb X-HE-Tag: 1738558573-487478 X-HE-Meta: U2FsdGVkX19CzI0Pgo8YZvlQsvSk8RaLmgiIWqDkRewxXbpwLsSkrfc+dxw5J8x28Ct8WLA/1yw/m8msOHgQg2USEbUT6qJ7JTP0LOoXAK0m3atEQVyYY/h+63xxZR8EuQzR7afDv7E/su0yVmChECVCKfoq5JvFM7+XbQczZknYC5yZwJWvj8OqHPMSlzIRijqs6j/kbgBGAUlpIdcXc1eWko0swWXzX/oM+jfxOrjeQf1a0Hu4PeS98kbvnaaMuhQHmsQnWOv2NVGuF0yeBmAbDbxnhdb6/2h2QjfefzvyR2cMbuZlEVXvghV25l5IQpDq28X65ORZ8nQ1ZW1Lpj3UJBX3Yo1lELYlckz7RrlTg332r8akqTTQlOaE6e9WZeBF3ILQueCQxIziVWRwVM7AgvfvBRjWRmGbbBHOASjsmejJFUchdpCcxdanUwJLcKM5wRM6yykJ7h/kNIRHHSSbxNDG5nP10QbDZ7Q0vIElYZZbuC4DE2GItTWX5o71VhLl3ibisum97NKZClTDSmb3Ud4TdGbzCNAvyGl+JI/P1om01877Uv1ZirfECR4MBArqbnvjVxVmuW0xFdMi+cWoXgaiAWToRi2FyG76CVjo/Wj2wnUaMx4DKxPb0PukXfRYDShj4UcXck0AUQkIk53TCPkE/Bw8RndsvLTStMfo22qH6GwqyE55Da6oc6YmylfekQ38zENl+KFiRYZp+LJuhWav0JTWgL0CTeOK8qmhWBqB6iGpayBjtqSAxhI51x6Yw6NGHaWZ40D8An99g/hulPABSuCwSiXRoxCplQrd78P003kagPtK6LYb0BUYdVddu4pmM1HErka2X2lMTYJZTYiJTc6T/OQnNSXA2q1ZGuB4SfDnD8xSdeneGvRQ9pPgi9V5xe9eNcSmd9tvYcyR6kKES8OyL4qTjqHrgliNJZoR6IG7KwoE3bESpERmKz/68YB7SFcMKygCW2s wvp+iqIF 6f+O0ZaSvT+C+pU7utzSwyHLt8YeSfu6Mm0MukyMWRRFaol2qgbsTyGqwbTYEc/CtiPtzvij6kUEgPATvn8HYuZcqmX4QuGBIbigm7eG6jQCfKCZXMlHSAukGRMXja0h/KyOAmocQAPGJXmIy0UvwMAIGiBJJX/8KFZV5+AB+zAseGtrRR1gF1ub3PKA8rPeEtUdC/KRzFoPh6mlM8ovdVSy1F/XNqVmjQORx4J0U/eqv1LNn8ZDsVLoUFCoLYTdzcdPc976jpw7IwAS1T0WYULEzdoxe1Sz1yqQAfXbARioQC2bnn3ZHBTS+4vBidPWQ3ChLX7fZpo/uF4u0WvZDYZ59o3fnHyXpXNLt24hvk7Z27ag= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000163, 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 (25/02/03 12:13), Sergey Senozhatsky wrote: > > Just my 2c. > > Perhaps we can sprinkle some lockdep on it. I forgot to rwsem_release() in zspage_write_unlock() and that has triggered lockdep :) --- mm/zsmalloc.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 956445f4d554..1d4700e457d4 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -308,6 +308,10 @@ struct zspage { struct list_head list; /* fullness list */ struct zs_pool *pool; atomic_t lock; + +#ifdef CONFIG_DEBUG_LOCK_ALLOC + struct lockdep_map lockdep_map; +#endif }; struct mapping_area { @@ -319,6 +323,12 @@ struct mapping_area { static void zspage_lock_init(struct zspage *zspage) { +#ifdef CONFIG_DEBUG_LOCK_ALLOC + static struct lock_class_key key; + + lockdep_init_map(&zspage->lockdep_map, "zsmalloc-page", &key, 0); +#endif + atomic_set(&zspage->lock, ZS_PAGE_UNLOCKED); } @@ -344,11 +354,19 @@ static void zspage_read_lock(struct zspage *zspage) continue; } } while (!atomic_try_cmpxchg(lock, &old, old + 1)); + +#ifdef CONFIG_DEBUG_LOCK_ALLOC + rwsem_acquire_read(&zspage->lockdep_map, 0, 0, _RET_IP_); +#endif } static void zspage_read_unlock(struct zspage *zspage) { atomic_dec(&zspage->lock); + +#ifdef CONFIG_DEBUG_LOCK_ALLOC + rwsem_release(&zspage->lockdep_map, _RET_IP_); +#endif } static bool zspage_try_write_lock(struct zspage *zspage) @@ -357,8 +375,12 @@ static bool zspage_try_write_lock(struct zspage *zspage) int old = ZS_PAGE_UNLOCKED; preempt_disable(); - if (atomic_try_cmpxchg(lock, &old, ZS_PAGE_WRLOCKED)) + if (atomic_try_cmpxchg(lock, &old, ZS_PAGE_WRLOCKED)) { +#ifdef CONFIG_DEBUG_LOCK_ALLOC + rwsem_acquire(&zspage->lockdep_map, 0, 0, _RET_IP_); +#endif return true; + } preempt_enable(); return false; @@ -367,6 +389,9 @@ static bool zspage_try_write_lock(struct zspage *zspage) static void zspage_write_unlock(struct zspage *zspage) { atomic_set(&zspage->lock, ZS_PAGE_UNLOCKED); +#ifdef CONFIG_DEBUG_LOCK_ALLOC + rwsem_release(&zspage->lockdep_map, _RET_IP_); +#endif preempt_enable(); } -- 2.48.1.362.g079036d154-goog