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 B3C6CC0218A for ; Thu, 30 Jan 2025 03:22:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 48AB92800B4; Wed, 29 Jan 2025 22:22:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 439672800B3; Wed, 29 Jan 2025 22:22:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2DB662800B4; Wed, 29 Jan 2025 22:22:18 -0500 (EST) 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 0BCB82800B3 for ; Wed, 29 Jan 2025 22:22:18 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id ACEC616075E for ; Thu, 30 Jan 2025 03:22:17 +0000 (UTC) X-FDA: 83062669914.07.2C4E9BA Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by imf15.hostedemail.com (Postfix) with ESMTP id C68D5A000E for ; Thu, 30 Jan 2025 03:22:15 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=RF1cujFr; spf=pass (imf15.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.43 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=1738207335; 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=fNv/qF5L9DYQG4GRInYjrKbioOHCY/rhDAdj8Plp3Ls=; b=ejBW4rLWq/F8fsWfJLJcN/DjPLW8EOpgd10RXLk8z1CNsaL/L9u+6uWvXcubXzKcrVjkL+ 8dnSj2Ll2UyClgJPMCNHuaD+ENop64itoIrcGYiMs+iFcmsFAeixAOXhi0g6R8QeP98YNQ tipkv0k7ITxK5wtdbpT0wE6TqQZG4Xk= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=RF1cujFr; spf=pass (imf15.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.43 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=1738207335; a=rsa-sha256; cv=none; b=btcgu4fTPF9sETZ7KadV+APs6l4qfpK8+cKbR0oX7TPgO6Dc2vitBUi5z35dX/mweVO+VC 4II+QNb0Uru6kla1gHfdoznP6VZ8nl/6hMWh4CjC2EUIWM/orqQLljuzMk/0w9GSoJpwWd dMCts+w9N8tn6vETvLTqGIKSui1ZKoo= Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2ee8e8e29f6so382531a91.0 for ; Wed, 29 Jan 2025 19:22:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738207334; x=1738812134; 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=fNv/qF5L9DYQG4GRInYjrKbioOHCY/rhDAdj8Plp3Ls=; b=RF1cujFrEe1hQ1rj9iBYjq6VCnuk7DCjGc4P7rZ41tSRfcLdajiP765hfRRofj/00z uHgwXT6qukkj9NwAJQE3OGUuYXRibSQeOhcuT6+vWv6sN5BQ829EjqDmltcgyT7m6JHt jbQFHtwYh4VlY4lgOn+bZmKik9zHAAx1YQFZE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738207334; x=1738812134; 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=fNv/qF5L9DYQG4GRInYjrKbioOHCY/rhDAdj8Plp3Ls=; b=MH1ZHXJDv61Kc+t0eNQnFaDAZ/H+84hlb4lQmC1tn/seL5OrKRCMDZwSl0u8S3OGva Dzqlfr9HiwD3H15Oib26wKZ54jl91F2zWlK+unlsiRz8QE91xUhXsSWa4fJCBGLrYBiv I5yk9N6lRivdJSJvibeXM9Hccy95CzUMlkqLShgqdVULm6Ix18XMIUQ8HVhKg1YRZHeE t9J+8PJb4R4fU6J1/L/EU2zW5LGzQZ4wsQfG8X/GBonyUAwityJmLsDPb+Hzs4/+0m72 mlwfaAHMabfof1/Eb4aKqgQfmAQVMvdFtY79s8YvUSnREJmR8JmgEkQwppOXej8eNjRa je+w== X-Forwarded-Encrypted: i=1; AJvYcCWe7Mmz7QuczdcLJ2T76dHBZQdYkVz34aJGRzSvKPSSNMGaxwZwvaEEp6hYBuqK/OsR0DTmOO/3ag==@kvack.org X-Gm-Message-State: AOJu0YzLdkMtChxeEn9M6RsPu1XQIKURzuauTvtKBIEYjb0vU5YMBkJo JDAgT2hACP9XEXXboHxgDdntgoCVttErLJ3lxATOSOcy3WbNdG6bJC0RCj3TCg== X-Gm-Gg: ASbGnctW4sIm+E5HxTCtMwbZy0LjOCgW50UgJDczZQPtAWxALPDBRJKLhBKEBeXTPM9 nNa0wDUqiGIwz75VTLFOsvUnsBLSqRPJbZfU7expWduzijTQcBi7/Q0ihMzrjMeyFDoFfJHexQN t2YElHMTCM9H3feKqxxvJ5fnUUwrtajJfg+U0JXE2/IYVayQ5bo/C7ks812lx9d4xf0OIAwdZ41 H8RiWKf2UCtip3M1wSWiEfci6mWsVM2rkQd86wDiUuTQ5axJ/z3tn6Qz11yT5QZq0P1XpkJ+DCH 7QXdZynfIVXTyK1PHyU= X-Google-Smtp-Source: AGHT+IEHDzUZi3lg9xMhHt59OkIpdTDr2gsnd0+almGl7slYViWjk4HBx7jwg26XFrThilzoksJunQ== X-Received: by 2002:a17:90b:548c:b0:2ee:a6f0:f54 with SMTP id 98e67ed59e1d1-2f83abda260mr8524977a91.13.1738207334658; Wed, 29 Jan 2025 19:22:14 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:d794:9e7a:5186:857e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f83bd0ce4dsm2639680a91.27.2025.01.29.19.22.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 19:22:14 -0800 (PST) Date: Thu, 30 Jan 2025 12:22:08 +0900 From: Sergey Senozhatsky To: Uros Bizjak Cc: Sergey Senozhatsky , Andrew Morton , Minchan Kim , Johannes Weiner , Yosry Ahmed , Nhat Pham , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv1 3/6] zsmalloc: make zspage lock preemptible Message-ID: <3oxqvpghezesl6nj474v3xchpseeavc6p3u752yaxswpfmcqxd@ohdx62ahgle5> References: <20250129064853.2210753-1-senozhatsky@chromium.org> <20250129064853.2210753-4-senozhatsky@chromium.org> <3f787832-fbb7-8590-c090-1f511b16449a@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3f787832-fbb7-8590-c090-1f511b16449a@gmail.com> X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: C68D5A000E X-Stat-Signature: ryyiykukz9654188expu4jengznagg8g X-Rspam-User: X-HE-Tag: 1738207335-602725 X-HE-Meta: U2FsdGVkX18j8fG6DihLvcBUKWVB1GfKXoZu0xCcZIkoiIvId0MmBWSgZBpB6ChDYdJ7Jbne6bbV7OtwCDBS5hvb8zZdcR4cDI/Bvxn20Wio75jvIenoG87uvlStVMPyp/66FEfonfB0ZKfZrBQbQ+Cqt4/1JknYOkweD1IwW9lIomcJkiAES+nKAFmoAHxprmATtYK9m0xe0nft+rVOeiBCnyFXzJ4/Bm0eIGZJ00MiCwYPp8P/mznz1QmFADQ72ksGhDFRhfOGKqF1+ilnxcfhEorQ48SKzqs69U00CpDgyHQ+rNC+9cLOLVz160DcV21Tn+Ju+ER0ISNaN2QjAn++N+UqbPfjlpBSK+VcRizZn5XVjyIy9g7/9AWTWuha07Xf/ugX0UMv5rGXzyZkX3QpsPfsClGgXRNVf9I81KRN5urD+XqZ4WSOrCWatCaP3apJHPYM9kjUr3VHqfOG0REYrB0SLAeqaYhIv4IZoqgN49CJEAu8SNTOGAqQC9u/e+4iNaFp9C//SBOVCL1y3+fqhY8j8rjnBfowWI11mfyQFCs6cKLZ+sO9sTUhUjBc+q21Tv/jXLiSELbuheFcKilVrqqInHdDJhjNtgs4Xbd8cQZjNgDDh2MPOW7mTxqJFPtW3bcmCEswl6cPAS8IN5e5/TvefnY9FTUA31Yk/Kt0voLm2wfKuijN4IXuobMcRi4eP2gI+ONbo9ykJyoIlnceqZu6mFE/eyFv6fsf/YZ6P7IIFIpc0QRFD8PD+MGgE+INxeM41KppbGwnADEff72s28GEf3aIasgBu7HGqo2OQ3PX7guFa2b7FpId67LGRS/NfO8agnoOK9degwaGqTZq/CE5d0DAA+nJXXZA7bEGJXwjAmtDok70UA/V0+HAOKsL5DUzwWceY0BCjhncuPIox/mOzjRNPelRGCyk0mmlnXC9wjyF8x/84LfMoOzpRwSDf3TdUrg8cyaYvP7 M3XZ1i4b HG7KZM8M0zLyWwdxJVvH8hnjrSHHkUYqbNZ5Df+6WCazBLNaO1wanbh/sYlBt7rFUnY72MvvAAMS4icuIRonhR0+jt/9/3Xtpb7kmaPRXALuHCObjH2f1J++I/BQFaNjr+vmv5irENeWFC+Qqp80ck5Qt/cCUuAH00PhJj5el02e+cm6zM+be/EYJ+AVNDaWX1AK/zeg7VrwpbH3jZN4LJiR4bgWWfC0EvZ/D0ybvBzgQmU68sYOJ0CH0TAbgG0FBMle+KOi6lLazpEEz1ZULiiZp35ZpofHONTIrdFQvEOd73N9wsRnur+MWRaxBJFesiyGI/1XAn/AsmrtjZUMB/W7Lj2gQnAkgZSdVMlzVzgIvcDc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000144, 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/01/29 16:22), Uros Bizjak wrote: > > +static void zspage_read_lock(struct zspage *zspage) > > +{ > > + atomic_t *lock = &zspage->lock; > > + int old; > > + > > + while (1) { > > + old = atomic_read(lock); > > + if (old == ZS_PAGE_WRLOCKED) { > > + cpu_relax(); > > + continue; > > + } > > + > > + if (atomic_try_cmpxchg(lock, &old, old + 1)) > > + return; > > + > > + cpu_relax(); > > + } > > +} [..] > Based on the above, cpu_relax() should be removed from the loop, which > becomes: > > { > atomic_t *lock = &zspage->lock; > int old = atomic_read(lock); > > do { > if (old == ZS_PAGE_WRLOCKED) { > cpu_relax(); > old = atomic_read(lock); > continue; > } > > } while (!atomic_try_cmpxchg(lock, &old, old + 1)); > } Ack. > > +static int zspage_try_write_lock(struct zspage *zspage) > > This function can be declared as bool, returning true/false. Ack. Thank you.