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.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,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 1DFC3C433EF for ; Thu, 23 Sep 2021 22:08:18 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 71D5861241 for ; Thu, 23 Sep 2021 22:08:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 71D5861241 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id E69FB6B006C; Thu, 23 Sep 2021 18:08:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DF0EA900002; Thu, 23 Sep 2021 18:08:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C42DE6B0073; Thu, 23 Sep 2021 18:08:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0228.hostedemail.com [216.40.44.228]) by kanga.kvack.org (Postfix) with ESMTP id AEC966B006C for ; Thu, 23 Sep 2021 18:08:16 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 7374E30157 for ; Thu, 23 Sep 2021 22:08:16 +0000 (UTC) X-FDA: 78620227392.04.64A4392 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf02.hostedemail.com (Postfix) with ESMTP id F0D557001A24 for ; Thu, 23 Sep 2021 22:08:15 +0000 (UTC) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18NLYL7Y005808; Thu, 23 Sep 2021 22:08:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : to : cc : references : from : message-id : date : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2021-07-09; bh=J+Yll8uW5Oe5Cd3g9s8y7BOy7Gjak9C8PGLji0reSZs=; b=medY5x3vSd8ioN8rnhUwOWkXDwnCv3nKaUC0X8WLkIqgcciwOtxSOgK4wrBpNqhhSXt+ Ju6IqK55FoNDRpppzIqWg1OBsNPnXINmdcirvC1FxmQLgtlUN7Z0Wj0I2m9rYt93UGUB AUHXsdZNre0uyo/ahIunLDYXHyltZ2e5CbvcDXcaXwwNC3SbklJqDiPptgKnL2k8jaLg EWwx2CyzKx8xbvc6D+IqZLTn/cvvN73KFy3MiBcacNHwty3zBa2PwPIYDCTx+7dHLJdY JRKw1DACRQD/LD40Y835WbC3Vb/RTK4SuO3AjJYN3ti3TWfbBHbhUm4SxnPW07DRDFDv HQ== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3b91m384qc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 23 Sep 2021 22:08:13 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 18NLxdDV141784; Thu, 23 Sep 2021 22:08:12 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2175.outbound.protection.outlook.com [104.47.58.175]) by userp3030.oracle.com with ESMTP id 3b91n28xwh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 23 Sep 2021 22:08:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Uq6Gvry87PqYWzD6QFP3pvjB8JG//BeXRDnHxROii02TqllAjT1H1wEv2mM/a1AQw0rTUX41OJLqkL8uTPgRwRIIVv2vaY3iUVuGfvpvLEEWyMhrpZukXghMv+/pSFVROFouSsqK6ykDxxp9nzHapZOgANpzlQWGm8Fl4Wz36qTeVxB0Kmt0uQ+JhYbBT+t7II55EOChZQ/2nge14pyC20YfOv+DOXsIiK40trEfXs2v8pdQZkhGYkDsSAVjGaPIm/Ef5ZJovQc4vcFtHEL9kW2VLwUnURlj6mQUIQMWtfctlP1zGFYbv814VJ4SQs2YoluZL+rDSKgBBKPtWUNjmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=J+Yll8uW5Oe5Cd3g9s8y7BOy7Gjak9C8PGLji0reSZs=; b=IZ5RMGn5aSAeXuNTQYX1UjNN/yyGRip/H3C37C4kd7TOFz/PrlsOC0khoHbj0MQgciDMfSuUihMe9LjfQZ1pM7I50bVfuZeay7SXS8A14Txw0Cg/ubB6Wsu07+eTB2trVm9e2yrUxw2+DJdOTQqnTgSQjfGX+iJuY1PCr/1AnG2ldxF7q5RKzR6kv6gTFjkNx8vX45gBch3AduDoimctKBvBVjpWNdsV+ig/cma2GrCBRiNG4GXflP92NrK1mA/eoKBO3MsC8HjvRliGQxopKXG0qV6twbY+/eCkrmLI8HIWSrXUxM6tdVlVg9HnTSgksUN7t/DiOZ7Qsd7GPk1G+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J+Yll8uW5Oe5Cd3g9s8y7BOy7Gjak9C8PGLji0reSZs=; b=LR8m4uKM3KCs8SZcZlf9MyBCUtEH4MXpj5RtP2iZnVHEGK02x6Wag6X7hzmz0yHX8Gm09b9Wg6Aj5D7uJw+hGS/ez1AJ/Mc8vgF3DF4xy7vZP4+LvgwPXs3gMh+LN5Ixlxvoayj4sh04IQXugSWMoEueqFwhydlXr+AlAJ8tS+c= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.17; Thu, 23 Sep 2021 22:08:08 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::a4a2:56de:e8db:9f2b]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::a4a2:56de:e8db:9f2b%9]) with mapi id 15.20.4544.015; Thu, 23 Sep 2021 22:08:08 +0000 Subject: Re: [PATCH v2 1/4] hugetlb: add demote hugetlb page sysfs interfaces To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, David Hildenbrand , Michal Hocko , Oscar Salvador , Zi Yan , Muchun Song , Naoya Horiguchi , David Rientjes , "Aneesh Kumar K . V" References: <20210923175347.10727-1-mike.kravetz@oracle.com> <20210923175347.10727-2-mike.kravetz@oracle.com> <20210923142426.8930bd1cfcabc782a2152c18@linux-foundation.org> From: Mike Kravetz Message-ID: Date: Thu, 23 Sep 2021 15:08:06 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 In-Reply-To: <20210923142426.8930bd1cfcabc782a2152c18@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR11CA0043.namprd11.prod.outlook.com (2603:10b6:300:115::29) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 Received: from [192.168.2.123] (50.38.35.18) by MWHPR11CA0043.namprd11.prod.outlook.com (2603:10b6:300:115::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13 via Frontend Transport; Thu, 23 Sep 2021 22:08:07 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5f0ae716-58c5-41be-a0a7-08d97ede9feb X-MS-TrafficTypeDiagnostic: BYAPR10MB2663: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CidbQIyDCTo8OHiw4pg/AJOCf9C7jaVZsemyrdVzGNo//nUzqfOA0jxWBTg4CejBiWo060Ewcj/LmRh2cVGWn1jlHWtJQAhTb6RL7s8FpyPtz4chDTRUHh79NBd/PLy7wwdY6OSNudZ/JsfL834L6d8AoHedVhp2LNZHM14zuhXvzAKxZZdc3RxSzrLs0y0pHTSucqvqOpWZo9MfezNUdjPvfQ7xzZzsBA/KAaRPapE8Xw34vS0xE8ZpSUkjDuBUxxXNy40ylFWatYvqNrbYTO9RuQI0t/Z1hfLCEK9r3ZKnqOMHgvvz1szkCc6Tgx2D3d7JAM5UBaZxQj9PTAcNVDYADbHR8L9uFuRhYTCHmCiPfq3M5ZsgTwhQY6K3QmRpcuDQzyAzInpbtCD/8dEhylFfi2SpFhLd8qSe4YDsRlpo3wXHXgymE1cYWLkEfbdrcAcnRDlMXVVaQnw1hxTL5QmUA1VOWkvqg/aUG/fc9LXMdtWsd4gHJU9Nxdx/ujh48e2ILmfK5kzFBJBo7CCFZDpB3QWyIt6jAOrSPGNpM1TChx/0CpszivLMhIU2C5ISotFQIg85vy+XtkxIHqCjlWiZ1e5WK5fFKULYbR0p05G39bWFlfdvRTDVHJo8fhwBdupn6fCp2CMdywK1R7rSiFhoOV4hvifFb9+cdFuqmch6+4snu+ANqNXyCsAsnh2oWxajkaGrXYvnwQeaO6mjn+l0xdXa57k2e6yOx0eJVfHHezEGxMRfMMRty7vsz/EACp9Z5Ay2Hez2yypPIK02iw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4196.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(36756003)(5660300002)(44832011)(2906002)(508600001)(4326008)(316002)(16576012)(6486002)(2616005)(8936002)(38350700002)(38100700002)(52116002)(86362001)(31696002)(54906003)(53546011)(83380400001)(186003)(66476007)(6916009)(31686004)(66556008)(8676002)(7416002)(26005)(956004)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?REFtdUVsNTJyZExrbGFuZVRsUzdIc1gxSi9mdE1mRXdmTDJ4YjQxUUdKWkRY?= =?utf-8?B?WUxhbFNVVVZ0QnIvTEZ2cHhXWVlOR25JZXorSzFXaWp3YVovbkQwYnJVdzl6?= =?utf-8?B?U0xGQjA5cTgwTzJQS1dTNnNCSEIveW52Q3FOU0k1NUhQQ1k4WmFJK3RtSk1H?= =?utf-8?B?YlFpb1ZpNnAzRng0SnhsbXAzMFBTa3ZEbjF3eHh1cmUxSDBhZzVhaUhPc0pV?= =?utf-8?B?bUY4NTB4RG1ud1ZLbUtjZStlbkw2Q2ZmSEVyMnJ5TFAxeWpqMkx5NktOdnVD?= =?utf-8?B?RllmUnMySGdJczFQZ0Jsa0tRWDBFMHNWZzZpVTlzU1hlenlUSFRPOWJUR3BT?= =?utf-8?B?VzBsek5rRXVXNFU5bU95bitxb2JtS0l0aGRHU0NSK2RINlZEUmVTYStOT0l4?= =?utf-8?B?QVl0UWxDbXdsbFJsUStJa0xlSTlZWmNqTFhpZHlJR2xaVHhQL3kvNkhyUG56?= =?utf-8?B?Y2ZZNkRLc2tOcjVRclBGa0svUU1kZWdlTXNoalptQkJWUnA3WlVHSDVRaGY5?= =?utf-8?B?OFpXaGNGZkc1U3l4aWxKTXovbGkwMUlCUUk2bmVZRng3RCtpQXVHUmVDenV1?= =?utf-8?B?d3M0Q0JMNlZoV3V4SWtTZlg0ZHFPcXZwSDJOOEJDMmFuMERjMDNzNTZGUWt3?= =?utf-8?B?SjZhTEo3NC92N3NpRVBCTURkMFhaVDNhWEJuRVVCeVZZN0U5cEd3cVJ1WnVR?= =?utf-8?B?M2Z3d1Vra0RtdEdta01vNFR3WFk5Z21vZjMxRDFnMUx6bFRreUFUUDZpbEps?= =?utf-8?B?OGx5dWtlb0liYVc3b0NITWxjcTIzNTE1TGRKeGlnZEI4TTB4ekNlYjQ3eDlm?= =?utf-8?B?TWpndUdibTBLVDAwUTFHd2paN2I5d3oyOTIra3lYakJ4aDd6NVdnMm5VTkhT?= =?utf-8?B?d3hCRk9yRlY3djRpZ1p5UWJLcXQyZk5JMGxPcU9HWHA3Mk9OWHVuYXgvL0ox?= =?utf-8?B?cFpFVXAyTmxzNUYvSEh2RnErM0NFa3RLRXJsYzhHUE15QkRCV3dJU1VZZ01v?= =?utf-8?B?T0ZZc041MUlWeHNQUTdaTXkvR25UTFJOOFFwY0k4c3VqeERUMWNOQU4rdk8y?= =?utf-8?B?a0pxYkszMXpYMTcvVHlSdlJmRDFZbU9lVUNxSkxPZmdoaHZXRDlrckNCeE5N?= =?utf-8?B?VHRqQXh1ZXNlYW95ZmpkR2hRRXNWRFV5TGRxaHEyc3loYVNTV2FNcTNFejBr?= =?utf-8?B?bzByM09VV3V4cWFtOWM4eWM5ZHQwQXR5R0U5TVp6MWQrTTc3U2RGcklNU21q?= =?utf-8?B?UUdsRWRobGxMekRWajhIOC9FcW95V1RQRHNOMDB5MmtUdWxiSXIwRnByY3dE?= =?utf-8?B?NGVTUHZUYVpXaVd6Nzg4RUEzNENYcmkwNmxHak00ZXBQelVHMjRXWncxYkMz?= =?utf-8?B?TUg0N2NjS243QWdaUHNHNFJVQkNtOXEwOUlxQWtOYkVrdnozaUIvNUsxZER4?= =?utf-8?B?ZlA2djlsTjBydnlxN1U4VEE4N2Q1NzJsZVBRZWdnQkV6SSsvQjR2R0ZHclk4?= =?utf-8?B?RTh5MGVhNG1GMkFKelg2MW1SQVROc1lxekxINktGZ2VJVDI0OEJwR2o1MHV3?= =?utf-8?B?UlByWFREcStDVkFXeExQbzR6eE9ZRmp3ZWdLaEhVb0NTWU5ZWkZkNTBDMTJQ?= =?utf-8?B?RkVKR0syQmNwL0t0SGNTV1VaZFNJMWZRZk8xOERjTFRkU001VUNUdGxtWFB2?= =?utf-8?B?bklmaUdOSTgrb1NYa2R4d1B4a05ZTFBUc3lHZ2tTSXpDN0poMjVjbXkwS0Uz?= =?utf-8?Q?Wy9p8dzo19OhiWxlahAWAIQJ6ojl71J2m7D77fx?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f0ae716-58c5-41be-a0a7-08d97ede9feb X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2021 22:08:08.2685 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xBVjniNHrou/i79zmny8Zqhh8lCY3JDbsXW6SHlzQtFfe0aBrayVQ5F2ytsj5Af1ZVeP5S4CIFjdwuWclpmdYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR10MB2663 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10116 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 spamscore=0 adultscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230000 definitions=main-2109230128 X-Proofpoint-ORIG-GUID: t14OQGncLn7-1c8oGMlNHi9CbkHvcziy X-Proofpoint-GUID: t14OQGncLn7-1c8oGMlNHi9CbkHvcziy X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: F0D557001A24 X-Stat-Signature: 798jkwws94johpaoqd51jq5wqm4fx8dp Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=medY5x3v; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=LR8m4uKM; spf=none (imf02.hostedemail.com: domain of mike.kravetz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-HE-Tag: 1632434895-739966 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: On 9/23/21 2:24 PM, Andrew Morton wrote: > On Thu, 23 Sep 2021 10:53:44 -0700 Mike Kravetz wrote: > >> Two new sysfs files are added to demote hugtlb pages. These files are >> both per-hugetlb page size and per node. Files are: >> demote_size - The size in Kb that pages are demoted to. (read-write) >> demote - The number of huge pages to demote. (write-only) >> >> By default, demote_size is the next smallest huge page size. Valid huge >> page sizes less than huge page size may be written to this file. When >> huge pages are demoted, they are demoted to this size. >> >> Writing a value to demote will result in an attempt to demote that >> number of hugetlb pages to an appropriate number of demote_size pages. >> >> NOTE: Demote interfaces are only provided for huge page sizes if there >> is a smaller target demote huge page size. For example, on x86 1GB huge >> pages will have demote interfaces. 2MB huge pages will not have demote >> interfaces. >> >> This patch does not provide full demote functionality. It only provides >> the sysfs interfaces. >> >> It also provides documentation for the new interfaces. >> >> ... >> >> +static ssize_t demote_store(struct kobject *kobj, >> + struct kobj_attribute *attr, const char *buf, size_t len) >> +{ >> + unsigned long nr_demote; >> + unsigned long nr_available; >> + nodemask_t nodes_allowed, *n_mask; >> + struct hstate *h; >> + int err; >> + int nid; >> + >> + err = kstrtoul(buf, 10, &nr_demote); >> + if (err) >> + return err; >> + h = kobj_to_hstate(kobj, &nid); >> + >> + /* Synchronize with other sysfs operations modifying huge pages */ >> + mutex_lock(&h->resize_lock); >> + >> + spin_lock_irq(&hugetlb_lock); >> + if (nid != NUMA_NO_NODE) { >> + nr_available = h->free_huge_pages_node[nid]; >> + init_nodemask_of_node(&nodes_allowed, nid); >> + n_mask = &nodes_allowed; >> + } else { >> + nr_available = h->free_huge_pages; >> + n_mask = &node_states[N_MEMORY]; >> + } >> + nr_available -= h->resv_huge_pages; >> + if (nr_available <= 0) >> + goto out; >> + nr_demote = min(nr_available, nr_demote); >> + >> + while (nr_demote) { >> + if (!demote_pool_huge_page(h, n_mask)) >> + break; >> + >> + /* >> + * We may have dropped the lock in the routines to >> + * demote/free a page. Recompute nr_demote as counts could >> + * have changed and we want to make sure we do not demote >> + * a reserved huge page. >> + */ > > This comment doesn't become true until patch #4, and is a bit confusing > in patch #1. Also, saying "the lock" is far less helpful than saying > "hugetlb_lock"! Right. That is the result of slicing and dicing working code to create individual patches. Sorry. I will correct. The comment is also not 100% accurate. demote_pool_huge_page will always drop hugetlb_lock except in the quick error case which is not really interesting. This helps answer your next question. > > >> + nr_demote--; >> + if (nid != NUMA_NO_NODE) >> + nr_available = h->free_huge_pages_node[nid]; >> + else >> + nr_available = h->free_huge_pages; >> + nr_available -= h->resv_huge_pages; >> + if (nr_available <= 0) >> + nr_demote = 0; >> + else >> + nr_demote = min(nr_available, nr_demote); >> + } >> + >> +out: >> + spin_unlock_irq(&hugetlb_lock); > > How long can we spend with IRQs disabled here (after patch #4!)? Not very long. We will drop the lock on page demote. This is because we need to potentially allocate vmemmap pages. We will actually go through quite a few acquire/drop lock cycles for each demoted page. Something like: dequeue page to be demoted drop lock potentially allocate vmemmap pages for each page of demoted size prep page acquire lock enqueue page to new pool drop lock reacquire lock This is 'no worse' than the lock cycling that happens with existing pool adjustment mechanisms such as "echo > nr_hugepages". The updated comment will point out that there is little need to worry about lock hold/irq disable time. -- Mike Kravetz >> + mutex_unlock(&h->resize_lock); >> + >> + return len; >> +} >> +HSTATE_ATTR_WO(demote); >> + >