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 F2C99C433EF for ; Thu, 19 May 2022 18:30:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8EA746B0075; Thu, 19 May 2022 14:30:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 897876B0078; Thu, 19 May 2022 14:30:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C5366B007B; Thu, 19 May 2022 14:30:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 5E0A86B0075 for ; Thu, 19 May 2022 14:30:25 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay12.hostedemail.com (Postfix) with ESMTP id 363E9120D3C for ; Thu, 19 May 2022 18:30:25 +0000 (UTC) X-FDA: 79483332810.08.CBF3447 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf31.hostedemail.com (Postfix) with ESMTP id EA3222000E for ; Thu, 19 May 2022 18:29:54 +0000 (UTC) Received: by mail-pl1-f178.google.com with SMTP id i8so5493981plr.13 for ; Thu, 19 May 2022 11:30:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mGwVn8RHselKV0air8yMqpzaEEJKFNShOYXjybSXJNI=; b=GGS28zJ2n2buwhhkptrcMlxiv/ufYgHyGsbryhRNp3gNf94fakNVd+3CP6VO6oLiHO 4SPYQzlz8D9i7daFH1molB3QLlP8VJ/KGVCqbJdr02oaQEhcJBj2pVKDWpWDArmB1RSD CRYwCc8aQufDQCLI7pILGztuHJIzcNKBGVJWgEftXS2StQPkocMb57XlZsjqHSwS4OMd +bG6y9kcYZyWesa+NUzWt8dNKs/eco+x43uzhC2YKiCA0psA6d+JlXlW1z/QlBflv5kZ GCPSFju9p6WrOej/yIx5CFC+SUa79W/LYShld15IKoIBlf8GOQLD2qKoL7G5U6lxjhHq P+fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mGwVn8RHselKV0air8yMqpzaEEJKFNShOYXjybSXJNI=; b=3pGJyodMNqFDvp6Sy7g7X004mZLYyKj82IZKD0DGYvZTsaiZpdihhHTxymCH9WY0uL 1WVThhJPtmIhYJN7YHQYH8acWWFrffMcCnfSyiE8wcKSqSEQn+9HaSL9t2vR1h2iuAcY te8s75LNQIJ7N7wIQbWDIhsyNUAMErRPeqRDI0J2Rf9FEA3MYHERVGLOhyM6l8PqIWRJ +emWhFoxPj4ufFdSiRZtvHAoeyAxang7VK+837OnwA6h6slBGbLrYES2uM16QjrZJY52 9V/O1iAdZs57rg/yD5jq9jwP0flT486xIJTihPdqLth179cSZKCBtTIqogqRj1scP5qW fMGw== X-Gm-Message-State: AOAM532zaqatc+IOEr6nLcssnPmjsIGqd/nDs6N9XXQRTykmzbzrr572 zOWwBrFz4nJDgqCuD0XqWjI= X-Google-Smtp-Source: ABdhPJxT1QxjP12z0PKvPrABcDUayvMg83/qvOvUBLREZ00HVl+HxsB9o+PmAXQYSJAqpz/2P+yNRw== X-Received: by 2002:a17:902:da90:b0:15e:adc2:191d with SMTP id j16-20020a170902da9000b0015eadc2191dmr5907894plx.134.1652985023806; Thu, 19 May 2022 11:30:23 -0700 (PDT) Received: from archlinux.localdomain ([140.121.198.213]) by smtp.googlemail.com with ESMTPSA id z5-20020a63e105000000b003c14af505f6sm3884674pgh.14.2022.05.19.11.30.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 May 2022 11:30:23 -0700 (PDT) From: Chih-En Lin To: Andrew Morton , linux-mm@kvack.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Christian Brauner , "Matthew Wilcox (Oracle)" , Vlastimil Babka , William Kucharski , John Hubbard , Yunsheng Lin , Arnd Bergmann , Suren Baghdasaryan , Chih-En Lin , Colin Cross , Feng Tang , "Eric W. Biederman" , Mike Rapoport , Geert Uytterhoeven , Anshuman Khandual , "Aneesh Kumar K.V" , Daniel Axtens , Jonathan Marek , Christophe Leroy , Pasha Tatashin , Peter Xu , Andrea Arcangeli , Thomas Gleixner , Andy Lutomirski , Sebastian Andrzej Siewior , Fenghua Yu , David Hildenbrand , linux-kernel@vger.kernel.org, Kaiyang Zhao , Huichun Feng , Jim Huang Subject: [RFC PATCH 3/6] mm, pgtable: Add ownership for the PTE table Date: Fri, 20 May 2022 02:31:24 +0800 Message-Id: <20220519183127.3909598-4-shiyn.lin@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220519183127.3909598-1-shiyn.lin@gmail.com> References: <20220519183127.3909598-1-shiyn.lin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: EA3222000E X-Stat-Signature: 4n8ftrg1xa1wtxye1ykn5a7om8ittjbg X-Rspam-User: Authentication-Results: imf31.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GGS28zJ2; spf=pass (imf31.hostedemail.com: domain of shiyn.lin@gmail.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=shiyn.lin@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1652984994-598696 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: Introduce the ownership for the PTE table to prepare the following patch of the Copy-On-Write (COW) page table. It uses the address of PMD index to become the owner to identify which process can update its page table state from the COW page table. Signed-off-by: Chih-En Lin --- include/linux/mm.h | 1 + include/linux/mm_types.h | 1 + include/linux/pgtable.h | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 9f44254af8ce..221926a3d818 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2328,6 +2328,7 @@ static inline bool pgtable_pte_page_ctor(struct page *page) return false; __SetPageTable(page); inc_lruvec_page_state(page, NR_PAGETABLE); + page->cow_pte_owner = NULL; return true; } diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 8834e38c06a4..5dcbd7f6c361 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -221,6 +221,7 @@ struct page { #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS int _last_cpupid; #endif + pmd_t *cow_pte_owner; /* cow pte: pmd */ } _struct_page_alignment; /** diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index f4f4077b97aa..faca57af332e 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -590,6 +590,20 @@ static inline int pte_unused(pte_t pte) } #endif +static inline bool set_cow_pte_owner(pmd_t *pmd, pmd_t *owner) +{ + struct page *page = pmd_page(*pmd); + + smp_store_release(&page->cow_pte_owner, owner); + return true; +} + +static inline bool cow_pte_owner_is_same(pmd_t *pmd, pmd_t *owner) +{ + return (smp_load_acquire(&pmd_page(*pmd)->cow_pte_owner) == owner) ? + true : false; +} + #ifndef pte_access_permitted #define pte_access_permitted(pte, write) \ (pte_present(pte) && (!(write) || pte_write(pte))) -- 2.36.1