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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 75A90C433DB for ; Tue, 23 Mar 2021 21:19:07 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E975561582 for ; Tue, 23 Mar 2021 21:19:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E975561582 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 71DE66B00E6; Tue, 23 Mar 2021 17:19:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6CD476B00E7; Tue, 23 Mar 2021 17:19:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 54A056B00E9; Tue, 23 Mar 2021 17:19:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0061.hostedemail.com [216.40.44.61]) by kanga.kvack.org (Postfix) with ESMTP id 3999F6B00E6 for ; Tue, 23 Mar 2021 17:19:06 -0400 (EDT) Received: from smtpin33.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id E806A8249980 for ; Tue, 23 Mar 2021 21:19:05 +0000 (UTC) X-FDA: 77952404250.33.BA1C822 Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) by imf30.hostedemail.com (Postfix) with ESMTP id F19A4E0001AF for ; Tue, 23 Mar 2021 21:19:03 +0000 (UTC) Received: by mail-lj1-f177.google.com with SMTP id s17so27539000ljc.5 for ; Tue, 23 Mar 2021 14:19:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=q/Hv2aIHg4JAKeZX5bEtyhlfR532pZFH6Gq8JpGYfrs=; b=AykGKCzmwCD/OTQb8N2wMNlDfjjxXFR5hxmBI1h9pbEUd6BoIpScFqBflU4vrvhEn2 m+rik5VFAvaSx+g8wbd8lentwQdcOXAI/MD8vjOPuG+SYP48vjpVcSbj0ZvVJSd2ThU6 BiLXDal9b6HEDlRWoKfw3ud5L1tgXDSEhKeFJOJY1kTmCRQBa3ne03u2HFkudHdlpMLc VPw0ZuKqWDj76wjtbaZrShf4pihvolt/OiKFbbsK3Ix6VO9i8lzfLETLyG+EIRpeXv6T izloky1TGxj+6QZlHzOJS1BCpK+kpv4nrD1l2rpZRpYYM7DJcKV13HM5c/2Xnm/f12rN WwZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=q/Hv2aIHg4JAKeZX5bEtyhlfR532pZFH6Gq8JpGYfrs=; b=EpabFeAv88zTr0aspifQodS/RMwLJvCTvRq0187IMFOn6cb5gm2GgzXFGj/9Hux7AV 2HmpHYMfTQZLyVPqXBKt0JJMMFEec4FJf9PsJRkz/vHhOVXVjCFQJVjHz5wEWBB/2fJg +4+EJo5PPKMLX5Z50iC+xTms2XbaX8PkN6/zRw+OfOFPrtDB5AZuFk3zos3mJ3qs035q cP82sTqgEXy3s9O/95o5SC9zYHDcW04R/TDzFx2eiDg7aPYClDaF/2Z2HDuf4Qk668Bb NYuM9LqTRgJ93J99O3wH5zW//Er0d9tiqqQxsFp8pWt9bXEZOhNn5znw8wMp//QFLKl1 IvHg== X-Gm-Message-State: AOAM531LZ4OE8gFvwx8bmrhku3H/hdZ+wFzn53uWkEZ//XKkukfzH4MQ H7Ug5POOmseHSRKH6+9+DIc= X-Google-Smtp-Source: ABdhPJyMEFXVI3Wnlu/AMRiG90UGc3ctWqC36YOiySvjC9hcf228gR3MMXJblNutFOG9xzoPtvPg9Q== X-Received: by 2002:a2e:919a:: with SMTP id f26mr4383249ljg.508.1616534343912; Tue, 23 Mar 2021 14:19:03 -0700 (PDT) Received: from [192.168.2.145] (109-252-193-60.dynamic.spd-mgts.ru. [109.252.193.60]) by smtp.googlemail.com with ESMTPSA id i18sm24489lfl.22.2021.03.23.14.19.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 Mar 2021 14:19:03 -0700 (PDT) Subject: Re: [PATCH v5] mm: cma: support sysfs To: Minchan Kim , Andrew Morton Cc: linux-mm , LKML , gregkh@linuxfoundation.org, surenb@google.com, joaodias@google.com, jhubbard@nvidia.com, willy@infradead.org References: <20210323195050.2577017-1-minchan@kernel.org> From: Dmitry Osipenko Message-ID: Date: Wed, 24 Mar 2021 00:19:02 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210323195050.2577017-1-minchan@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: F19A4E0001AF X-Stat-Signature: nndsecqhd53xph75eeure6rjqkc1uqkk Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf30; identity=mailfrom; envelope-from=""; helo=mail-lj1-f177.google.com; client-ip=209.85.208.177 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616534343-927087 Content-Transfer-Encoding: quoted-printable 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: 23.03.2021 22:50, Minchan Kim =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > Since CMA is getting used more widely, it's more important to > keep monitoring CMA statistics for system health since it's > directly related to user experience. >=20 > This patch introduces sysfs statistics for CMA, in order to provide > some basic monitoring of the CMA allocator. >=20 > * the number of CMA page successful allocations > * the number of CMA page allocation failures >=20 > These two values allow the user to calcuate the allocation typo: calculate > struct cma { > unsigned long base_pfn; > @@ -16,6 +22,14 @@ struct cma { > struct debugfs_u32_array dfs_bitmap; > #endif > char name[CMA_MAX_NAME]; > +#ifdef CONFIG_CMA_SYSFS > + /* the number of CMA page successful allocations */ > + atomic64_t nr_pages_succeeded; > + /* the number of CMA page allocation failures */ > + atomic64_t nr_pages_failed; > + /* kobject requires dynamic objecjt */ typo: object ... > +static void cma_kobj_release(struct kobject *kobj) > +{ > + struct cma_kobject *cma_kobj =3D > + container_of(kobj, struct cma_kobject, kobj); I'd add a to_cma_kobject() helper to improve readability. > + struct cma *cma =3D cma_kobj->cma; > + > + kfree(cma_kobj); > + cma->kobj =3D NULL; > +} > + > +static struct attribute *cma_attrs[] =3D { > + &alloc_pages_success_attr.attr, > + &alloc_pages_fail_attr.attr, > + NULL, > +}; > +ATTRIBUTE_GROUPS(cma); > + > +static struct kobject *cma_kobj_root; > + > +static struct kobj_type cma_ktype =3D { > + .release =3D cma_kobj_release, > + .sysfs_ops =3D &kobj_sysfs_ops, > + .default_groups =3D cma_groups > +}; > + > +static int __init cma_sysfs_init(void) > +{ > + int i =3D 0; unsigned int, for consistency There is no need to initialize this variable. > + struct cma *cma; > + > + cma_kobj_root =3D kobject_create_and_add("cma", mm_kobj); > + if (!cma_kobj_root) > + return -ENOMEM; > + > + for (i =3D 0; i < cma_area_count; i++) { > + struct cma_kobject *kobj; > + > + cma =3D &cma_areas[i]; > + kobj =3D kzalloc(sizeof(struct cma_kobject), GFP_KERNEL); Checkpatch should warn that kzalloc(*kobj, ..) is a better variant. I'd also rename kobj to cma_kobj everywhere, for clarity. > + if (!kobj) > + goto out; > + > + kobj->cma =3D cma; > + cma->kobj =3D kobj; > + if (kobject_init_and_add(&cma->kobj->kobj, &cma_ktype, > + cma_kobj_root, "%s", cma->name)) { > + kobject_put(&cma->kobj->kobj); > + goto out; > + } > + } > + > + return 0; > +out: > + kobject_put(cma_kobj_root); > + > + return -ENOMEM; kobject_init_and_add returns a error code, it could be different from ENOMEM. Won't hurt to propagate the proper error code.