Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp467089pxh; Wed, 10 Nov 2021 04:45:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJxXV1KBjWiFQgrvYKPCIWOlposDG5chRjmz/KGAqyvNtCsVXvlcnYv0u1tcgqa0SbwOC99g X-Received: by 2002:a17:907:20e8:: with SMTP id rh8mr19669788ejb.437.1636548316644; Wed, 10 Nov 2021 04:45:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636548316; cv=none; d=google.com; s=arc-20160816; b=m+zT9OXsErYTI7kV/6Fl+jXeQ6Wc2ArGszwVAXixB8GYlNveyqZ0YbnZVdW/wS5Yxx /XWR4G+N4NJjjWKcW5Vs6bU9EtzNwpCxODzR59EluXB15tq/bJATuwJlvWNeFeUHWLyY 5cEqNLE4FvfPnmoVpMLqsn8BWy1bpAuvxrbuQ8qvno4CN4W/eig1YJ1PFnqmyiigG6Qk VnsF/gyUbJJMJqJuP0fbxE6B230+yzpOsb4IwKuqQxutv2H44w8vRvobrC+roEZq9ChB F4E5k4o6hRV/P2TSnqOyx5jmvwrS+Gy+d8YmHM3HcTwMC4fOHbHESWh6wJq3HQo04gRS QzZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IgvXB3wIW/eKwy7axc9YxawcSQ4EonqSK7ZLz9YPdV4=; b=NJxyv7B2s14CjX3AzrAI1MbatEWqOZXMrfcpdcI5t1YMLoCwVRluJs5H2AcduAiCcw Rf6VjlTvwEhkaJE3Jx90aY66RgBOcLYu8t5+j1f8oe0Ods9ebevIRFQSJgb3/pq3kgWe UmtHCavyd/u80zrB7OxUvokFM27ImGW69CClY5LmZDn71sgkqcwtEk+Eez+xecpkQmff GfQUtQffGeIxBvclko5hojp6Y5UlE8OkG9Cq2zyC6zPmPlEfNtJrKn2NtOoCIZnr640j kI2o+c9hsIUbFlWWwhLCEW0DghXj/TEeKVBu6oMVcfKCO2UtBSZqk8ilmP2+aBMdHRoN U04Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fe04rNut; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id sg15si49751133ejc.353.2021.11.10.04.44.52; Wed, 10 Nov 2021 04:45:16 -0800 (PST) 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=@kernel.org header.s=k20201202 header.b=fe04rNut; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231679AbhKJMnZ (ORCPT + 99 others); Wed, 10 Nov 2021 07:43:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:33024 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231232AbhKJMnY (ORCPT ); Wed, 10 Nov 2021 07:43:24 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 17F3E61058; Wed, 10 Nov 2021 12:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1636548037; bh=jc4GnoAH1zLaYyd8wpTtEW+INmncIENQJOMUgkY/0P0=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=fe04rNutJYlEc/QoIVbfU7ZNLoZP2S+meh9Nkag1bU6fKlX48O+UtA6R8c5Eh8SVT H4wrg97N8ulrIWszccGe4OeRKWVZ66vwBeRsIymK7HWHQgrNEApvohXIzCuRZv7z9l QeTzQgJWwFasPOkKuwWMXt4Rc3ik+TvvtSNctFUNluIt7K/5bvP1UfI7odTgHqzLXN Hbl0ZLLakQcQvTAschhf5k5qOdPY++Np/bpvtdtAwNFVQ3FCfnZT9hpzPX91X4WTgO z6xzVJlHGBEi31Fkphae5pU5q5nOlRm0tuACjhrdb4i28JVnTIy8DnzYw8HbgzY3KG zFWG45D5dTuoQ== From: SeongJae Park To: alexs@kernel.org Cc: SeongJae Park , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH] mm/damon: remove damon_lock Date: Wed, 10 Nov 2021 12:40:34 +0000 Message-Id: <20211110124034.2574-1-sj@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211110114721.133808-1-alexs@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thank you for this patch, Alex! On Wed, 10 Nov 2021 19:47:21 +0800 alexs@kernel.org wrote: > From: Alex Shi > > Variable nr_running_ctxs guards by damon_lock, but a lock for a int > variable seems a bit heavy, a atomic_t is enough. The lock is not only for protecting nr_running_ctxs, but also for avoiding different users concurrently executing damon_start(), because that could allow the users interfering others. > > Signed-off-by: Alex Shi > Cc: SeongJae Park > Cc: Andrew Morton > Cc: linux-mm@kvack.org > Cc: linux-kernel@vger.kernel.org > --- > include/linux/damon.h | 1 - > mm/damon/core.c | 31 +++++-------------------------- > mm/damon/dbgfs.c | 8 +++++--- > 3 files changed, 10 insertions(+), 30 deletions(-) > > diff --git a/include/linux/damon.h b/include/linux/damon.h > index b4d4be3cc987..e5dcc6336ef2 100644 > --- a/include/linux/damon.h > +++ b/include/linux/damon.h > @@ -453,7 +453,6 @@ int damon_set_attrs(struct damon_ctx *ctx, unsigned long sample_int, > unsigned long min_nr_reg, unsigned long max_nr_reg); > int damon_set_schemes(struct damon_ctx *ctx, > struct damos **schemes, ssize_t nr_schemes); > -int damon_nr_running_ctxs(void); > > int damon_start(struct damon_ctx **ctxs, int nr_ctxs); > int damon_stop(struct damon_ctx **ctxs, int nr_ctxs); > diff --git a/mm/damon/core.c b/mm/damon/core.c > index c381b3c525d0..e821e36d5c10 100644 > --- a/mm/damon/core.c > +++ b/mm/damon/core.c [...] > @@ -437,19 +422,15 @@ int damon_start(struct damon_ctx **ctxs, int nr_ctxs) > int i; > int err = 0; > > - mutex_lock(&damon_lock); > - if (nr_running_ctxs) { > - mutex_unlock(&damon_lock); > + if (atomic_read(&nr_running_ctxs)) > return -EBUSY; > - } > > for (i = 0; i < nr_ctxs; i++) { > err = __damon_start(ctxs[i]); > if (err) > break; > - nr_running_ctxs++; > + atomic_inc(&nr_running_ctxs); > } > - mutex_unlock(&damon_lock); > > return err; > } This would let multiple concurrent threads seeing nr_running_ctxs of zero and therefore proceed together. Thanks, SJ