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 46879C0015E for ; Wed, 19 Jul 2023 02:14:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DB5ED280024; Tue, 18 Jul 2023 22:14:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D66318D0012; Tue, 18 Jul 2023 22:14:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE010280024; Tue, 18 Jul 2023 22:14:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id ADEF58D0012 for ; Tue, 18 Jul 2023 22:14:49 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7E5CEB1005 for ; Wed, 19 Jul 2023 02:14:49 +0000 (UTC) X-FDA: 81026743098.14.AFBDC96 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2058.outbound.protection.outlook.com [40.107.212.58]) by imf23.hostedemail.com (Postfix) with ESMTP id CB91514000B for ; Wed, 19 Jul 2023 02:14:45 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=pjaRx69y; spf=pass (imf23.hostedemail.com: domain of apopple@nvidia.com designates 40.107.212.58 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689732885; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Vcfkrh3V45XeZetbhyXX85uRXsE3/idF7RAh9LdaU3Y=; b=RInscMAlAIlz+nDoBD/SQvaEcf0uCmNgaWTyQ5uR2Ok2Nggfi0YOwBQLatlr0/4ZMrK3c+ NxuAFr4gV23LurbLfcIwyHW56LW1BVzKYiEkVW2jBnyFb1LuF48cfFP1fe7sE20oeTOdXy jzYWX0sSNtgxGz4loOeZCMT2SXJoOB0= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1689732885; a=rsa-sha256; cv=pass; b=CNeTkJKU0xyUZg2p4vzczHT7XElT7k7Lh9YBYUlbFZSidnhXTfZLMYm0DUokvSM6mtFjnu +aPHXm97ktgDOqgYmcWGDFy6mHLHQ7ecspFbP76MSthet24478SSqjJ2ol+6ruBZm6EH7o 9XTPtD8LPNgVynbMzlwzCjUeyEcNnyc= ARC-Authentication-Results: i=2; imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=pjaRx69y; spf=pass (imf23.hostedemail.com: domain of apopple@nvidia.com designates 40.107.212.58 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kB0QwBPjFBwr23JtmqpgdyCM6PToV06l2Qv28nGRtzXCQuLuLCUmbnxWh0GStWdxV+Bo09lggkAz55rbpeXbh7R/rTUxXwiDPRWJE3h5n+nx3kbWwIqyZbL+B9TwGkUSJ2D35rLZ79mM912POKeJefxWA7BNiwKHsCdxu1mOR8weSQ0yT0hOrQXsPaaEOc8vFOsrroyEImFamyglMJ0lf7mn4aULGEC64r/7JmIgzaCKLTMOJy8zv8BF6Xex2SLjIjplFg9sAYyv/SNZI3ZiajEWLyM09HUDYKzvdJ0XANOh13VlhuyB5cD4lVGQdcxDG8tpNpjdh+g1EOexAVQL0A== 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=Vcfkrh3V45XeZetbhyXX85uRXsE3/idF7RAh9LdaU3Y=; b=TwcBXdauafrO08o91YLWP7TY9bVBHgcSfgQWc/tD2RLlWhtXspi1e+cr1K4nERKsspQvLsX0j1+Wku64fnbaxdXpG8k14ZwClXF5WaTGGo23Jsl4gHNcXOefFptD8itHceliJ3tSz5MiIDQJEWHr3FvBPhh/uLfRMTPGhM/cLnp++3XHYIGu1nqixYaTMfcaADoTaFBilk0DsK3YXE4umArJYm1dbtwpwrEce3tZJTq9AhXlY48wW4xRq8BuUJ/guplqUjfIeYklOiUjkH05yo+pEf/kkxjUx96UaJsFT67Slj84py+/hdB/ECrJ/TjcH2Ch6AbxCjTGXtfwcMV6Bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vcfkrh3V45XeZetbhyXX85uRXsE3/idF7RAh9LdaU3Y=; b=pjaRx69yXeY0Mgjy4WeCwQZ4YXWGHvVKcsY09V3fLYb1Wev4h2pmvt0HBhuMDb8MT35BT2CJI5qFs0m7TSNTzridnMPKDCSUcmQu9fO8CMEIIP5GNK57DCW/x9GJaAJ9lfUC/SzWS1W8gpeTi3jR37hmba2QqetRZnuw/1/xmWklEJOUnCJ4TGoIbHv+ZBDRHcR13n74yRLUPoeJPojEQJKjLt2XcVSw+ap6YCs68baOYVTAK14wCm+Eq51+z6kTZqF0XP7+Fe6O0jeE743wtBlTRA4X3PIWdgLyYUsyMQ9y0238zk5Sc82MsQyhxo+UoOkajPSuXa7FjjLzxVxbMQ== Received: from BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) by LV8PR12MB9420.namprd12.prod.outlook.com (2603:10b6:408:200::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.32; Wed, 19 Jul 2023 02:14:43 +0000 Received: from BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::cd5e:7e33:c2c9:fb74]) by BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::cd5e:7e33:c2c9:fb74%7]) with mapi id 15.20.6588.031; Wed, 19 Jul 2023 02:14:41 +0000 References: <20230718082858.1570809-1-vivek.kasireddy@intel.com> <20230718082858.1570809-2-vivek.kasireddy@intel.com> User-agent: mu4e 1.8.13; emacs 28.2 From: Alistair Popple To: Vivek Kasireddy Cc: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, David Hildenbrand , Mike Kravetz , Hugh Dickins , Peter Xu , Jason Gunthorpe , Gerd Hoffmann , Dongwon Kim , Junxiao Chang Subject: Re: [RFC v1 1/3] mm/mmu_notifier: Add a new notifier for mapping updates (new pages) Date: Wed, 19 Jul 2023 12:08:53 +1000 In-reply-to: <20230718082858.1570809-2-vivek.kasireddy@intel.com> Message-ID: <87jzuwlkae.fsf@nvdebian.thelocal> Content-Type: text/plain X-ClientProxiedBy: SY2PR01CA0015.ausprd01.prod.outlook.com (2603:10c6:1:14::27) To BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR12MB3176:EE_|LV8PR12MB9420:EE_ X-MS-Office365-Filtering-Correlation-Id: d9ebdee7-581a-4ca3-4e8b-08db87fde860 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TU0XV3t0IX9ib6MBbz1OOF8q2rH/P16ly4Omi6MWgTaM2nIEsAOI5hHezcP8w2HA42cPezBfjSKGuGZq5wqy7yV1op5EjTvZnjznKHvNRCQLpSMadwrgDmFFrIRDuXf9R3z2E0F0A6SZ+DrDjkNFQ0qm9pkPRcLN7nbxUdX1j1Frg4uSDlSqD5SQMN2kb9iNM+BOj1MK1PUtQAC1yAp/6F1WeElIImPjF7BSDbKSdJIKHLQT7/D3FobvlTNFEbgFv+yLpWa0LzSzZpWUy/iU8mmlRE89M8RZ/vxzKyrB7bA8AT78itXW1ne7rFNKAm/2Za4ZqY1gbqFMBYdti51/UqEqPgSij37QgzrrJ25Z1BJK1pZZI99SaZTTQMpOKpx1qCuFngSTm9YYV5jsnB+AVCAMNClEPA6mXYbNwCYcF2fSnUlHXIKsln7tlh2FYl/HLIQYqN4O1gbsJwrc408C415V6cHDmo9JbYaYP6XCTReDF945KaSjFQ/z5zCrwJsTzK90BCDM81aqMNj5HgO2Y7BKw7SGxF8ebs3AxhZzOl3c2/XRk14dgsYTbFCq6RPE X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR12MB3176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(38100700002)(6666004)(54906003)(6486002)(478600001)(6506007)(83380400001)(86362001)(15650500001)(2906002)(26005)(186003)(6512007)(9686003)(316002)(6916009)(66556008)(66476007)(41300700001)(4326008)(8936002)(8676002)(5660300002)(7416002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sS+heCsgalhaZev/K+Hv2nvV4PbSyE5zuoJl6yEU65ToEekKjhEE7FviuUpb?= =?us-ascii?Q?1MNnck638lteTDmzWnUhCY32vIl3B7avxCSRus+vr7OEL4GvElccmsoNl3n4?= =?us-ascii?Q?ZqfDG2Fvh0/exS9OKcgUnbwlKD9DraWCr3SiePdkMt7JLrDBi+tynEZOPVGp?= =?us-ascii?Q?OTm8KusFxWA7L5zUhch1ZzJdJqnOXJM1sUrtd5epi9Os0HiVhwz2cTBeyXjs?= =?us-ascii?Q?dw39j2mVWcWNZgVPO3AbPP7uYJBX8+7QcdGdrwViI34qryrxJE1GN1BYU7+l?= =?us-ascii?Q?gfzTKAWTPRqMM3dGWy/fi6KwbfA8nQo+sMQ8fN3J7gLcinjs/7B12qKwzsGB?= =?us-ascii?Q?cW6isFzMrSN1+kzveBY48l9VdiEqJk8mlvVseD+DyOBzyE2DKq4IjOlXm/xI?= =?us-ascii?Q?w4dhoKqk+IkxNCPareo71vUwf5nLg4fi+cF5dF7D0qBXo9LYxg6wostnn59s?= =?us-ascii?Q?oC/XAtTC/tdM52C8w1mAHD3K0uboaobxVNIpgeAzQDQbtbiLCuq4fMD8S05A?= =?us-ascii?Q?e4JUS0Ou0TNX5eWah4ILzu/2SnY0N/cdTqtjacsWNuEfnG0UrJyy7lcvQW7v?= =?us-ascii?Q?z/Yvjc9Nu8JQU+NttgEUUU57o4KrhVxpfBjWpbhlh0bEEKHEfx8mh4qAY/cH?= =?us-ascii?Q?SbPXIlzTacLMNyKPtKV8RT4/3kTZUeMcboyavXxaibTMdNm5+FSNr17hrcHi?= =?us-ascii?Q?wip/RTNpc5NH/cL3KEIUKtprYNmo1E0ERqRkD7xbc81wRELvnguzlm9gZss3?= =?us-ascii?Q?lPAt/5oWssIshpu2hZ7aAxgJIvf55AG3BPmvHjjZd4vAkaaK+K9azy73G/DZ?= =?us-ascii?Q?nKmkXmc/lnrlZf+8Z0qzuvuL2WxWR/2f+9g8XszIiJj1C+WDClNppNrgoYUl?= =?us-ascii?Q?5yxkiYcrw7qBj7GPmk5VCFR0v/0oHoTFnGZ4SEoXJ6tjS6kKh0Nbi+Ts+y1D?= =?us-ascii?Q?FXm0DUOducMFuzcHGxXHF7avz0nwJmpEMHQPgUQYoUzjV9XRVm0s/kTgpny7?= =?us-ascii?Q?cc2Y+z0boQl0POhYG/8im2RXkaIsZlTWEQVgnGOnlox/LsDsr35aiju70p8w?= =?us-ascii?Q?n4NUhX7XoGKnlkYeZsyKIdhDOha2KGQcxthaHmoDlWj4OEneg5tKNwwrNqes?= =?us-ascii?Q?ws/RVNsmvB0z4eJwshtmtHcyALjf57NfESrb1q0EFWxi8upMbcXM5rSNs9Fw?= =?us-ascii?Q?bA/f5iH20J78Bl7xsp6pPv6uuh/QzRSBDjBjeMwnQLie51Ga+jshxDx/6mdO?= =?us-ascii?Q?0Mjz1mr0OsAVa2Ru2v4cIYhH17u1SqUBnRX4E2jIP5J+yBH4qTNOTn0rcFXu?= =?us-ascii?Q?9tL5mL5mXmclfeA15zH7K8gbpQIY89SoS6BkF7B+d/6Ja5NI+176zKipohve?= =?us-ascii?Q?fhL5jez8+rg5jPBzeT8XKnBwBB8H83wDjkBMVxGyr4TKTKlVUUdB7SUYuPG6?= =?us-ascii?Q?RzHwF6DqamJMeTJI9pHk3mm480TRL/MtFZNTDbud9OBLSn0FUmnkFaZDdsHZ?= =?us-ascii?Q?m/xXpFJQDOtoIG+X5Nj+NEWmVl+QN3Ln4UbtQTHk1oSo2M/s13yF432SpRmU?= =?us-ascii?Q?8IDNZxqNVPQDUpXt9kdWl3+U2JDFJzs+x4wrlijo?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9ebdee7-581a-4ca3-4e8b-08db87fde860 X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB3176.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2023 02:14:40.0962 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Mnv/58OEK5hZKi5rdaHV1Oz6nTqA2HrndWp7TXas0puf2sDDYBPnrNep0ziZ0NpvH5i1I/vEkgcPdNml8vLvPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9420 X-Rspamd-Queue-Id: CB91514000B X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: zsqeszpnp456onnr5rw17yjj751j3oo8 X-HE-Tag: 1689732885-930474 X-HE-Meta: U2FsdGVkX1/HYw1WAlalvvpcHec/9rBI/8N8RlahBdlFpZgVJX06nICrDoEwxJsGWET5fMK3uXUlUjqPMggnx4rGqrYmQ7qw7ZPCD/cyFIz2e+9QSc5FpT+CrbOErxV8GLNl5sD+IeY404BjHb3p61euURwWkwFy3JBPcf87lqVvXXRPfRvGGCKV4qkfJIpe5ZJJlnmjuh9he9iBVtMNVQWPRzr5g1MZDeI7DLD9KTVL9o2Sq1EGvStWwkuYgmUjfWj/CTTNRkiW43vV+bTf7MmPXw8O7cQY5QlEgvBJP5G7tcxZhYW5aNc5/RGCjzJiEI+6Qjlo5a22Rrwg9Z1XV0jt4E451nXMnwoDINkWrBGJk1ofZCe1/SOJr03Q5//pVLMwLjhb60cdmjsig1awREYyhMeDzIe1pGk0q7O0tp3QfhjmW94wwzotFhzdR8wc5+XJiTeal1J4GDwZTXc/vMJ9CsKnhFXPswD7IRqUC9aM1yepRS2fcf17Efa0p04Mtf8t7WebxBqRxSJDTQZ1TUT4gPGXI3c9HQ6daFvOnxGJZDTvoJ3ImMrvG39RCECPKRm3ke8Kw+/h/y5Shl488uO76crRHjsPPjLdGz8A9NmgoUIsanJ0oJmAeFRm9Fi4yfY3ZcPht9LKIHo5zmKiJMfI7wj4fiROsJt/d0+uSXvxRP9zn7zmE0U9ipvawIQ3mBVSvsB+8/Mu3yQtyeI+YX0mLUsjIkZQGlP8QUeCHEP5GxQfpGa2UG9gJ8Mic4hFXlnxm9lZp7FD9r4B5ZiifOTb21wlmDlgSRPf+xBEISlzj/jg+3TlMBRtkEa8aXh1iaGnwG1x/na4SYDX32/5YV928lfBA0mw5p0tttXndIkiVP1Ar1GCCCIkz5Zy9YP/m3yNGAXnkm8OZyvck/b30XhiEVtvdiHt9Io56ELCIhZrrpuDSmDthqy3Fl6fetacBbTrBUsuwkBvIY0Yi+x WG8kwo9G XXVz1KGRjgOpREJ4kx8Q+wKL0IWmsVDJeQuzfwPD8VjSfxzj27rhEP3Oo4gYCAnFTzx+KYDzEsfxK8nj88CCWt9cXSdCewF0uVxaHbjkAxbHcBS9GKwMAvutQvXvJVfknri2pwQPX9q5FJPcj+TDFW1xoL0TbYEUAB2PbIPwfekeGUcioSs/Txlq0mAeQYJ8POgPEibtEK1k5i71LcolAD5K4ta9uqZ7TVj9x 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: Vivek Kasireddy writes: > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 64a3239b6407..1f2f0209101a 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -6096,8 +6096,12 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, > * hugetlb_no_page will drop vma lock and hugetlb fault > * mutex internally, which make us return immediately. > */ > - return hugetlb_no_page(mm, vma, mapping, idx, address, ptep, > + ret = hugetlb_no_page(mm, vma, mapping, idx, address, ptep, > entry, flags); > + if (!ret) > + mmu_notifier_update_mapping(vma->vm_mm, address, > + pte_pfn(*ptep)); The next patch ends up calling pfn_to_page() on the result of pte_pfn(*ptep). I don't think that's safe because couldn't the PTE have already changed and/or the new page have been freed? > + return ret; > > ret = 0; > > @@ -6223,6 +6227,9 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, > */ > if (need_wait_lock) > folio_wait_locked(folio); > + if (!ret) > + mmu_notifier_update_mapping(vma->vm_mm, address, > + pte_pfn(*ptep)); > return ret; > } > > diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c > index 50c0dde1354f..6421405334b9 100644 > --- a/mm/mmu_notifier.c > +++ b/mm/mmu_notifier.c > @@ -441,6 +441,23 @@ void __mmu_notifier_change_pte(struct mm_struct *mm, unsigned long address, > srcu_read_unlock(&srcu, id); > } > > +void __mmu_notifier_update_mapping(struct mm_struct *mm, unsigned long address, > + unsigned long pfn) > +{ > + struct mmu_notifier *subscription; > + int id; > + > + id = srcu_read_lock(&srcu); > + hlist_for_each_entry_rcu(subscription, > + &mm->notifier_subscriptions->list, hlist, > + srcu_read_lock_held(&srcu)) { > + if (subscription->ops->update_mapping) > + subscription->ops->update_mapping(subscription, mm, > + address, pfn); > + } > + srcu_read_unlock(&srcu, id); > +} > + > static int mn_itree_invalidate(struct mmu_notifier_subscriptions *subscriptions, > const struct mmu_notifier_range *range) > { > diff --git a/mm/shmem.c b/mm/shmem.c > index 2f2e0e618072..e59eb5fafadb 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -77,6 +77,7 @@ static struct vfsmount *shm_mnt; > #include > #include > #include > +#include > #include > > #include > @@ -2164,8 +2165,12 @@ static vm_fault_t shmem_fault(struct vm_fault *vmf) > gfp, vma, vmf, &ret); > if (err) > return vmf_error(err); > - if (folio) > + if (folio) { > vmf->page = folio_file_page(folio, vmf->pgoff); > + if (ret == VM_FAULT_LOCKED) > + mmu_notifier_update_mapping(vma->vm_mm, vmf->address, > + page_to_pfn(vmf->page)); > + } > return ret; > }