Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp260262pxb; Mon, 8 Feb 2021 22:38:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJxmvOuwK5ByhcH6e0fEr6xuQFMCWHHECRifhggUSuqF21woI2HpZpzM15xwSVXq5Md+pH8V X-Received: by 2002:aa7:cc18:: with SMTP id q24mr20653191edt.82.1612852701791; Mon, 08 Feb 2021 22:38:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612852701; cv=none; d=google.com; s=arc-20160816; b=f0xekXEs7GPJzgbKgNFwzEtmsUhcW5VaJYV/eAsSCwIu2nDMcMw2AZ2iB3sDph99Gc y3cJ8uf2qqb0UeGAu2mmCNrfwyBEpRZjQvWQ69EA2QnIbVdOgp6aXeXtg4dw/LxjxEyM xUwZX+qu9pgmMnIzHjB+Y6qDDMchGc2b6h79UNJ+9+JPAlFVBhR+gt3EV2CrHOtVlmmV GxEWFwLV9sd4hlhvMxV5Q+CeC+YcL3DcuRcQ9cO59Hm0fbV29BgS5NK+HkZZyiUMOlN+ PMnaD5NgdaDlGn/SukTlud8lQvkKv/9u4Pn+hPlTFJJvtM9pcWNENsOdkekeC3BroMP8 fYPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:dkim-signature:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject; bh=7wQ8mWS6cW2YEXFTB8AqiROB1gkp1bSnRoEhFMdaxfE=; b=P/eqeIb6gsdvZIVpYahcz0hG52IFYdYet1+dQa5RK+NYVP6GxX+uPoTdb5cihbez+I c0GbhaRHoScFOzRqyaJKztPsXQy4sHouGBe0sF9PlOB5AE6A+8FNhVLLlvfaleAXr2T5 zYIwDRrtTFgM3QcubqouO0YRnuEfALJKSkJTUUHebGp+Rc7u+PVUqImCeqfNODhV48kC LsT9gJ4B6VWJhloVAz74M4u1LuCBTlxnLBENUzXOP7Nk07p0A9xgn6+omRByWYkhQH9D VaqeBjyXpzrRvrtAZ8Qir3Vpbk1ns+anr1ewpds6FJPL/LA9Fh6wWtJNXM48mUBC8PL5 z1LA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=CNd1Jzww; 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=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k23si2329162ejq.693.2021.02.08.22.37.58; Mon, 08 Feb 2021 22:38:21 -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=@nvidia.com header.s=n1 header.b=CNd1Jzww; 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=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230346AbhBIGhQ (ORCPT + 99 others); Tue, 9 Feb 2021 01:37:16 -0500 Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:16655 "EHLO hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230372AbhBIGfl (ORCPT ); Tue, 9 Feb 2021 01:35:41 -0500 Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Mon, 08 Feb 2021 22:34:52 -0800 Received: from DRHQMAIL107.nvidia.com (10.27.9.16) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 9 Feb 2021 06:34:52 +0000 Received: from [10.2.50.67] (172.20.145.6) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 9 Feb 2021 06:34:51 +0000 Subject: Re: [PATCH v2] mm: cma: support sysfs From: John Hubbard To: Greg KH CC: Minchan Kim , Andrew Morton , linux-mm , LKML , , , References: <20210208180142.2765456-1-minchan@kernel.org> <43cd6fc4-5bc5-50ec-0252-ffe09afd68ea@nvidia.com> <7cc229f4-609c-71dd-9361-063ef1bf7c73@nvidia.com> Message-ID: Date: Mon, 8 Feb 2021 22:34:51 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:85.0) Gecko/20100101 Thunderbird/85.0 MIME-Version: 1.0 In-Reply-To: <7cc229f4-609c-71dd-9361-063ef1bf7c73@nvidia.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To DRHQMAIL107.nvidia.com (10.27.9.16) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1612852492; bh=7wQ8mWS6cW2YEXFTB8AqiROB1gkp1bSnRoEhFMdaxfE=; h=Subject:From:To:CC:References:Message-ID:Date:User-Agent: MIME-Version:In-Reply-To:Content-Type:Content-Language: Content-Transfer-Encoding:X-Originating-IP:X-ClientProxiedBy; b=CNd1JzwwkAR7h5CPMTmCRnAErttwqaT/QE1c5UxltA6Oy/pJE8sTpRmUm/8AFaaAX ghxbUDJKrB17gSmhfDB8Jsx2wdjoXFaqmkRz1MgCAbo93ImML9YR4qVD2EtkCpcZYN +kQQvyY+X0GYCtoJVIfPHLvyjQjL23L+LWKcz9JOvlqNLaGLhB4peuKL9LQShtjaN5 a9ctGBlP7plDy+88/+glPGd751r6nqoCFo3rGDJ/+0C0KJ5ETPKCc7HdY2qqKxBbnd VMfCZbBU+lstKtevvWIJCCcTVfsBUTVyl0i5bwCUedkYdFjKK/zCSArb1QRvokRV9v Wofg+yQigrVMw== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2/8/21 10:27 PM, John Hubbard wrote: > On 2/8/21 10:13 PM, Greg KH wrote: >> On Mon, Feb 08, 2021 at 05:57:17PM -0800, John Hubbard wrote: >>> On 2/8/21 3:36 PM, Minchan Kim wrote: >>> ... >>>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 char name[CMA_MAX_NAME]; >>>>>> +#ifdef CONFIG_CMA_SYSFS >>>>>> +=C2=A0=C2=A0=C2=A0 struct cma_stat=C2=A0=C2=A0=C2=A0 *stat; >>>>> >>>>> This should not be a pointer. By making it a pointer, you've added a = bunch of pointless >>>>> extra code to the implementation. >>>> >>>> Originally, I went with the object lifetime with struct cma as you >>>> suggested to make code simple. However, Greg KH wanted to have >>>> release for kobj_type since it is consistent with other kboject >>>> handling. >>> >>> Are you talking about the kobj in your new struct cma_stat? That seems >>> like circular logic if so. I'm guessing Greg just wanted kobj methods >>> to be used *if* you are dealing with kobjects. That's a narrower point. >>> >>> I can't imagine that he would have insisted on having additional >>> allocations just so that kobj freeing methods could be used. :) >> >> Um, yes, I was :) >> >> You can not add a kobject to a structure and then somehow think you can >> just ignore the reference counting issues involved.=C2=A0 If a kobject i= s >> part of a structure then the kobject is responsible for controling the >> lifespan of the memory, nothing else can be. >> >> So by making the kobject dynamic, you properly handle that memory >> lifespan of the object, instead of having to worry about the lifespan of >> the larger object (which the original patch was not doing.) >> >> Does that make sense? >> > That part makes sense, yes, thanks. The part that I'm trying to straighte= n > out is, why was kobject even added to the struct cma_stat in the first > place? Why not just leave .stat as a static member variable, without > a kobject in it, and done? >=20 Sorry, I think I get it now: this is in order to allow a separate lifetime for the .stat member. I was sort of implicitly assuming that the "right" way to do it is just have the whole object use one lifetime management, but as you say, there is no kobject being added to the parent. I still feel odd about the allocation and freeing of something that seems to be logically the same lifetime (other than perhaps a few, briefly pendin= g sysfs reads, at the end of life). So I'd still think that the kobject shoul= d be added to the parent... thanks, --=20 John Hubbard NVIDIA