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 3C171C61DA4 for ; Wed, 15 Mar 2023 05:14:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9BF846B0072; Wed, 15 Mar 2023 01:14:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 96DC26B0074; Wed, 15 Mar 2023 01:14:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 85D038E0001; Wed, 15 Mar 2023 01:14:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 7217F6B0072 for ; Wed, 15 Mar 2023 01:14:50 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3B05CA0C7B for ; Wed, 15 Mar 2023 05:14:50 +0000 (UTC) X-FDA: 80569967940.20.9F033A7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf04.hostedemail.com (Postfix) with ESMTP id 8BE4D40009 for ; Wed, 15 Mar 2023 05:14:48 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZBRpDJQf; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678857288; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=X05vtzdRVOUEmVQt9LM7AcBEpxNUJlW1nSjcvx+k4II=; b=lQ0o/SXHjpeqtVwfWC8VKfS/R/abB3UysBE0kWO3dmG//OgOvCaxdOJ75hZmn2uxc0MbCl ihmkNUSxKSE1Aijjzn3LoZl4PTKrQS1UEiVOJX1efquxN2sPUj7546APMmQMf1NwrWpwWR htAN6+NAtiw5pSwEWCGhKrgcpejQVP0= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZBRpDJQf; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678857288; a=rsa-sha256; cv=none; b=pUVlxK+RkOBf9/RaPU499FkIbvpmy008PxYbd+VJxrCUHBy5Ykx74vqNVpcjuK8C6VuJW1 C5+tbXdjBU6DMyANWyTpZnHhrCP4ZK1v6S8vZATqMhzyA6GidaALLVS9VDN8sVz3021nlq k4jceYRMFMK29L/oTXn0YgZvhKgBY9g= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=X05vtzdRVOUEmVQt9LM7AcBEpxNUJlW1nSjcvx+k4II=; b=ZBRpDJQfOF7dP3sJ9sUGQlY4E8 Wd8C+NXeZORB60wcJXsshX0L6WAkHB4NpK9zDfaQqAbYw0JJZV7N07uJp2EomGOpgBy9gfRTk3lg/ Ox+YILpn/XDq0gn2XR8EhTlSWztyzXp+irDBpVS7R1MHTA27ryXzwUjDzLAKIYJHTKC6TAFQ2fg4Y T6A23P2KcdW4SSUO2o3P5VaPVXw2jTWXijCa5fiXyZPotPa67xVomAze7tB4zplYixC4Od/95hGLo LRn3w1db8qtNliXIYmFz7fWIJWpYeRWP3KCroHCN4OLdSxm/wTND17EAjE+rBnFJebCCC+nEBhkqD K7FsR6Tg==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pcJTK-00DYB3-SQ; Wed, 15 Mar 2023 05:14:46 +0000 From: "Matthew Wilcox (Oracle)" To: linux-arch@vger.kernel.org Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mike Rapoport Subject: [PATCH v4 05/36] mm: Add default definition of set_ptes() Date: Wed, 15 Mar 2023 05:14:13 +0000 Message-Id: <20230315051444.3229621-6-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230315051444.3229621-1-willy@infradead.org> References: <20230315051444.3229621-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8BE4D40009 X-Rspam-User: X-Stat-Signature: e5xemxsu89fahak6cp7gzkh8x4wdyyh4 X-HE-Tag: 1678857288-43385 X-HE-Meta: U2FsdGVkX1/DqLCtvm+gddz+cyPOr58LCPMeV68bO/NAaNdazY4d333iDJwY5r+szRkeGfmqGVfoKUi6ImaRWQyRPJG5tPtOgf8Zv6653o4D9B5MqPjE3OQnw1btMKXy0swzfeGMEmt6GNCuKfSghOUrfr2cQcHIWCLyWuGNoe1qSL7FDpIMlSJUdAWXUPPsWiuJDNT4Pd1KNeCNAZ8rstlLVrXXBl3H10z6a2wuOtadLnsrCFdGdrGtoBy1LoflWvogtEXPFoKNsDddwQxmDQH0Btnv7fqRczOTFftz9vs6DYD6MAjbKOfRikaPPj8NhJtMBXzL0t7xCmJnPPRWYcwf6MGU/imGkxg3if9CQbQBy38KxfHKtT1e4uQBY9Mr3nSj9Uy3vpC7KQbLGlhGh+eEODKTNM/gE+4kFYewYoouj2SrctHkBxgdseWR8UjnrsgoDPHd1cA8zHJ2+9wpf0nNR1xKYb21GPUAbGqG58eQffgDl2lAvpn/z5OLNIcZNgbCEqxo6oLHd8ki7cKYfXhO7InSL1VlWW8WTBXxf1BHXa4SwzyyaKJLWufpYhUXcparfKBbnKinRaS7umU0f2YQtedRelM1t001s0/gnrKbp6B4A8Uh+d6ns0ir2UOYYCqeFsc0IK3jTQB9oiFU4sJItGoPLW9Trii9ML42QCZwig0BiTa3BmMsw78Pn2q2B6VEEuZCZ8FOEHO+yczgSoP73UZdl8A53EJcLOh4gy0sxcMbjzjQos1rd70FvifCvazEFZBSQNdwQFdV3dwxuX78fmo1OPzU+CyQMpPZQEBubtIA7yKC5qy6hXhhN8nJ2IH+zWv4IKxFEMkHqiWGDL24ouXPODOq9lMlHNh8kLXV4jCq4gtT+PIU0hg28amGIk4zC+ka/Dhj3qdOfZWjiuwCmi0RgVbstv+PBkYI5PqN1j6If71L+oqebeQXdkbdv/z+r8/fRmIy9cBvvhp SWO4349h FjEQeDlEyVQlLeu4FnM/VqPYTElIHJVpZ3uY2qamJe6AVZoSXBugq17D56Cz3Vvc6IbHQEC31ksz20HXRAXWcssv1TD4TaARA9M/Dt6ulr/j23BbqT0xYVK8ZOKIwl83SF4XplgRJwsUaw0oM5xDU0lQ2F1wvap1abBnzkK2d52aYuxn55aWuPN70JSK3R/VOtRy/nWi+n55yYiDWJk7Viw9IeCPJRKHrURu6CbZddbq+IjmvypldXh6V2CUhuxBG4riHwUNZpmwIu3wMf4O+xfAjUna/WxhLxxe8fiWlZTJrGVxn2BF59B2uPg== 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: Most architectures can just define set_pte() and PFN_PTE_SHIFT to use this definition. It's also a handy spot to document the guarantees provided by the MM. Suggested-by: Mike Rapoport (IBM) Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/pgtable.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index c5a51481bbb9..a755fe94b4b4 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -172,6 +172,43 @@ static inline int pmd_young(pmd_t pmd) } #endif +#ifndef set_ptes +#ifdef PFN_PTE_SHIFT +/** + * set_ptes - Map consecutive pages to a contiguous range of addresses. + * @mm: Address space to map the pages into. + * @addr: Address to map the first page at. + * @ptep: Page table pointer for the first entry. + * @pte: Page table entry for the first page. + * @nr: Number of pages to map. + * + * May be overridden by the architecture, or the architecture can define + * set_pte() and PFN_PTE_SHIFT. + * + * Context: The caller holds the page table lock. The pages all belong + * to the same folio. The PTEs are all in the same PMD. + */ +static inline void set_ptes(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte, unsigned int nr) +{ + page_table_check_ptes_set(mm, addr, ptep, pte, nr); + + for (;;) { + set_pte(ptep, pte); + if (--nr == 0) + break; + ptep++; + pte = __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT)); + } +} +#ifndef set_pte_at +#define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1) +#endif +#endif +#else +#define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1) +#endif + #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, -- 2.39.2