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 A52BFC433FE for ; Thu, 10 Nov 2022 21:48:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 095466B0074; Thu, 10 Nov 2022 16:48:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0449E6B0075; Thu, 10 Nov 2022 16:48:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DFFC38E0001; Thu, 10 Nov 2022 16:48:22 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CBA5B6B0074 for ; Thu, 10 Nov 2022 16:48:22 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 9C6AA1C6A37 for ; Thu, 10 Nov 2022 21:48:22 +0000 (UTC) X-FDA: 80118871644.24.54284E9 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf04.hostedemail.com (Postfix) with ESMTP id 195604000B for ; Thu, 10 Nov 2022 21:48:21 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AALNAsA016673; Thu, 10 Nov 2022 21:48:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : content-type : content-transfer-encoding : in-reply-to : mime-version; s=corp-2022-7-12; bh=3EgRGDcmCoqGPwIBAL592LVO56lyJUVy79wdvS4VM/4=; b=nUtJfP5R/IFoRWoF+iTEly0VKFTolRl3Rbkyypq1TYQw0UgR1qsBRo4ilhbO64rriTuK jKj/MXwSA+y0N0XhjNzehHQS9eQYyEUbUf+PVqN1XkCQLW8HkqT21uZVHAo0CcK0gkS3 0lOqNpmcLQoccxfLvA2BJVYxh/VbKswqRijOgl6mCMn3Jk7JQhCYDu269iToUbeVV9Zi xSlirs+JLVh5p5voUtOc8BrBW13J6PZBPUG5h3gmLc8qfh6qogc8pfxvkS/7F8ltIVvG bbtDlCpb1MlFSNvDGo3N3Fy3wdh73h13okX8CqhCMmXTYUNwXEWQYZzW4oPsHl7ZD7+J Qw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks95nr2y6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Nov 2022 21:48:14 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKcnWQ023222; Thu, 10 Nov 2022 21:48:11 GMT Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2041.outbound.protection.outlook.com [104.47.51.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcysg5nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Nov 2022 21:48:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EeJRl5WiDrae0mj6we4RDkK+jvoGwpwhwNn6v+8MTFvMRgov2KmR1aMdBwdRVArV+zXkyKwjH8VfEcqXdnGpdDNbavA9ApyYRTFsup0A56qcRrNfjC2Jh+m4gwkDunMAFsT9Zpd/SMtJ0xDiEt2bBqHut4SHJGUWWoyZVRQF7TQvqdZkD5DQ3BCOS/n/juU/Aa2Kmlxw1rw0oz0YFWI1UuzX9ytItOFyy9k8sv3P2NhlgJ6gmUhssAlYEHd+5lR0U2WfdsubU3uewJIN6jXKZFhSKOmzEPv5XYebUOqnprbhQeRJUPp4U99pHb3eLP6Hc0tj9mUcXfClrheuA8AXUQ== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3EgRGDcmCoqGPwIBAL592LVO56lyJUVy79wdvS4VM/4=; b=iZb4HYKeBS4yKWpz9IAnEwdlvAXz8t3a5uehNezDhDMutuYFI7AXX+73sBEa3s+j5Vk5HYjuCdVIhjjqU2i6DOx2DCYDg4ZqE6DdQiGTpCziwacsHtIkkvzRUetXxWuxpuDCDwQFpFl1FMJ+X1n+9vxhXdwAtHqOIT6JsNuC/sIg83jt+vWQjNVeNL48tPeB1G+RpP2BLFXCZRzncG78evk9doKrLHxDVTRvY5baBDARryP38xUe3TVnpRzqOavtOAwayd6FZaXlM3ZyXDPwYsNCRFB0RWPIcFwgsAn93hguKufHuOr4OLMaDVnh9xovTepAc09equX8t+uhkmNXVQ== 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=3EgRGDcmCoqGPwIBAL592LVO56lyJUVy79wdvS4VM/4=; b=BeI0Wuxqfje/2GnV923Tm03Bo+whohf7kKpzUMM+U2wtrl78auzLy5xLrvdLK6T9w4bdSQB0CWRCTjs2P2MFausdDZxKuU/dh6VsPmHCR4q12R84qEcrVuhh4drLnbnAZ+Aw5sKm+FsPonEG5bHenh2NDYRJ316iAL/zLTaom5I= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by SA2PR10MB4809.namprd10.prod.outlook.com (2603:10b6:806:113::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:48:09 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::8d67:8c42:d124:3721]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::8d67:8c42:d124:3721%4]) with mapi id 15.20.5813.012; Thu, 10 Nov 2022 21:48:09 +0000 Date: Thu, 10 Nov 2022 13:48:06 -0800 From: Mike Kravetz To: Nadav Amit Cc: Linux-MM , kernel list , Naoya Horiguchi , David Hildenbrand , Axel Rasmussen , Mina Almasry , Peter Xu , Rik van Riel , Vlastimil Babka , Matthew Wilcox , Andrew Morton , Wei Chen , stable@vger.kernel.org Subject: Re: [PATCH v8 1/2] hugetlb: don't delete vma_lock in hugetlb MADV_DONTNEED processing Message-ID: References: <20221108011910.350887-1-mike.kravetz@oracle.com> <20221108011910.350887-2-mike.kravetz@oracle.com> <9BB0EA0C-6E7C-462B-8374-5BFEC34E8415@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <9BB0EA0C-6E7C-462B-8374-5BFEC34E8415@gmail.com> X-ClientProxiedBy: MW4PR02CA0021.namprd02.prod.outlook.com (2603:10b6:303:16d::31) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4196:EE_|SA2PR10MB4809:EE_ X-MS-Office365-Filtering-Correlation-Id: cd050d71-82e3-4bff-1c65-08dac3654224 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8OGy20fBIpqAjvCWlf/5E/owOySj3lCk2inG652hct04hCXDII+b46MwuJioTqaf+XpnlTdGRXGI/xiFZxjjUS0RxKorbHgAcHD8DRnagJYxO+OLKMhm8lxSM+FCiYF4y6QBFfjG9waddxHoUa+UeCCX3C2/T0thIfw0nRVL9VS8ck2W7KiQKXH3faU0n6OukAqZipBkwGifoLsibpFa3QV4R3wIn0MhPjVJvfftR5RCnP9DFcxoajAAAQ35hr8vLnTPXX+7YjSQOXIIhI1CqS9Fo4RTz8mhsEXs310QNxk37B0U/W3dTr4oRhQ363qan9TdFoOmq77EKx+KkVlFj17553mWKrrus4zocdvJq7LAd/JI/yu3b1KqO4BAs3MS3+QZw2DyriXLfaOvTQha5+ejPTWp1KoGSZXe6YzqlZUQ00QSzlgm7zQlwKKm9HYNp3jRyL2p8kClGMrEuBClyc/LFqyiaOzLqDwvOtoADkjQuCTCTIfZT7azzR7n19hdMp3T13aqE6K3DIaHtlcuvCqu1h8b4Ai7YgHGETrsHPl1DT8mkNUgmnHIcqVTiNdknFAEUtQf8x8+w7ZCDBiKNJDDa/lwKpLt22HsX0A71hLmQycKgWdclJ2NbdQwv6OcEcR61x7WGbmzRaS5QFIpfaNBP74zHvaAc6GZFvD7lZJL5fzjjMhmmI6u93j9/7mWqGmRVfrtSdKOG+Hfk/khTg== 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:(13230022)(7916004)(366004)(396003)(39860400002)(346002)(376002)(136003)(451199015)(53546011)(26005)(9686003)(6512007)(33716001)(38100700002)(8936002)(83380400001)(186003)(44832011)(6506007)(2906002)(41300700001)(66476007)(7416002)(5660300002)(8676002)(6916009)(66946007)(6666004)(66556008)(4326008)(478600001)(54906003)(316002)(86362001)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NWxUbmlKMTNlMDMyMnE4Y0EvWDRYczhtRFhTYjFURUVFaFVhL1lPSDNUUWgv?= =?utf-8?B?ZTFBL28wREJZd09oRzdDZ3RXTkp1aW9GMFQ3R0E3aE4yQUppUGI0RXhrQmhi?= =?utf-8?B?Z1l4NjA2NWJOWEZmVWZjZzBHMncyTnVXb3o1cmtNTm9PT2pKZm94SjRNYWpR?= =?utf-8?B?MjQzZzUzbFV6bXNhdzlTcXhnWmhHVmRuNXR0Z1UxSFRXcVRuUlowaEhVNVRJ?= =?utf-8?B?VURiR1JYWE9VSTRYczRGS3V5bzZnSUMwVVUrNFJwSnYwVzQ3U1dyYjhXRndD?= =?utf-8?B?b3N1VDl6MVlsby9mSjJyTVZQU0dyeCt4dGhxT0IreGlrM3lucnRzZk9QYUM3?= =?utf-8?B?MG9SenJPSXB6YXBUQVp4WVFPbS92MHp3K3pmTTVSRllmOWFWbFZNQ0hHcklZ?= =?utf-8?B?RUpYM0VhTmNnV0lIK1NtYXVJR3BISmQ3NDQvMjhpTHVoNGdTdG1EdG5ZVWgr?= =?utf-8?B?K2hmc1VSVnk4UnJpdnJqTzcrK1FoKzdBTTZ3NGtTMGp2Nks2KzlnVXVDdGFo?= =?utf-8?B?ZzVKWW0rUnhia21oZzRaZllUcVNwUklVdU5vNnNnRUFNTXNvY0I3U3RUazdq?= =?utf-8?B?MUtmOWg2V2t3aExvRDdOWCtYY0NRRFFEakRWOGo5cjFiNGt0QW9DZUJOYXZX?= =?utf-8?B?WUlPOGkvRjk2VVZta29saU8yYUlBbUt1SlUrVk1ZeWtBdndRWkprMExxdU9G?= =?utf-8?B?STlWWHB0N0F3R3lNKzhUVXJzN0pmRnpmcEgxZmdxN3BoSlR5Y25LSm9qRThz?= =?utf-8?B?UE9Za0NpZUhLREFPOHdDeGV6OGhBYjFjeUk1ci9kTGlKWlh0bWlYTVhrSjBG?= =?utf-8?B?ZHlNc24wUzU5WHN1OSt0d1JGT3FJVVlIMTFXOHN0cGV2MllHeitMa3puQ0Fl?= =?utf-8?B?TEZYcUVaaXJ3MFdQMDFDemNJTExtS3B5UEhOSEJyYmcwTnhkT2Q3U2tUM2tW?= =?utf-8?B?VmlVVUFLWXBwUWFMeC9Tcis3MFJha0R2a2paNkFoY3RRVUR5TUNWOU82V0tQ?= =?utf-8?B?RVAremhCSUdwS1ZHNGFPa0wvczdwRnJ4QU5ITmdMWWJkZHI5cXY1QlF5b1BF?= =?utf-8?B?ZG1NUjJVUzVHSnFROUFMK2Q4cVRaS0x2cFFDQTB1UHlHZ0FYTXo5eTlDWVhG?= =?utf-8?B?VFZnaGhpOE5DQUtIWnM5SkVxOTQrV1FkZ0FvR0NDU1VabVRvT0FIZ0ZZZ29H?= =?utf-8?B?N21pd2FPcWJVaUh3bEE5VWxYMFVpWE0zVG0xbXd0clErN1RGTmM4bXZCZE8x?= =?utf-8?B?TEhRSVNJRHJkbzkxNkRReVhSZmc0azE4dGVLWmNpSDIwU0s0NWZJVW5Ob0xu?= =?utf-8?B?VFVkQTUzQmpBS2dxSVdMNjlIZlRObnM1bGRJU2gwSjExOWwxVkVpajJxVzBO?= =?utf-8?B?QmVpdFpKaXpwK2o5cDJZeE5tVzNOMEJQeUYybDJvMGFtQ2tDY1F2am5UZ2xZ?= =?utf-8?B?ZVY2ZUdoeWhEWUZXOVprby9BZVJzTU9FOHVUUzFoejZrR3NpSlc2RjlCSk0x?= =?utf-8?B?cU02Zzk2NURPQVlLbGVnSkdRRS9xbXZDRTdKTFlLQ3NHeTA1RWxWR0JFOEdE?= =?utf-8?B?Z28zcllIUUZDQU1hMVZ6c1lscmc4UTlHQ0VkenJ0Nmwrb2E4Vll5bVE0N252?= =?utf-8?B?c2drSHJIU1hTazN0VXJKTjAzYUE5NTRmVXBGSTRmb05WUnBHNDB1ODVZcmkz?= =?utf-8?B?bVVkNVhkZGF4dUtGak82ZEFaL3E0L3VOZmw1bVJqMGR2M0ZUREo0L3BUY2tj?= =?utf-8?B?ck9xTFpuOGpqYWFpcndnN1BKbXN1a3ROR3RFOGY3VnkrcFpXeWU1SzUrbDN1?= =?utf-8?B?eDRiNEtSL2RsQTBKT3duajk4UkhFQVo1TC8vdm0wem9tUHUzYnIzUFJmWUU1?= =?utf-8?B?WUMvSGR4YzJ2M1drUDlhN3NycHBmQU94NVpidnN0YkFGQ1V6ZG11SldFOFhV?= =?utf-8?B?KzZlZVljMkdwQ2hsOFhmQ1p1MFFYYjhLWEZYZThRbXNPRXR6cm9nK3BpSE5s?= =?utf-8?B?RTFwa0VJQTdGYXNJQ3Z4dlBTZUJ2THJmMndjUVNxWmk2d3NkUXRmL010bjhw?= =?utf-8?B?VGhYQThkaGE5bXI5Q29SOXdDeG5vU2Y0YXV2YXRVRVlhRGJmSzJxZXFOSXBM?= =?utf-8?B?ZXJvUEtjazRuQmFVQVl5Z0VFalRNbzhibGtGNGhndHhEZm0xeU1nYzd3R3hK?= =?utf-8?B?UWc9PQ==?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd050d71-82e3-4bff-1c65-08dac3654224 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:48:09.7635 (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: WecISwHLIMaf3Y1iu6GI6pY65VODZY2msx/mkD5VwzFjTY1HHYcB/LumbQzTyL2J2mhxfzcDyyNNbeNZgJGUXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4809 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_14,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=962 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100153 X-Proofpoint-GUID: teNL-r0dJZhm6nuRxriVEUW2yW3sNfCi X-Proofpoint-ORIG-GUID: teNL-r0dJZhm6nuRxriVEUW2yW3sNfCi ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1668116902; a=rsa-sha256; cv=pass; b=KU4QdGL6bRD3qIym4bZ13mPHz13ZFZIWKD52tT5S4x0FwlptyX0XquA8SWBaQLSbLgPKBQ qlfaO8pMRpj2Rb4ARpXIwXyW1MaI5CZnZ8bjy7EsTVr3RlpBVJul0NTg5lIuIk7NOsUWWD kz+Aj3mgaaEfAe8zYdYiINe5kqdAYzA= ARC-Authentication-Results: i=2; imf04.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=nUtJfP5R; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=BeI0Wuxq; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf04.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668116902; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3EgRGDcmCoqGPwIBAL592LVO56lyJUVy79wdvS4VM/4=; b=5T7cqVoIvGNpEWhhB52wrREP6pBb9yfdmEb+eqvgzxHbD6p0RSF0q3sk9VZhDr/lpDg3si C6QKX52zLD0zNh+tGJpDEY/ERaP2gkJSo1sfSfy+zL6s6qnPfC/sG4NhUyni/n3v5UJUK8 VhirsPl8ux6T6VLQcINyh8nH+tGO6Eg= X-Rspamd-Queue-Id: 195604000B Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=nUtJfP5R; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=BeI0Wuxq; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf04.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com X-Rspam-User: X-Rspamd-Server: rspam01 X-Stat-Signature: diakjoh6ckef41p8f8gpq5966im1sktd X-HE-Tag: 1668116901-826233 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 11/10/22 12:59, Nadav Amit wrote: > On Nov 7, 2022, at 5:19 PM, Mike Kravetz wrote: > > > madvise(MADV_DONTNEED) ends up calling zap_page_range() to clear page > > tables associated with the address range. For hugetlb vmas, > > zap_page_range will call __unmap_hugepage_range_final. However, > > __unmap_hugepage_range_final assumes the passed vma is about to be removed > > and deletes the vma_lock to prevent pmd sharing as the vma is on the way > > out. In the case of madvise(MADV_DONTNEED) the vma remains, but the > > missing vma_lock prevents pmd sharing and could potentially lead to issues > > with truncation/fault races. > > I understand the problem in general. Please consider my feedback as partial > though. Thanks for taking a look! > > > @@ -5203,32 +5194,50 @@ void __unmap_hugepage_range_final(struct mmu_gather *tlb, > > unsigned long end, struct page *ref_page, > > zap_flags_t zap_flags) > > { > > + bool final = zap_flags & ZAP_FLAG_UNMAP; > > + > > Not sure why caching final in local variable helps. No particular reason. It can be eliminated. > > > > > void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, > > unsigned long end, struct page *ref_page, > > zap_flags_t zap_flags) > > { > > + struct mmu_notifier_range range; > > struct mmu_gather tlb; > > > > + mmu_notifier_range_init(&range, MMU_NOTIFY_UNMAP, 0, vma, vma->vm_mm, > > + start, end); > > + adjust_range_if_pmd_sharing_possible(vma, &range.start, &range.end); > > tlb_gather_mmu(&tlb, vma->vm_mm); > > + > > __unmap_hugepage_range(&tlb, vma, start, end, ref_page, zap_flags); > > Is there a reason for not using range.start and range.end? After calling adjust_range_if_pmd_sharing_possible, range.start - range.end could be much greater than the range we actually want to unmap. The range gets adjusted to account for pmd sharing if that is POSSIBLE. It does not know for sure if we will actually 'unshare a pmd'. I suppose adjust_range_if_pmd_sharing_possible could be modified to actually check if unmapping will result in unsharing, but it does not do that today. > > It is just that every inconsistency is worrying… > > > > > @@ -1734,6 +1734,9 @@ static void zap_page_range_single(struct vm_area_struct *vma, unsigned long addr > > lru_add_drain(); > > mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm, > > address, address + size); > > + if (is_vm_hugetlb_page(vma)) > > + adjust_range_if_pmd_sharing_possible(vma, &range.start, > > + &range.end); > > tlb_gather_mmu(&tlb, vma->vm_mm); > > update_hiwater_rss(vma->vm_mm); > > mmu_notifier_invalidate_range_start(&range); > > @@ -1742,6 +1745,12 @@ static void zap_page_range_single(struct vm_area_struct *vma, unsigned long addr > > tlb_finish_mmu(&tlb); > > } > > > > +void zap_vma_range(struct vm_area_struct *vma, unsigned long address, > > + unsigned long size) > > +{ > > + __zap_page_range_single(vma, address, size, NULL); > > Ugh. So zap_vma_range() would actually be emitted as a wrapper function that > only calls __zap_page_range_single() (or worse __zap_page_range_single() > which is large would be inlined), unless you use LTO. > > Another option is to declare __zap_page_range_size() in the header and move > this one to the header as inline wrapper. Ok, I will keep that in mind. However, Peter seems to prefer just exposing the current zap_page_range_single. The issue with exposing zap_page_range_single as it is today, is that we also need to expose 'struct zap_details' which currently is not visible outside mm/memory.c. -- Mike Kravetz