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 1D926C433EF for ; Mon, 17 Jan 2022 07:53:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A6D516B0073; Mon, 17 Jan 2022 02:53:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A1C3D6B0074; Mon, 17 Jan 2022 02:53:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E4496B0075; Mon, 17 Jan 2022 02:53:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0064.hostedemail.com [216.40.44.64]) by kanga.kvack.org (Postfix) with ESMTP id 829396B0073 for ; Mon, 17 Jan 2022 02:53:13 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 39077181DF74A for ; Mon, 17 Jan 2022 07:53:13 +0000 (UTC) X-FDA: 79039013466.20.7290B8D Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf05.hostedemail.com (Postfix) with ESMTP id A1D08100005 for ; Mon, 17 Jan 2022 07:53:12 +0000 (UTC) Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20H4RZ03030942; Mon, 17 Jan 2022 07:53:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=bacBQqAGH1CKRY/5OkaixhhdhelhxIK2RzSgl2sntyo=; b=DgyEXjzauJp2HliVypQn5cSMASDvOfzy7CKs7EDQ3TtEVU2LYXRLqYmMmvK98JD/xyeS dm0SwkaCaPz7n9mT6HVPQjkrIJbYv8Nkb4D7hyhkFe676Tr3qKuL1Mw6xMbQu41+5pfK IMOlAq5Ov5PemDrLV43kzpinfglMVonViM8sas/5oLnvzCu1fb+h6ZaLzGHYrcj6Isgn elLYaMSBQ7k/EnBOUJiTdiCTQ/c6/MsD1E8C3Y1Lpk0Qhw1ae+3c135P/IvIkOuYnPCT +eOg1VMhtecZPSLbWe4Etg/GZs0kXxfxPT0ZbcrvxyXWPLNFHCIUJUPrwb80CCvb1mFc XA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3dn1evk6x4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 17 Jan 2022 07:53:09 +0000 Received: from m0098393.ppops.net (m0098393.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 20H7fO2u029055; Mon, 17 Jan 2022 07:53:08 GMT Received: from ppma04fra.de.ibm.com (6a.4a.5195.ip4.static.sl-reverse.com [149.81.74.106]) by mx0a-001b2d01.pphosted.com with ESMTP id 3dn1evk6wf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 17 Jan 2022 07:53:08 +0000 Received: from pps.filterd (ppma04fra.de.ibm.com [127.0.0.1]) by ppma04fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 20H7qDas027845; Mon, 17 Jan 2022 07:53:06 GMT Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by ppma04fra.de.ibm.com with ESMTP id 3dknw90k2p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 17 Jan 2022 07:53:05 +0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 20H7r2AD44237244 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 17 Jan 2022 07:53:02 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE4DDA4040; Mon, 17 Jan 2022 07:53:02 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3434AA4051; Mon, 17 Jan 2022 07:52:58 +0000 (GMT) Received: from hbathini-workstation.ibm.com.com (unknown [9.163.1.44]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 17 Jan 2022 07:52:57 +0000 (GMT) From: Hari Bathini To: akpm@linux-foundation.org, david@redhat.com, linux-mm@kvack.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org Cc: osalvador@suse.de, mike.kravetz@oracle.com, mahesh@linux.ibm.com, sourabhjain@linux.ibm.com Subject: [PATCH v3 1/2] mm/cma: provide option to opt out from exposing pages on activation failure Date: Mon, 17 Jan 2022 13:22:45 +0530 Message-Id: <20220117075246.36072-2-hbathini@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220117075246.36072-1-hbathini@linux.ibm.com> References: <20220117075246.36072-1-hbathini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: k5UGfhUTyg3excLJG4mJOhklUn_8tli2 X-Proofpoint-ORIG-GUID: bOQnaOb_w-IiibZx-gnXyqdxr1F60N9T X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-17_02,2022-01-14_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 adultscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 malwarescore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201170048 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: A1D08100005 X-Stat-Signature: 1mm8har8x53m5bqujhbh4fxe598b1tcu Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=DgyEXjza; spf=pass (imf05.hostedemail.com: domain of hbathini@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=hbathini@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com X-HE-Tag: 1642405992-985883 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: Commit 072355c1cf2d ("mm/cma: expose all pages to the buddy if activation of an area fails") started exposing all pages to buddy allocator on CMA activation failure. But there can be CMA users that want to handle the reserved memory differently on CMA allocation failure. Provide an option to opt out from exposing pages to buddy for such cases. Signed-off-by: Hari Bathini Reviewed-by: David Hildenbrand --- Changes in v3: * Dropped NULL check in cma_reserve_pages_on_error(). * Dropped explicit initialization of cma->reserve_pages_on_error to 'false' in cma_init_reserved_mem(). * Added Reviewed-by tag from David. Changes in v2: * Changed cma->free_pages_on_error to cma->reserve_pages_on_error and cma_dont_free_pages_on_error() to cma_reserve_pages_on_error() to avoid confusion. include/linux/cma.h | 2 ++ mm/cma.c | 11 +++++++++-- mm/cma.h | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/linux/cma.h b/include/linux/cma.h index bd801023504b..51d540eee18a 100644 --- a/include/linux/cma.h +++ b/include/linux/cma.h @@ -50,4 +50,6 @@ extern bool cma_pages_valid(struct cma *cma, const stru= ct page *pages, unsigned extern bool cma_release(struct cma *cma, const struct page *pages, unsig= ned long count); =20 extern int cma_for_each_area(int (*it)(struct cma *cma, void *data), voi= d *data); + +extern void cma_reserve_pages_on_error(struct cma *cma); #endif diff --git a/mm/cma.c b/mm/cma.c index bc9ca8f3c487..766f1b82b532 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -131,8 +131,10 @@ static void __init cma_activate_area(struct cma *cma= ) bitmap_free(cma->bitmap); out_error: /* Expose all pages to the buddy, they are useless for CMA. */ - for (pfn =3D base_pfn; pfn < base_pfn + cma->count; pfn++) - free_reserved_page(pfn_to_page(pfn)); + if (!cma->reserve_pages_on_error) { + for (pfn =3D base_pfn; pfn < base_pfn + cma->count; pfn++) + free_reserved_page(pfn_to_page(pfn)); + } totalcma_pages -=3D cma->count; cma->count =3D 0; pr_err("CMA area %s could not be activated\n", cma->name); @@ -150,6 +152,11 @@ static int __init cma_init_reserved_areas(void) } core_initcall(cma_init_reserved_areas); =20 +void __init cma_reserve_pages_on_error(struct cma *cma) +{ + cma->reserve_pages_on_error =3D true; +} + /** * cma_init_reserved_mem() - create custom contiguous area from reserved= memory * @base: Base address of the reserved area diff --git a/mm/cma.h b/mm/cma.h index 2c775877eae2..88a0595670b7 100644 --- a/mm/cma.h +++ b/mm/cma.h @@ -30,6 +30,7 @@ struct cma { /* kobject requires dynamic object */ struct cma_kobject *cma_kobj; #endif + bool reserve_pages_on_error; }; =20 extern struct cma cma_areas[MAX_CMA_AREAS]; --=20 2.34.1